prometheus使用alertmanager部署Linux/mysql/oracle邮件告警

【环境介绍】

系统环境:CentOS Linux release 7.6 + prometheus version 2.20.0 + Grafana CLI version 7.1.3 + alertmanager 0.21.0 + mysql 5.7 + oracle 11.2.0.4.0
 
【alertmanager 安装部署】
下载对应的软件版本:https://prometheus.io/download/#alertmanager
安装操作:

tar -zvxf alertmanager-0.21.0.linux-amd64.tar.gz
cp alertmanager-0.21.0.linux-amd64/alertmanager /usr/local/bin/
cp alertmanager-0.21.0.linux-amd64/amtool /usr/local/bin/
alertmanager --version

创建alertmanager发送邮件信息的配置文件,修改注释说明部分即可

cat > /etc/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
###################################
smtp_auth_username: "xxxxx@qq.com"   ###这里配置发送邮件的用户,我这里使用自己QQ发送邮件
smtp_auth_password: "xxxxx"                   ###这里输入授权码,操作方法参考官方文档,操作比较简单,最后将授权码复制到xxxxx即可:https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
#smtp_auth_secret: ""
smtp_require_tls: false
smtp_smarthost: "smtp.qq.com:465" 
smtp_from: "xxxxxx@qq.com"                  ###这里配置发送邮件的地址,我这里使用自己QQ发送邮件
####################################
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'email-caozm'

receivers:
- name: 'email-caozm'
email_configs:
- send_resolved: true
to: xxxx_xxxx@kxxxx.com                     ###这里配置为接收邮件的地址
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']

 

尝试启动alertmanager:

 

 没有报错即可,然后打开网页地址访问http://10.0.x.xxx:9093/,查看status可以看到刚才配置文件内容

以上配置后,alertmanager安装完成,然后停止掉即可。

 

 【prometheus加载alertmanager的配置】

只修改prometheus.yml配置文件即可,

分两部分:

第一个修改为alertmanager安装的IP,跟输出日志的端口一致

第二个配置告警的规则,这里在当前目录下创建rules文件夹,下面多个告警配置文件类型,*rules.yml表示以这个为后缀名就可以读取文件

 

添加一个告警规则文件,注意这里使用率当前配置文件下创建目录:

mkdir ./rules

cd rules

 

 创建告警规则文件

注意:前面定义的*rules.yml,创建的文件一定要以这个为后缀名,这里部署多个监控告警,Linux跟Oracle跟MySQL规则,这里举例Linux规则,具体写法可以查询网址即可

cat >LinuxAlert_rules.yml
groups:
- name: LinuxAlert
rules:
- alert: Linux is down
expr: up == 0
for: 1m
labels:
zone: 内网
type: linux-alert
serverity: critical
annotations:
summary: "linux 主机{{ $labels.instance }} 停止工作"
description: "linux 主机{{ $labels.instance }} job {{ $labels.job }} linux主机服务已停止"

- alert: LinuxDdisKUseHight
expr: round(100-100*(node_filesystem_avail_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"})) > 95
for: 1m
labels:
zone: 内网
type: linux-alert
severity: critical
annotations:
summary: "linux 主机{{ $labels.instance }}磁盘使用率过高"
description: "linux 主机{{ $labels.instance }} 当前磁盘{{$labels.mountpoint}} 使用率{{ $value }}%"

 

重启prometheus加载告警规则

这里这边使用kill方式(具体压力大的需要权衡,可采取停服务方式)

 

 

 

查看prometheus加载告警规则是否生效

访问http://10.0.0.xxx:9090/alerts

这里信息跟配置的一致,三种类型,每种类型定义具体的告警规则

 

 查看具体的规则是否正常,点击具体的规则,然后点击链接,自动跳转到查询界面:

调整具体的阈值,可以查看当前监控到达阈值的对象情况,我这里从95调整为80查看信息(具体告警阈值需要自己权衡评估)

 

 【重新启动alertmanager触发告警及告警邮件信息】

跟第一次启动方式一样,启动alertmanager,这里使用调试目的,没有后台运行(后台运行命令 nohup alertmanager --config.file alertmanager.yml & 注意具体的路径配置文件)

 

 查看到达阈值规则的告警信息是否发送到alertmanager,到达阈值的告警会显示在这里

 

查看邮件信息:

Linux邮件告警信息

 

 

 Oracle告警邮件信息

触发的告警信息

 恢复的告警信息

MySQL告警邮件信息

触发的告警信息

恢复的告警信息

 

 

posted @ 2021-03-17 18:16  zetan·chen  阅读(522)  评论(0编辑  收藏  举报