Prometheus支持兩種類型的規則,這些規則能夠按期配置,而後按期評估:記錄規則和警報規則。 要在Prometheus中包含規則,請建立包含必要規則語句的文件,並讓Prometheus經過Prometheus配置中的rule_files
字段加載文件。 規則文件使用YAML。git
經過將SIGHUP
發送到Prometheus進程,能夠在運行時從新加載規則文件。 僅當全部規則文件格式正確時纔會應用更改。github
要在不啓動Prometheus服務器的狀況下快速檢查規則文件在語法上是否正確,請安裝並運行Prometheus的promtool
命令行實用工具:bash
go get github.com/prometheus/prometheus/cmd/promtool
promtool check rules /path/to/example.rules.yml
複製代碼
當文件在語法上有效時,檢查器將已解析規則的文本表示打印到標準輸出,而後以0
返回狀態退出。服務器
若是存在任何語法錯誤或無效的輸入參數,則會向標準錯誤輸出錯誤消息,並以1
返回狀態退出。工具
錄製規則容許您預先計算常常須要或計算上昂貴的表達式,並將其結果保存爲一組新的時間序列。 所以,查詢預先計算的結果一般比每次須要時執行原始表達式快得多。 這對於儀表板尤爲有用,儀表板須要在每次刷新時重複查詢相同的表達式。lua
記錄和警報規則存在於規則組中。 組內的規則以固定間隔順序運行。spa
規則文件的語法是:命令行
groups:
[ - <rule_group> ]
複製代碼
一個簡單的示例規則文件將是:code
groups:
- name: example
rules:
- record: job:http_inprogress_requests:sum
expr: sum(http_inprogress_requests) by (job)
複製代碼
<rule_group>
# 組的名稱。 在文件中必須是惟一的。
name: <string>
# 評估組中的規則的頻率。
[ interval: <duration> | default = global.evaluation_interval ]
rules:
[ - <rule> ... ]
複製代碼
<rule>
記錄規則的語法是:進程
# 要輸出的時間序列的名稱。 必須是有效的度量標準名稱。
record: <string>
# 要評估的PromQL表達式。 每一個評估週期都會在當前時間進行評估,並將結果記錄爲一組新的時間序列,其中度量標準名稱由「記錄」給出。
expr: <string>
# 在存儲結果以前添加或覆蓋的標籤。
labels:
[ <labelname>: <labelvalue> ]
複製代碼
警報規則的語法是:
# 警報的名稱。 必須是有效的度量標準名稱。
alert: <string>
# 要評估的PromQL表達式。 每一個評估週期都會在當前時間進行評估,而且全部結果時間序列都會成爲待處理/觸發警報。
expr: <string>
# 警報一旦被退回這段時間就會被視爲開啓。
# 還沒有解僱的警報被認爲是未決的。
[ for: <duration> | default = 0s ]
# 爲每一個警報添加或覆蓋的標籤。
labels:
[ <labelname>: <tmpl_string> ]
# 要添加到每一個警報的註釋。
annotations:
[ <labelname>: <tmpl_string> ]
複製代碼
Prometheus官網地址:prometheus.io/
個人Github:github.com/Alrights/pr…