告警
写入触发:用户写入原始数据到原始时间序列,每插入一条数据都会触发 的判断逻辑, 若满足告警要求则发送告警到下游数据接收器, 数据接收器再转发告警到外部终端。这种模式:
- 适合需要即时监控每一条数据的场景。
- 由于触发器中的运算会影响数据写入性能,适合对原始数据写入性能不敏感的场景。
持续查询:用户写入原始数据到原始时间序列,
ContinousQuery
定时查询原始时间序列,将查询结果写入新的时间序列, 每一次写入触发trigger
的判断逻辑, 若满足告警要求则发送告警到下游数据接收器, 数据接收器再转发告警到外部终端。这种模式:- 适合需要定时查询数据在某一段时间内的情况的场景。
- 由于定时查询几乎不影响原始时间序列的写入,适合对原始数据写入性能敏感的场景。
随着 trigger
模块和 sink
模块的引入, 目前用户使用这两个模块,配合 AlertManager
可以实现写入触发模式的告警。
二进制文件
预编译好的二进制文件可在 下载。
运行方法:
Docker 镜像
运行方法:
docker run --name alertmanager -d -p 127.0.0.1:9093:9093 quay.io/prometheus/alertmanager
如下是一个示例,可以覆盖到大部分配置规则,详细的配置规则参见 。
示例:
在后面的示例中,我们采用的配置如下:
# alertmanager.yml
global:
smtp_smarthost: ''
smtp_from: ''
smtp_auth_username: ''
smtp_auth_password: ''
smtp_require_tls: false
route:
group_by: ['alertname']
group_wait: 1m
group_interval: 10m
repeat_interval: 10h
receivers:
email_configs:
- to: ''
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname']
AlertManager
API 分为 v1
和 v2
两个版本,当前 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
时,发送 severity
为 critical
的告警; 当 50.0 < value <= 100.0
时,发送 severity
为 warning
的告警。
如下的 sql 语句在 root.ln.wf01.wt01.temperature
时间序列上注册了名为 root-ln-wf01-wt01-alert
、 运行逻辑由 org.apache.iotdb.trigger.AlertingExample
类定义的触发器。
CREATE TRIGGER `root-ln-wf01-wt01-alert`
AFTER INSERT
ON root.ln.wf01.wt01.temperature
AS "org.apache.iotdb.trigger.AlertingExample"
当我们完成 AlertManager 的部署和启动、Trigger 的创建, 可以通过向时间序列写入数据来测试告警功能。