之前用过zabbix和prometheus监控服务器状态,但是对于小型项目来说感觉还是太重,最近发现一个相对轻量的监控面板netdata
docker安装
官方
- docker run -d --name=netdata \
- -p 19999:19999 \
- -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
其他第三方容器 titpetric/netdata
访问
http://ip:19999
如图
邮件告警配置
netdata参考:https://learn.netdata.cloud/docs/agent/health/notifications/email
msmtprc邮件配置文件参考 https://marlam.de/msmtp/msmtprc.txt
编辑配置文件
vi /root/.msmtprc
yandex邮箱配置示例内容
- defaults
- port 465
- tls on
- tls_starttls off
- account yandex
- host smtp.yandex.com
- from zabbix@mail.abc.com
- auth login
- user zabbix@mail.abc.com
- password 12345678
- account default : yandex
QQ邮箱配置示例内容
- defaults
- port 465
- tls on
- tls_starttls off
- logfile /var/log/msmtp.log
- account qqwork
- host smtp.exmail.qq.com
- from abc@example.net.cn
- auth login
- user abc@example.net.cn
- password 12345678
- account default : qqwork
改权限
chmod 600 /root/.msmtprc
测试发邮件
echo "来自msmtp发出的告警邮件" | msmtp -d your@email.com
上述邮件没有主题可能会被当做垃圾邮件处理,建议改用下面的方式
echo -e "Subject: 你好\n\n这是来自msmtp发出的告警邮件." | msmtp -d your@email.com
其中-e开启\n换行转义,用两个换行使主题和正文分开
或者使用html方式发邮件
vi sample.html
内容如下
- From: sender@mail.com
- To: recipient@mail.com
- Subject: This is the Subject
- Mime-Version: 1.0
- Content-Type: text/html
-
- <html>
- <head>This is Email Head</head>
- <body>
- <h2>This is the Main Title</h2>
- <p>This is the body text</p>
- </body>
- </html>
发送邮件
cat sample.html | msmtp -d recipient@mail.com
其他常见问题
1.配置文件中auth方式是on,但是yandex和qq企业邮箱并不支持,可以通过下面这个命令查看服务器支持auth的方式
- msmtp --host=smtp.yandex.com --serverinfo
- msmtp --host=smtp.exmail.qq.com --serverinfo
2.debug信息报错,停留在reading recipients from the command line
解决方法:在.msmtprc配置文件添加配置tls_starttls off