prometheus告警規則設置(二)【轉】


告警規則的設置是通過yml文件來設置,因此需要遵從yml的語法

groups:
- name: example   #報警規則組的名字
  rules:
  - alert: InstanceDown     #檢測job的狀態,持續1分鍾metrices不能訪問會發給altermanager進行報警
    expr: up == 0
    for: 1m    #持續時間 , 表示持續一分鍾獲取不到信息,則觸發報警
    labels:
      serverity: page   # 自定義標簽
    annotations:
      summary: "Instance {{ $labels.instance }} down"     # 自定義摘要
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."   # 自定義具體描述

可以設置規則組, 規則組主要是做個告警類型的區分,比如說跟內存相關,IO相關,等等。

rules 下面 就是設置具體的規則。

告警規則的設置主要在於expr表達式的設置,以及annotations里面的提示消息的設置。

對於不了解PromSQL查詢語言的,獨自寫表達式的難度是非常大的,我這里有個非常好的辦法,我們可以從grafana

控制台獲取查詢語言,然后根據這個來寫表達式。

第一步

進入grafana的控制台,找到任意一個視圖。

點擊edit

進入edit頁面,可以看到**metrics **這個tab欄 , 這里就有各個指標的查詢函數。 這里舉個例子,比如

獲取整個系統的CPU占比

system_cpu_usage{job="$application", instance="$instance"}

這個函數是指定了Job(應用的唯一標識,默認為應用名)和instance(應用的IP:端口)的,我們在實際使用的時候可以這樣

system_cpu_usage{job="MSG-MS", instance="192.168.139.120:8080"}

想知道這個具體能查出來的數據是什么,可以訪問prometheus的控制台。

http://10.208.204.46:9090/graph

查詢結果如下

最下方,我們可以看到查詢出來的結果。

查詢的時候除了可以使用等號,也可以使用其他運算符

  =:選擇正好相等的字符串標簽
  !=:選擇不相等的字符串標簽
  =~:選擇匹配正則表達式的標簽(或子標簽)
  !=:選擇不匹配正則表達式的標簽(或子標簽)

舉個例子:

system_cpu_usage{ job=~'.*MSG.*' } # 包含MSG的JOB

system_cpu_usage這個括號里面的值,都可以用來做查詢條件。 后面value即為查出來的值

由此根據上面的准備,我們就可以定義如下的告警規則

groups:
- name: example   #報警規則組的名字
  rules:
  - alert: CPU負載告警     # 規則名稱
    expr: system_cpu_usage{job="MSG-MS"}> 0.7   # 表示如果MSG-MS這個應用整個系統的CPU超過70% ,則觸發告警
    for: 10s    #持續時間 , 表示持續10秒都是高於70%的,則報警
    labels:
      serverity: page   # 自定義標簽
    annotations:
      summary: "{{ $labels.job}} - {{ $labels.instance }} 的CPU 太高了"     # 自定義摘要
      description: "應用名: {{ $labels.job }}  實例名: {{ $labels.instance }}  , 環境: {{ $labels.env }} , 當前值為 : {{ $value }}"   # 自定義具體描述

上面的告警規則, 我們用到了labels這個變量,以及value這個變量來輸出信息。

labels 使用方法 :

在我們使用prometheus控制台做測試查詢的時候,system_cpu_usage括號里面的屬性,就是labels可以取到的值

value 使用:

上圖中的value值

 

轉自

prometheus告警規則設置(二) | sharedCode https://www.shared-code.com/article/83


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM