基於指標進行告警
在本教程中,我們將針對我們在之前的為 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"]
請注意,Prometheus 配置中添加了 evaluation_interval、rule_files 和 alerting 部分。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 也可以配置其他接收器,以便在告警觸發時進行通知。