最近做的一个项目用到了zabbix监控系统,熟悉了好久终于能监控起来了,但是后来又要求发生问题要报警,然后就先用了最简单的Email报警方式,特此记录:
Linux 部分:
1.发邮件我们使用的是 mailx 如果安装了其他的请先关闭
yum install mailx
2.配置发送邮件的邮箱 (如果没有 mail.rc 文件就创建)
vim /etc/mail.rc
#添加以下内容
set sendcharsets=iso-8859-1,utf-8
set from=123456789@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=123456789@qq.com
set smtp-auth-password=xxxxx
我这里就用QQ邮箱举例了
注:set smtp-auth-password 这个参数是授权码,我当时就被坑了好久。看图,红框框~
3.配置完以后就可以测试一下了
echo "test messages" | mail -s "zabbix" 123456789@qq.com
4.成功收到邮件以后,编写发送邮件脚本
首先查看一下 zabbix 的配置文件,看一下zabbix的报警脚本的文件路径
[root@localhost ~]# cat /etc/zabbix/zabbix_server.conf | grep AlertScriptsPath
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
5.切换到 /usr/lib/zabbix/alertscripts 这个目录下,创建 sendEmail.sh 脚本,并粘贴以下内容
#!/bin/bash
#export.UTF-8 ###解决发送的中文变成了乱码的问题
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE ###解决了发送的邮件内容变成附件的问题。
/bin/mail -s "$2" $1 < $FILE
6.给脚本授权
chmod 755 sendEmail.sh
7.创建临时文件
touch /tmp/mailtmp.txt
至此 Linux 部分配置结束。
Zabbix 部分:
1.管理 ==> 报警媒介类型 ==> 创建媒体类型
2.填写内容 (注意红框中的脚本名称要和Linux部分创建的脚本名称一致,否则会发送邮件会失败,报脚本找不到的问题)
{ALERT.SENDTO} 接收邮箱
{ALERT.SUBJECT} 主题
{ALERT.MESSAGE} 发送的内容
3.给用户添加报警媒介 按照箭头顺序,很好理解吧
4.配置发送邮件的动作
添加新的出发条件 (选完以后要点添加!!!)
然后切换到操作继续填写 (填完点添加)
添加完成
到这里我们就完成了 Email 的全部配置,然后等着出问题接受邮件就可以了
如果等不及就可以去添加的主机里面,点开触发器,推荐克隆一个 -----> 点开这条,然后最下面点克隆
Template OS Linux: Lack of available memory on server {HOST.NAME} |
将
保存,然后切换到监控项
(将鼠标放到 触发器2 上就会显示如下 因为我克隆以后天的名字是aaa,所以这里就显示的是aaa)
找到 Available memory 点开修改更新间隔为 5s
保存。
去 监测中 ==> 仪表盘 看问题项:
发送成功!~
注:如果收到的Eamil存在 bin 附件的问题
解决方法如下,进入Linux安装dos2unix转换工具即可
rpm -ivh https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm