这个规则文件里,包含了两条告警规则:InstanceDown 和 APIHighRequestLatency 。顾名思义,InstanceDown 表示当实例宕机时(up === 0)触发告警,APIHighRequestLatency 表示有一半的 API 请求延迟大于 1s 时(
api_http_request_latencies_second{quantile="0.5"} > 1)触发告警 。
配置好后,需要重启下 Prometheus server,然后访问
http://localhost:9090/rules 可以看到刚刚配置的规则:

文章插图
图片
访问
http://localhost:9090/alerts 可以看到根据配置的规则生成的告警:

文章插图
图片
这里我们将一个实例停掉,可以看到有一条 alert 的状态是 PENDING,这表示已经触发了告警规则,但还没有达到告警条件 。这是因为这里配置的 for 参数是 5m,也就是 5 分钟后才会触发告警,我们等 5 分钟,可以看到这条 alert 的状态变成了 FIRING 。
6.2 使用 Alertmanager 发送告警通知虽然 Prometheus 的 /alerts 页面可以看到所有的告警,但是还差最后一步:触发告警时自动发送通知 。这是由 Alertmanager 来完成的,我们首先 下载并安装 Alertmanager,和其他 Prometheus 的组件一样,Alertmanager 也是开箱即用的:
$ wget https://github.com/prometheus/alertmanager/releases/download/v0.15.2/alertmanager-0.15.2.linux-amd64.tar.gz $ tar xvfz alertmanager-0.15.2.linux-amd64.tar.gz $ cd alertmanager-0.15.2.linux-amd64 $ ./alertmanager Alertmanager 启动后默认可以通过 http://localhost:9093/ 来访问,但是现在还看不到告警,因为我们还没有把 Alertmanager 配置到 Prometheus 中,我们回到 Prometheus 的配置文件 prometheus.yml,添加下面几行:alerting: alertmanagers: - scheme: http static_configs: - targets: - "192.168.0.107:9093" 这个配置告诉 Prometheus,当发生告警时,将告警信息发送到 Alertmanager,Alertmanager 的地址为 http://192.168.0.107:9093 。也可以使用命名行的方式指定 Alertmanager:$ ./prometheus -alertmanager.url=http://192.168.0.107:9093 这个时候再访问 Alertmanager,可以看到 Alertmanager 已经接收到告警了:
文章插图
图片
下面的问题就是如何让 Alertmanager 将告警信息发送给我们了,我们打开默认的配置文件 alertmanager.ym:
global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'web.hook' receivers: - name: 'web.hook' webhook_configs: - url: 'http://127.0.0.1:5001/' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance'] 参考 官方的配置手册 了解各个配置项的功能,其中 global 块表示一些全局配置;route 块表示通知路由,可以根据不同的标签将告警通知发送给不同的 receiver,这里没有配置 routes 项,表示所有的告警都发送给下面定义的 web.hook 这个 receiver;如果要配置多个路由,可以参考 这个例子:routes: - receiver: 'database-pager' group_wait: 10s match_re: service: mysql|cassandra - receiver: 'frontend-pager' group_by: [product, environment] match: team: frontend 紧接着,receivers 块表示告警通知的接收方式,每个 receiver 包含一个 name 和一个 xxx_configs,不同的配置代表了不同的接收方式,Alertmanager 内置了下面这些接收方式:
推荐阅读
- Intel|下一代硅光子芯片技术:Intel、NVIDIA都出手了
- 翡翠|拉什莫尔山号称石像山,山后还有一个密室,里面藏着“珍贵”文物
- iPad Pro M2,m2芯片的ipadpro-
- 男士是肝炎的能遗传给下一代吗
- 怎样锻炼肾功能,怎样瘦肚子最快最有效
- 三国中的庞统为什么称为凤雏?庞统号称凤雏
- 树莓派搭建网络视频实时监控系统
- 张飞号称什么将军 五虎上将张飞会返场吗
- 开源监控系统wgcloud-v3.3.0发布
- CentOS7下部署开源网络监控系统LibreNMS
