3.0 KiB
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. |
|
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)