package
0.195.1
Repository: https://github.com/influxcommunity/flux.git
Documentation: pkg.go.dev

# README

BigPanda Package

Use this Flux Package to send alerts to BigPanda. The implementation is using bigpanda v2 API that is described in https://docs.bigpanda.com/docs/alert-api#create-alert.

See also

bigpanda.sendAlert

sendAlert sends a message that creates an alert in BigPanda. Arguments:

NameTypeDescription
tokenstringBigPanda API Authorization token. Required.
appKeystringBigPanda App Key. Required.
statusstringAlert status, one of ok, critical, warning, acknowledged Required.
recrecordAlert data. Required.
urlstringBigPanda API URL. Defaults to "https://api.bigpanda.io/data/v2/alerts". Optional

Basic Example:

import "contrib/rhajek/bigpanda"

data = {
    host: "my-host",
    check: "my-check",
    description: "Great Scott!- Disk usage is: ${lastReported.status}.",
}

bigpanda.sendAlert(url: url, appKey: appKey, token: token, status: "critical", rec: data)

bigpanda.endpoint

endpoint function creates a factory function that accepts a mapping function mapFn and creates a target function for pipeline |> that sends alert messages from table rows. The mapFn accepts a table row and returns an object with properties defined in the bigpanda.sendAlert function arguments expect appKey, token and url. Arguments:

NameTypeDescription
tokenstringAPI Authorization key.
appKeystringBigPanda AppKey used to specify domain of the alert.
urlstringBigPanda API URL. Optional. Default is "https://api.bigpanda.io/data/v2/alerts".

Basic Example:

import "contrib/rhajek/bigpanda"
import "influxdata/influxdb/secrets"

// this value can be stored in the secret-store()
token = secrets.get(key: "BIG_PANDA_TOKEN")

lastReported =
from(bucket: "example-bucket")
    |> range(start: -1m)
    |> filter(fn: (r) => r._measurement == "statuses")
    |> last()
    |> tableFind(fn: (key) => true)
    |> bigpanda.endpoint(appKey: "my-appkey", token: token)(mapFn: (r) => {
        return { r with 
            status:  bigpanda.statusFromLevel(level: r.level),
            description: "Great Scott!- Disk usage is: ${r.level}." 
        }
    })()

BigPanda alert timestamps are optional and use standard Unix time format.

Example with timestamp:

    from(...)
    |> bigpanda.endpoint(appKey: "my-appkey", token: "...") (mapFn: (r) => {
        return { r with
            status: bigpanda.statusFromLevel(level: r.level),
            description: "Great Scott!- Disk usage is: ${r.level}.",
            timestamp: int(v:now())/1000000000
    }
    })()

bigpanda.statusFromLevel

bigpanda.statusFromLevel() function converts InfluxDB status level to a BigPanda status.

import "bigpanda"

bigpanda.statusFromLevel(
    level: "crit"
)
// returns "critical"
Status levelBigPanda status
critcritical
warnwarning
infook
okok

Contact