Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

9. Web監視

概要

Zabbixを使用して、Webサイトの稼働状況をさまざまな観点で確認できます。

Web監視を実行するには、ZabbixサーバーをcURL(libcurl)サポートで構成する必要があります。

Web監視を有効にするにはWebシナリオを定義する必要があります。 Webシナリオは1つまたは複数のHTTPリクエストまたは「ステップ」で構成されます。 ステップはZabbixサーバーによって事前に定義された順序で定期的に実行されます。 ホストがプロキシによって監視されている場合、ステップはプロキシによって実行されます。

Webシナリオは、アイテムやトリガーなどと同じ方法でホスト/テン​​プレートにアタッチされます。 つまり、Webシナリオをテンプレートレベルで作成し、1回の移動で複数のホストに適用することもできます。

次の情報は、すべてのWebシナリオで収集されます。

  • シナリオ全体のすべてのステップの1秒あたりの平均ダウンロード速度
  • 失敗したステップの数
  • 最後のエラーメッセージ

次の情報は、Webシナリオのステップで収集されます。

  • 1秒あたりのダウンロード速度
  • 応答時間
  • レスポンスコード

詳細についてはWeb監視アイテムを参照してください。

Webシナリオの実行から収集されたデータは、データベースに保持されます。 データは、グラフ、トリガー、および通知に自動的に使用されます。

Zabbixは取得したHTMLページに事前定義された文字列が含まれているかどうかを確認することもできます。 シミュレートされたログインを実行し、ページ上でシミュレートされたマウスクリックのパスをたどることができます。

Web監視はHTTPとHTTPSの両方をサポートしています。 Webシナリオを実行する場合、Zabbixはオプションでリダイレクトに従います。(以下のリダイレクトに従うオプションを参照) リダイレクトの最大数は10にハードコーディングされています。(cURLオプションCURLOPT  _MAXREDIRSを使用) すべてのCookieは単一のシナリオの実行中保持されます。

HTTPSプロトコルを使用したWeb監視の既知の問題も参照してください。

Webシナリオの設定

Webシナリオを設定するには:

  • 設定 → ホスト(またはテンプレート)に移動します
  • ホスト/テンプレートの行でwebをクリックします
  • 右側のWebシナリオの作成をクリックします(またはシナリオ名をクリックして既存のシナリオを編集します)
  • フォームにシナリオのパラメータを入力します

シナリオタブではWebシナリオの一般的なパラメータを設定できます。

すべての必須入力フィールドは、赤いアスタリスクでマークされています。

シナリオパラメータ:

