报警媒介 Media Types ===============================
当zabbix中的某些被监控指标出现 异常时,zabbix会通过哪种方式通知我们?
是通过邮件呢,还是通过短信呢,或者是通过其他方式呢?
无论是通过邮件报警还是通过短信报警,无非都是通过某种"媒介"将报警信息传递给收信人,
所以在zabbix中,报警方式被称为"报警媒介"。
zabbix支持的报警媒介如下:
Email:邮件,这是最常用也是最传统的一种报警媒介,邮件报警,zabbix通过配置好的SMTP邮件服务器向用户发送对应的报警信息。
Script:脚本,当zabbix中的某些监控项出现异常时,也可以调用自定义的脚本进行报警,脚本的使用就比较灵活,具体怎样报警全看你的脚本怎么写。
SMS: 短信,如果想要使用短信报警,则需要依赖短信网关,或者相关硬件,如短信猫(收费)。
Jabber:即时通讯服务。例如微信 (需要微信企业号,付费)
Ez Texting:商业的,收费的短信服务(北美运营商提供服务)。
这里我们演示 Email和Script 也是比较推荐的方法,而且现在 邮件APP 已经普遍集成在手机,也有很好的通知机制,
邮件报警和短信报警的效果相差无几 。
在zabbix中,定义对应的报警媒介,点击"管理"----“报警媒介类型”。
zabbix 默认已经存在一些报警媒介,我们可以对已经存在的报警媒介进行修改,也可以创建符合自己需要的报警媒介,点击"创建媒体类型"按钮。
填写脚本名称,路径
###这里的路径不需要写绝对路径,zabbix的配置文件中,有定义默认 脚本的查找位置。
打开zabbbix服务器中 /etc/zabbix/zabbix_server.conf 配置文件。
通过AlertScriptsPath属性,可以配置报警脚本的指定位置,zabbix 会去 AlertScriptsPath 所设定的 目录中查找报警脚本。
此处,我们将自己的 脚本放置在对应目录中,并且设置可执行权限。
注意 $1 $2 $3 的参数可以由 下一步的 zabbix 宏 传入。
[root@zabbix-88 /usr/lib/zabbix/alertscripts]# cat my-scripts.sh
#!/bin/bash
to=$1 #报警接收人
subject=$2 #报警的主题
context=$3 #报警的信息
echo -e "$context" | mail -s "$subject" "$to"
.注意存放目录, 写入后 ,授予执行权限 chmod +x ,将my.script.sh脚本放到以下位置
脚本中,使用 mail 工具作为 邮件 客户端工具。
同时,检查 mail 命令是否安装,没有的话使用 yum 工具安装邮件客户端工具
[root@zabbix-88 /etc/yum.repos.d]# yum install mailx
[root@zabbix-88 /etc/yum.repos.d]# vim /etc/mail.rc
同时,我们还可以通过"脚本参数"设定需要传入的参数,当zabbix调用对应脚本时,会自动把"脚本参数"中对应的值按照顺序传入对应的脚本中。
从上图可以看出,我们在这个报警媒介中可以设定参数,例如下图:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
他们分别代表报警接收人,报警的主题,报警的信息。
其实,这种由大括号括起,并且由大写字母组成的字符串在zabbix中被称作 "宏 Macro ",可以理解为zabbix内置的变量,
当不同的警告发生时,上述的三个"宏"的值会自动发生变化。
那么,除了上述的三个"宏",zabbix还有那些"宏"呢?
Zabbix宏 的定义帮助
https://www.zabbix.com/documentation/4.0/manual/appendix/macros/supported_by_location
为用户定义能够使用的报警媒介 ==============================
如果想要某个zabbix用户能够接收到从 “my-scripts报警媒介” 发送过来的报警,还需要进一步配置,
比如,当"Admin"用户想要通过"my-scripts"报警媒介接收警报时,则必须能够"适配"这种媒介,
如果"Admin"用户没有使用 “my-scripts媒介” 的能力,那么"Admin"用户将无法接收到由 "my-scripts媒介"发出的报警信息。
我们应该怎样让用户能够对应的报警媒介呢,配置步骤如下。
打开zabbix控制台,点击"管理"----“用户”,选中要配置的用户,此处以管理员为例。
点击下图中,红框中的"报警媒介"。点击下图中的"添加"连接。
在类型中,选择我们刚才创建的"报警媒介",选择"my-scripts",因为最终还是使用邮件发送信息,
所以此处,收件人填写"Admin"用户所使用的报警信息接收邮箱,
同时,还能够选择在哪些时段使用这种"报警媒介"接收信息,接收哪种级别的报警信息,
确定无误后,点击"更新"按钮。
此刻,如果有对应的报警信息需要通过"my-scripts媒介"发送给"Admin"用户,
"Admin"用户就可以接收到对应的报警信息了。
所以,在使用的过程中,如果定义了新的"报警媒介",不要忘记为对应的用户添加 “报警媒介”。