prometheus如何應(yīng)對告警目標(biāo)消失帶來的評估缺失問題
1、up指標(biāo)剖析
基于拉取的監(jiān)控(例如 Prometheus)的優(yōu)勢之一是,您可以在抓取過程中判斷目標(biāo)是否健康。
關(guān)于 Prometheus 的一個(gè)常見問題是如何判斷服務(wù)器是否沒有響應(yīng)或檢測樣本是否不再從目標(biāo)中攝取。簡單黑盒監(jiān)控的首選工具是黑盒導(dǎo)出器,您可以使用 unless 和 offset 進(jìn)行邊緣檢測,以檢測時(shí)間序列是否未更新。然而,有一種更簡單的方法可以涵蓋大多數(shù)用例。
當(dāng) Prometheus 抓取目標(biāo)時(shí),它不只是攝取返回的樣本。它還添加了一些關(guān)于抓取本身的額外示例。主要的是 up指標(biāo),如果抓取失敗則為 0,如果抓取成功則為 1。
關(guān)于 up 有幾件事你應(yīng)該知道:
-
1、它不是來自 scrape 本身,所以 metric_relabel_configs 不適用。也就是說,up 總是有目標(biāo)的標(biāo)簽,每個(gè)服務(wù)發(fā)現(xiàn)和 relabel_configs。
-
2、只要目標(biāo)從服務(wù)發(fā)現(xiàn)中返回,up 就會(huì)獲得新值。這意味著如果自動(dòng)縮放刪除了一個(gè)實(shí)例,您將不會(huì)收到它已關(guān)閉的警報(bào),這正是您想要的。但是,這也意味著如果自動(dòng)縮放刪除了所有實(shí)例,您也不會(huì)收到警報(bào)。為了防止這種情況,明智的做法是為所有工作消失的情況創(chuàng)建一個(gè)帶有表達(dá)式 absent(up{job=“myjob”}) 的警報(bào)。
-
3、有額外的時(shí)間序列表現(xiàn)得像up,都是以scrape_為前綴的。這些對于調(diào)試很有用
- scrape_duration_seconds{job=“”, instance=“”}: duration of the scrape.
- scrape_samples_post_metric_relabeling{job=“”, instance=“”}: the number of samples remaining after metric relabeling was applied.
- scrape_samples_scraped{job=“”, instance=“”}: the number of samples the target exposed.
- scrape_series_added{job=“”, instance=“”}: the approximate number of new series in this scrape.
-
4、即使他們遇到的實(shí)例失敗,一些exporter也會(huì)成功,通常是因?yàn)樵谶@種情況下他們?nèi)匀豢梢蕴峁┮恍┯杏玫男畔?。因此,up 為 0 的警報(bào)是必要的,但還不夠。在這種情況下,您可能還需要關(guān)于 haproxy_up、mysqld_up、consul_up、probe_success(由black box exporter使用)等的警報(bào)。
2、Alerting on Down Instances(探測目標(biāo)down)
假設(shè)已經(jīng)設(shè)置了監(jiān)控并正在抓取實(shí)例,無論是用于機(jī)器監(jiān)控的節(jié)點(diǎn)導(dǎo)出器還是其他導(dǎo)出器。要為已關(guān)閉 10 分鐘的每個(gè)實(shí)例生成警報(bào):
groups:
- name: node.rules
rules:
- alert: InstanceDown
expr: up{job="node"} == 0
for: 10m
標(biāo)簽的強(qiáng)大功能意味著您只需定義一次此警報(bào),它就會(huì)自動(dòng)應(yīng)用于您所有帶有節(jié)點(diǎn)標(biāo)簽的實(shí)例!
單個(gè)實(shí)例發(fā)生故障不值得叫醒某人。只在 25% 的實(shí)例停機(jī)時(shí)發(fā)出警報(bào)怎么樣?
groups:
- name: node.rules
rules:
- alert: InstancesDown
expr: avg(up{job="node"}) BY (job)
3、Absent Alerting for Jobs(探測目標(biāo)缺失)
使用 Prometheus 可以輕松地對數(shù)字過大或過小發(fā)出警報(bào)。但是,如果數(shù)字丟失了怎么辦?
在正常操作中,您的 Prometheus 會(huì)發(fā)現(xiàn)您的目標(biāo),抓取它們,并將運(yùn)行您針對它們定義的任何警報(bào)規(guī)則。但這可能會(huì)出錯(cuò)。例如,您的實(shí)例可能會(huì)從服務(wù)發(fā)現(xiàn)中消失,這將導(dǎo)致任何警報(bào)(例如 avg by (job)(up) < 0.5 不返回任何內(nèi)容而不是發(fā)出警報(bào))。如前所述,當(dāng)沒有輸入時(shí),聚合器不產(chǎn)生輸出。
因此,建議對作業(yè)消失的所有目標(biāo)發(fā)出警報(bào),例如:
groups:
- name: example
rules:
- alert: MyJobMissing
expr: absent(up{job="myjob"})
for: 10m
這使用了 absent 函數(shù)。如果給定的選擇器不匹配任何內(nèi)容,則返回值為 1 的單個(gè)時(shí)間序列和任何相等匹配器的標(biāo)簽。例如,在這種情況下,警報(bào)的標(biāo)簽為 job=“myjob”。如果有匹配的系列,則不返回任何內(nèi)容。
Prometheus 不知道應(yīng)該存在哪些標(biāo)簽集,因此您需要為每個(gè)作業(yè)設(shè)置一個(gè)這樣的警報(bào)。這僅適用于不存在和其他時(shí)間序列缺失的情況,如果您只想檢測目標(biāo)是否已關(guān)閉,您可以像往常一樣使用一個(gè)警報(bào)規(guī)則來完成。
4、Absent Alerting for Scraped Metrics(探測metrics缺失)
如果想針對一個(gè)目標(biāo)消失的特定指標(biāo)發(fā)出警報(bào)怎么辦?
注意:最好避免出現(xiàn)和消失的指標(biāo),但是目標(biāo)的某些子系統(tǒng)并不總是返回它們應(yīng)該返回的所有指標(biāo)??梢酝ㄟ^注意到 up 指標(biāo)存在但所討論的指標(biāo)不存在來檢測這種情況。此外,您需要檢查 up 是否為 1,以便在目標(biāo)關(guān)閉時(shí)不會(huì)誤觸發(fā)警報(bào)。如果您已經(jīng)收到有關(guān)該工作的警報(bào),則無需再向自己發(fā)送有關(guān)缺少指標(biāo)的垃圾郵件。
警報(bào)看起來像:
groups:
- name: example
rules:
- alert: MyJobMissingMyMetric
expr: up{job="myjob"} == 1 unless my_metric
for: 10m
5、對于使用可能不存在的指標(biāo)的規(guī)則如何處理
如果您正在對多個(gè)指標(biāo)進(jìn)行數(shù)學(xué)運(yùn)算,而其中一些指標(biāo)并不總是存在,那么處理起來可能會(huì)很困難,并會(huì)導(dǎo)致警報(bào)不觸發(fā)。這方面的一個(gè)例子是:
如果您有一個(gè)失敗指標(biāo)和一個(gè)成功指標(biāo)(忽略建議改為使用失敗指標(biāo)和總指標(biāo))。如果標(biāo)記了這些但沒有成功,則將失敗率計(jì)算為: rate(failure[1m]) / (rate(failure[1m]) + rate(success[1m]))
由于缺少成功指標(biāo)中的匹配標(biāo)簽集。因此,100% 的故障率會(huì)導(dǎo)致高級(jí)別故障警報(bào)永遠(yuǎn)不會(huì)觸發(fā)!文章來源:http://www.zghlxwxcb.cn/news/detail-488078.html
對于您正在使用可能不存在的指標(biāo)的情況,例如成功/失敗示例,方法是根據(jù)我們知道存在的某些指標(biāo)(通常是 up)或在缺失的標(biāo)簽集中。因此,例如,上面的故障率將變?yōu)椋?/strong>文章來源地址http://www.zghlxwxcb.cn/news/detail-488078.html
(rate(failure[1m]) or up * 0)
/
((rate(failure[1m]) or up * 0) + (rate(success[1m] or up * 0))
到了這里,關(guān)于【博客655】prometheus如何應(yīng)對告警目標(biāo)消失帶來的評估缺失問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!