告警

    • 写入触发:用户写入原始数据到原始时间序列,每插入一条数据都会触发 的判断逻辑, 若满足告警要求则发送告警到下游数据接收器, 数据接收器再转发告警到外部终端。这种模式:

      • 适合需要即时监控每一条数据的场景。
      • 由于触发器中的运算会影响数据写入性能,适合对原始数据写入性能不敏感的场景。
    • 持续查询:用户写入原始数据到原始时间序列, ContinousQuery 定时查询原始时间序列,将查询结果写入新的时间序列, 每一次写入触发 trigger 的判断逻辑, 若满足告警要求则发送告警到下游数据接收器, 数据接收器再转发告警到外部终端。这种模式:

      • 适合需要定时查询数据在某一段时间内的情况的场景。
      • 由于定时查询几乎不影响原始时间序列的写入,适合对原始数据写入性能敏感的场景。

    随着 trigger 模块和 sink 模块的引入, 目前用户使用这两个模块,配合 AlertManager 可以实现写入触发模式的告警。

    二进制文件

    预编译好的二进制文件可在 下载。

    运行方法:

    Docker 镜像

    运行方法:

    1. docker run --name alertmanager -d -p 127.0.0.1:9093:9093 quay.io/prometheus/alertmanager

    如下是一个示例,可以覆盖到大部分配置规则,详细的配置规则参见 。

    示例:

    在后面的示例中,我们采用的配置如下:

    1. # alertmanager.yml
    2. global:
    3. smtp_smarthost: ''
    4. smtp_from: ''
    5. smtp_auth_username: ''
    6. smtp_auth_password: ''
    7. smtp_require_tls: false
    8. route:
    9. group_by: ['alertname']
    10. group_wait: 1m
    11. group_interval: 10m
    12. repeat_interval: 10h
    13. receivers:
    14. email_configs:
    15. - to: ''
    16. inhibit_rules:
    17. - source_match:
    18. severity: 'critical'
    19. target_match:
    20. severity: 'warning'
    21. equal: ['alertname']

    AlertManager API 分为 v1v2 两个版本,当前 AlertManager API 版本为 v2 (配置参见 api/v2/openapi.yaml (opens new window))。

    用户通过自行创建 Java 类、编写钩子中的逻辑来定义一个触发器。 具体配置流程以及 Sink 模块提供的 AlertManagerSink 相关工具类的使用方法参见 。

    下面的示例创建了 org.apache.iotdb.trigger.AlertingExample 类, 其 alertManagerHandler 成员变量可发送告警至地址为 http://127.0.0.1:9093/ 的 AlertManager 实例。

    value > 100.0 时,发送 severitycritical 的告警; 当 50.0 < value <= 100.0 时,发送 severitywarning 的告警。

    如下的 sql 语句在 root.ln.wf01.wt01.temperature 时间序列上注册了名为 root-ln-wf01-wt01-alert、 运行逻辑由 org.apache.iotdb.trigger.AlertingExample 类定义的触发器。

    1. CREATE TRIGGER `root-ln-wf01-wt01-alert`
    2. AFTER INSERT
    3. ON root.ln.wf01.wt01.temperature
    4. AS "org.apache.iotdb.trigger.AlertingExample"

    当我们完成 AlertManager 的部署和启动、Trigger 的创建, 可以通过向时间序列写入数据来测试告警功能。

    alerting