一. 部署Alertmanager:
1. 解压Alertmanager压缩包:
[root@node5 ~]# tar xf alertmanager-0.24.0.linux-amd64.tar.gz -C /usr/local/
2. 为解压后的文件做软连接:
[root@node5 ~]# ln -sv /usr/local/alertmanager-0.24.0.linux-amd64/ /usr/local/alertmanager
3. 配置Alertmanager配置文件:
- [root@node5 ~]# cd /usr/local/alertmanager
-
- ## 备份原本配置文件
- [root@node5 alertmanager]# cp alertmanager.yml{,.bak}
-
- [root@node5 alertmanager]# vim alertmanager.yml
-
- global: ##全局配置
- resolve_timeout: 5m
- smtp_smarthost: 'smtp.163.com:456'
- smtp_from: 'xxq20010723@163.com' ##发送告警的邮箱
- smtp_auth_username: 'xxq20010723@163.com' ##邮箱的用户名
- smtp_auth_password: 'KEZSZMNTQZXBQXRU' ##邮箱的授权码,并非邮箱的登陆密码
- smtp_require_tls: false
-
- route: ##配置报警分发策略
- group_by: ['alertname'] ##分组标签
- group_wait: 10s ##告警等待时间
- group_interval: 10s ##两组告警的间隔时间
- repeat_interval: 1m ##重复告警的间隔时间
- receiver: 'mail' ##默认接收者
- routes: ##指定哪些组可以接受消息
- - receiver: mail
-
- receivers: ##配置接收者信息
- - name: 'mail'
- email_configs:
- - to: 'xxq20010723@163.com' ##接收报警邮件的邮箱
4. 测试配置文件语法是否正确:
- [root@node5 alertmanager]# ./amtool check-config alertmanager.yml
-
- Checking 'alertmanager.yml' SUCCESS
- Found:
- - global config
- - route
- - 0 inhibit rules
- - 1 receivers
- - 0 templates
二. 关联Prometheus和Alertmanager:
1. 修改Prometheus.yml文件中的alerting配置项及rule_files配置项:
- [root@node5 ~]# vim /usr/local/prometheus/prometheus.yml
-
- alerting:
- alertmanagers:
- - static_configs:
- - targets:
- - localhost:9093
-
- rule_files: ##告警规则的文件
- - "rules.yml"
2. 编写告警规则文件" rules.yml ":
- [root@node5 ~]# vim /usr/local/prometheus/rules.yml
-
- groups:
- - name: mem_rule
- rules: ##告警规则
- - alert: '内存报警' ##告警规则的名称
- expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 1
- ##基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件
- for: 30s ##评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警
- labels: ##自定义标签,允许用户指定要附加到告警上的一组附加标签
- severity: warning
- annotations: ##用于指定一组附加信息
- summary: "服务名:{{$labels.altername}} 内存报警" ##告警的摘要信息
- description: "{{ $labels.altername }} 内存资源利用率大于 10%" ##告警的详细信息
- value: "{{ $value }}" ##表达式计算后的值
3. 重启prometheus服务:
[root@node5 ~]# systemctl restart prometheus.service
三. 配置Alertmanager服务启动文件:
1. 编写服务启动文件:
- [root@node5 ~]# vim /usr/lib/systemd/system/alertmanager.service
-
- [Unit]
- Description=alertmanager
- Documentation=https://github.com/prometheus/alertmanager
- After=network.target
-
- [Service]
- Type=simple
- User=prometheus
- WorkingDirectory=/usr/local/alertmanager
- ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml --storage.path=/usr/local/alertmanager/data --log.level=debug --log.format=json
- Restart=on-failure
-
- [Install]
- WantedBy=multi-user.target
2. 创建alertmanager的数据目录:
[root@node5 ~]# mkdir -p /usr/local/altermanager/data
3. 修改目录属主,属组:
[root@node5 ~]# chown -R prometheus.prometheus /usr/local/alertmanager/*
4. 启动服务:
- [root@node5 ~]# systemctl daemon-reload
-
- [root@node5 ~]# systemctl enable --now alertmanager.service
5. alertmanager服务默认端口是9093,查看端口是否监听:
- [root@slave2 ~]# ss -lntup | grep 9093
- tcp LISTEN 0 4096 [::]:9093 [::]:* users:(("alertmanager",pid=9770,fd=8))
6. 访问alertmanager:
http://192.168.188.115:9093
