• netdata邮件告警配置


    接上一篇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

    1. yum install epel-release.noarch
    2. 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目录下,不要用复制,复制会有配置冲突

    1. chmod 644 ~/.msmtprc
    2. 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 \

    完整命令

    1. docker run -d --name=netdata \
    2. -p 19999:19999 \
    3. -v netdatacache:/var/cache/netdata \
    4. -v /proc:/host/proc:ro \
    5. -v /sys:/host/sys:ro \
    6. -v /var/run/docker.sock:/var/run/docker.sock:ro \
    7. --restart unless-stopped \
    8. --cap-add SYS_PTRACE \
    9. --security-opt apparmor=unconfined \
    10. netdata/netdata

    实测告警恢复的clear邮件有半小时延迟,critical和warning邮件没有延迟,具体情况还得继续研究。

    注意:这里的 -v netdatacache使用的docker数据卷,不能用其他目录如${PWD}/netdatacache代替,否则docker无法启动

    5.docker日志和邮件日志时间为utc

    查看相关issue发现,netdata会读取/etc/localtime的配置,做一下目录映射就好了

    增加映射

    -v /etc/localtime:/etc/localtime:ro  \

    完整命令

    1. docker run -d --name=netdata \
    2. -p 19999:19999 \
    3. -v netdatacache:/var/cache/netdata \
    4. -v /proc:/host/proc:ro \
    5. -v /sys:/host/sys:ro \
    6. -v /var/run/docker.sock:/var/run/docker.sock:ro \
    7. -v /etc/localtime:/etc/localtime:ro \
    8. --restart unless-stopped \
    9. --cap-add SYS_PTRACE \
    10. --security-opt apparmor=unconfined \
    11. netdata/netdata

  • 相关阅读:
    Java(运算符+循环)万字超详细介绍 (囊括了按位,异或,for,while等基础和疑难知识)
    Java方法的使用
    基于Chirp窄带扩频技术的无线混合组网应用,以多角色智能计量插座作为Chirp广域基站,构建边缘计算混合无线网络
    Linux学习5—磁盘管理
    Django——模板应用
    图文流程 Linux部署多个Mysql
    考研王道强化阶段(二轮复习)“算法题”备考打卡表 记录
    static关键字的注意事项
    vue electron 下载Vue-devtools ChromeExtension扩展失败
    leetCode 206. 反转链表
  • 原文地址:https://blog.csdn.net/gsls200808/article/details/125451875