1、安装sendmail或postfix (邮件传送代理MTA),本教程使用sendmail软件。
(标注:如果直接使用外部邮箱发送邮件可以不需要配置sendmail或postfix,直接把这两个软件关掉,直接跳到第3步:配置mail即可实现)
[root@ssticentos65 ~]# yum -y install sendmail #在线yum安装sendmail
[root@ssticentos65 ~]# /etc/init.d/sendmail start #启动sendmail服务
[root@ssticentos65 ~]# /etc/init.d/sendmail status #查看sendmail启动情况
sendmail dead but subsys locked #sendmail进程锁住,原因是postfix服务启动导致sendmail服务进程锁住,需要关闭postfix服务。
sm-client (pid 1759) is running...
[root@ssticentos65 ~]# /etc/init.d/postfix stop #暂停postfix服务提示失败,原因是postfix进程正在使用,需要使用kill命令杀掉postfix进程
Shutting down postfix: [FAILED]
[root@ssticentos65 ~]# /etc/init.d/postfix status #查看postfix服务可以查看到进程号
master (pid 1647) is running...
[root@ssticentos65 ~]# kill -9 1647 #杀掉postfix服务进程号
[root@ssticentos65 ~]# /etc/init.d/postfix status #查看postfix状态
master dead but pid file exists
[root@ssticentos65 ~]# chkconfig postfix off #设置postfix开机不启动
[root@ssticentos65 ~]# /etc/init.d/sendmail stop #暂停sendmail服务
Shutting down sm-client: [ OK ]
Shutting down sendmail: [FAILED]
[root@ssticentos65 ~]# /etc/init.d/sendmail start #启动sendmail服务
Starting sendmail: [ OK ]
Starting sm-client: [ OK
2、安装邮件发送工具mailx 。(邮件用户代理MUA)
[root@ssticentos65 ~]# yum -y install mailx #在线安装mailx
3、 配置mail
[root@ssticentos65 ~]# vim /etc/mail.rc
set sendcharsets=iso-8859-1,utf-8
set [email protected] #用于zabbi服务端转发邮件到指定邮箱
set smtp=smtp.mail.com #填写发送邮箱服务器地址smtp
set [email protected] #个人邮箱账号
set smtp-auth-password=xxxxxx_alarm_jo #个人邮箱密码
4、测试邮件能否发送
发送一份邮件到[email protected]邮箱
[root@ssticentos65 ~]# echo "test" | mail -s 'test linux' [email protected]
5、编写邮件发送脚本sendmail.sh
[root@ssticentos65 ~]# cd /usr/lib/zabbix/alertscripts/ #进入zabbix默认存放脚本路径
[root@ssticentos65 alertscripts]# vim sendmail.sh #编写发送邮件脚本
#!bin/bash
FILE=/tmp/mailtmp.txt
echo "$3" > $FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
[root@ssticentos65 ~]# touch /tmp/mailtmp.txt
[root@ssticentos65 ~]# chown zabbix.zabbix /tmp/mailtmp.txt
sendmail.sh脚本修改所属用户和用户组
[root@ssticentos65 ~]# chown zabbix. /usr/lib/zabbix/alertscripts/sendmail.sh
[root@ssticentos65 alertscripts]# chmod 755 sendmail.sh #sendmail脚本赋予执行权限
[root@ssticentos65 ~]# su zabbix #切换zabbix用户
sh-4.1$ /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh [email protected] "test linux" "test" #zabbix用户执行sendmail.sh脚本看是否有权限
6、Zabbix后台web介面配置
1、管理 ---- 报警媒介类型 ----- 创建媒介类型。
2、名称可以随便自己定义-->类型选择:脚本-->脚本名称输入上一步编写的发送邮件的脚本名称
再添加以下3个参数,分别对应脚本需要的3个参数:收件人地址、主题、详细内容:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
3、管理 ---- 用户 ----- 选择admin用户。(自己创建一个用户也可以)
4、报警媒介 ---- 添加。
5、类型输入刚刚创建的报警媒介类型sendmail脚本 --- 输入个人邮箱用于接收报警邮件 --- 启动打勾 ---- 添加。
6、选择更新
7、配置 ---- 动作 ---- 创建动作。
8、定义操作。
默认接收人:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机:{HOSTNAME1}
告警主机IP地址:{HOST.CONN}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
10、定义恢复操作
默认接收人:
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
恢复信息:
告警主机:{HOSTNAME1}
告警主机IP地址:{HOST.CONN}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
11、测试
[root@ssticentos65 alertscripts]# systemctl stop zabbix-agent #暂停zabbix_agentd客户端服务