Prometheus+alertmanager告警配置-2


prometheus 告警

prometheus 通過alertmanager進行告警

實現監控告警的步驟:

  • 在prometheus中定義告警規則rule_files
  • alertmanager配置告警告警動作,分組,抑制,靜默等功能
  • alertmanager安裝route定義的規則向終端:郵箱,企業微信等發生告警信息

監控服務端主機下載安裝alertmanager
alertmanager可以和prometheus主機安裝在一起,也可以獨立部署在一台主機。這里部署在一台主機

[root@localhost ~]# tar zxf alertmanager-0.19.0.linux-amd64.tar.gz 
[root@localhost ~]# mv alertmanager-0.19.0.linux-amd64 /usr/local/alertmanager

alertmanager主配置文件: alertmanager.yml內容標注

global:                # 全局配置
  resolve_timeout: 5m  #解析超時時間

route:             # 配置告警發送,接受規則
  group_by: ['alertname']  # 根據標簽分組
  group_wait: 10s          # 發送告警等待時間,為了合並相同告警一起發送
  group_interval: 10s      # 發送告警間隔時間
  repeat_interval: 10m      # 重復告警時間,控制發送告警頻率,根據情況設置
  receiver: 'web.hook'     # 定義接收者類型:mail,wechat等
receivers:        # 定義告警發給誰
- name: 'web.hook'
  webhook_configs:
  - url: 'http://127.0.0.1:5001/'
inhibit_rules:   # 告警抑制規則
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

配置163郵箱接收告警

  • alertmanager服務中配置,修改alertmanager.yml
global:
  resolve_timeout: 5m

  smtp_smarthost: 'smtp.163.com:25' # 定義163郵箱服務器端
  smtp_from: 'gudaoyufu@163.com'  #來自哪個郵箱發的
  smtp_auth_username: 'gudaoyufu@163.com' 郵箱驗證
  smtp_auth_password: 'XXXXXXXX'   # 郵箱授權碼,不是登錄密碼
  smtp_require_tls: false   # 是否啟用tls

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 3m  # 發送告警后間隔多久再次發送,減少發送郵件頻率
  receiver: 'mail'    #發送的告警媒體

receivers:
- name: 'mail'        # 接收者配置,這里要與接收媒體一致
  email_configs: 
  - to: 'gudaoyufu@163.com' #發送給誰的郵箱,多個人多行列出
#inhibit_rules:
#  - source_match:
#      severity: 'critical'
#    target_match:
#      severity: 'warning'
#    equal: ['alertname', 'dev', 'instance']

  • 檢查配置:
[root@localhost alertmanager]# ./amtool check-config alertmanager.yml
Checking 'alertmanager.yml'  SUCCESS
Found:
 - global config
 - route
 - 0 inhibit rules
 - 1 receivers
 - 0 templates
  • 啟動alertmanager
[root@localhost alertmanager]# ./alertmanager --config.file=./alertmanager.yml &

配置prometheus與alertmanager通信

上面的配置只是配置alertmanagerr服務,接下來配置prometheus與alertmanager通信

  • 配置prometheus告警規則
    官方配置文檔參考:https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
[root@localhost ~]# cd /usr/local/prome/
[root@localhost prome]# vim prometheus.yml

#啟用如需配置段

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 127.0.0.1:9093

# 配置告警規則
rule_files:
   - "rules.yml"   # 默認路徑在配置文件同級目錄下

  • 編輯rules.yml

vim rules.yml

groups:     # 報警組
- name: Node
  rules:

  # Alert for any instance that is unreachable for >5 minutes.
  - alert: InstanceDown
    expr: up == 0   # 監控狀態的值為 0時,說明服務異常,1為正常
    for: 5m  # 保持時間,上面的狀態持續時間內都為 0 ,則觸發告警
    labels:
      severity: error
    annotations:
      summary: "Instance {{ $labels.instance }} 停止工作"
      description: "{{ $labels.instance }} of job {{ $labels.job }} 已經停止1分鍾以上."
  • 檢查配置
[root@localhost prome]# ./promtool check config prometheus.yml
Checking prometheus.yml
  SUCCESS: 1 rule files found

Checking rules.yml
  SUCCESS: 1 rules found
  • 重啟prometheus
systemctl start prometheus

重啟prometheus后在prometheus服務端頁面中的alters中可以看到rules

測試停掉其他節點的監控agent

#停掉cadvisor
[root@localhost ~]# docker stop e9e9499bcf2b
e9e9499bcf2b

一會后http://192.168.235.130:9090/alerts中的狀態為Firing,此時郵件已經發出去了,登錄郵箱已經看到告警郵件了

告警狀態

  • Inactive : 正常狀態

  • Pending : 已經觸發閾值,但還未滿足告警持續時間

  • Firing : 已經觸發閾值並且滿足告警持續時間,警報發送給了接收者

  • 分組: 將類似性質的告警分類成單個通知

route:             # 配置告警發送,接受規則
  group_by: ['alertname']  # 根據標簽分組
  group_wait: 10s          # 發送告警等待時間,為了合並相同告警一起發送
  group_interval: 10s      # 發送告警間隔時間
  repeat_interval: 10m      # 重復告警時間,控制發送告警頻率,根據情況設置
  • 抑制: 當告警發出后,將停止重復發送由此報警引發的其他告警,消除冗余的告警
inhibit_rules:
  - source_match:  # 高級別告警源
      severity: 'critical'  
    target_match:   # 低級別的告警被抑制不會發送
      severity: 'warning'  
    equal: ['alertname', 'dev', 'instance']  #抑制匹配
  • 靜默: 是一種簡單的特定時間靜音提醒的機制

配置靜默通過alertmanager服務的9093端口服務,界面創建靜默規則

http://192.168.235.130:9093/#/silences


免責聲明!

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



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