iT邦幫忙

2024 iThome 鐵人賽

DAY 9
1
DevOps

時間序列資料庫探討 - Prometheus系列 第 9

Prometheus - 警報規則和模板

  • 分享至 

  • xImage
  •  

大前篇提問

  • Prometheus 提供了哪些讀介面?
  • PromQL 表達式有哪些語法?如何運行?
  • Alert Template 有哪些語法?

本篇要來介紹 Alert Template 的語法。

警報系統

先複習一下警報系統的運作方式:

  1. 在 Prometheus 中設定警報規則。
  2. Prometheus 定期評估警報規則,並生成警報時間序列。
  3. 若警報時間序列的值為 1,則表示觸發警報至設定的下游。
  4. 下游設定警報池,並依警報池設定通知對應管道,如 email 或 slack。

第四點的下游 Alertmanager 跟 Prometheus 是獨立的服務。我們先不管。
第一點的警報規則是我們要學會設定的。

警報規則

警報規則是一個 YAML 檔案,裡面最重要的就是決定警報狀態是 0 還是 1 的那個 PromQL,如

groups:
- name: example
  rules:
  - alert: HighRequestLatency
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
    for: 10m
    labels:
      severity: page
    annotations:
      summary: High request latency

job:request_latency_seconds:mean5m{job="myjob"} > 0.5 就是那個規則。一般方便觀察起見,可以把原 PromQL 寫成 Recording Rule,再在警報規則中引用 Recording Rule。

annotations 就是警報模板。他可以用來定義警報的標題、內容等等。這樣人類看到警報時,就可以知道發生了什麼事。

警報模板

annotations 的值是一個字典,裡面可以有很多 key-value pair。這些 key-value pair 就是警報模板的內容,他會被傳給下游。例如:

annotations:
  summary: High request latency
  description: This alert is firing because the request latency is too high.
  command: {{ .ExternalURL }}/{{ .CommonLabels.namespace }}/{{ .CommonLabels.pod }}
  runbook_url: https://example.com/runbook

value 是可以使用 Go 的 text/template 語法。這樣就可以依跳出的警報動態生成警報內容。


上一篇
Prometheus - PromQL 語法基本
下一篇
Prometheus - 寫入時間序列資料
系列文
時間序列資料庫探討 - Prometheus30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言