创建动作,实现故障自愈
地址:
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) 编辑 收藏 举报