安裝alertmanager
安裝包下載:
地址1:https://prometheus.io/download/
地址2:https://github.com/prometheus/alertmanager/releases
步驟:
1.部署alertmanager
2.在alertmanager.yml配置文件中配置郵箱服務(wù)器,路由數(shù),接收人。
3.配置Prometheus與Alertmanager通信
4.在Prometheus中創(chuàng)建告警規(guī)則
1.部署
下載二進(jìn)制包后解壓
tar zxvf alertmanager-xxxx.tar.gz
mv alertmanager-xxxx alertmanager
注冊系統(tǒng)服務(wù)(啟動后端口默認(rèn)·為9093)
[Unit]
Description=alertmanager
[Service]
ExecStart=/usr/local/monitor/alertmanager/alertmanager --config.file=/usr/local/monitor/alertmanager/alertmanager.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
- alertmanager.yml配置
#全局設(shè)置
global:
resolve_timeout: 5m
# 郵箱服務(wù)器
smtp_smarthost: 'smtp.qq.com:25'
smtp_from: '發(fā)送人郵箱'
smtp_auth_username: '發(fā)送人郵箱'
smtp_auth_password: '授權(quán)碼'
smtp_require_tls: false
# 配置路由樹
route:
group_by: ['jiankong'] # 根據(jù)告警規(guī)則組名進(jìn)行分組
group_wait: 30s # 分組內(nèi)第一個告警等待時間,30s內(nèi)如有第二個告警會合并一個告警
group_interval: 10s # 發(fā)送新告警間隔時間,控制告警組的發(fā)送頻率,一條告警消息發(fā)送后,等待3分鐘,發(fā)送第二組告警
repeat_interval: 30m # 重復(fù)告警間隔發(fā)送時間,如果一條告警已經(jīng)發(fā)送成功,后續(xù)相同的告警間隔6分鐘發(fā)送
receiver: 'java_linux' #接收人
# 接收人
receivers:
- name: 'java_linux'
email_configs:
- to: 'tianye@lzad.cc'
3.配置Prometheus與Alertmanager通信

image.png
vim prometheus.yml
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 127.0.0.1:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "rules/*.yml"
# - "second_rules.yml"
配置了所有告警規(guī)則都匹配 普羅米修斯目錄下rules目錄下的所有yml文件,所以要新建一個目錄rules
vim rules/node.yml
groups:
- name: jiankong #告警規(guī)則組名稱
rules:
#文件系統(tǒng)使用率超過70%就告警
- alert: DiskFilesUsage #告警規(guī)則名稱
expr: 100 - (node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 70 #ProQL表達(dá)式作為觸發(fā)條件閥值
for: 2m #等待評估時間
labels: #自定義標(biāo)簽,定義一個level標(biāo)簽,標(biāo)記這個告警規(guī)則是警告級別
level: warning
annotations: #指定附加信息(郵件標(biāo)題文本)
summary: "{{ $labels.instance }}: {{ $labels.mountpoint }}分區(qū)使用過高"
description: "{{$labels.instance}}: {{$labels.mountpoint }} 分區(qū)使用大于 80% (當(dāng)前值: {{ $value }})"
- alert: MemUsage
expr: 100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 >80
for: 2m
labels:
level: warning
annotations:
summary: "{{ $labels.instance }}: 內(nèi)存使用過高"
description: "{{$labels.instance}}: 內(nèi)存使用大于 80% (當(dāng)前值: {{ $value }})"
- alert: CpuUsage
expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 80
for: 2m
labels:
level: warning
annotations:
summary: "{{ $labels.instance }}: CPU使用過高"
description: "{{$labels.instance}}: CPU使用大于 80% (當(dāng)前值: {{ $value }})"
重新加載服務(wù)

image.png
這里告警規(guī)則已經(jīng)應(yīng)用上了
測試:
當(dāng)分區(qū)1.111機器的跟分區(qū)使用率大于70%

image.png
開始檢測到指標(biāo)觸發(fā)閥值,回到評估狀態(tài),過了評估時間就會發(fā)郵件

image.png
Prometheus 告警狀態(tài)了解
一旦這些警報存儲在Alertmanager,它們可能處于以下任何狀態(tài):
- · Inactive:這里什么都沒有發(fā)生。
- · Pending:已觸發(fā)閾值,但未滿足告警持續(xù)時間(即rule中的for字段)
- · Firing:已觸發(fā)閾值且滿足告警持續(xù)時間。警報發(fā)送到Notification Pipeline,經(jīng)過處理,發(fā)送給接受者這樣目的是多次判斷失敗才發(fā)告警,減少郵件。

image