使用远程命令,您可以定义在某些条件下,在监视的主机上自动执行某个预定义的命令。
因此,远程命令是一种强大的智能主动监控机制。
在功能最明显的用途中,您可以尝试:
配置远程命令的操作类似于发送消息,唯一的区别是Zabbix将执行命令而不是发送消息。
远程命令可以通过Zabbix server, proxy 或 agent执行。其在Zabbix agent上可以直接通过Zabbix server或Zabbix proxy执行。但在Zabbix agent和Zabbix proxy上,远程命令默认是不开启的,它们可以通过以下方式启用:
AllowKey=system.run[*]
参数;Zabbix server执行的远程命令按照 命令执行 (包括退出代码检查)中描述的方式运行。
即使目标主机处于维护状态,也会执行远程命令。
在所有宏解析后,远程命令的限制取决于数据库和字符集的类型(非ASCII字符需要存储一个以上的字节):
数据库 // | 符限制 // //字节限制 | // |
MySQL | 65535 | 65535 |
Oracle Database | 2048 | 4000 |
PostgreSQL | 65535 | 无限制 |
SQLite (only Zabbix proxy) | 65535 | 无限制 |
以下教程就有关如何设置远程命令进行了逐步说明。
首先,必须在agent的 配置 中启用那些在Zabbix agent(自定义脚本)上执行的远程命令。
确保已经添加了AllowKey=system.run[*]
参数。如果修改了此参数,请重启agent服务。
远程命令不适用于主动模式的Zabbix agent。
然后,在 配置 → 动作 中配置一个新动作时:
标记红色星号的为必填字段。
例如:
在这种情况下,Zabbix将会尝试重启Apache进程。使用此命令,确保该命令在Zabbix agent上执行 (在 执行在 块中,点击 Zabbix agent 按钮)。
请注意 sudo 的用法 - 默认情况下,Zabbix用户没有重启系统服务的权限。有关如何配置 sudo,请参见下文。
Zabbix agent应该在远程主机上运行并接受传入的连接。Zabbix agent在后台执行命令。
通过system.run[,nowait]键,在Zabbix agent上执行远程命令时则不会超时,并且不会检查执行的结果。在Zabbix server和Zabbix proxy上,远程命令的超时时间是在zabbix_server.conf或zabbix_proxy.conf文件的TrapperTimeout参数中设置的,并且会 检查执行结果。
Make sure that the 'zabbix' user has execute permissions for configured commands. One may be interested in using sudo to give access to privileged commands. To configure access, execute as root: 确保'zabbix'用户对已配置的命令具有执行权限。 可能有人更乐于使用** sudo ** 来访问特权命令。 要配置访问权限,请以root身份执行:
可以在 sudoers 文件中使用以下的示例代码:
# allows 'zabbix' user to run all commands without password.
zabbix ALL=NOPASSWD: ALL
# allows 'zabbix' user to restart apache without password.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart
在某些系统中,sudoers 文件将阻止非本地用户执行命令。要更改此设置,请在 /etc/sudoers 文件中注释 requiretty 选项。
如果目标系统具有多个选定类型的接口(Zabbix agent或IPMI),则将在默认接口上执行远程命令。
可以使用除zabbix agent以外的其他接口,通过SSH和Telnet执行远程命令。可用的接口按以下顺序选择:
* Zabbix agent default interface
* SNMP default interface
* JMX default interface
* IPMI default interface
IPMI远程命令的语法如下:
其中
在一定条件下重启Windows。
为了在Zabbix检测到问题时自动重启Windows,定义了以下操作:
参数 描 | |
---|---|
Operation type | 'Remote command' |
Type | 'Custom script' |
Command | c:\windows\system32\shutdown.exe -r -f |
通过IPMI控制重启主机。
参数 描 | |
---|---|
Operation type | 'Remote command' |
Type | 'IPMI' |
Command | reset |
通过IPMI控制关闭主机电源。
参数 描 | |
---|---|
Operation type | 'Remote command' |
Type | 'IPMI' |
Command | power off |