概述
监控,有的人只把他当做报警使用,出现问题之后打开跑回家打开电脑处理掉,大多数时候都是一些已知问题,为何不让zabbix帮你把这些事情处理掉呢?
Zabbix远程执行命令可以做些什么:
1)重启应用(apache/nginx/mysql)。
2)自定义执行脚本。
3)使用IPMI接口重启服务器。
4)自动释放磁盘空间(删除老文件,清除/tmp目录等等)。
5)CPU过载时将一个虚拟机迁移到另外一个物理服务器。
6)云环境下,一台服务器CPU\硬盘\内存\其他硬件资源不足的情况下,可以自动添加过去。
Zabbix远程执行命令注意事项:
1)远程执行命令是server端向agent端执行,不支持主动模式的agent;
2)不支持代理模式;
3)zabbix用户必须对命令具有执行权限,可以使用sudo赋予root权限(配置sudo无密码方式);
4)远程命令只是执行,执行成功与否并不检测并确认,可在” Monitoring–>Events”中查看action执行时,或在”Reports–>Action log”中查看远程命令是否执行成功(成功为” Executed”)。
配置zabbix远程执行命令
创建一个报警,记得使用邮件报警吗?实际上,我们把发送邮件的操作改成执行远程命令就行了。
Zabbix agent不支持远程命令,远程命令最大长度为255字符,同时支持多个远程命令,如需要执行多条命令,只需要另起一行写命令即可,但最好自定在agent端定义一个脚本,直接让zabbix执行脚本即可。还有,远程命令可以使用宏变量。
1)配置zabbix-agent端
首先我们需要在zabbix agent端开启对远程命令的支持,修改配置文件zabbix_agentd.conf中的参数,然后重启客户端:
1 |
EnableRemoteCommands = 1 |
另外,在执行命令时确保你的zabbix用户有执行权限,如果某些命令需要root权限,那么请使用sudo。编辑sudoer文件,zabbix用户便可以执行nginx -s reload命令了。
1 2 |
zabbix ALL=NOPASSWD: ALL zabbix ALL=NOPASSWD: /etc/init.d/nginx stop,/etc/init.d/nginx start |
2)配置zabbix-server端
ConfigurationàActionsà Operation,其中operation type改成Remote Command,然后写上要在zabbix-agent执行的命令即可。如下图:
Type:IPMI、custom script、ssh、telnet、global script。
如果你要执行自定义的脚本,如下操作:
直接执行脚本即可。