接上一篇msmtp服务配置完成之后,这篇继续配置邮件告警
1.配置netdata邮件收件人
/etc/netdata/edit-config health_alarm_notify.conf
命令类似vi i进编辑模式,编辑完成 esc输入:wq保存
修改
DEFAULT_RECIPIENT_EMAIL="root"
将root修改成邮件地址,多个地址用空格分开,邮件后可接|critical告警等级,如
DEFAULT_RECIPIENT_EMAIL="12345678@qq.com abc@abc.net.cn|critical"
其中第一个邮件地址接收所有等级的告警,第二个邮件地址接收critical等级的告警结果。
2.配置sendmail的路径为msmtp的路径
修改配置
/etc/netdata/edit-config health_alarm_notify.conf
将
sendmail=""
改成
sendmail="/usr/bin/msmtp"
测试发送
/usr/libexec/netdata/plugins.d/alarm-notify.sh test
第一个邮件地址能收到3封邮件,第二个邮件地址能收到2封邮件,第一个多一个warning邮件。
3.用stress压测cpu
安装stress
- yum install epel-release.noarch
- yum install stress
压测cpu
stress --cpu 1 --timeout 600
这里使用模拟1个 CPU 使用率 100% 的场景
1是cpu核数,根据你的电脑调整,是几核就改成几,等待10分钟就有critical级别的告警了。
常见问题
1.十分钟后没有发送邮件查找日志
日志错误报
msmtp: account default not found: no configuration file available
将.msmtprc文件权限改成644并且剪切到/etc/msmtprc目录下,不要用复制,复制会有配置冲突
- chmod 644 ~/.msmtprc
- mv ~/.msmtprc /etc/msmtprc
2.日志错误报
msmtp: /etc/msmtprc: line 11: account default was already defined
解决方法:将/root/.msmtprc文件删除,只保留/etc/msmtprc文件
3.带|critical的收不到告警恢复的clear邮件
查看日志报
touch: /var/cache/netdata/alarm-notify/email/abc@abc.net.cn/1655974263: Permission denied
如果是docker环境,将:/var/cache/netdata目录映射出去就解决了
docker run命令添加
-v netdatacache:/var/cache/netdata \
完整命令
- docker run -d --name=netdata \
- -p 19999:19999 \
- -v netdatacache:/var/cache/netdata \
- -v /proc:/host/proc:ro \
- -v /sys:/host/sys:ro \
- -v /var/run/docker.sock:/var/run/docker.sock:ro \
- --restart unless-stopped \
- --cap-add SYS_PTRACE \
- --security-opt apparmor=unconfined \
- netdata/netdata
实测告警恢复的clear邮件有半小时延迟,critical和warning邮件没有延迟,具体情况还得继续研究。
注意:这里的 -v netdatacache使用的docker数据卷,不能用其他目录如${PWD}/netdatacache代替,否则docker无法启动
5.docker日志和邮件日志时间为utc
查看相关issue发现,netdata会读取/etc/localtime的配置,做一下目录映射就好了
增加映射
-v /etc/localtime:/etc/localtime:ro \
完整命令
- docker run -d --name=netdata \
- -p 19999:19999 \
- -v netdatacache:/var/cache/netdata \
- -v /proc:/host/proc:ro \
- -v /sys:/host/sys:ro \
- -v /var/run/docker.sock:/var/run/docker.sock:ro \
- -v /etc/localtime:/etc/localtime:ro \
- --restart unless-stopped \
- --cap-add SYS_PTRACE \
- --security-opt apparmor=unconfined \
- netdata/netdata