返回列表 发帖

CentOS8_通过脚本发送Zabbix告警邮件(使用新浪邮箱的25端口)

笺注:这是在 CentOS8编译安装Zabbix4.4.5 的基础上进行的。


先在Zabbix服务器上配置邮件功能:(无需安装Postfix、Sendmail)

先检测发送邮件的软件包mailx安装了没有:
[root@centos8 ~]# rpm -q mailx
未安装软件包 mailx

安装mailx:
[root@centos8 ~]# yum -y install mailx

确认mailx安装成功:
[root@centos8 ~]# rpm -q mailx
mailx-12.5-29.el8.x86_64

查看mailx的相关文件、目录:
[root@centos8 ~]# rpm -ql mailx
/bin/mail
/bin/mailx
/etc/mail.rc
/usr/bin/Mail
/usr/bin/nail
/usr/lib/.build-id
/usr/lib/.build-id/e0
/usr/lib/.build-id/e0/16cad374c96ed5dbda7f751ab0cc153815c49f
/usr/share/doc/mailx
/usr/share/doc/mailx/AUTHORS
/usr/share/doc/mailx/COPYING
/usr/share/doc/mailx/README
/usr/share/man/man1/Mail.1.gz
/usr/share/man/man1/mail.1.gz
/usr/share/man/man1/mailx.1.gz
/usr/share/man/man1/nail.1.gz


修改mailx的配置文件:
cat >/etc/mail.rc<< eof
set from=j2270168881@sina.com
set smtp=smtp.sina.com
set smtp-auth-user=j2270168881
set smtp-auth-password=e60945932d7cd18e #授权码
set smtp-auth=login
eof

发送测试邮件:
[root@centos8 ~]# echo "Hello." | mail -s "Title" 22701xxx@qq.com


正常的话,QQ邮箱可以收到测试邮件:
图片2.png



######

寻找Zabbix的告警脚本的默认存放目录:
[root@centos8 ~]# cd /usr/local/zabbix/etc/
[root@centos8 etc]# grep "AlertScriptsPath" zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts


[root@centos8 ~]# find / -name "alertscripts"
/usr/local/zabbix/share/zabbix/alertscripts


创建告警邮件脚本:
[root@centos8 ~]# cd /usr/local/zabbix/share/zabbix/alertscripts
[root@centos8 alertscripts]# ls
[root@centos8 alertscripts]#
[root@centos8 alertscripts]# vi sendmail.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >> /tmp/sendmail.log 2>&1


完成的效果如下图:
图片3.png


设置脚本的权限:
[root@centos8 alertscripts]# chmod 755 sendmail.sh
[root@centos8 alertscripts]# chown zabbix.zabbix sendmail.sh
[root@centos8 alertscripts]#
[root@centos8 alertscripts]# ll sendmail.sh
-rwxr-xr-x 1 zabbix zabbix 154 6月   3 10:44 sendmail.sh



######

继续通过浏览器配置Zabbix的邮件功能:

1)管理》报警媒介类型》Email:

类型选择“脚本”,

脚本名称:
sendmail.sh

脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}


如下图:
图片4.png


更新后,可以点击“Email”右边的“测试”:
图片5.png

发送Zabbix的测试邮件:
图片6.png
注释:要指定收件人邮箱。

Zabbix的测试邮件发送成功:
图片7.png


正常的话,QQ邮箱可以收到Zabbix的测试邮件:
图片8.png



2)配置用户的收件邮箱:
管理》用户》Admin:(使用用户Admin进行接收邮件)

添加报警媒介:
图片9.png

图片10.png
注释:要指定收件人邮箱。

点击“更新”:
图片11.png



3)配置触发邮件的条件:
配置》动作》“Report problems to Zabbix administrators”:
图片12.png


自定义“动作”:
图片13.png 注释:
勾选“已启用”;
计算方式选为
使用 触发器警示度

备注:
触发条件的对象如下图:
图片14.png


###
自定义“操作”:(默认标题、消息内容会出现在告警邮件中)
图片15.png
注释:
不勾选“暂停操作以制止问题”;
默认操作步骤持续时间 60s


###
自定义“恢复操作”:(默认标题、消息内容会出现在告警恢复邮件中)
图片16.png
注释:
其他地方可以保持默认,点击“更新”;


“操作”、“恢复操作”的消息内容的中文模板:

告警主机IP地址:{HOST.CONN}

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}



触发邮件的条件更新成功:
图片17.png



######

当主机Zabbix server的FTP服务Down了,会触发模板Template App FTP Service自带的触发器“FTP service is down on {HOST.NAME}”,收件人会收到如下类似的告警邮件:
图片18.png