パラメーター 説明
ホスト シナリオが属するホスト/テン​​プレートの名前
名前 一意のシナリオ名
監視間隔 シナリオが実行される頻度。
タイムサフィックスが使用可能。 例:30s, 1m, 2h, 1d.
ユーザーマクロが使用可能。ユーザーマクロで値が変更された場合(例:5m→30s)次のチェックは前の値に従って実行されることに注意してください(将来的にはサンプル値を使用)。
試行回数 Webシナリオステップ実行の試行回数。ネットワークに問題がある場合(タイムアウト、接続がないなど)、Zabbixはステップの実行を数回繰り返すことができます。フィギュアセットは、シナリオの各ステップに等しく影響します。最大10回試行でき、デフォルト値1回です。
:応答コードが間違っているか、必要な文字列が一致していない場合、Zabbixはステップを繰り返しません。
エージェント クライアントエージェントを選択します。
Zabbixは選択されたブラウザのふりをします。これは、Webサイトがブラウザごとに異なるコンテンツを返す場合に役立ちます。
このフィールドでは、ユーザーマクロを使用できます。
HTTPプロキシ [protocol://] [username[:password]@]proxy.example.com[:port]の形式を使用して、使用するHTTPプロキシを指定できます。
これによりCURLOPT _PROXY cURL オプションが設定されます。
オプションのprotocol://プレフィックスを使用して、代替プロキシプロトコルを指定できます。(プロトコルプレフィックスのサポートはcURL 7.21.7で追加されました)プロトコルが指定されていない場合、プロキシはHTTPプロキシとして扱われます。
デフォルトでは、1080ポートが使用されます。
指定されている場合、プロキシはhttp _proxy、HTTPS_PROXYなどのプロキシ関連の環境変数を上書きします。指定しない場合、プロキシはプロキシ関連の環境変数を上書きしません。入力した値は「そのまま」渡され、健全性チェックは行われません。
SOCKSプロキシアドレスを入力することもできます。間違ったプロトコルを指定すると、接続が失敗し、アイテムがサポートされなくなります。
HTTPプロキシでは単純な認証のみがサポートされます。
このフィールドではユーザーマクロを使用できます。
変数 シナリオステップで使用できる変数。(URL、投稿変数)
次の形式になります:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<正規表現>
例:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex :hostid is ([0-9]+)
マクロは、ステップで{username}、{password}、および{hostid}として参照できます。 Zabbixはそれらを実際の値に自動的に置き換えます。regex:を持つ変数は、正規表現の値を取得するために1つのステップが必要であるため、抽出された値は後のステップにのみ適用できることに注意してください。
値の部分がregex:で始まる場合は、その後の部分は、Webページを検索し、見つかった場合は変数に一致を格納する正規表現として扱われます。一致する値を抽出できるように、少なくとも1つのサブグループが存在する必要があります。
ユーザーマクロと{HOST.*}macrosがサポートされています。
変数は、クエリフィールドまたは投稿変数のフォームデータで使用される場合は自動的にURLエンコードされますが、生の投稿または直接URLで使用される場合は手動でURLエンコードする必要があります。
ヘッダー リクエストの実行時に送信されるカスタムHTTPヘッダー
ヘッダーは、HTTPプロトコルに表示されるのと同じ構文を使用してリストする必要があります。オプションでCURLOPT_HTTPHEADERのcURLオプションでサポートされているいくつかの追加機能を使用します。
例:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
ユーザーマクロと{HOST.*}マクロがサポートされています。
有効 このボックスがチェックされている場合、シナリオはアクティブです。チェックされていない場合、シナリオは無効になります。

既存のシナリオを編集する場合、次の2つの追加ボタンを使用できることに注意してください。

既存のシナリオのプロパティに基づいて別のシナリオを作成します。
シナリオの履歴とトレンドデータを削除します。サーバーはデータを削除した直後にシナリオを実行します。

HTTP proxyフィールドを未設定でHTTPプロキシを使用する方法は、プロキシ関連の環境変数を設定することです。

HTTPチェックの場合-Zabbixサーバーユーザーのhttp_proxy環境変数を設定します。 例:http_proxy=http://proxy_ip:proxy_port

HTTPSチェックの場合-HTTPS_PROXY環境変数を設定します。 例:HTTPS_PROXY=http://proxy_ip:proxy_port 詳細についてはシェルコマンドで#man curlを実行してください。

ステップタブではWebシナリオのステップを構成できます。 Webシナリオのステップを追加するには、ステップブロックの追加をクリックします。

シークレットユーザーマクロは「******」に解決されるため、URLで使用しないでください。

ステップの設定

ステップパラメータ:

パラメーター 説明
名前 一意のステップ名
URL 接続してデータ取得するためのURL。
例:
https://www.example.com
http://www.example.com/download
ドメイン名はUnicode文字で指定できます。これらは、Webシナリオステップの実行時に自動的にPunycode変換されてASCIIに変換されます。
[Parse]ボタンを使用して、オプションのクエリフィールド(?name=Admin&password=mypassword など)をURLから分離し、属性と値をURLエンコード用のクエリフィールドに移動できます。
{macro}構文を使用してURLで変数を使用できます。変数は{{macro}.urlencode()}構文を使用してURLエンコードできます。
ユーザーマクロと{HOST.*}macrosがサポートされています。
2048文字までの制限があります。
クエリフィールド URLのHTTP GET変数
属性と値をペアで指定します。
値は自動的にURLエンコードされます。シナリオ変数、ユーザーマクロ、または{HOST.*}マクロの値は解決され、URLエンコードされます。 {{macro}.urlencode()}構文を使用すると、URLエンコードが2倍になります。
ユーザーマクロと{HOST.*}マクロがサポートされています。
POSTデータの形式 HTTP POST変数
フォームデータモードでは、属性と値をペアで指定します。
値は自動的にURLエンコードされます。シナリオ変数、ユーザーマクロ、または{HOST. }マクロの値は解決され、URLエンコードされます。
Rawデータモードでは、属性/値が1行に表示され
記号で連結されます
未加工の値は{{macro}.urlencode()}または{{macro}.urldecode()}構文を使用してURLエンコード/デコードできます。
例:id=2345&userid={user}
{user}がWebシナリオの変数として定義されている場合、ステップの実行時に値が置き換えられます。変数をURLエンコードする場合は、{user}を{{user}.urlencode()}に置き換えます。
ユーザーマクロと{HOST.*}マクロがサポートされています。
変数 GETおよびPOST関数に使用できるステップレベルの変数。
属性と値をペアで指定します。
ステップレベルの変数は、シナリオレベルの変数または前のステップの変数をオーバーライドします。ただし、ステップレベル変数の値は、後のステップにのみ影響します(現在のステップには影響しません)。
形式は次の通りです:
{macro}=value
{macro}=regex:<通常の式>
詳細についてはシナリオレベルの変数の説明を参照してください。
変数は、クエリフィールドまたはPost変数のフォームデータで使用される場合は自動的にURLエンコードされますが、raw Postまたは直接URLで使用される場合は手動でURLエンコードする必要があります。変数はクエリフィールドまたはフォームデータで使用されると自動的にURLエンコードされます。投稿変数。ただし、生の投稿で使用する場合、またはURLで直接使用する場合は、手動でURLエンコードする必要があります。
ヘッダー リクエストの実行時に送信されるカスタムHTTPヘッダー
属性と値をペアで指定します。
ステップレベルのヘッダーは、シナリオに指定されたヘッダーを上書きします。
たとえば、値を指定せずに「User-Agent」属性を設定すると、シナリオレベルで設定されたUser-Agent値が削除されます。
ユーザーマクロと{HOST.*}マクロがサポートされます。
CURLOPT_HTTPHEADER cURLオプションが設定されます。
リダイレクトをたどる チェックボックスをマークするとHTTPリダイレクトを追跡します。
CURLOPT_FOLLOWLOCATION cURLオプションが設定されます。
取得モード 取得モードを選択します
Body - HTTPの応答から本文のみを取得します
Headers - HTTPの応答からヘッダーのみを取得します
Body and headers - HTTPの応答から本文とヘッダーを取得します
タイムアウト ZabbixはURLの処理に設定された時間(1秒から最大1時間)を超えてURLを処理することはありません。このパラメーターはURLに接続するための最大時間とHTTP要求を実行するための最大時間を定義します。したがってZabbixはステップにTimeoutの2倍の秒数以上の時間をかけません。
Timesuffixesがサポートされています。 例. 30s, 1m, 1h
ユーザーマクロがサポートされています。
要求文字列 要求される正規表現パターン
取得したコンテンツ(HTML)が必要なパターンと一致しない場合、ステップは失敗します。空の場合、チェックは実行されません。
例:
Homepage of Zabbix
Welcome.*admin
:Zabbixフロントエンドで作成された正規表現は、このフィールドで参照されません。
ユーザーマクロと{HOST.*}マクロがサポートされています。
要求ステータスコード 予想されるHTTPステータスコードのリスト。 Zabbixがリストにないコードを取得した場合、ステップは失敗します。
空の場合、ステータスコードのチェックは実行されません。
例:200,201,210-299
ユーザーマクロがサポートされています。

Webシナリオのステップの変更は、シナリオ全体が保存されたときにのみ保存されます。

Web監視ステップを構成する方法の実例(/manual/web_monitoring/example)も参照してください。

タグの構成

[Tags]タブでは、シナリオレベルのタグを定義できます。

タグ付けにより、WebシナリオとWebモニタリング項目(/manual/web_monitoring/items)をフィルタリングできます。

認証設定

認証タブでは、シナリオの認証オプションを設定できます。タブ名の横にある緑色の点は、あるタイプのHTTP認証が有効になっていることを示します。

認証パラメータ:

パラメーター 説明
HTTP認証 認証オプション
なし - 認証は使用されません。
Basic - basic認証が使用されます。
NTLM - NTLM(Windows NT LAN Manager)認証が使用されます。
Kerberos - Kerberos認証が使用されます。参照:Zabbixを使用したKerberosの設定
Digest-ダイジェスト認証が使用されます。
認証方法を選択すると、ユーザー名とパスワードを入力するための2つのフィールドが追加されます。
ユーザーマクロは、ユーザー名フィールドとパスワードフィールドで使用できます。
SSLピア検証 チェックボックスをオンにするとWebサーバーのSSL証明書を検証します。
サーバー証明書は、システム全体の認証局(CA)の場所から自動的に取得されます。
Zabbixサーバーまたはプロキシ設定パラメータSSLCALocationを使用してCAファイルの場所を上書きできます。
CURLOPT_SSL_VERIFYPEER cURLオプションが設定されます。
SSLホスト検証 チェックボックスをオンにするとWebサーバー証明書のCommon NameフィールドまたはSubject Alternate Nameフィールドが一致することを確認します。
CURLOPT_SSL_VERIFYHOST cURLオプションが設定されます。
SSL証明書ファイル クライアント認証に使用されるSSL証明書ファイル名。証明書ファイルはPEM1形式である必要があります。証明書ファイルに秘密鍵も含まれている場合はSSL key fileフィールドを空のままにします。キーが暗号化されている場合はSSL key passwordフィールドにパスワードを指定します。このファイルを含むディレクトリは、Zabbixサーバーまたはプロキシ設定パラメータSSLCertLocationによって指定されます。
HOST.\*マクロとユーザーマクロをこのフィールドで使用できます。
CURLOPT_SSLCERT cURLオプションが設定されます。
SSL秘密鍵ファイル クライアント認証に使用されるSSL秘密鍵ファイルの名前
秘密鍵ファイルはPEM1形式である必要があります。このファイルを含むディレクトリは、Zabbixサーバーまたはプロキシ設定パラメータSSLKeyLocationによって指定されます。
HOST.\*マクロとユーザーマクロをこのフィールドで使用できます。
CURLOPT_SSLKEY cURLオプションが設定されます。
SSL秘密鍵パスワード SSL秘密鍵ファイルパスワード
このフィールドではユーザーマクロを使用できます。
CURLOPT_KEYPASSWD cURLオプションが設定されます。

 [1]ZabbixはPEM形式の証明書と秘密鍵ファイルのみをサポートします。 証明書と秘密鍵データがPKCS#12形式のファイル(通常は拡張子.p12または.pfx)である場合は、 次のコマンドを使用してそこからPEMファイルを生成できます。

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Zabbixサーバーは再起動せずに証明書の変更を取得します。

1つのファイルにクライアント証明書と秘密鍵が含まれている場合は"SSL certificate file"フィールドで指定し、"SSL key file"フィールドは空のままにします。証明書とキーは引き続きPEM形式である必要があります。証明書とキーの組み合わせは簡単です

cat client.crt client.key > client.pem

画面

ホスト用に構成されたWebシナリオを表示するにはMonitoring→Hostsに移動し、リストからホストを見つけて、最後の列のWebハイパーリンクをクリックします。シナリオ名をクリックすると詳細情報が表示されます。

Webシナリオの概要は、WebモニタリングウィジェットによってMonitoring→Dashboardに表示することもできます。

Webシナリオ実行の最近の結果は、Monitoring → Latest dataセクションで確認できます。

拡張モニタリング

受信したHTMLページのコンテンツをログに記録する必要がある場合があります。 これは一部のWebシナリオステップが失敗した場合に特に役立ちます。 デバッグレベル5(trace)で確認することができます。 サーバーおよびプロキシの構成ファイルで設定するか、ランタイム制御オプション(-R log_level_increase="http poller,N" Nはプロセス番号)を使用して設定できます。次の例は、デバッグレベル4がすでに設定されている場合に、拡張モニタリングを開始する方法です。

すべてのhttp pollersのログレベルを上げます。
       shell> zabbix_server -R log_level_increase="http poller"
       
       2番目のhttp pollersのログレベルを上げます。
       shell> zabbix_server -R log_level_increase="http poller,2"

拡張Webモニタリングが必要ない場合は-R log_level_decreaseオプションを使用して停止できます。