zabbix从放弃到入门(9):定义报警媒介

  • A+
所属分类:zabbix  运维技术

这篇文章将会介绍zabbix中的"报警媒介",也就是所谓的"Media types"。

在本博客中,"zabbix"是一个系列文章,如果你还不明白zabbix的相关概念,强烈建议从zabbix系列文章中的第一篇开始阅读,否则你可能无法理解这篇文章中涉及到的部分名词。

zabbix系列文章列表直达链接:zabbix入门系列

zabbix从放弃到入门(9):定义报警媒介

当zabbix中的某些被监控指标出现异常时,zabbix会通过哪种方式通知运维攻城狮呢?是通过邮件呢,还是通过短信呢,或者是通过其他方式呢?今天我们就来聊聊zabbix的报警方式,无论是通过邮件报警还是通过短信报警,无非都是通过某种"媒介"将报警信息传递给收信人,所以在zabbix中,报警方式被称为"报警媒介",那么,zabbix都支持哪些报警媒介呢,我们一起来看看。

zabbix支持的报警媒介如下:

Email:邮件,这是最常用也是最传统的一种报警媒介,邮件报警,zabbix通过配置好的SMTP邮件服务器向用户发送对应的报警信息。

Script:脚本,当zabbix中的某些监控项出现异常时,也可以调用自定义的脚本进行报警,脚本的使用就比较灵活,具体怎样报警全看你的脚本怎么写。

SMS:短信,如果想要使用短信报警,则需要依赖短信网关(貌似需要北美的运行商)。

Jabber:即时通讯服务。

Ez Texting:商业的,收费的短信服务(北美运营商提供服务)。

 

看到上面的描述,我们能用的貌似只剩下了Email和Script了。那么在zabbix中,怎样定义对应的报警媒介呢,很简单,打开我们的zabbix控制台,点击"管理"----"报警媒介类型"。

zabbix从放弃到入门(9):定义报警媒介

可以看到,默认已经存在一些报警媒介,我们可以对已经存在的报警媒介进行修改,也可以创建符合自己需要的报警媒介,点击"创建媒体类型"按钮。

 

点击上述按钮后,会出现如下界面,当我们创建没报警媒介时,默认类型为"电子邮件"。

zabbix从放弃到入门(9):定义报警媒介

 

展开"类型"下拉框,可以看到对应的几种报警媒介类型,这几种类型我们已经解释过,我们经常用到的无非就是电子邮件和脚本,此处我们选择"脚本"。

zabbix从放弃到入门(9):定义报警媒介

 

选择报警媒介类型为脚本后,配置界面如下,我们说过,通过脚本报警是非常灵活的,因为我们可以通过脚本发送邮件,发送短信,发送微信等,脚本内部具体通过哪种方式报警,取决于我们怎样编写脚本。

zabbix从放弃到入门(9):定义报警媒介

 

在配置脚本类型的"报警媒介"之前,我们需要先编写好对应的脚本,并且将脚本放置到对应的目录中,以便zabbix能够找到对应的脚本。那么此处,我们来动手编写一个能够发送邮件信息的脚本,这个脚本很简单,此处我们直接使用mail命令发送邮件,脚本内容如下。

zabbix从放弃到入门(9):定义报警媒介

从脚本内容可以看出,我们在脚本中接收了3个参数,第一个参数代表邮件发送给哪个邮箱,第二个参数代表邮件主题,第三个参数代表邮件内容,既然定义了参数,那么zabbix在调用此脚本的时候,必然需要传入对应的参数,zabbix会怎样传入参数呢,我们一会儿再聊。

 

当然,聪明如你一定想到了,上面的脚本只定义了发给谁,发什么,但是没有定义谁来发送邮件,那么现在,我们来配置默认的发件人,编辑/etc/mail.rc配置文件,加入如下内容。

zabbix从放弃到入门(9):定义报警媒介

set from=发件人邮箱

set smtp=smtp服务器

set smtp-auth-user=发件人邮箱账户

set smtp-auth-password=发件人邮箱账户密码

set smtp-auth=login

