实验环境:Redhat7.2、zabbix4.2
Agent主机:192.168.112.118
实验内容:zabbix远程命令重启应用,以httpd为例
zabbix远程命令可以做到的:
重启应用(Apache、nginx、MySQL等)
使用IPMI接口重启服务器
自动释放磁盘空间(删除老文件,清除/tmp目录等等)
CPU过载时将一个虚拟机迁移到另外一台物理服务器
云环境下,一台服务器CPU硬盘内存其他硬件资源不足的情况下,可以自动添加过去
配置
1. 设置zabbix客户端用户的sudo权限(其他用户需要root权限的需要sudo)
[root@linux ~]# visudo
Defaults:zabbix !requiretty ####不需要提示终端登录
zabbix ALL=(ALL) NOPASSWD:ALL ####设置zabbix用户免密码登陆
2. 在客户端配置支持远程命令
EnableRemoteCommands = 1
3.重启客户端
[root@linux ~]# systemctl restart zabbix-agent
4.手动检测终端可用性
在server端执行命令
zabbix_get -s 192.168.112.118 -k "system.run[df -h]"
检测到内容,说明终端可用
5.执行命令,获取客户端httpd状态
[root@linux ~]# zabbix_get -s 192.168.112.118 -k "system.run[sudo systemctl status httpd]"
执行命令报错
权限不足,报这个错时首先查看防火墙状态
防火墙已关闭,再次查看selinux状态
Selinux是开启状态,临时关闭selinux
[root@linux ~]# setenforce 0
再次到终端执行命令
发现此时httpd的状态为开启状态
可以执行命令将其关闭
zabbix_get -s 192.168.112.118 -k "system.run[sudo systemctl stop httpd]"
6.在验证远程命令的可用性之后,在zabbix前端页面添加监控项,设置触发器,并添加执行远程命令的动作。
7.添加监控项:
自定义名称,类型为zabbix客户端,键值为proc.num[,,,httpd],其他自定义,点击添加。
8.添加触发器
自定义名称和严重性,表达式选择监控项.last()<1
9.创建动作,创建一个动作命名为进程状态
创建新的触发条件,选择触发器名称等于8所设置的触发器,
操作:自定义操作步骤持续时间,默认标题,和消息内容(消息内容可以根据自己需要而设置)
创建操作步骤:选择远程命令
sudo systemctl restart httpd
执行命令的同时要通知到责任人,添加新的,发送消息。更新后更新。
最后记得永久关闭selinux