当zabbix的监控指标出现异常时,需要通过某种“媒介”传递收信人。所以zabbix中,报警方式也被称为报警“媒介”。在zabbix中支持以下几种媒介:
Email:邮件,最常用的一种报警方式,需要定义发件人邮箱地址和SMTP服务器,
Script:自定义脚本,此脚本有发送信息至相关用户的功能。
SMS:短信,如果想要短信报警,则需要依赖短信网关(北美的运营商可用)。
Jabber:及时通信服务(北美的运营商可用)。
Ez Texting:商业的,短信服务(北美的运营商可用)。
因此,我们能用的也就剩下Email和Script了。接下来讲讲如何定义报警媒介。
打开zabbix管理控制台,点击“管理—报警媒介类型”。
可以看到,默认已经存在一些报警媒介,我们可以对已经存在的报警媒介进行修改,也可以自定义报警媒介。
点击“创建报警媒介”,会出现如下界面,默认的报警媒介是电子邮件类型。
这里我们选择“脚本”方式,通过脚本方式报警是非常灵活的,我们可以通过脚本发送邮件、短信、企业微信等。脚本通过哪种方式,取决于我们如何编写脚本。
在配置脚本类型的报警媒介之前,我们先写好脚本,并将脚本放置对应的目录中。脚本的具体内容如下:
[root@centos7 alertscripts]# vim mail.sh
#!/bin/bash
mail=$1 //收件邮箱
subject=$2 //邮件主题
context=$3 //邮件正文
echo -e "$context" | mail -s "$subject" "$mail"
[root@centos7 alertscripts]# chmod +x mail.sh
zabbix默认情况下会去指定目录下执行报警脚本,所以我们应该把脚本放置指定目录中,可以通过配置文件找到该路径,打开/etc/zabbix/zabbix_server.conf
[root@centos7 ~]# cat /etc/zabbix/zabbix_server.conf | grep Alert
### Option: StartAlerters
# Alerters send the notifications created by action operations.
# StartAlerters=3
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
通过AlertScriptsPath属性,可以配置报警脚本的位置。因此我们将mail.sh脚本放置此目录下,并设置如下权限即可。
[root@centos7 ~]# ll /usr/lib/zabbix/alertscripts
总用量 4
-rwxr-xr-x 1 root root 90 12月 16 16:43 mail.sh
上面的脚本只是定义了发送给哪个用户,并没有定义发送者,现在我们来配置邮件的发送者,编辑/etc/mail.rc配置文件,添加以下内容。
vim /etc/mail.rc #注意:网易,QQ邮箱需要开启客户端授权码进行第三方登录
set from=132****950@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=132****950@qq.com
set smtp-auth-password=授权码
set smtp-auth=login
set from=发件人邮箱
set smtp=smtp邮件服务器
set smtp-auth-user=发件人邮箱账户
set smtp-auth-password=发件人邮箱授权码
set smtp-auth=login
注意:网易,QQ邮箱等需要开启客户端授权码进行第三方登录,具体操作请参考这篇文章:https://blog.51cto.com/13760351/2384001
尝试发送一封邮件,检验qq邮箱是否能够接收:
[root@centos7 ~]# echo "hello world" | mail -s "testmail" 132****950@qq.com
邮件已收到
回到报警媒介的配置界面,把报警媒介的名称取名为MailScript,类型选择“脚本”,脚本名称为/usr/lib/zabbix/alertscripts下的脚本名称“mail.sh”
我们向脚本中传递了三个参数,这里我们可以通过“脚本参数”设定需要传入的参数,当zabbi调用对应脚本时,会自动把“脚本参数”中对应的值按照顺序传入对应的脚本中。
点击“添加”,可以添加参数,如下图我们添加了三个参数。
这三个参数分别代表了,报警信息的消息接收者,消息主题,报警信息。其实这三个参数是zabbix的内置宏,也可以理解为zabbix的内置变量,当接收人和报警信息发生变化时,上述三个“宏”的值也会发生变化。
定义完成后,点击“添加”按钮,即可看到一个名称为"MailScript"的报警媒介。
到此,我们已经成功定义了一个报警媒介了,我们可以通过此媒介向用户发送报警信息了。
接下来配置接收报警信息的用户了。这里以"Admin"用户为例,我们要让“Admin”用户能够通过"MailScript"这个报警媒介来接收报警信息。具体配置如下:
打开zabbix控制台,点击“管理”—“用户”,选中要配置的用户,此处以"Admin"用户为例。
点击“报警媒介”
点击添加
在类型中,选择我们刚才创建的报警媒介“MailScript”,收件人填写实际能收到邮件的用户,即Admin用户要关联到一个能接受邮件的用户上。
这里为了测试,接受报警信息的级别就默认全选上。确认后更新
到此为Admin用户定义报警媒介我们就完全定义好了。
注意:如果要为某用户发送报警信息一定要为该用户定义报警媒介,这样才能接受到报警信息