配置完成后,保存退出即可,但是需要注意,某些邮件服务器可以无法使用上述配置进行登录,需要进行测试,此处的smtp.sohu.com已经经过测试,可以通过这种方法调用邮箱发送邮件。

 

目前,我们已经配置了发送邮件的相关配置,并且编写了发送邮件的脚本,但是我们还需要另一步配置,因为zabbix在默认情况下,会去指定的目录中查找对应的报警脚本,所以,我们应该叫报警脚本放置到指定的目录中,zabbix默认的报警脚本目录应该存放在哪里呢,我们通过配置文件可以得到答案,打开/etc/zabbix/zabbix_server.conf配置文件。

zabbix从放弃到入门(9):定义报警媒介

通过AlertScriptsPath属性,可以配置报警脚本的指定位置,zabbix回去对应目录中查找报警脚本。

 

此处,我们将mail.sh脚本放置在对应目录中,并且设置权限如下。

zabbix从放弃到入门(9):定义报警媒介

 

上述步骤配置完成后,回到刚才的"报警媒介"配置界面,因为我们的脚本是通过mail命令进行邮件告警的,所以,我们为这个报警媒介取名为"MailScript",如下图。

zabbix从放弃到入门(9):定义报警媒介

类型选择"脚本",脚本名称为"mail.sh",zabbix会自动到AlertScriptsPath属性对应的目录中查找相同名称的脚本,还记的我们刚才写的脚本吗,我们向脚本中传入了3个参数,我们可以通过"脚本参数"设定需要传入的参数,当zabbix调用对应脚本时,会自动把"脚本参数"中对应的值按照顺序传入对应的脚本中。

 

点击上图中的"添加"连接,可以添加对应的参数,如下图,我们添加了三个参数。

zabbix从放弃到入门(9):定义报警媒介

从上图可以看出,我们在这个报警媒介中设定了3个参数,这三个参数是什么意思呢,他们分别代表报警接收人,报警的主题,报警的信息。

其实,这种由大括号括起,并且由大写字母组成的字符串在zabbix中被称作"宏",我们可以理解为zabbix内置的变量,当不同的警告发生时,上述的三个"宏"的值会自动发生变化。

那么,除了上述的三个"宏",zabbix还有那些"宏"呢?其他"宏"都代表了什么含义呢?我们可以查看zabbix的官方在线帮助手册,zabbix3.0的宏列表地址如下。

https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

在zabbix3.0之前,上图中的三个参数是默认传入对应脚本的,不用我们再手动进行定义,但是从zabbix3.0开始,如果想要向对应的脚本传入上述三个参数,则需要按照上图进行定义。

 

好了,定义完成后,点击"添加"按钮,即可创建一个名称为"MailScript"的报警媒介了。

zabbix从放弃到入门(9):定义报警媒介

到此处,我们已经成功的定义了一个"报警媒介",从此,我们可以通过这个媒介,向用户发送报警信息了。

 

但是,如果想要某个zabbix用户能够接收到从"MailScript报警媒介"发送过来的报警,还需要进一步配置,比如,当"Admin"用户想要通过"MailScript"报警媒介接收警报时,则必须能够"适配"这种媒介,如果"Admin"用户没有使用"MailScript媒介"的能力,那么"Admin"用户将无法接收到由"MailScript媒介"发出的报警信息。我们应该怎样让用户能够对应的报警媒介呢,配置步骤如下。

打开zabbix控制台,点击"管理"----"用户",选中要配置的用户,此处以管理员为例。

zabbix从放弃到入门(9):定义报警媒介

 

点击下图中,红框中的"报警媒介"。

zabbix从放弃到入门(9):定义报警媒介

 

点击下图中的"添加"连接。

zabbix从放弃到入门(9):定义报警媒介

 

在类型中,选择我们刚才创建的"报警媒介",选择"MailScript",因为"MailScript"最终还是使用邮件发送信息,所以此处,收件人填写"Admin"用户所使用的报警信息接收邮箱,同时,还能够选择在哪些时段使用这种"报警媒介"接收信息,接收哪种级别的报警信息,是不是很人性化?配置如下图后,点击添加按钮。

zabbix从放弃到入门(9):定义报警媒介

 

确定无误后,点击"更新"按钮。

