リモート コマンドを使用すると、特定の定義済みコマンドが監視対象ホストで何らかの条件で自動的に実行されるように定義できます。
リモート コマンドはスマート プロアクティブ モニタリングの強力なメカニズムです。
この機能の最も明白な使用法で、次のことを試みることができます。
リモート コマンドのアクションの設定は、メッセージを送信する場合と似ていますが、Zabbix がメッセージを送信する代わりにコマンドを実行する点だけが異なります。
リモート コマンドは、Zabbix サーバー、プロキシ、またはエージェントによって実行できます。 Zabbix エージェントのリモート コマンドは、Zabbix サーバーまたは Zabbix プロキシ経由で直接実行できます。 Zabbix エージェントと Zabbix プロキシの両方で、リモート コマンドはデフォルトで無効になっています。 それらは次の方法で有効にできます。
AllowKey=system.run[*]パラメーターを追加します。Zabbix サーバーによって実行されるリモート コマンドは、コマンドの実行 で説明されているように、終了コードのチェックを含めて実行されます。
対象ホストがメンテナンス中であってもリモートコマンドを実行します。
すべてのマクロを解決した後のリモートコマンドの制限は、データベースの種類と文字セット(非ASCII文字は格納するのに1バイト以上必要)によって異なります。
| データベース | 文字数の制限 | バイト数の制限 |
|---|---|---|
| MySQL | 65535 | 65535 |
| PostgreSQL | 65535 | 制限なし |
| SQLite(Zabbixプロキシのみ) | 65535 | 制限なし |
リモートコマンド実行の出力(戻り値)は16MBに制限されます(末尾の空白も含み、切り捨てられます)。 IPMIリモートコマンドの制限は、インストールされているIPMIライブラリに依存します。 すべてのリモートコマンドにはデータベースの制限が適用されることに注意してください。
Zabbixエージェント上で実行されるリモートコマンド(カスタムスクリプト)は、エージェントの設定で最初に有効にする必要があります。
特定のコマンドをnowaitモードで許可するには、エージェントの設定でAllowKey=system.run[<command>,*]パラメータを各許可コマンドごとに追加してください。このパラメータを変更した場合は、エージェントデーモンを再起動してください。
次に、アラート → アクション → トリガーアクションで新しいアクションを設定する場合:



アクション操作(Webhook、スクリプト、SSH、Telnet、IPMI)で利用可能なスクリプトは、グローバルスクリプトで定義されています。
例:
この場合、ZabbixはApacheプロセスの再起動を試みます。 このコマンドを使用する場合は、Zabbixエージェントでコマンドが実行されることを確認してください(実行先のZabbix agentボタンをクリック)。
sudoの使用に注意してください。Zabbixユーザーにはデフォルトでシステムサービスを再起動する権限がありません。sudoの設定方法については、下記のヒントを参照してください。
Zabbix agent 7.0以降、リモートコマンドはアクティブモードで動作するエージェントでも実行できます。 Zabbixエージェント(アクティブまたはパッシブ)はリモートホストで実行され、コマンドはバックグラウンドで実行されます。
Zabbixエージェント上のリモートコマンドは、system.run[,nowait]キーによってタイムアウトなしで実行され、実行結果はチェックされません。 ZabbixサーバーおよびZabbixプロキシでは、リモートコマンドはzabbix_server.confまたはzabbix_proxy.confファイルのTrapperTimeoutパラメータで設定されたタイムアウトで実行され、実行結果がチェックされます。 詳細については、スクリプトのタイムアウトを参照してください。
'zabbix'ユーザーが設定されたコマンドを実行できる権限を持っていることを確認してください。 特権コマンドへのアクセスを許可するためにsudoを使用することもできます。 アクセスを設定するには、rootで以下を実行します。
sudoersファイルで使用できる例:
# 'zabbix'ユーザーがすべてのコマンドをパスワードなしで実行できるようにします。
zabbix ALL=NOPASSWD: ALL
# 'zabbix'ユーザーがapacheをパスワードなしで再起動できるようにします。
zabbix ALL=NOPASSWD: /etc/init.d/apache restart一部のシステムでは、sudoersファイルがローカル以外のユーザーによるコマンドの実行を禁止しています。 これを変更するには、/etc/sudoersのrequirettyオプションをコメントアウトしてください。
ターゲットシステムが選択されたタイプ( ZabbixエージェントまたはIPMI)の複数のインターフェースを持っている場合、リモートコマンドはデフォルトのインターフェースで実行されます。
Zabbixエージェント以外のインターフェースを使用して、SSHおよびTelnet経由でリモートコマンドを実行することも可能です。使用可能なインターフェースは、次の順序で選択されます:
IPMI リモート コマンドの場合、次の構文を使用する必要があります。
内容
アクション操作でリモートコマンドとして使用できるグローバルスクリプトの例。
例1
特定の条件でWindowsを再起動します。
Zabbixで検出された問題に応じてWindowsを自動的に再起動するには、次のスクリプトを定義します。
| スクリプトパラメータ | 値 |
|---|---|
| スコープ | 'アクションオペレーション' |
| タイプ | 'スクリプト' |
| コマンド | c:\windows\system32\shutdown.exe -r -f |
例2
IPMI制御を使用してホストを再起動します。
| スクリプトパラメータ | 値 |
|---|---|
| スコープ | 'アクションオペレーション' |
| タイプ | 'IPMI' |
| コマンド | reset |
例3
IPMI制御を使用してホストの電源をオフにします。
| スクリプトパラメータ | 値 |
|---|---|
| スコープ | 'アクションオペレーション' |
| タイプ | 'IPMI' |
| コマンド | power off |