• Zabbix告警配置

    背景

    之前通过Zabbix安装配置小记一节我们已经成功的启动Zabbix Server并且开始监控,本来以为接下里的事情是水到渠成,直接在web界面点点配置啥的就OK了,结果在告警配置却卡了好久。所以这里将此记录总结下来,其实问题并不难,主要是提醒自己处理问题的思路。

    内容

    在Zabbix中,告警是由一系列的流程组成的,首先是触发器达到阈值,接下来是Action对事件信息进行处理,其中包括两个部分:第一部分是发送消息,即将告警信息发送给用户;第二部分是执行命令,即将事件用命令进行处理,达到对事件故障自动尝试恢复的效果。

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8a%e5%8d%8811-17-47

    如上,Hosts主机们拥有很多Items监控项,一些重要的监控项可以添加Triggers触发器,触发器在满足一定的条件下会调用Action。 Actions主要分为两种,一种是Notice发送告警信息给管理员或者用户,一种是Command尝试在agent执行命令修复问题。

    Triggers的使用和配置这里就不再详细赘述了,这个比较基础,资料也很多,而且大部分可以通过zabbix web轻松搞定,我们从Actions说起。

    Actions配置

    如下,在Zabbix 3.2 中,Actions的配置主要分为3部分:Actions、Operations、Discovery Operations。

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8a%e5%8d%8811-28-41

    第一部分Actions为基本信息,主要包括出发actions的条件,你可以根据需求在Conditions里面不断添加,一般情况下主需要配置上面两条其实就足够满足大多数场景了。

    A Maintenance status not in maintenance   表示当前主机处于非维护状态
    B Trigger name like PROBLEM    表示当Trigger的状态类似于PROBLEM时

    这两者取或的关系,即只要有一个满足条件则会触发此action。

    第二部分为Operation部分,即触发actions后执行的动作。第二部分主要又分为两部分,下面用红框圈起来的第一部分为告警的宏定义信息,采取默认即可,如果有需求可以自行调整。

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8a%e5%8d%8811-43-47

    第三部分为告警恢复部分的设置,采取默认即可,默认会给之前发送过告警的人也发送一个恢复告警。

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8a%e5%8d%8811-45-56

    Media配置

    Media顾名思义就是配置告警的方式,默认情况下zabbix就存在3种传媒告警方式:分别为邮件、jabber电话、短信。这里我们保持系统的默认配置不变,自己新创建一个邮件告警媒介:

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8a%e5%8d%8811-50-45

    如上,我们创建了一个名为mail的媒介方式,采用脚本的方式来发送邮件告警,有三个参数,现在Zabbix Server上直接配置此脚本和邮件发送机制:

    1. 修改zabbix server的配置文件,更改告警脚本目录。

    2. 下载安装sendEmail并测试

    3. 在配置的脚本目录下编写邮件发送脚本

    如上,这个sendmail.sh 就是我们之前在web页面配置media的时候指定的脚本,这个脚本接受3个参数,第一个是发送给谁的,第二个是邮件主题,第三个是邮件内容,我们在设定media的时候已经指定宏了,接下来试着去调用一下:

    如上,发送成功,我的邮箱也收到了对应的信息:

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8b%e5%8d%8812-11-49

    Users 配置

    触发都OK了以后,那么也要配置接收告警的用户,说到这里满满的都是血和泪啊,唉一会再提,先说基本的配置方法,其实很简单,也分为三个部分:

    1. user基本信息部分

    这部分主要为user的基本信息,根据需求创建即可,但要注意的是这里必须选择对应的用户组,选择了以后必须将这个用户组的权限进行调整。

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8b%e5%8d%8812-18-46

    2. Media部分,为这个用户的媒介方式

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8b%e5%8d%8812-24-42

    3. permision部分表示这个用户所拥有的权限部分

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8b%e5%8d%881-16-41

    告警验证

    在配置好之后,我们来手动触发一个告警,测试是否可以发送成功。比如我这边登录一台受监控的测试数据库,暂停slave主从复制。

    1. zabbix的告警或非正常状态会显示在如下页面中,我们可以从这个页面观察告警是否被成功触发了。

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8b%e5%8d%881-28-18

    2. zabbix的报表里面提供了action日志查看功能,我们可以查看邮件告警是否成功发送。

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-19-%e4%b8%8b%e5%8d%881-32-20

    奇葩问题

    在整个安装配置过程中或多或少的遇到一些问题,但基本都可以通过网络搜索或测试解决掉,唯独一个奇葩的问题折腾了我半天,现在都不是很清楚什么原因:

    问题:当我配置好以后,默认是将报警发送给了Admin这个user(配置了我的邮箱),但是死活收不到邮件,在action log里面可以看到触发了动作,但是其实它根本没有调用我这个邮件发送脚本(因为日志里面没有记录)。 尝试了无数种办法和权限调整都不管用。

    解决:新建了一个用户,但是配置和Admin一模一样,就可以发送成功了,尼玛,我无言以对。

     

  • Zabbix安装配置过程小记

    背景

    本章节主要记述一次Zabbix Server的基础安装过程,并无记述含量,意在记录总结,老司机请绕道而行。

    内容

    先说个无比操蛋的事情,不知道是什么原因,访问zabbix的官方网站总是时好时坏,无论我是挂代理还是直接访问。关键是我访问其他网站都是OK的。 至今不知是什么操蛋的原因。这个暂时保留,后续如果找到原因了,会写出来。

    1. 安装zabbix官方源

    2. 安装相关依赖

    3. 安装Zabbix-server

    本来我想着已经安装了Zabbix的官方源,那么接下来就直接Yum命令安装,一路向西即可。 但没想到报错了:

    咦,不对啊,按理来说即使报错也应该是3.2版本相关的啊,怎么出现了zabbix22啥的一大堆?  我立马就怀疑到了应该是zabbix的源没有起作用,于是查看repo配置文件,果然发现了问题:

    如上,将图中标红的部分修改为1,默认安装后是0。再试试果然就好了。

    至此就成功安装了zabbix-server:

    4. 安装MySQL并配置zabbix相关

    MySQL的具体安装和配置这里就不再详述,详情可参考之前的博文http://www.foreverlakers.com/2016/11/linux搭建mysql5-7-gtid-主从复制环境/  。 这里说一下安装好mysql之后的配置:

    5. 配置Zabbix Server相关 

    启动后直接访问外网zabbix地址:http://46.92.76.41/zabbix,竟然报500错误,查看httpd的错误日志如下:

    网上搜查后发现是php版本过低导致的问题,于是升级了php的版本为5.6,详细过程如下:

    升级完之后重启httpd

    这时候再访问页面就出现了如下:

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-11-%e4%b8%8b%e5%8d%885-15-23

    6. zabbix的配置

    在上面的那个页面点击 Next step 之后出现错误:

    PHP bcmath extension missing,   php configuration parameter –enable-bcmath  在页面也可以看到错误提示

    解决起来也很简单:

    然后刷新页面就好了,继续 Next step:

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-11-%e4%b8%8b%e5%8d%885-30-11

    很明显,是因为本地连接要走socket的缘故:

    然后就可以正常执行了。等待最后执行成功后,就可以访问zabbix server的登录页了,如下:默认的用户名和密码是

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-11-%e4%b8%8b%e5%8d%889-55-05

    登录以后做的第一件事情就是修改Admin密码,并禁用系统默认存在的guest用户。

    监控Agent部署配置

    到上面为止,我们的Zabbix Server已经能够正常运行了。 此时,我有如下两台数据库服务器想要纳入此zabbix监控,具体该怎么做呢 ?

    Agent1: 10.67.239.22

    Agent2: 10.67.239.23

    1. 先将zabbix server本身纳入监控 

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-12-%e4%b8%8b%e5%8d%884-17-47

    2. 在两台agent上安装zabbix agent 

    3. 在两台agent上配置zabbix agent 并启动

    4. 配置自动发现规则

    在第三部结束后,我们通过zabbix web依然无法看到对应的两个zabbix agent,只有手动添加hosts配置后才行。但是这样似乎很低效,如果我有20台数据库服务器,我还得手动去添加20次hosts ? 为了解决这个问题我们添加自动发现规则。

    首先,在如下页面打开 auto discovery 配置:

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-12-%e4%b8%8b%e5%8d%885-12-19

    然后再在如下页面配置discovery的规则:

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-12-%e4%b8%8b%e5%8d%886-06-30

    这样配置后,我们的zabbix server只要收到符合上面配置规则的agent,就会自动将它纳入Discovered Hosts组,如下

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-12-%e4%b8%8b%e5%8d%886-10-05

    这样我们就将所要监控的机器纳入zabbix server的监控之下了。 并且已经默认具备了基本的内存和CPU、磁盘等监控能力了。

    配置MySQL监控项

    我的两台zabbix agent是数据库服务器,所以想要将上面运行的数据库监控起来。具体操作如下:

    1. 在zabbix agent创建配置文件和目录

    如果你有多实例,可以添加多个配置文件和zabbix home,比如还有3308端口的mysql:

    2. 在zabbix web进行配置

    在zabbix默认的存在一个 Template App MySQL 模板,只需要将此模板稍作修改即可,如下,我在此模板中新添加了四个item:

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-13-%e4%b8%8a%e5%8d%881-24-04

    这里注意,如果你用的是MySQL的5.7版本,那么无法获取Slave_running信息,需要进行如下操作:

    3. 照着模板再生成一个其他端口的模板

    %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-06-13-%e4%b8%8a%e5%8d%881-29-33

    到此我们就完成了zabbix server的基本配置,并成功监控mysql server系统。


    Install At Centos 7

    隔了一段时间,我又有一次安装zabbix server的任务,本以为可以淡淡的拿下,却没想到成了淡淡的忧伤,只因本次安装在Centos 7 下,于是又踩了一些坑,特此记录:

    1. 安装Zabbix官方源

    注意这次是Centos7的源哦。

    2. 安装相关依赖

    3. 安装PHP环境

    4. 安装Zabbix-server

    此处省去启动过程。。。。

    配置完httpd后启动(与centos6的方法一致),发现访问web报如下错误:

    需要在http的配置中注释掉下面这个: