Remote command 最大的好处是什么呢? 是自动。 Zabbix会根据配置的条件,去执行对应的命令,下面看看Remote command的应用场景。
- 应用无法响应时,自动重启某些应用。
- 当服务器不响应时,使用IPMI的“reboot”命令重启服务器。
- 在磁盘要满了的情况下,自动删除一些文件(比如/tmp)。
- 根据CPU负载,自动进行虚拟机调配。
- 弹性计算,根据系统情况,新增或删除云节点。
Zabbix无法通过Zabbix Proxy向Zabbix Agent发送,一定要从Zabbix Server 发起。而且,发送的命令长度也有限制,即不能超过255个字符,这个对于一般命令绰绰有余了,只要不是cat某个文件之类的,都足够了。如果在多行写多个命令,Zabbix会按照顺序执行。而且在Remote command中,还支持Macro定义。
Remote command稍显复杂。在Agent上执行的自定义脚本(即Custom scripts)一定要在Zabbix_agentd.conf中预先定义,而且在zabbix_agentd.conf中“EnableRemoteCommands”这一项要设置为1,否则无法远程执行命令。这是必然的,因为Active默认的Zabbix Agent其实根本没有在服务器上安装Zabbix Agent,怎么能发送命令给它执行呢?
对于远程执行命令,权限也是个问题。 默认情况下,Zabbix是没有权限来重启系统服务的,如果Zabbix用户想要有某个权限,需要修改下sudoer文件。
# visudo
#允许“Zabbix”用户不需要密码就可以运行所有root权限的命令
zabbix ALL=NOPASSWD: ALL
#允许“zabbix”用户可以在不需要密码的情况下运行/etc/init.d/httpd restart ,即重启apache
zabbix ALL=NOPASSWD: /etc/init.d/httpd restart
1)zabbix_server 登录到 zabbix_proxy的python脚本 restart_tomcat_69.py