こんにちは、SCSKの坂木です。
Zabbixで監視はできているけど、障害発生時の対応は手作業…面倒ですよね。
そこで、本ブログではZabbixのトリガーアクションで障害対応を自動化する方法を解説します。 今回はトリガーアクションの中でもスクリプトの実行方法について説明します。
この方法をマスターすれば、手作業による対応時間を大幅に削減することができます!
本ブログでは、以下の2パターンの実行方法を紹介します。
- Zabbixサーバで障害が発生し、Zabbixサーバでスクリプトを実行する
- Zabbixエージェントで障害が発生し、Zabbixエージェントでスクリプトを実行する
Zabbixサーバでのスクリプト実行
設定
zabbix_server.confを編集し、EnableGlobalScripts=1と設定します。設定変更後の、サービス再起動もお忘れなく!
cat /etc/zabbix/zabbix_server.conf | grep EnableGlobalScripts
Zabbixサーバで障害が発生したときに実行するスクリプトを作成します。(通知 >スクリプト から設定ください)
今回実行するコマンドは、障害発生日時と障害名を「/var/log/problemlog」に書き込むものとなっております。
メッセージ内で利用されているマクロはこちらをご覧ください。
また、今回はファイルに書き込むコマンドとしましたが、コマンド次第で特定のプロセスの削除や、サービスの再起動/開始なども実施可能です。
コマンド実行はzabbixユーザにより行われるため、zabbixユーザが/var/log/problemlogに書き込めるよう権限設定をします。
ls -la /var/log/ | grep problem
次に、スクリプトを実行するアクションを設定します。(通知 >アクション >トリガーアクション から設定ください)
実行条件は、Zabbix server(ホスト名)のいずれかのアイテムが障害と判断されたときとしています。
処理内容に、作成したスクリプト(test-script)を選択します。
ターゲットリストの現在のホストにチェックを入れます。今回は障害の発生したホストでスクリプトを実行するため現在のホストを選択しましたが、障害の発生したホストとコマンドを実行するホストが異なる場合は、ホスト/ホストグループからコマンドを実行するホストを選択してください。
動作確認
障害を発生させると、アクションの項目からリモートコマンドが実行されたことを確認できます。
ファイルを確認してみましょう。問題なく書き込まれていました。
cat /var/log/problemlog
Zabbixエージェントでのスクリプト実行
設定
スクリプトを実行するサーバのzabbix_agentd.confを編集し、EnableRemoteCommands=1とします。
cat /etc/zabbix/zabbix_agentd.conf | grep EnableRemote
Zabbixエージェントで実行するスクリプトを作成します。
次で実行は、Zabbixエージェントを選択します。コマンド内容は先ほどと同様です。
トリガーアクションを設定します。
実行条件は、test-agent(ホスト名)のいずれかのアイテムが障害と判断されたときとしています。処理内容に、作成したスクリプト(test-script-agent)を選択します。
動作確認
障害画面を確認しましょう。リモートコマンドが実行されたことを確認できました。
Zabbixエージェント環境にて、書き込み先ファイルを確認すると、問題なくログが出力されていました。
まとめ
最後まで読んでいただきありがとうございます。
本ブログでは、Zabbixのトリガーアクションでスクリプトを実行する方法について紹介しました。
アクション設定をすることで、障害対応を自動化でき、手作業で行っていた作業工数を削減できます。
この記事を参考にぜひ試してみてください!
SCSK Zabbixチャンネルでは、設定操作のナレッジ動画などを公開しておりますので、ぜひご覧ください。
お時間のある方は、筆者の他のZabbix記事も見てやってください!
