monitor.check() function
monitor.check()
checks input data and assigns a level (ok
, info
, warn
, or crit
)
to each row based on predicate functions.
monitor.check()
stores statuses in the _level
column and writes results
to the statuses
measurement in the _monitoring
bucket.
Function type signature
(
<-tables: stream[J],
data: {A with tags: E, _type: D, _check_name: C, _check_id: B},
messageFn: (
r: {
F with
_type: D,
_time: H,
_time: time,
_source_timestamp: int,
_source_measurement: G,
_measurement: G,
_measurement: string,
_level: string,
_check_name: C,
_check_id: B,
},
) => I,
?crit: (r: {F with _time: H, _measurement: G}) => bool,
?info: (r: {F with _time: H, _measurement: G}) => bool,
?ok: (r: {F with _time: H, _measurement: G}) => bool,
?warn: (r: {F with _time: H, _measurement: G}) => bool,
) => stream[{
F with
_type: D,
_time: H,
_time: time,
_source_timestamp: int,
_source_measurement: G,
_message: I,
_measurement: G,
_measurement: string,
_level: string,
_check_name: C,
_check_id: B,
}] where E: Record, J: Record
Parameters
crit
Predicate function that determines crit
status. Default is (r) => false
.
warn
Predicate function that determines warn
status. Default is (r) => false
.
info
Predicate function that determines info
status. Default is (r) => false
.
ok
Predicate function that determines ok
status. Default is (r) => true
.
messageFn
(Required) Predicate function that constructs a message to append to each row.
The message is stored in the _message
column.
data
(Required) Check data to append to output used to identify this check.
This data specifies which notification rule and notification endpoint to associate with the sent notification. The data record must contain the following properties:
- _check_id: check ID (string)
- _check_name: check name (string)
- _type: check type (threshold, deadman, or custom) (string)
- tags: Custom tags to append to output rows (record)
The InfluxDB monitoring and alerting system uses
monitor.check()
to check statuses and automatically assigns these values. If writing a custom check task, we recommend using unique arbitrary values for data record properties.
tables
Input data. Default is piped-forward data (<-
).
Examples
Monitor InfluxDB disk usage collected by Telegraf
import "influxdata/influxdb/monitor"
from(bucket: "telegraf")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "disk" and r._field == "used_percent")
|> monitor.check(
crit: (r) => r._value > 90.0,
warn: (r) => r._value > 80.0,
info: (r) => r._value > 70.0,
ok: (r) => r._value <= 60.0,
messageFn: (r) =>
if r._level == "crit" then
"Critical alert!! Disk usage is at ${r._value}%!"
else if r._level == "warn" then
"Warning! Disk usage is at ${r._value}%."
else if r._level == "info" then
"Disk usage is at ${r._value}%."
else
"Things are looking good.",
data: {
_check_name: "Disk Utilization (Used Percentage)",
_check_id: "disk_used_percent",
_type: "threshold",
tags: {},
},
)
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for Flux and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support.