创建自定义检查
在 UI 中,您可以创建两种类型的检查:阈值 和 deadman。
使用 Flux 任务,您可以创建自定义检查,它提供了一些优势
- 自定义和转换您想要用于检查的数据。
- 为您告警设置自定义标准(阈值和deadman以外的标准)。
创建任务
- 在 InfluxDB UI 中,选择左侧导航菜单中的 任务。 
- 点击 创建任务。 
- 在 名称 字段中,输入描述性名称,然后在 每 字段中输入任务的运行频率(例如, - 10m)。有关更多详细信息,例如使用 cron 语法或包含偏移量,请参阅任务配置选项。
- 输入自定义检查的 Flux 脚本,包括 - monitor.check函数。
使用 /api/v2/checks/{checkID}/query API 端点 查看在 UI 中构建的检查的 Flux 代码。这对于构建自定义检查非常有用。
示例:监控失败的任务
以下脚本相当复杂,可以用作类似任务的框架。它执行以下操作
- 导入必要的 influxdata/influxdb/monitor包,以及用于数据处理的其他包。
- 查询 _tasks存储桶以检索由您的检查生成的所有状态。
- 设置要告警的 _level,例如,crit、warn、info或ok。
- 创建一个 check对象,为检查指定 ID、名称和类型。
- 定义 ok和crit状态。
- 使用 task_data对check执行monitor函数。
示例告警任务脚本
import "strings"
import "regexp"
import "influxdata/influxdb/monitor"
import "influxdata/influxdb/schema"
option task = {name: "Failed Tasks Check", every: 1h, offset: 4m}
task_data = from(bucket: "_tasks")
    |> range(start: -task.every)
    |> filter(fn: (r) => r["_measurement"] == "runs")
    |> filter(fn: (r) => r["_field"] == "logs")
    |> map(fn: (r) => ({r with name: strings.split(v: regexp.findString(r: /option task = \{([^\}]+)/, v: r._value), t: "\\\\\\\"")[1]}))
    |> drop(columns: ["_value", "_start", "_stop"])
    |> group(columns: ["name", "taskID", "status", "_measurement"])
    |> map(fn: (r) => ({r with _value: if r.status == "failed" then 1 else 0}))
    |> last()
check = {
    // 16 characters, alphanumeric
    _check_id: "0000000000000001",
    // Name string
    _check_name: "Failed Tasks Check",
    // Check type (threshold, deadman, or custom)
    _type: "custom",
    tags: {},
}
ok = (r) => r["logs"] == 0
crit = (r) => r["logs"] == 1
messageFn = (r) => "The task: ${r.taskID} - ${r.name} has a status of ${r.status}"
task_data
    |> schema["fieldsAsCols"]()
    |> monitor["check"](data: check, messageFn: messageFn, ok: ok, crit: crit)
此页是否对您有帮助?
感谢您的反馈!
