2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 远程命令

概述

使用远程命令,您可以定义在某些情况下,监视的主机上会自动执行某个预定义的命令。

因此,远程命令是智能主动监控的强大机制

在功能最明显的用途中,您可以尝试:

*如果没有响应,则自动重新启动某些应用程序(Web服务器,中间件,CRM)
       * 如果不响应请求,请使用IPMI“reboot”命令重新启动一些远程服务器
       * 如果磁盘空间不足,可自动释放磁盘空间(删除较旧的文件,清理/ tmp)
       * 根据CPU负载,将VM从一个物理盒移植到另一个物理盒
       * 在CPU(磁盘,内存,任何资源)不足的情况下,将新节点添加到云环境中

配置远程命令的操作类似于发送消息的操作,唯一的区别是Zabbix将执行命令而不是发送消息。

<note important>不支持在Zabbix代理监视的Zabbix代理上执行远程命令,因此需要从Zabbix服务器到代理的命令才能直接连接。 :::

远程命令限制为255个字符。可以通过将多个命令放置在新行上来执行多个命令。远程命令可能包含宏。 由Zabbix服务器执行的远程命令如命令执行中所述执行,包括退出代码检查。

即使目标主机处于维护状态,也会执行远程命令。

以下教程提供了有关如何设置远程命令的分步说明。

配置

在Zabbix代理(自定义脚本)上执行的那些远程命令必须首先在相应的命令中启用 zabbix_agentd.conf.

确保** EnableRemoteCommands 参数设置为 1 **并取消注释。 如果更改此参数,请重新启动代理守护程序。

远程命令不适用于活动的Zabbix代理.

然后,在配置新的动作时进入配置 - >操作:

  • 定义适当的条件。 在此示例中,设置在Apache应用程序之一的任何灾难问题时激活该操作:

  • 操作选项卡中,选择远程命令操作类型
  • 选择远程命令类型(IPMI,自定义脚本,SSH,Telnet,全局脚本)
  • 输入远程命令

例如:

sudo /etc/init.d/apache restart 

在这种情况下,Zabbix将尝试重新启动Apache进程。 使用此命令,确保该命令在Zabbix代理上执行 (点击// Zabbix代理按钮执行//).

Note the use of sudo - 默认情况下,Zabbix用户没有权限重新启动系统服务。 有关如何配置** sudo **的提示,请参见下文.

Zabbix代理应在远程主机上运行并接受传入连接。Zabbix代理在后台执行命令。

Zabbix代理程序上的远程命令由系统无延迟执行。运行[,nowait]键,不检查执行结果。在Zabbix服务器上,远程命令是在zabbix_server的TrapperTimeout参数中设置的超时执行的。conf文件被 检查 以执行结果。

访问权限

确保'zabbix'用户具有已配置命令的执行权限。可能有兴趣使用** sudo **来访问特权命令。 要配置访问,请以root身份执行:

# visudo

可以在 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代理或IPMI),则将在默认接口上执行远程命令。

可以通过SSH和Telnet使用除Zabbix代理之外的其他界面执行远程命令。 可用的使用界面按以下顺序选择:

  * Zabbix agent default interface
         * SNMP default interface
         * JMX default interface
         * IPMI default interface

IPMI远程命令

对于IPMI远程命令,应使用以下语法:

<command> [<value>]

where

  • <command> - one of IPMI commands without spaces
  • <value> - 'on', 'off' or any unsigned integer. <value> is an optional parameter.

示例

示例 1

在一定条件下重新启动Windows。

为了在Zabbix检测到问题时自动重新启动Windows,请定义以下操作:

参数 说
Operation type 'Remote command'
Type 'Custom script'
Command c:\windows\system32\shutdown.exe -r -f
示例 2

使用IPMI控制重新启动主机。

参数 说
Operation type 'Remote command'
Type 'IPMI'
Command reset
示例 3

使用IPMI控制关闭主机电源。

参数 说
Operation type 'Remote command'
Type 'IPMI'
Command power off