基於指標進行告警

在本教程中,我們將針對我們在之前的為 Go 編寫的 HTTP 伺服器新增監控插樁教程中插樁的 ping_request_count 指標建立告警。

為了本教程的演示,我們將在 ping_request_count 指標大於 5 時觸發告警。請檢視實際應用中的最佳實踐,以瞭解更多關於告警原則的資訊。

此處 下載適用於您作業系統的最新版 Alertmanager。

Alertmanager 支援 emailwebhookpagerdutyslack 等多種接收器,當告警觸發時,它可以透過這些接收器傳送通知。您可以在此處找到接收器列表及其配置方法。在本教程中,我們將使用 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_intervalrule_filesalerting 部分。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 也可以配置其他接收器,以便在告警觸發時進行通知。

本頁內容