溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現(xiàn)基于Prometheus和Grafana的監(jiān)控平臺之運維告警

發(fā)布時間:2021-10-21 09:35:45 來源:億速云 閱讀:190 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“如何實現(xiàn)基于Prometheus和Grafana的監(jiān)控平臺之運維告警”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

告警方式    

Grafana

新版本的Grafana已經(jīng)提供了告警配置,直接在dashboard監(jiān)控panel中設置告警即可,但是我用過后發(fā)現(xiàn)其實并不靈活,不支持變量,而且好多下載的圖表無法使用告警,所以我們不選擇使用Grafana告警,而使用Alertmanager。如何實現(xiàn)基于Prometheus和Grafana的監(jiān)控平臺之運維告警     

Alertmanager

相比于Grafana的圖形化界面,Alertmanager需要依靠配置文件實現(xiàn),配置稍顯繁瑣,但是勝在功能強大靈活。接下來我們就一步一步實現(xiàn)告警通知。     

告警類型

Alertmanager告警主要使用以下兩種:

  • 郵件接收器 email_config
  • Webhook接收器 webhook_config,會用post形式向配置的url地址發(fā)送如下格式的參數(shù)。
 {
 "version": "2",
 "status": "<resolved|firing>",
 "alerts": [{
   "labels":  < object > ,
   "annotations":  < object > ,
   "startsAt": "<rfc3339>",
   "endsAt": "<rfc3339>"
   }]
 }
     

「這次主要使用郵件的方式進行告警?!?/strong>     

實現(xiàn)步驟
  • 下載
    從GitHub上下載最新版本的Alertmanager,將其上傳解壓到服務器上。tar -zxvf alertmanager-0.19.0.linux-amd64.tar.gz

  • 配置Alertmanager

vi alertmanager.yml
global:
  resolve_timeout: 5m
  smtp_smarthost: 'mail.163.com:25' #郵箱發(fā)送端口
  smtp_from: 'xxx@163.com'
  smtp_auth_username: 'xxx@163.com' #郵箱賬號
  smtp_auth_password: 'xxxxxx' #郵箱密碼
  smtp_require_tls: false
route:
  group_by: ['alertname']
  group_wait: 10s  # 最初即第一次等待多久時間發(fā)送一組警報的通知
  group_interval: 10s # 在發(fā)送新警報前的等待時間
  repeat_interval: 1h # 發(fā)送重復警報的周期 對于email配置中,此項不可以設置過低,否則將會由于郵件發(fā)送太多頻繁,被smtp服務器拒絕
  receiver: 'email'
receivers:
  - name: 'email'
    email_configs:
    - to: 'xxx@xxx.com'
     

修改完成后可以使用 ./amtool check-config alertmanager.yml校驗文件是否正確。如何實現(xiàn)基于Prometheus和Grafana的監(jiān)控平臺之運維告警

校驗正確后啟動alertmanager。nohup ./alertmanager &。(第一次啟動可以不使用nohup靜默啟動,方便后面查看日志)

我們只定義了一個路由,那就意味著所有由Prometheus產(chǎn)生的告警在發(fā)送到Alertmanager之后都會通過名為 email的receiver接收。實際上,對于不同級別的告警,會有不同的處理方式,因此在route中,我們還可以定義更多的子Route。具體配置規(guī)則大家可以去百度進一步了解。

  • 配置Prometheus        
    在Prometheus安裝目錄下建立rules文件夾,放置所有的告警規(guī)則文件。
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['192.168.249.131:9093']

rule_files:
  - rules/*.yml
     

在rules文件夾下建立告警規(guī)則文件 service_down.yml,當服務器下線時發(fā)送郵件。

groups:
 - name: ServiceStatus
   rules:
     - alert: ServiceStatusAlert
       expr: up == 0  
       for: 2m 
       labels:
         team: node
       annotations:
         summary: "Instance {{ $labels.instance }} has bean down"
         description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes."
         value: "{{ $value }}"
     

「配置詳解」

alert:告警規(guī)則的名稱。
expr:基于PromQL表達式告警觸發(fā)條件,用于計算是否有時間序列滿足該條件。
for:評估等待時間,可選參數(shù)。用于表示只有當觸發(fā)條件持續(xù)一段時間后才發(fā)送告警。在等待期間新產(chǎn)生告警的狀態(tài)為PENDING,等待期后為FIRING。
labels:自定義標簽,允許用戶指定要附加到告警上的一組附加標簽。
annotations:用于指定一組附加信息,比如用于描述告警詳細信息的文字等,annotations的內(nèi)容在告警產(chǎn)生時會一同作為參數(shù)發(fā)送到Alertmanager。

配置完成后重啟Prometheus,訪問Prometheus查看告警配置。如何實現(xiàn)基于Prometheus和Grafana的監(jiān)控平臺之運維告警

  • 測試        
    關(guān)閉node_exporter,過2分鐘就可以收到告警郵件啦,截圖如下:         如何實現(xiàn)基于Prometheus和Grafana的監(jiān)控平臺之運維告警Alertmanager的告警內(nèi)容支持使用模板配置,可以使用好看的模板進行渲染,感興趣的可以試試!     
The More

node exporter的一些計算語句

  • CPU使用率(單位為percent)        
            (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
  • 內(nèi)存已使用(單位為bytes)        
            node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Cached_bytes - node_memory_Buffers_bytes - node_memory_Slab_bytes
  • 內(nèi)存使用量(單位為bytes/sec)        
            node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Cached_bytes - node_memory_Buffers_bytes - node_memory_Slab_bytes
  • 內(nèi)存使用率(單位為percent)        
            ((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Cached_bytes - node_memory_Buffers_bytes - node_memory_Slab_bytes)/node_memory_MemTotal_bytes) * 100
  • server1的內(nèi)存使用率(單位為percent)        
            ((node_memory_MemTotal_bytes{instance="server1"} - node_memory_MemAvailable_bytes{instance="server1"})/node_memory_MemTotal_bytes{instance="server1"}) * 100
  • server2的磁盤使用率(單位為percent)        
            ((node_filesystem_size_bytes{fstype=~"xfs|ext4",instance="server2"} - node_filesystem_free_bytes{fstype=~"xfs|ext4",instance="server2"}) / node_filesystem_size_bytes{fstype=~"xfs|ext4",instance="server2"}) * 100
  • uptime時間(單位為seconds)        
            time() - node_boot_time
  • server1的uptime時間(單位為seconds)        
            time() - node_boot_time_seconds{instance="server1"}
  • 網(wǎng)絡流出量(單位為bytes/sec)        
            irate(node_network_transmit_bytes_total{device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0
  • server1的網(wǎng)絡流出量(單位為bytes/sec)        
            irate(node_network_transmit_bytes_total{instance="server1", device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0
  • 網(wǎng)絡流入量(單位為bytes/sec)        
            irate(node_network_receive_bytes_total{device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0
  • server1的網(wǎng)絡流入量(單位為bytes/sec)        
            irate(node_network_receive_bytes_total{instance="server1", device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0
  • 磁盤讀取速度(單位為bytes/sec)        
            irate(node_disk_read_bytes_total{device=~"sd.*"}[5m])

“如何實現(xiàn)基于Prometheus和Grafana的監(jiān)控平臺之運維告警”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI