ZabbixのWeb監視設定手順(Webサイトの死活や応答時間を監視)

Others,Zabbix

Zabbixでは、Web監視機能を使ってWebサイトを監視できます。
今回は、ZabbixのWeb監視の概要と設定手順を紹介します。

Web監視の概要では、Web監視でできることや取得できる値について説明します。
設定手順では、Webシナリオの新規作成やステップの設定方法を紹介します。
また、Webサイトの死活や応答時間を監視するためのトリガーの設定方法も紹介します。

※手順確認には、Zabbix7.0LTS(7.0.24)を使用しています。

スポンサーリンク

ZabbixのWeb監視の概要(できること、自動作成されるアイテム)

ZabbixのWeb監視概要

ZabbixのWeb監視は、Webサイトに対して定期的にHTTP/HTTPSアクセスを行い、応答内容や応答時間などを監視する機能です。
アクセス結果を収集する仕組みのため、監視対象であるWebサイト側にZabbixエージェントをインストールする必要はありません。

Web監視

Web監視の設定は、Webシナリオの作成から行います。
Webシナリオの設定は主に、監視間隔など全体に関する設定を行うシナリオと、アクセスするWebサイトのURLやレスポンスコードなどを定義するステップで構成されます。
その他に認証やタグの設定があります。

Webシナリオの構成要素
シナリオ Web監視の基本設定を行います。
監視間隔、User Agent、HTTPプロキシ、認証などをWebシナリオ単位で設定します。
ステップ 監視対象のURLや、確認するステータスコード、レスポンス内容などを設定します。
1つのWebシナリオに複数のステップを登録することができます。
認証 HTTP認証に関する設定や、WebサーバーのSSL証明書に関する設定を行います。

WebサイトへのアクセスはZabbixサーバーまたはZabbixプロキシから行われる

Web監視の設定はホストに対して行いますが、Webサイトへのアクセス元はZabbixサーバーまたはZabbixプロキシになります。
そのため、ZabbixサーバーやZabbixプロキシからWebサイトにHTTP/HTTPSでアクセスできる必要があります。

※Zabbix上でWeb監視の設定を行ったホストが停止していても、Web監視は継続されます。

Web監視で収集されるデータ(自動作成されるアイテム)

Web監視設定を作成すると、データ収集のためのアイテムが自動的に作成されます。
Webシナリオに対して自動作成されるアイテムと、ステップごとに自動作成されるアイテムがあります。
トリガーを設定することで、応答時間やHTTPステータスコードに基づいてWeb監視を行うことができます。

Web監視アイテム

Webシナリオに対して自動作成されるアイテムは3つです。

Webシナリオに対して自動で作成されるアイテム
Download speed for scenario シナリオ全体のダウンロード速度の平均値を取得します。
Failed step of scenario 失敗したステップ番号を取得します。
すべてのステップが成功した場合は0となります。
Last error message of scenario シナリオの実行時に発生した最後のエラーメッセージを取得します。

ステップごとに自動で作成されるアイテムは3つです。
作成されるアイテム数はステップ数×3となります。

ステップごとに自動で作成されるアイテム
Download speed for step ステップのダウンロード速度を取得します。
Response time for step ステップの応答時間(秒)を取得します。
Response code for step ステップで取得したHTTPステータスコード(200、301、404、500など)を取得します。

※自動で作成されるアイテムは、Web監視設定を削除すると一緒に削除されます。

監視間隔が短すぎるとZabbixサーバーや監視対象のWebサーバーに負荷がかかる

Web監視はZabbixサーバー(またはZabbixプロキシ)からHTTPアクセスを行うため、監視対象が多い場合や監視間隔が短すぎる場合、Zabbixサーバーなどの負荷が大きくなります。
Webサイトの重要度に応じて、監視間隔を調整することが推奨されます。

Web監視で利用できる認証設定(Basic、NTLM、Kerberos、Digest認証をサポート)

Basic認証やNTLM認証が設定されたWebサイトも監視できます。
認証タブで認証方式、ユーザー名、パスワードを設定します。
ZabbixのWeb監視では、Basic、NTLM、Kerberos、Digest認証を利用できます。

HTTPSサイトの証明書検証(SSLピア検証、SSLホスト検証)

認証タブで、SSLピア検証やSSLホスト検証を有効化することで、WebサイトのSSL証明書の検証を行うことができます。

SSLピア検証では、HTTPS接続先のサーバー証明書自体が信頼できるかどうかを確認します。
証明書が信頼されたCA(認証局)によって署名されているか、証明書が失効または不正でないかなどを確認することができます。
自己署名証明書などを利用している場合、ZabbixサーバーまたはZabbixプロキシ側でその証明書を信頼していないと、SSLピア検証は失敗します。
信頼するCA証明書を設定するか、必要に応じてSSLピア検証を無効にします。

SSLホスト検証では、サーバー証明書に記載されているホスト名と、実際にアクセスしているURLのホスト名が一致するかどうかを確認します。

Webシナリオの認証設定画面
認証タブの設定画面例です。
HTTP認証の種類、SSL検証の設定や、SSL関連のファイル設定などができます。
Webシナリオの認証タブ設定画面例(ZabbixでWeb監視をする場合の設定方法)

HTTPエージェントアイテムとの使い分け

同様にWeb監視を行う方法としてHTTPエージェントがあります。

HTTPエージェント

HTTPエージェントは、1アイテムにつき1つのHTTPリクエストを監視する方式です。
Webシナリオを利用した場合は複数ステップ作成して監視できるのに対して、HTTPエージェントは1つづつアイテムを作成する必要があります。
1つのURLに対する応答だけを監視したい場合はHTTPエージェントが適しています。
一方、複数のステップを順番に実行するシナリオ監視を行いたい場合や、シナリオ単位で失敗ステップを管理したい場合はWeb監視が適しています。

—広告—

Web監視の設定手順(Webシナリオからステップの設定手順)

Webシナリオを作成するホストを選択

WebシナリオはZabbixのホストに対して作成します。
対象のホストにZabbixエージェントがインストールされている必要はありません。

※監視対象のWebサイトと、Web監視を設定するZabbix上のホストは関連しないため、別のサーバーでも問題ありません。Web監視専用のホストを作成するなど、わかりやすい設定をしておくことが推奨されます。

Webシナリオの作成手順

ホストにWebシナリオを作成する手順です。
例としてHTTPSのWebサイトのトップページを監視するシナリオを作成します。

Web監視

作成したWebシナリオの設定値です。
今回は設定手順確認目的のため、監視間隔や試行回数はデフォルト値のままとしています。

設定項目 設定内容 設定値
名前 Webシナリオの名前 Test_Web_Monitoring_
監視間隔 Webシナリオを実行する間隔 1m
(デフォルト値)
試行回数 エラー時にステップを再試行する回数 1回
(デフォルト値)
エージェント アクセス時に使用するUser Agent Chrome 80 (Windows)

ホストからWebシナリオを作成する場合の設定手順です。

Webシナリオの作成手順
対象ホストを表示します。
Webを選択します。
ホストでWebを選択(ZabbixでWeb監視をする場合の設定方法)
Webシナリオの作成を選択します。 Webシナリオの作成を選択(ZabbixでWeb監視をする場合の設定方法)
新規Webシナリオの作成画面が表示されます。
シナリオ名、監視間隔、エージェント(User Agent)などを設定します。
Webシナリオの設定画面例(ZabbixでWeb監視をする場合の設定方法)
Webシナリオで選択できるエージェントの例(ZabbixでWeb監視をする場合の設定方法)

ステップの作成手順

監視するWebサイトのURLなどをステップとして追加します。
1つのステップにつき、1つのURLへのアクセスを設定します。
1つのWebシナリオ内で複数のステップを指定することができますが、今回は設定手順の確認を目的として1ステップのみとしています。

今回作成したステップの設定値です。
なお、期待するステータスコードを空白にした場合、403などのエラーコードが返された場合でも正常と判断されてしまうため注意が必要です。

設定項目 設定内容 設定値
名前 ステップの名前 Top_Page
URL 監視するWebサイトのURL https://www.example.com/
(アクセスするURLを指定)
タイムアウト Webサイトアクセス時のタイムアウト時間 15s
(デフォルト値)
要求文字列 レスポンス本文に含まれている必要のある文字列
正規表現も利用可能
特定の文言が表示されることを確認したい場合に利用
未設定
(デフォルト値)
要求ステータスコード 正常と判断するHTTPステータスコードを設定
カンマ区切りで複数指定が可能
200

