Documentation

pagerduty.endpoint() function

The pagerduty.endpoint() function returns a function that can be used to send a message to PagerDuty that includes output data.

import "pagerduty"

pagerduty.endpoint(
    url: "https://events.pagerduty.com/v2/enqueue"
)

Parameters

url

PagerDuty v2 Events API URL. Default is https://events.pagerduty.com/v2/enqueue.

Usage

pagerduty.endpoint is a factory function that outputs another function. The output function requires a mapFn parameter. See the PagerDuty v2 Events API documentation for more information about these parameters.

mapFn

(Required) A function that builds the record used to generate the POST request. Requires an r parameter.

mapFn accepts a table row (r) and returns a record that must include the following fields:

  • routingKey
  • client
  • client_url
  • class
  • eventAction
  • group
  • severity
  • component
  • source
  • summary
  • component
  • timestamp
  • customDetails

For more information, see pagerduty.sendEvent()

Examples

Send critical statuses to a PagerDuty endpoint
import "pagerduty"
import "influxdata/influxdb/secrets"

routingKey = secrets.get(key: "PAGERDUTY_ROUTING_KEY")
toPagerDuty = pagerduty.endpoint()

crit_statuses = from(bucket: "example-bucket")
    |> range(start: -1m)
    |> filter(fn: (r) => r._measurement == "statuses" and r.status == "crit")

crit_statuses
    |> toPagerDuty(
        mapFn: (r) => ({r with
            routingKey: routingKey,
            client: r.client,
            clientURL: r.clientURL,
            class: r.class,
            eventAction: r.eventAction,
            group: r.group,
            severity: r.severity,
            component: r.component,
            source: r.source,
            summary: r.summary,
            component: r.component,
            timestamp: r._time,
            customDetails: {"ping time": lastReported.ping, load: lastReported.load},
        }),
    )()

Upgrade to InfluxDB Cloud or InfluxDB 2.0!

InfluxDB Cloud and InfluxDB OSS 2.0 ready for production.