この連載では、オープンソースの運用監視ソフトウェア「ZABBIX」ではどんなことができるのかを、実際の使い方とともに紹介していきます(編集部)
前回の「テンプレートを使った効率的な監視」までで、ZABBIXを利用してシステムの稼働状況を監視し、障害として検知する方法やグラフ表示を行う方法を解説しました。今回はZABBIXの拡張的な監視機能であるWeb監視と、障害が発生した際にシステム管理者に障害通知を送付する方法を解説します。
前回までに行った監視設定はプロセスやポートの稼働確認、サーバのリソースの監視などを行うための設定ですが、システム管理を行っていると「プロセスやポートは稼働しているにもかかわらずサービスが正常に提供できていない」という状態になることがあります。
例えば、Apacheのプロセスは稼働していてポートにもアクセスできるのにもかかわらず、ブラウザからはコンテンツが表示できないといった状態になったことはないでしょうか。そのような障害はサーバの負荷が増加していたり、内部的にコンテンツにアクセスできない、Webアプリケーションプログラムのバグ、設定ミスなど、さまざまな原因が考えられますが、いずれも複合的な問題であり、システム側から見た単純な監視では発見できない場合があります。
上記のような場合、障害を検知するためにはユーザーと同じようにWebコンテンツにアクセスし、正常に表示できたかどうかを監視する方法が最も効果的です。ZABBIXは複数のURLに対してWebアクセスを行い、表示できたかどうかやダウンロード速度、レスポンス時間、ステータスコードなどを監視する「Web監視機能」を有しており、アプリケーションの動作をより的確に監視することができます。ここでは、このWeb監視機能を利用する方法を解説します。
今回は例として、ZABBIXサーバからローカルにインストールされているZABBIXのWebインターフェイスが正常に動作しているかどうかを監視してみます。
Web監視の設定はメニューの[設定]→[ウェブ]をクリックして表示される専用の画面を利用します。右上のホストドロップダウンから「ZABBIX Server」を選択し、「シナリオの作成」をクリックして設定画面を表示します。
シナリオ設定画面では以下の設定を行います。
設定項目 | 設定値 | 説明 |
---|---|---|
アプリケーション | web | アイテムの「アプリケーション名」を設定します |
名前 | ZABBIX Web Interface | シナリオの設定名を設定します |
更新間隔(秒) | 300 | 監視間隔を設定します |
エージェント | 任意 | アクセスする際に利用するユーザーエージェントを設定します |
ステータス | 有効 | 設定の有効/無効を設定します |
変数 | なし | POSTデータで使用する変数を設定します。今回は解説しません |
ステップ | - | 以降で解説します |
表1 シナリオの設定 |
シナリオは複数のURLを監視する一連の監視のまとまりであり、監視するそれぞれのURLや監視の条件はステップで設定します。ステップの設定項目にある「追加」ボタンをクリックすると以下のようなポップアップでステップの設定画面が表示されるため、次のように設定を行います。
設定項目 | 設定値 | 説明 |
---|---|---|
名前 | index.php | ステップの設定名を設定します |
URL | http://localhost/zabbix/index.php | 監視するURLを設定します |
POST | なし | POST変数を設定します。今回は解説しません |
タイムアウト | 15 | URLにアクセスする際のタイムアウト時間を設定します |
要求文字列 | なし | アクセスしたページに表示される必要がある文字列を設定します |
ステータスコード | 200 | URLにアクセスした際に返ってくる必要があるステータスコードを設定します |
表2 ステップの設定 |
以上で設定は完了です。複数のURLを監視する場合は、シナリオ画面で再度ステップの追加ボタンをクリックし、監視するURLを登録することができます。
設定したWeb監視の状態はメニューの[監視データ]→[ウェブ]から閲覧することができます。Web監視画面では、上部にステップごとに監視結果が正常/障害のステータスで表示され、下部にダウンロード速度とレスポンス時間のグラフが表示されます。
また、Web監視の設定を行ったホストには以下のアイテムが追加され、これらのアイテムを基にトリガーに設定を行うことで、通常のプロセスやポート監視などと同様に障害として検知することができます。
アイテム名 | 説明 |
---|---|
Download speed for scenario 'ZABBIX Web Interface' | シナリオ全体のダウンロード速度 |
Download speed for step 'index.php' of scenario 'ZABBIX Web Interface' | ステップのダウンロード速度 |
Failed step of scenario 'ZABBIX Web Interface' | シナリオが失敗した場合に1を返す |
Response code for step 'index.php' of scenario 'ZABBIX Web Interface' | ステップのレスポンスコード |
Response time for step 'index.php' of scenario 'ZABBIX Web Interface' | ステップのレスポンス時間 |
表3 アイテムに追加されるWeb監視の設定項目 |
例としてシナリオ自体が最終的に失敗した際に障害として検知するトリガーの設定を解説します。メニューから[設定]→[トリガー]を選択し、右上のドロップダウンリストから「ZABBIX Server」を選択して「トリガーの作成」ボタンをクリックします。トリガーの設定は以下のように行います。
設定項目 | 設定値 |
---|---|
名前 | ZABBIX Web Interface is not accessible |
条件式 | {Zabbix Server:web.test.fail[Zabbix Web Interface].last(0)}=1 |
次のトリガーに依存 | なし |
イベント生成 | ノーマル |
深刻度 | 軽度の障害 |
コメント | なし |
URL | なし |
無効 | チェックしない |
表4 Web監視のトリガーの設定 |
以上で設定は完了です。
なお、今回は解説を行いませんでしたが、Web監視ではPOSTデータを送信して監視を行うことも可能です。例えば「トップ画面にアクセスし、ユーザーログインを行い、ログイン後に特定のページにアクセスできるかどうか」など複雑な監視を行うことができます。Web監視の詳細についてはZABBIXマニュアルを参照してください。
Copyright © ITmedia, Inc. All Rights Reserved.