alertmanager與exporters、cadvisor一樣,都是獨立於prometheus項目,這里我們也使用docker方式部署alertmanager。
1、下載鏡像
鏡像地址:https://hub.docker.com/r/prom/alertmanager/tags
[root@prometheus-server ~]# docker pull prom/alertmanager
2、運行
## 創建容器映射目錄,存放配置文件
[root@prometheus-server ~]# mkdir /etc/alertmanager
## 創建alertmanager默認配置文件
[root@prometheus-server ~]# vim /etc/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'web.hook'
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']
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'web.hook'
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']
[root@prometheus-server ~]# docker run -d -p 9093:9093 \
-v /etc/alertmanager:/etc/alertmanager \
-v /var/lib/alertmanager:/alertmanager \
--name alertmanager prom/alertmanager \
--config.file="/etc/alertmanager/alertmanager.yml" \
--storage.path=/alertmanager
-v /etc/alertmanager:/etc/alertmanager \
-v /var/lib/alertmanager:/alertmanager \
--name alertmanager prom/alertmanager \
--config.file="/etc/alertmanager/alertmanager.yml" \
--storage.path=/alertmanager
參數說明:alertmanager官方容器中配置文件為config.yml,這里我們指定配置文件為alertmanager.yml,注意命令先后順序。
3、配置郵件報警
[root@prometheus-server ~]# vim /etc/alertmanager/alertmanager.yml global: smtp_smarthost: 'smtp.163.com:25' smtp_from: ******@163.com' smtp_auth_username: '******@163com' smtp_auth_password: '****' smtp_require_tls: false route: receiver: dev-mail ## 接收者 receivers: - name: 'dev-mail' ## 與route中的 receiver一致
email_configs: - to: '****@vanje.com.cn.com'
4、prometheus添加告警規則
[root@prometheus-server ~]# mkdir /etc/prometheus/rules [root@prometheus-server ~]# vim /etc/prometheus/rules/node_alerts.yml groups:
- name: node_alerts
rules:
- alert: InstanceDown ## alert名稱
expr: up{job='node'} == 0 ## 報警條件
for: 1m ## 超過1分鍾,prometheus會把報警信息發送至alertmanger
labels:
severity: "warning"
annotations:
summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!
5、Prometheus開啟alertmanager報警
[root@prometheus-server ~]# vim /etc/prometheus/prometheus.yml
### 開啟alertmanager監控
alerting:
alertmanagers:
- static_configs:
- targets:
- 10.10.0.13:9093 ## alertmanager服務地址
## 添加prometheus對alertmanager服務的監控
- job_name: 'alertmanager'
static_configs:
- targets: ['10.10.0.13:9093']
重啟prometheus及 alertmanager,可以看到prometheus已經加載剛定義的報警規則
6、驗證
我們隨便停一個節點的node_exporter服務,然后查看prometheus上 報警信息(這里我們停掉10.10.0.11服務器node_exporter服務)
一分鍾后,查看alertmanager報警信息,此時郵件也會收到報警