基于指标的告警
在本教程中,我们将基于之前在“Go HTTP 服务埋点”教程中所埋点的 ping_request_count 指标来创建告警。
为了进行本教程的演示,我们将设置当 ping_request_count 指标大于 5 时触发告警。请参阅现实世界中的最佳实践,以了解更多关于告警原则的信息。
从这里 下载适用于您操作系统的最新版 Alertmanager。
Alertmanager 支持各种接收器,如 email、webhook、pagerduty、slack 等,通过它们可以在告警触发时进行通知。您可以在这里找到接收器列表及其配置方法。在本教程中,我们将使用 webhook 作为接收器。请前往 webhook.site 并复制 webhook URL,我们稍后将使用它来配置 Alertmanager。
首先,让我们用 webhook 接收器设置 Alertmanager。
alertmanager.yml
global:
resolve_timeout: 5m
route:
receiver: webhook_receiver
receivers:
- name: webhook_receiver
webhook_configs:
- url: '<INSERT-YOUR-WEBHOOK>'
send_resolved: false
将 alertmanager.yml 文件中的 <INSERT-YOUR-WEBHOOK> 替换为您之前复制的 webhook,并使用以下命令运行 Alertmanager。
alertmanager --config.file=alertmanager.yml
Alertmanager 启动并运行后,导航至 https://:9093 ,您应该能够访问它。
现在我们已经使用 webhook 接收器配置了 Alertmanager,让我们将规则添加到 Prometheus 配置中。
prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 10s
rule_files:
- rules.yml
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: simple_server
static_configs:
- targets: ["localhost:8090"]
请注意,evaluation_interval、rule_files 和 alerting 部分已添加到 Prometheus 配置中。evaluation_interval 定义了评估规则的时间间隔,rule_files 接受定义规则的 YAML 文件数组,而 alerting 部分定义了 Alertmanager 的配置。正如本教程开头提到的,我们将创建一个基本规则,即当 ping_request_count 的值大于 5 时引发告警。
rules.yml
groups:
- name: Count greater than 5
rules:
- alert: CountGreaterThan5
expr: ping_request_count > 5
for: 10s
现在,让我们使用以下命令运行 Prometheus。
prometheus --config.file=./prometheus.yml
在浏览器中打开 https://:9090/rules 以查看规则。接下来,运行埋点后的 ping 服务,访问 https://:8090/ping 端点并刷新页面至少 6 次。您可以通过导航到 https://:8090/metrics 端点来检查 ping 计数。要查看告警状态,请访问 https://:9090/alerts 。当条件 ping_request_count > 5 为真持续超过 10 秒后,state 将变为 FIRING。现在,如果您导航回 webhook.site URL,您将看到告警消息。
同样,Alertmanager 可以配置其他接收器,以便在告警触发时进行通知。