创建动作,实现故障自愈

地址:
10.0.0.200-zabbix_server5.0(已配置并以连接数据库)
10.0.0.201-Nginx1.18-zabbix_agent5.0(已开启status状态页)
10.0.0.40-Mysql
OS:Ubuntu18.04

 

 目的:以nginx服务为例,当nginx服务停止时,自动重启服务,实现故障自愈功能。
 实现过程:
 1)为Nginx定义个监测连通性的监控项(因为官方提供的内置模板没有)
 2)针对这个Nginx连通性监控项设置触发器(触发条件为Nginx宕机)。
 3)定义“动作”当触发器被触发后远程驱动agent执行”恢复命令“。


1zabbix账号进行sudo提权、开启agent的接收远程命令功能。

默认zabbix agent是使用zabbix用户启动的,有些特权命令zabbix用户是没有权限执行,会导致定义好的监控项以及自治愈策略因为权限拒绝为执行失败,所以需要事先对zabbix用户进行授权.
 vim /etc/sudoers
 zabbix  ALL=(ALL) NOPASSWD: ALL
 vim /etc/zabbix/zabbix_agentd.conf
 AllowKey=system.run[*]  #开启接收远程命令功能,否则无法执行zabbix-server"动作"中设定的远程命令,此指令使用于5.0版本以上
 EnableRemoteCommands=1  #开启接收远程命令功能,否则无法执行zabbix-server"动作"中设定的远程命令,此指令适用于5.0版本以下

  PS:不开启以上指令在发送指令时会先无法获取KEY


2.将10.0.0.201添加进监控列表主机中并添加相关模板。

 

3.在10.0.0.201 agent的子配置文件中定义nginx_ping监控项。
1)创建连通性监控项,逻辑大概就是对Nginx进程进行统计,Nginx运行则有进程出现则统计结果则为1 如果没有运行则没有进程统计则为0,那么针对0这个值就可设置触发器。

cat nginx.conf
UserParameter=nginx_ping,pidof nginx | wc -l

2)zabbix-server通过测试工具监测是否能够取到KEY的“值”。

zabbix_get -s 10.0.0.201 -k agent.ping

 

 

 

3)测试成功后,添加监控项。

4.为监控项nginx_ping添加触发器,结合监控项逻辑当值为"0"时触发报警。
1)选中nginx_ping监控项配合“值”定义触发条件。

 

 

 

 

2)定义触发的恢复条件,结合监控项逻辑当“值”为1时恢复。

 

 

 

3)开启触发器的声音报警功能。

5.测试触发器是否可用。
1)关闭nginx服务

关闭前---

 

 关闭后---<测试成功并带有声音~>

systemctl stop nginx.service

 

2)启动nginx服务查看触发器的恢复条件是否被触发。

systemctl start nginx.service   <重启nginx后触发器规则成功恢复>

 

 

6.创建动作。
1)指定先前创建的触发器,为它创建动作。

 2)添加 步骤
步骤1-1:第一个1表示为步骤1、第二个1表示远程命令执行1次
步骤持续时间:表示如果有多个步骤执行时的时间间隔,0表示使用默认步骤持续时间间隔。
当前主机和指定主机都可以,因为触发器依托监控项。
命令:当前运行agent是以zabbix账号而重启nginx服务需nginx账号(不够权限),但之前做了zabbix账号的提权操作,所以通过sudo提权后可执行systemctl restart nginx.service 命令,不提权即便能够发送命令也无法执行

 

 

 

 

 

4)关闭nginx服务测试触发器触发后是否执行动作中所定义的命令。

systemctl stop nginx.service

<可以看到触发器报警后立即发送了远程命令给agent执行,重启了nginx服务器使服务恢复正常,实现了故障自愈>

 

 

 

 

 

 

 

 

 

 

posted on 2021-08-22 21:17  1251618589  阅读(8)  评论(0编辑  收藏  举报

导航