docs-v2/content/flux/v0/stdlib/contrib/sranka/sensu/endpoint.md

3.3 KiB

title description menu weight flux/v0/tags
sensu.endpoint() function `sensu.endpoint()` sends an event to the [Sensu Events API](https://docs.sensu.io/sensu-go/latest/api/events/#create-a-new-event) using data from table rows.
flux_v0_ref
name parent identifier
sensu.endpoint contrib/sranka/sensu contrib/sranka/sensu/endpoint
301
notification endpoints
transformations

sensu.endpoint() sends an event to the Sensu Events API using data from table rows.

Usage

sensu.endpoint() is a factory function that outputs another function. The output function requires a mapFn parameter.

mapFn

A function that builds the object used to generate the POST request. Requires an r parameter.

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

  • checkName
  • text
  • status

For more information, see sensu.event() parameters.

Function type signature
(
    apiKey: string,
    url: string,
    ?entityName: string,
    ?handlers: A,
    ?namespace: string,
) => (
    mapFn: (r: B) => {C with text: E, status: D, checkName: string},
) => (<-tables: stream[B]) => stream[{B with _sent: string}] where D: Equatable

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

Parameters

url

({{< req >}}) Base URL of Sensu API without a trailing slash. Example: http://localhost:8080.

apiKey

({{< req >}}) Sensu API Key.

handlers

Sensu handlers to execute. Default is [].

namespace

Sensu namespace. Default is default.

entityName

Event source. Default is influxdb.

Use alphanumeric characters, underscores (_), periods (.), and hyphens (-). All other characters are replaced with an underscore.

Examples

Send critical status events to Sensu

import "influxdata/influxdb/secrets"
import "contrib/sranka/sensu"

token = secrets.get(key: "TELEGRAM_TOKEN")
endpoint = sensu.endpoint(url: "http://localhost:8080", apiKey: apiKey)

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

crit_statuses
    |> endpoint(mapFn: (r) => ({checkName: "critStatus", text: "Status is critical", status: 2}))()