Zabbix Agentはインストール対象のOSにてコマンド実行やスクリプト実行をさせる「リモートコマンド」機能を有している。この機能を使うと、例えば障害などでサーバ再起動が必要となった際などに、わざわざOSにログインせずともZabbixの管理画面から再起動を実行することができる。
※当然障害中であってもZabbix Agentと疎通ができることが条件となる。
今回、Zabbix Agentにてリモートコマンドを有効にし、Zabbixの管理画面からOSの再起動を実行できるよう設定をしてみた。
環境
- Zabbix : 5.0.3 (CentOS 8にインストール)
- Zabbix Agent : 4.0.17 (Ubunt 20.04にインストール)
Zabbix Agent設定手順
1. 「/etc/zabbix/zabbix_agentd.conf」の修正
「/etc/zabbix/zabbix_agentd.conf」に対して以下を設定修正する。修正内容はZabbix Agent 5.0より前のバージョンと5.0以降で異なるので注意。
Zabbix Agent 5.0より前のバージョンは以下で設定する。
$ sudo vi /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
Zabbix Agent 5.0以降のバージョンは以下で設定する。
$ sudo vi /etc/zabbix/zabbix_agentd.conf
AllowKey=system.run[*]
設定修正後、Zabbix Agentを再起動し設定反映する。
$ sudo systemctl restart zabbix-agent
2. 「/etc/sudoers」の修正
パスワードなしでコマンドを叩けるようにvisudo
コマンドでsudoの設定を行う。
$ sudo visudo
# allows 'zabbix' user to run all commands without password.
zabbix ALL=NOPASSWD: ALL
Zabbixにてスクリプトを設定
1. 再起動用のスクリプトを設定
Zabbix管理画面にて「管理」→「スクリプト」を選択し、以下のスクリプトを作成する。
内容は、1分後にサーバを再起動するスクリプトとなる。再起動を1分後にしている理由は、即材に再起動させるとスクリプト実行後の応答をZabbixが受け取ることができずエラーになるためである。また、万が一再起動をキャンセルしたい場合に備えて、猶予期間を設けることも理由となる。
今回の再起動といった影響の大きいスクリプトを実行させる場合は、「確認を有効」にチェックを入れておく。このチェックを入れることで、スクリプト実行前に確認画面を表示させることができ、オペミスの発生を予防できる。
項目 | 設定値 |
---|---|
名前 | Reboot |
タイプ | スクリプト |
次で実行 | Zabbixエージェント |
コマンド | sudo shutdown -r +1 |
必要なホストへのアクセス権 | 表示のみ |
確認を有効 | チェック |
確認テキスト | 1分後にホスト {HOST.NAME} を再起動します。 |
2. 再起動キャンセル用のスクリプトを設定
万が一再起動をキャンセルしたい場合に備え、再起動をキャンセルするスクリプトも併せて作成しておく。
項目 | 設定値 |
---|---|
名前 | Cancel reboot |
タイプ | スクリプト |
次で実行 | Zabbixエージェント |
コマンド | sudo shutdown -c |
必要なホストへのアクセス権 | 表示のみ |
確認を有効 | チェックなし |
確認テキスト | <空白> |
2. 動作確認
まず「Reboot」スクリプトを実行してみる。
「監視データ」→「ホスト」にて対象のホストの名前をクリックし、「Reboot」を選択する。
「1分後にホスト <対象のホスト名> を再起動します。」と表示されるので、「実行」ボタンをを選択する。
実行後、コマンドの標準出力の結果が表示される。これで1分待てば、サーバが再起動されるはずだ。
再起動をキャンセルしたい場合は、再度対象のホストの名前をクリックし、「Cancel reboot」を選択する。こちらは「確認を有効」にチェックを入れていないので、特に何も表示されるスクリプトが実行される。
まとめ
今回は、ホストを選択して直接スクリプトを実行させる手順を紹介したが、このスクリプトは、アクションでも使うことができる。
アクションを設定することで、「特定の監視メッセージが表示された際に、復旧コマンドやログ取得コマンドを自動実行させる」といった使い方もできるので、うまく設定すれば運用効率化が実現できそうだ。
0 件のコメント:
コメントを投稿