リモート コマンドを使用すると、特定の定義済みコマンドが監視対象ホストで何らかの条件で自動的に実行されるように定義できます。
リモート コマンドはスマート プロアクティブ モニタリングの強力なメカニズムです。
この機能の最も明白な使用法で、次のことを試みることができます。
リモート コマンドのアクションの設定は、メッセージを送信する場合と似ていますが、Zabbix がメッセージを送信する代わりにコマンドを実行する点だけが異なります。
リモート コマンドは、Zabbix サーバー、プロキシ、またはエージェントによって実行できます。 Zabbix エージェントのリモート コマンドは、Zabbix サーバーまたは Zabbix プロキシ経由で直接実行できます。 Zabbix エージェントと Zabbix プロキシの両方で、リモート コマンドはデフォルトで無効になっています。 それらは次の方法で有効にできます。
AllowKey=system.run[*]
パラメーターを追加します。Zabbix サーバーによって実行されるリモート コマンドは、コマンドの実行 で説明されているように、終了コードのチェックを含めて実行されます。
対象ホストがメンテナンス中であってもリモートコマンドを実行します。
すべてのマクロを解決した後のリモート コマンドの制限は、データベースの種類と文字セットによって異なります (ASCII 以外の文字を格納するには、1 バイト以上が必要です)。
データベース | 文字数制限 | バイト数制限 |
MySQL | 65535 | 65535 |
Oracle Database | 2048 | 4000 |
PostgreSQL | 65535 | not limited |
SQLite (only Zabbix proxy) | 65535 | not limited |
次のチュートリアルでは、リモート コマンドを設定する方法について順を追って説明します。
Zabbix エージェント (カスタム スクリプト) で実行されるリモート コマンドは、最初にエージェントの 設定 で有効にする必要があります。
エージェント設定で許可されている各コマンドに AllowKey=system.run[<command>,*] パラメータが追加されていることを確認して、nowait モードで特定のコマンドを許可します。 このパラメータを変更する場合は、エージェント デーモンを再起動します。
リモート コマンドは、アクティブな Zabbix エージェントでは機能しません。
次に設定 → アクション で新しいアクションを設定:
アクション操作に使用できるすべてのスクリプト (Webhook、スクリプト、SSH、Telnet、IPMI) は、グローバル スクリプト で定義されています。
例:
この場合、Zabbix は Apache プロセスの再起動を試みます。 このコマンドを使用して、コマンドが Zabbix エージェントで実行されることを確認します (Zabbix agent の実行ボタンをクリックします)。
sudo の使用に注意してください。Zabbix ユーザーには、デフォルトでシステム サービスを再起動する権限がありません。 sudo の設定方法に関するヒントについては、以下を参照してください。
Zabbix エージェントはリモート ホストで実行され、着信接続を受け入れる必要があります。 Zabbix エージェントはバックグラウンドでコマンドを実行します。
Zabbix エージェントのリモート コマンドは、system.run[,nowait] キーによってタイムアウトなしで実行され、実行結果はチェックされません。 Zabbix サーバーと Zabbix プロキシでは、リモート コマンドは、zabbix_server.conf または zabbix_proxy.conf ファイルの TrapperTimeout パラメータで設定されたタイムアウトで実行され、実行結果について チェック されます。
'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 エージェントまたは IPMI) の複数のインターフェースがある場合、リモート コマンドはデフォルトのインターフェースで実行されます。
Zabbix エージェント以外のインターフェイスを使用して、SSH および Telnet 経由でリモート コマンドを実行することができます。 使用可能なインターフェースは、次の順序で選択されます。
IPMI リモート コマンドの場合、次の構文を使用する必要があります。
内容
アクションの実行内容でリモート コマンドとして使用できるグローバル スクリプトの例。
特定の条件で Windows を再起動します。
Zabbix によって障害が検出されたときに Windows を自動的に再起動するには、次のスクリプトを定義します。
スクリプトパラメータ | 値 |
---|---|
Scope | 'Action operation' |
Type | 'Script' |
Command | c:\windows\system32\shutdown.exe -r -f |
IPMI コントロールを使用してホストを再起動します。
スクリプトパラメータ | 値 |
---|---|
Scope | 'Action operation' |
Type | 'IPMI' |
Command | reset |
IPMI コントロールを使用して、ホストの電源をオフにします。
スクリプトパラメータ | 値 |
---|---|
Scope | 'Action operation' |
Type | 'IPMI' |
Command | power off |