以前已经做出这个实验了,没有做记录现在线上环境要使用邮件告警,再次使用还是有好多地方没有很快定位到问题所在。所以还是决定要写这篇博客。

zabbix能通过邮件或者其他的通信方式告知server problem 或者ok状态的变化。


一、整体思路

items->trigger->actions->scripts->send email

当监控项的值触发了创建的触发器,触发器就会调用动作将(标题,状况)等信息调用配置好的scripts去发送邮件。

接下来思路是先在zabbix server配置好能发送邮件的工具


二、配置邮件发送工具


1、安装mailx

yum install mailx


2、配置发送邮件用户

vim /etc/mail.rc

跳到最后一行添加

#能用邮件的用户例如[email protected]

set [email protected] 

#该邮箱的smtp服务器

smtp=smtp.sendcloud.net

#邮件的用户名

set [email protected] 

#邮箱密码(sendcloud工具),163或者qq邮箱都是该用户邮箱的授权码

smtp-auth-password=*********

set smtp-auth=login

保存退出


3、测试

echo “test”|mail -s “test”[email protected]

此时应该是收到邮件了,这就是是是用特定用户发送邮件的配置步骤


三、配置zabbix server scripts


1、配置zabbix server

在二中配置邮件发送工具,接下来要让zabbix server能调用脚本发送邮件

vim /etc/zabbix/zabbix_server.conf

将此行注释去掉。

AlertScriptsPath=/usr/lib/zabbix/alertscripts/

保存退出

service zabbix-server restart


2、编写脚本

cd /usr/lib/zabbix/alertscripts/

安装这个命令,否则发送邮件内容里会有个附件.bin看不到真正的邮件内容。由于windows和linux的文件格式不同吧。

yum install dos2unix 

vim scripts.sh

#!/bin/bash

#export LANG=zh_CN.UTF-8

to=$1

subject=$2

body=$3

FILE=/tmp/mailtmp.txt

echo "$3" >$FILE


dos2unix -k $FILE


/bin/mail -s "$2" $1 < $FILE

保存退出。

生成/tmp/mailtmp.txt

修改权限

chown zabbix:zabbix zabbix

修改脚本权限和属主,属组,否则zabbix没有权限调用脚本

chmod +x scripts

chown zabbix:zabbix scripts.sh


3、测试


./scripts [email protected] test test

同样,没有意外也会收到邮件,此时zabbix server 已经能够调用脚本发送邮件了。

接下来我们去zabbix server web界面 耍一耍,浪一浪。。。。


四、配置媒介方式


点击administration->Media types->create media type

zabbix邮件告警_第1张图片

1、就是刚写的脚本的名字

2、这是个比较大的坑,在zabbix 2.x没有这一项,这是给脚本传递参数,如果没有配置2这一项会出现显示已发送成功但是未成功收到邮件。


五、配置用户信息


这里配置的主要是要使用zabbix的哪个用户作为告警对象。配置该用户的media 填写要接收邮件的address,和media type

zabbix邮件告警_第2张图片

1、是在四中定义的media type

2、是接收邮件的email address


六、配置actions


点击 create action

(1)action

名字随意喽

default subject 是发送邮件的主题

服务器:{HOSTNAME1}:{TRIGGER.NAME}

default message 是脚本里的body也就是内容

告警主机:{HOSTNAME1}


告警信息: {TRIGGER.NAME}


当前状态:{TRIGGER.STATUS}


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


告警等级:{TRIGGER.SEVERITY}


告警项目:{TRIGGER.KEY1}


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


recoerage message 是当问题恢复时发送的

和上边的一样只是trigger status 变了。


(2)Condions (条件)


zabbix邮件告警_第3张图片

红框那可以选择条件(例如当trigger里有包含此处的trigger名字就会发生这个动作)


Operations里添加收告警的用户组和用户。

step那一样默认就可以。如果限定前几次和后几次发给不通级别的人就不要使用默认的了。默认的意思是当告警触发邮件时就发一次而已。这看需求。。。

保存。


七、测试


万事俱备,只欠东风。可以找一台机器关掉zabbix agent

可以看dashboard 上的events 是不是有actions发生。如果status是sent说明已经发送成功。