Webシナリオでステップを追加する場合の手順です。

ステップの追加手順
Webシナリオの設定画面でステップタブを選択します。
追加を選択して、新規ステップを作成します。
Webシナリオでステップを追加(ZabbixでWeb監視をする場合の設定方法)
新規Webシナリオのステップ設定画面が表示されます。
ステップには、名前、アクセスするURL、要求文字列、要求ステータスコードなどを設定します。追加を選択して、ステップをWebシナリオに登録します。

Webシナリオでステップを追加(ZabbixでWeb監視をする場合の設定方法)
Webシナリオの追加を選択します。
これでWebシナリオが保存されます。
Webシナリオを追加(ZabbixでWeb監視をする場合の設定方法)
Webシナリオが追加されていることを確認できます。 作成したWebシナリオを確認(ZabbixでWeb監視をする場合の設定方法)

収集されたWeb監視データを確認

作成したWebシナリオで、データが正しく収集されているかを確認します。
監視データにある最新データから確認できます。

最新データ

収集されたWeb監視データを確認
最新データで、Webシナリオで自動作成されたアイテムが確認できます。
Response code、Response time、Download speedなどの値が収集されていることを確認できます。
最新データで自動で追加されたアイテムで取得される値を確認(ZabbixでWeb監視をする場合の設定方法)

ホストでWebを選択します。
Webシナリオが表示されるので選択します。
Webシナリオの詳細でステップごとの応答時間やステータスコード、ステータスが確認できます。

監視データのホストでWebを選択(ZabbixでWeb監視をする場合の設定方法)
監視データでWebシナリオを選択(ZabbixでWeb監視をする場合の設定方法)
Webシナリオの詳細で取得される値を確認(ZabbixでWeb監視をする場合の設定方法)

※今回は1ステップのみで作成しています。

—広告—

Web監視のトリガー設定手順(アラート検知設定)

Webシナリオの失敗を検知する場合(トリガーの作成例)

Webシナリオの実行が失敗した場合にアラートを検知するトリガーを作成します。
自動作成されるFailed step of scenarioというアイテムを利用します。
このアイテムの値が0以外の場合は障害として検知するように設定します。

すべてのステップが正常な場合、Failed step of scenarioの値は0となります。
したがって、0以外の値になった場合は、いずれかのステップが失敗した状態であると判断できます。

トリガーの設定

今回は手順確認を目的としているため、1回の失敗で障害と判断する設定にしています。

Webシナリオの失敗を検知するトリガーを作成
対象ホストのトリガーから、トリガーの作成を選択します。

トリガーの作成を選択(ZabbixでWeb監視をする場合の設定方法)
新規トリガーの作成画面が表示されます。
条件式の追加を選択します。
新規トリガーの設定画面(ZabbixでWeb監視をする場合の設定方法)
トリガー条件式の設定画面が表示されます。
アイテムを選択します。
Failed step of scenario “Test_Web_Monitoring_"を選択します。
関数にはlast() – 最新値を選択します。
結果には<>0を設定します。
最後に挿入を選択します。
トリガー条件式の設定画面(ZabbixでWeb監視をする場合の設定方法)
新規トリガーに設定するアイテムの選択画面(ZabbixでWeb監視をする場合の設定方法)
トリガー条件式の設定画面(ZabbixでWeb監視をする場合の設定方法)

条件式が設定されていることが確認できるので、条件式を追加します。
トリガー名、深刻度などを設定し、追加を選択します。
トリガー名を"Web_Monitoring_Test_Fail"としています。
深刻度は"軽度の障害"としています。

新規トリガーの設定画面(ZabbixでWeb監視をする場合の設定方法)

トリガー条件式の例

last(/vm-01/web.test.fail[Test_Web_Monitoring_])<>0

追加されたトリガーを確認することができます。 トリガーの一覧画面で追加したトリガーを確認(ZabbixでWeb監視をする場合の設定方法)

※正常イベントの生成(復旧条件)を条件式としています。そのためFailed step of scenarioの値が0になったときに復旧扱いとなります。
※障害イベント生成モードは単一としています。単一の場合は最初に障害が検知された時のみにイベント(障害検知)されます。

各ステップでHTTPステータスコードが200以外を検知する場合(トリガーの作成例)