zabbix从放弃到入门(9):定义报警媒介

 

此刻,如果有对应的报警信息需要通过"MailScript媒介"发送给"Admin"用户,"Admin"用户就可以接收到对应的报警信息了。所以,在使用的过程中,如果定义了新的"报警媒介",不要忘记为对应的用户添加"报警媒介"。

zabbix从放弃到入门(9):定义报警媒介

好了,我们已经能够根据实际需要,定义一个"报警媒介"了

 
 

weinxin
我的微信公众号
关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~
朱双印

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:18   其中:访客  12   博主  6

    • avatar 方一雅 0

      zabbix告警之后可以设置告警时间么

      • avatar ya 0

        我想问就是mail.rc这个文件里面写的发件人邮箱,帐号,密码是在sohu或是在163注册使用的邮箱么

        • avatar zabbix初学者 1

          请问,触发器触发的动作是命令的时候,执行命令的时候用的是zabbix用户吗?如果是,zabbix用户时/sbin/nologin,如何执行shell?

          • avatar leiyuhang 2

            我照您的步骤一步一步操作的,现在的问题是:触发器触发后动作的状态显示是已送达,但是我收不到邮件,根据您的脚本我在终端直接发送邮件是没问题的,感觉就像是zabbix无法调用这个脚本,目录和脚本的权限都改了,依旧收不到,您觉得是哪里的问题?

              • avatar 朱双印 Admin

                @leiyuhang 不通过zabbix调用脚本,直接运行脚本,传入参数,可以收到邮件吗?
                如果不能,应该还是脚本的问题~

                  • avatar leiyuhang 2

                    @朱双印 脚本直接传参发邮件是正常的,zabbix中的触发器,动作都是正常的

                      • avatar 朱双印 Admin

                        @leiyuhang 日志中有提示信息吗?

                          • avatar leiyuhang 2

                            @朱双印 日志没有任何提示,折腾了一下午了

                              • avatar 朱双印 Admin

                                @leiyuhang 日志没有提示···如果有邮件服务器,就别用这种脚本的方式了,如果只是为了测试,换个别的邮箱试试

                                  • avatar leiyuhang 2

                                    @朱双印 好的,我再试试别的方法,感谢您百忙之中回答我的问题

                          • avatar 心好累好想退休-zach 0

                            @leiyuhang 你好 我也遇到了同样的问题,我配置的/etc/mail.rc 在服务器测试发送邮件和 脚本没有问题,在zabbix动作日志能看到发送成功,但是实际上没有收到邮件,我的zabbix服务器端脚本目录给的777权限,mail证书目录页给的777 /root/。cert zabbix服务端安装路径给的zabbix用户和组,如果我登录zabbix用户 去执行脚本就会报错Error initializing NSS: Unknown error -8015.
                            . . . message not sent.

                          • avatar m睡意zzz 2

                            163的可用。QQ的不可用。QQ就算开了授权码,也会把机器发出邮件当成垃圾邮寄屏蔽掉。我用QQ邮箱试了好半天,怎么不发邮件给我,结果一看日志。日志里面有个QQ服务器返回的网址,我一点开,说是垃圾邮件!

                              • avatar 朱双印 Admin

                                @m睡意zzz 靠你们测试了,棒棒哒~~加油~~~坚持就是胜利~~

                              • avatar hesheng 2

                                这个邮箱的设置还真是麻烦,qq\163的邮箱都有授权验证

                                  • avatar 朱双印 Admin

                                    @hesheng 这种方法是下下策,只是因为各方面条件都不满足 :cry: ,所以才用这种方法进行测试,所以只能凑合一下吧···

                                      • avatar hesheng 2

                                        @朱双印 最终还是163的邮箱用脚本的方式解决了。原来163smtp所谓的授权验证,其实就是smtp-auth-password;
                                        我原以为是需要smtp-auth-password+一个类似于验证码的东西,而这个验证码zabbix没有对应的变量,我多虑了。

                                          • avatar 朱双印 Admin

                                            @hesheng 666,有时候就是这样,兄弟加油~~

                                        • avatar leiyuhang 2

                                          @hesheng 我用QQ的邮箱也是折腾了好久,最后用了SSL协议才正常