在Zabbix服务器上使用命令zabbix_get检测本机(127.0.0.1)的监控项“FTP service is running”的键值:(默认是监控TCP 21端口)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k net.tcp.service[ftp]
0

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k net.tcp.service[ftp,,21]
0



###

当主机Zabbix server的FTP服务从Down到Up,
触发器“FTP service is down on {HOST.NAME}”会自动消除警告,收件人会收到如下类似的告警恢复邮件:
图片19.png


再次,在Zabbix服务器上使用命令zabbix_get检测本机(127.0.0.1)的监控项“FTP service is running”的键值:(默认是监控TCP 21端口)
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k "net.tcp.service[ftp]"
1

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k "net.tcp.service[ftp,,21]"
1



######

查看Zabbix发送过的邮件:

报表》动作日志:
图片20.png


告警邮件的发送记录:
图片21.png

图片22.png


告警恢复邮件的发送记录:
图片23.png

图片24.png





######
######

如果被控主机的FTP端口不是默认的TCP 21,模板Template App FTP Service则监控不了,会直接认为是FTP服务Down了;
其实模板Template App FTP Service的原理就是监控TCP 21端口,看这个端口是否处于侦听状态。


解决方法如下:(假设FTP的端口已经改为TCP 2121)

1、克隆主机Zabbix server的监控项“FTP service is running”:(这里的监控项不能直接修改,但可以禁用)
图片26.png
备注:点击此页面底下的“克隆”按钮。


克隆后,自定义新监控项的名称: FTP service(2121) is running
键值改为: net.tcp.service[ftp,,2121]
图片27.png
备注:点击此页面底下的“添加”按钮。



2、克隆主机Zabbix server的触发器“FTP service is down on {HOST.NAME}”:(这里的触发器不能直接修改,但可以禁用)
图片28.png
备注:点击此页面底下的“克隆”按钮。


克隆后,自定义新触发器的名称: FTP service(2121) is down on {HOST.NAME}
严重性改为: 严重
表达式改为: {Zabbix server:net.tcp.service[ftp,,2121].max(#3)}=0
图片29.png
备注:
触发器的表达式要用到监控项中的键值;
点击此页面底下的“添加”按钮。


旧的触发器“FTP service is down on {HOST.NAME}”要禁用:
图片41.png

图片31.png



###

当主机Zabbix server的TCP 2121端口没有处于侦听状态时,会触发自定义的触发器“FTP service(2121) is down on {HOST.NAME}”,仪表板的告警效果如下图:
图片32.png

图片33.png


收件人会收到如下类似的告警邮件:
图片34.png


在Zabbix服务器上使用命令zabbix_get检测本机(127.0.0.1)的监控项“FTP service(2121) is running”的键值:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k net.tcp.service[ftp,,2121]
0



###

当主机Zabbix server的TCP 2121端口处于侦听状态时,
自定义的触发器“FTP service(2121) is down on {HOST.NAME}”会自动消除警告,仪表板的告警会自动消失,收件人会收到如下类似的告警恢复邮件:
图片35.png


再次,在Zabbix服务器上使用命令zabbix_get检测本机(127.0.0.1)的监控项“FTP service(2121) is running”的键值:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k "net.tcp.service[ftp,,2121]"
1





######
######

模板Template OS Linux by Zabbix agent默认自带监控服务器重启的触发器:
名称: {HOST.NAME} has been restarted (uptime < 10m)
表达式: {Zabbix server:system.uptime.last()}<10m
图片36.png


当主机Zabbix server重启后,仪表板的告警效果如下图:
图片37.png

图片38.png


当主机Zabbix server重启后,收件人会收到如下类似的告警邮件:
图片39.png


大概10分钟后,主机Zabbix server的触发器“{HOST.NAME} has been restarted (uptime < 10m)”会自动消除警告,收件人会收到如下类似的告警恢复邮件:
图片40.png


备注:
新浪邮箱发送这种邮件后,在“已发送”里是没有记录的。






相关文章:
CentOS8_通过脚本发送Zabbix告警邮件(使用新浪邮箱的465端口)
CentOS8_通过脚本发送Zabbix告警邮件(使用Postfix的25端口)
CentOS8_通过脚本发送Zabbix告警邮件(使用126邮箱的25端口)

Zabbix5.0.12_通过脚本发送Zabbix告警邮件(使用126邮箱的465端口)

Zabbix使用SNMP监控CentOS7/Redhat7
CentOS8_vsftpd匿名用户
CentOS6_通过脚本发送Zabbix告警邮件(使用新浪邮箱的465端口)

使用新浪邮箱的465端口发送邮件报错(535 authentication failed)
Windows2008R2_UPUPW_AP5.6的一些应用

返回列表