各ステップでHTTPステータスコードが200以外になった場合に検知するトリガーの例です。

HTTPステータスコードに対するトリガーを作成
トリガー条件式の設定画面でアイテムを選択します。
Response code for step “Top_Page" of scenario “Test_Web_Monitoring_"を選択します。
関数にはlast() – 最新値を選択します。
結果には<>200を設定します。
最後に挿入を選択します。
新規トリガーに設定するアイテムの選択画面(ZabbixでWeb監視をする場合の設定方法)
トリガー条件式の設定画面(ZabbixでWeb監視をする場合の設定方法)
条件式が設定されていることが確認できます。
条件式を追加します。
トリガー名、深刻度などを設定し、追加を選択します。
トリガー名を"Web_Monitoring_Response_Code"としています。
深刻度は"軽度の障害"としています。
新規トリガーの設定画面(ZabbixでWeb監視をする場合の設定方法)

トリガー条件式の例

last(/vm-01/web.test.rspcode[Test_Web_Monitoring_,Top_Page])<>200

追加されたトリガーを確認することができます。

トリガーの一覧画面で追加したトリガーを確認(ZabbixでWeb監視をする場合の設定方法)

※各ステップの"要求ステータスコード"で200を指定している場合、200以外を取得した時点でそのステップは失敗扱いになります。その場合は"Failed step of scenario"も0以外(失敗扱い)となります。今回の設定の場合は、両方のトリガーで検知されます。

応答時間が遅い場合に検知するトリガーを作成

応答時間が一定以上になった場合に検知するトリガーの例です。
ステップごとに自動作成される"Response time for step"のアイテムを利用します。
ここでは、直近3回の平均応答時間が3秒を超えた場合に障害として検知する例としています。

応答時間に対するトリガーを作成
トリガー条件式の設定画面でアイテムを選択します。
Response time for step “Top_Page" of scenario “Test_Web_Monitoring_"を選択します。
関数にはavg() – 平均値を選択します。
結果には>3を設定します。
最後に挿入を選択します。
新規トリガーに設定するアイテムの選択画面(ZabbixでWeb監視をする場合の設定方法)
トリガー条件式の設定画面(ZabbixでWeb監視をする場合の設定方法)
条件式が設定されていることが確認できます。
条件式を追加します。
トリガー名、深刻度などを設定し、追加を選択します。
トリガー名を"Web_Monitoring_Response_Time"としています。
深刻度は"軽度の障害"としています。
新規トリガーの設定画面(ZabbixでWeb監視をする場合の設定方法)

トリガー条件式の例

avg(/vm-01/web.test.time[Test_Web_Monitoring_,Top_Page],#3)>3

追加されたトリガーを確認することができます。

トリガーの一覧画面で追加したトリガーを確認(ZabbixでWeb監視をする場合の設定方法)

※閾値となる応答時間は、対象のWebサイトの要件に合わせて設定します。

障害検知の確認

意図的にWebサイトへのアクセスを遮断して、障害が検知できるかを確認します。

障害検知を確認
監視データの障害画面で確認します。
作成したトリガーで障害が検知されていることが確認できます。
Webサイトが停止して障害が発生した場合の画面例(ZabbixでWeb監視をする場合の設定方法)
最新データの"Last error message of scenario"のアイテムから、失敗時のエラーメッセージを確認できます。 障害が発生時の最新データ画面(ZabbixでWeb監視をする場合の設定方法)
Webサイトが停止して障害が発生した場合のLast error messageの例(ZabbixでWeb監視をする場合の設定方法)

—広告—

最後に

今回は、ZabbixのWeb監視を利用して、Webサイトの死活やHTTPステータスコードを監視する手順を確認しました。
Webシナリオとステップを作成し、自動で作成されるアイテムに対してトリガーを設定するだけで、Webサイトの基本的な監視を行うことができました。
簡単に設定でき、応答速度なども監視できるため、便利な機能かと思います。

引き続き、いろいろ試してみたいと思います。

Zabbixでログを監視するための手順については、こちらで紹介しています。
WindowsのイベントログやLinuxのMessagesの場合などを例に紹介しています。

Zabbix エージェントのインストールや暗号化通信の有効化手順については、こちらで紹介しています。

ZabbixサーバーやZabbixプロキシなどの構築手順については、こちらで紹介しています。

スポンサーリンク