content/flux/v0/stdlib/contrib/bonitoo-io/servicenow/endpoint.md
servicenow.endpoint() sends events to ServiceNow using data from input rows.
servicenow.endpoint is a factory function that outputs another function.
The output function requires a mapFn parameter.
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:
descriptionseveritysourcenodemetricTyperesourcemetricNamemessageKeyadditionalInfoFor more information, see servicenow.event() parameters.
(
password: string,
url: string,
username: string,
?source: A,
) => (
mapFn: (
r: B,
) => {
C with
severity: J,
resource: I,
node: H,
metricType: G,
metricName: F,
messageKey: E,
description: D,
},
) => (<-tables: stream[B]) => stream[{B with _sent: string}] where J: Equatable
{{% caption %}} For more information, see Function type signatures. {{% /caption %}}
({{< req >}}) ServiceNow web service URL.
({{< req >}}) ServiceNow username to use for HTTP BASIC authentication.
({{< req >}}) ServiceNow password to use for HTTP BASIC authentication.
Source name. Default is "Flux".
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},
}),
)()