实验环境: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用户免密码登陆

zabbix 监控 linux主机 zabbix监控linux进程_linux

2. 在客户端配置支持远程命令

EnableRemoteCommands = 1

3.重启客户端

[root@linux ~]# systemctl restart zabbix-agent

zabbix 监控 linux主机 zabbix监控linux进程_zabbix 监控 linux主机_02

4.手动检测终端可用性

在server端执行命令

zabbix_get -s 192.168.112.118 -k "system.run[df -h]"

zabbix 监控 linux主机 zabbix监控linux进程_zabbix自动监控linux进程_03

检测到内容,说明终端可用

5.执行命令,获取客户端httpd状态

[root@linux ~]# zabbix_get -s 192.168.112.118 -k "system.run[sudo systemctl status httpd]"

zabbix 监控 linux主机 zabbix监控linux进程_触发器_04

执行命令报错

权限不足,报这个错时首先查看防火墙状态

zabbix 监控 linux主机 zabbix监控linux进程_客户端_05

防火墙已关闭,再次查看selinux状态

zabbix 监控 linux主机 zabbix监控linux进程_zabbix自动监控linux进程_06

Selinux是开启状态,临时关闭selinux

[root@linux ~]# setenforce 0

再次到终端执行命令

zabbix 监控 linux主机 zabbix监控linux进程_zabbix 监控 linux主机_07

发现此时httpd的状态为开启状态

可以执行命令将其关闭

zabbix_get -s 192.168.112.118 -k "system.run[sudo systemctl stop httpd]"

6.在验证远程命令的可用性之后,在zabbix前端页面添加监控项,设置触发器,并添加执行远程命令的动作。

7.添加监控项:

自定义名称,类型为zabbix客户端,键值为proc.num[,,,httpd],其他自定义,点击添加。

zabbix 监控 linux主机 zabbix监控linux进程_客户端_08

8.添加触发器

自定义名称和严重性,表达式选择监控项.last()<1

zabbix 监控 linux主机 zabbix监控linux进程_触发器_09

9.创建动作,创建一个动作命名为进程状态

创建新的触发条件,选择触发器名称等于8所设置的触发器,

操作:自定义操作步骤持续时间,默认标题,和消息内容(消息内容可以根据自己需要而设置)

创建操作步骤:选择远程命令

sudo systemctl restart httpd

zabbix 监控 linux主机 zabbix监控linux进程_zabbix自动监控linux进程_10

执行命令的同时要通知到责任人,添加新的,发送消息。更新后更新。

最后记得永久关闭selinux