一、动作Actions
Action是动作,当设置的条件被满足时,就会执行指定的action,包括发送消息通知和执行远程命令或脚本两种功能。
1、查看默认告警动作
当有触发器被触发时发送告警信息通知管理员,一般有这个默认告警动作来让管理员接收邮件或短信了解监控项状态就足够了。
2、创建一个动作Action执行远程命令
Action除了可以发送监控项状态变更的通知信息外,还可以执行远程命令或脚本,比如主机意外断电重启后mongdb服务不能重启,需要删除sock文件,这时就可以在报警后执行命令:删除sock并重启服务,自动修复故障,这一点相当好用。当然,如果你有puppet,当我没说。
(1)创建动作,给动作取个易懂的名称
(2)首先必须添加MONGO数据库服务器的监控,同时监控了mongo db服务,并配置了对应的触发器,当mongo db服务不在运行状态时,触发器的值变成PROBLEM,即满足下图中的条件,然后执行Operations项中设置的动作:
(3)Operation项设置详细:类型为远程命令,执行对象是MONGO数据库,通过zabbix agent执行Commands中的脚本;由于服务器是windows系统,因此脚本命令必须使用DOS命令;如果是linux系统,可使用bash命令。
(4)上图中执行的命令是删除lock文件,再添加一个启动服务的命令:net start "Mongo DB";Step duration中可以设置延时执行。
(5)下图中是我使用了自动监控端口脚本,可以看到当mongo db服务关闭时,28017和27017两个端口也相应关闭了。
(6)在MONOGO数据库服务器上手动关闭Mongo DB服务来测试动作是否能成功执行,下图可以看到成功执行了,服务成功恢复启动。
(7)如果你发现是下图这种情况,出现"Not supported by Zabbix Agent"错误,那一定是客户端conf文件中没有添加EnableRemoteCommands=1(允许执行远程命令),回过头去看前面的安装章节可以发现,我都为客户端加入了这条命令。
结论:Zabbix不仅仅是一个强大的监控工具,附带的Action功能很好的弥补了"只能看不能做"的不足;如果不使用Puppet这样的管理配置工具,可以考滤用Action功能实现一些简单的自动恢复功能来保证服务器的正常运行。
二、告警方式Medias
Zabbix可以提供四类Media:Email/SMS/Jabber/Script
Email:邮件
Script:通过自己编写程序或脚本的方式发送告警信息
SMS:要在server主机上接入短信modem
Jabber:一种linux下的即时通讯工具,通过Jabber发送即时消息
1、查看报警类型
2、设置邮件报警
说明:zabbix将使用本地默认安装的postfix(/bin/mail)作为SMTP服务,以zabbix@localhost.localdomain作为发件人账号,向User中设置的管理员的邮箱账号发送邮件。
三、用户Users
1、通过UserGroup可以限制用户的权限,zabbix自带的用户组的权限限制基本能满足我们的要求。
2、创建用户时可以根据用户的不同作用划分到不同的组,media中填入告警接受地址及告警接受时间等信息。
3、设置用户的Media告警方式
4、使用邮件报警,设置邮件地址和时间段,可以设为1-7,08:00-20:00以免晚上打扰
5、收到一封报警邮件(运行的进程太多了,超过300个)
6、可以在configurations--hosts--triggers中禁用此项报警:
有些报警看着烦,不想收到就关闭它的触发器,或者修改相应模板中的触发器的值。
四、查看邮件发送日志
这是一个正常发送邮件的日志信息:
[root@zabbix ~]# tail /var/log/maillog
Nov 19 15:10:51 zabbix postfix/smtpd[37955]: connect from localhost[127.0.0.1]
Nov 19 15:10:51 zabbix postfix/smtpd[37955]: 22A611E0A26: client=localhost[127.0.0.1]
Nov 19 15:10:51 zabbix postfix/cleanup[37958]: 22A611E0A26: message-id=<20141119071051.22A611E0A26@zabbix.ewin.com>
Nov 19 15:10:51 zabbix postfix/qmgr[1747]: 22A611E0A26: from=<zabbix@localhost.ewin.com>, size=844, nrcpt=1 (queue active)
Nov 19 15:10:51 zabbix postfix/smtpd[37955]: disconnect from localhost[127.0.0.1]
Nov 19 15:10:52 zabbix postfix/smtp[37959]: 22A611E0A26: to=<ywzhou@xxxxxx.com>, relay=edge.xxxxxx.com[xxx.xx.xx.xx]:25, delay=0.9, delays=0.15/0.02/0.03/0.69, dsn=2.6.0, status=sent (250 2.6.0 <20141119071051.22A611E0A26@zabbix.ewin.com> [InternalId=466264] Queued mail for delivery)
Nov 19 15:10:52 zabbix postfix/qmgr[1747]: 22A611E0A26: removed
说明:后面我会配置一个心跳检测动作,每两小时发送一封邮件,如果没有收到表示出问题了,可以查看此邮件日志来排错。