docs-v2/content/flux/v0.x/stdlib/contrib/bonitoo-io/servicenow/endpoint.md

2.4 KiB

title description menu weight flux/v0.x/tags
servicenow.endpoint() function The `servicenow.endpoint()` function sends events to [ServiceNow](https://servicenow.com) using data from input rows.
flux_0_x_ref
name parent
servicenow.endpoint servicenow
202
notification endpoints

The servicenow.endpoint() function sends events to ServiceNow using data from input rows.

import "contrib/bonitoo-io/servicenow"

servicenow.endpoint(
    url: "https://example-tenant.service-now.com/api/global/em/jsonv2",
    username: "example-username",
    password: "example-password"
)

Parameters

url

({{< req >}}) ServiceNow web service URL.

username

({{< req >}}) ServiceNow username to use for HTTP BASIC authentication.

password

({{< req >}}) ServiceNow password to use for HTTP BASIC authentication.

Usage

servicenow.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 ServiceNow API request. Requires an r parameter.

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

  • description
  • severity
  • source
  • node
  • metricType
  • resource
  • metricName
  • messageKey
  • additionalInfo

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

Examples

Send critical events to ServiceNow
import "contrib/bonitoo-io/servicenow"
import "influxdata/influxdb/secrets"

username = secrets.get(key: "SERVICENOW_USERNAME")
password = secrets.get(key: "SERVICENOW_PASSWORD")

endpoint =
    servicenow.endpoint(
        url: "https://example-tenant.service-now.com/api/global/em/jsonv2",
        username: username,
        password: password,
    )

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

crit_events
    |> endpoint(
        mapFn: (r) =>
            ({
                node: r.host,
                metricType: r._measurement,
                resource: r.instance,
                metricName: r._field,
                severity: "critical",
                additionalInfo: {"devId": r.dev_id},
            }),
    )()