Documentation

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

For more information, see Function type signatures.

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!


The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Read more

InfluxDB v3 enhancements and InfluxDB Clustered is now generally available

New capabilities, including faster query performance and management tooling advance the InfluxDB v3 product line. InfluxDB Clustered is now generally available.

InfluxDB v3 performance and features

The InfluxDB v3 product line has seen significant enhancements in query performance and has made new management tooling available. These enhancements include an operational dashboard to monitor the health of your InfluxDB cluster, single sign-on (SSO) support in InfluxDB Cloud Dedicated, and new management APIs for tokens and databases.

Learn about the new v3 enhancements


InfluxDB Clustered general availability

InfluxDB Clustered is now generally available and gives you the power of InfluxDB v3 in your self-managed stack.

Talk to us about InfluxDB Clustered