ZABICOMの設定方法 - サーバー監視編
障害の通知
ZABICOMでは、障害が発生した際のアクションとして、障害通知メッセージを送信したり、コマンドを実行したりすることができます。さらに、長時間経過しても障害が回復しない場合には、別の通知先に通知したり、再起動など別のコマンドを実行したりするエスカレーション機能が新たに加わりました。
エスカレーション機能によって、次のような動作を自動的に行うこともできます。
障害発生時 | 1次対応者にメール通知 |
障害継続5分後 | 監視対象プロセスを再起動 |
障害継続30分後 | サーバー再起動 |
障害継続1時間後 | 機器ベンダーにメール通知 |
エスカレーション機能によって、例えば、「障害を検知したらまず1次対応者にメールで通知、設定した時間が経過しても障害が回復しない場合はベンダーにメール通知」といった自動通知フローを設定できます。
あるいは、「サービス・ダウン検知の5分後に監視対象プロセスを再起動し、30分経過してもサービスが回復しない場合にはサーバー全体の再起動を行う」といった、段階的な自動復旧シナリオを設定することも可能です。
今回は、CPU使用率で障害を検知し、ユーザーに通知し、1時間後に障害が回復していない場合に監視対象サーバーを再起動する設定例を解説します。
[設定]-[アクション]をクリックすると、アクション設定の一覧が表示されます。[アクションの作成]ボタンをクリックして、アクションを新規作成します。
アクション項目では、アクションの名前や通知メッセージを設定します。以下に、通知メッセージの設定例を示します。
図7: アクションの新規作成画面(クリックで拡大) |
アクション | |
---|---|
名前 | CPU障害 |
イベント・ソース | トリガー |
エスカレーションを有効 | チェック |
期間(秒) | 3600 |
デフォルトの件名 | {HOST.NAME}CPU障害通知 |
デフォルトのメッセージ | 障害ホスト:{HOST.NAME} 発生日時:{EVENT.DATE}{EVENT.TIME} IPアドレス:{IPADDRESS} 機器設置場所:{PROFILE.LOCATION} 障害連絡先:{PROFILE.CONTACT} |
リカバリ・メッセージ | チェック |
リカバリの件名 | {HOST.NAME}CPU回復通知 |
リカバリ・メッセージ | 障害ホスト:{HOST.NAME} 回復日時:{EVENT.DATE} {EVENT.TIME} IPアドレス:{IPADDRESS} 機器設置場所:{PROFILE.LOCATION} 障害連絡先:{PROFILE.CONTACT} |
アクション設定では、{HOST.NAME}などのマクロを使うことによって、メール通知時の件名や本文に、監視対象の名前やプロファイルに登録されている設置場所などの情報を含めることができます。
[エスカレーションを有効]にした場合、動作と次の動作の間隔を、[期間]に秒単位で設定します。今回は3600としているので、障害状態が継続していた場合、最初の動作から1時間後に次の動作が実施されます。
使用可能なマクロの一覧は、以下のサイトを参考にしてください。
- Zabbix公式サイト内マクロの説明ページ「2. Macros」(英語)
アクションのコンディション | ||
---|---|---|
トリガー | = | CPU使用率監視トリガー |
トリガーの値 | = | 障害 |
アクションのコンディションでは、「どのような条件が満たされた時にアクションを実行するのか」を定義します。[メンテナンスの状態]で[期間外]を選択すると、メンテナンス期間中に限って障害通知を抑止することができます。
[アクションのコンディション]の条件が満たされた場合にどのような動作を行わせるのかを、[アクションのオペレーション]に設定します。
まず、アクションの最初の部分、メッセージ通知の設定例を示します。今回は、Adminユーザーに対してメッセージを送信します。
オペレーションの編集 | |
---|---|
開始 | 1 |
終了 | 1 |
期間 | 0 |
オペレーションのタイプ | メッセージの送信 |
メッセージの送信先 | admin |
次のメディアのみ使用 | すべて |
上記は、一番シンプルな設定です。設定を変えることで、複数のユーザーにメールを送信したり、時間帯によって送信先を携帯電話とパソコンで切り替える、といった設定もできます。
続いて、1時間後に障害が継続していればサーバーを再起動する設定例を示します。
オペレーションの編集 | |
---|---|
開始 | 2 |
終了 | 2 |
期間 | 0 |
オペレーションのタイプ | リモートコマンドの実行 |
リモートコマンド | {HOST.NAME}:sudo /sbin/shutdown -r now |
上記の設定では、第1ステップでメッセージの送信を行い、第2ステップでリモートコマンドの実行を行っています。開始と終了の値を変えることで、複数のステップにわたって繰り返し動作するオペレーションも設定できます。
リモートコマンドはzabbixユーザー(UNIX系)もしくはsystemユーザー(Windows系)の権限で実行されます。リモートコマンドによってプロセスやサーバーの再起動を行う場合にはsudoの設定を行うなど、セキュリティ・ポリシーに合わせて実行できるコマンドを適切に制御してください。
今回は、ZABICOMによるサーバー監視方法と、障害検知に基づいてサーバーを自動的に再起動させる方法を解説しました。リモートコマンドを利用することによって、障害発生時の運用手順を自動化することもできます。
次回は、ZABICOMをより活用するための方法として、外部連携機能を解説するとともに、ZABICOM-J Exと呼ぶ拡張ツール(有償オプション)などを紹介します。