一:首先测试一下服务是否断掉
[root@client ~]# systemctl stop sshd
[root@client ~]#
[root@client ~]# systemctl start sshd
[root@client ~]#
二:设置邮件报警
在服务端配置
2.1 首先先配置自己的邮箱
这里我是用qq邮箱
邮箱发送协议:smtp,25端口
邮件接受协议,pop3 110端口 IMAP4 143端口
- pop3与IMAP4的区别
POP3可以理解为单项通讯,比如删除接收到的邮件时,服务端还是存在这个邮件
而IMAP若是删掉本地的邮件,在服务端的也会被删掉
pop3允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等)不会反馈到服务器上
而IMAP提供webmail与电子邮件客户端的双向通道,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应动作
2.1.1 在邮箱设置中找到IMAP服务,选择开启,生成授权码
这个授权码用来验证身份
[root@server ~]# yum install mailx -y
[root@server ~]# vim /etc/mail.rc
# For Linux and BSD, this should be set.
set bsdcompat
#文件末尾新增
set from=965483130@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=965483130@qq.com
set smtp-auth-password=qcaspkj***ccbfai #这里是自己的授权码
set smtp-auth=login #使用登陆验证
2.1.2 测试mailx发送邮件
[root@server ~]# echo "hello world" | mail -s "testmail" 965483130@qq.com
[root@server ~]# echo “内容” | mail -s “标题” 邮箱地址
2.2 配置完成,接下来编写发送邮件脚本,一旦zabbix触发报警,就会自动执行脚本
2.2.1 zabbix可以调用脚本
[root@server ~]# vim mailx.sh
#!/bin/bash
#邮件发送
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 |tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >> /tmp/mailx.log 2>&1
[root@server ~]# touch /tmp/mailx.log
#对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
#对于2 ,表示标准错误,stderr。
#2>&1 的意思就是将标准错误重定向到标准输出。
2.2.2 将脚本移动到zabbix的指定目录下
[root@server ~]# cd /usr/lib/zabbix/
alertscripts/ externalscripts/
#常用脚本 #扩展脚本
[root@server ~]# cd /usr/lib/zabbix/alertscripts/
[root@server alertscripts]# cp ~/mailx.sh .
[root@server alertscripts]# ls
mailx.sh
2.2.3 赋予权限
[root@server alertscripts]# chmod +x mailx.sh
[root@server alertscripts]# chown -R zabbix.zabbix /tmp/mailx.log
[root@server alertscripts]# ll /usr/lib/zabbix/
total 0
drwxr-xr-x 2 zabbix zabbix 22 May 24 11:13 alertscripts
drwxr-xr-x 2 zabbix zabbix 6 Apr 27 18:23 externalscripts
[root@server alertscripts]# chown -R zabbix.zabbix /usr/lib/zabbix/
2.2.4 测试脚本
[root@server alertscripts]# ./mailx.sh 965483130@qq.com "./mail.sh" "cishijiaoben"
[root@server alertscripts]# tail -f /tmp/mailx.log
^C
#有报错才会写入日志
脚本编写完成
三:配置zabbix报警触发参数
在web上面配置
3.1 管理-报警媒体类型-创建媒体类型
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
3.2 管理-用户-点击Admin-报警媒介
点击添加
类型选中刚才指定的脚本类型的报警
然后点击添加,点击更新
3.3 配置-动作-创建动作-删除默认标签-修改触发条件
默认的是被停用的
操作的默认参数
修改后的参数
默认操作步骤持续时间 60
默认标题 : {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容:
告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
- 恢复操作
默认标题:{TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容:
恢复主机:{HOST.NAME}
恢复 IP:{HOST.IP}
恢复时间:{EVENT.DATE}-{EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复 ID:{EVENT.ID}
- 点击添加
四:测试报警
4.1 停掉sshd服务
[root@client ~]# systemctl stop sshd
触发邮件报警
4.2 恢复服务
[root@client ~]# systemctl start sshd
触发恢复操作邮件
备注:
使用钉钉的话,就需要申请一个机器人
微信的话,需要申请一个企业级账号