docs-v2/content/flux/v0/stdlib/influxdata/influxdb/monitor/notify.md

3.0 KiB

title description menu weight
monitor.notify() function `monitor.notify()` sends a notification to an endpoint and logs it in the `notifications` measurement in the `_monitoring` bucket.
flux_v0_ref
name parent identifier
monitor.notify influxdata/influxdb/monitor influxdata/influxdb/monitor/notify
301

monitor.notify() sends a notification to an endpoint and logs it in the notifications measurement in the _monitoring bucket.

Function type signature
(
    <-tables: stream[E],
    data: A,
    endpoint: (<-: stream[{B with _time: C, _time: time, _status_timestamp: int, _measurement: string}]) => stream[D],
) => stream[D] where A: Record, D: Record, E: Record

{{% caption %}} For more information, see Function type signatures. {{% /caption %}}

Parameters

endpoint

({{< req >}}) A function that constructs and sends the notification to an endpoint.

data

({{< req >}}) Notification data to append to the output.

This data specifies which notification rule and notification endpoint to associate with the sent notification. The data record must contain the following properties:

  • _notification_rule_id
  • _notification_rule_name
  • _notification_endpoint_id
  • _notification_endpoint_name The InfluxDB monitoring and alerting system uses monitor.notify() to store information about sent notifications and automatically assigns these values. If writing a custom notification task, we recommend using unique arbitrary values for data record properties.

tables

Input data. Default is piped-forward data (<-).

Examples

Send critical status notifications to Slack

import "influxdata/influxdb/monitor"
import "influxdata/influxdb/secrets"
import "slack"

token = secrets.get(key: "SLACK_TOKEN")

endpoint =
    slack.endpoint(token: token)(
        mapFn: (r) => ({channel: "Alerts", text: r._message, color: "danger"}),
    )

notification_data = {
    _notification_rule_id: "0000000000000001",
    _notification_rule_name: "example-rule-name",
    _notification_endpoint_id: "0000000000000002",
    _notification_endpoint_name: "example-endpoint-name",
}

monitor.from(range: -5m, fn: (r) => r._level == "crit")
    |> range(start: -5m)
    |> monitor.notify(endpoint: endpoint, data: notification_data)