You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

7 Web監視

概要

Zabbixを使用すると、Webサイトのさまざまな可用性の側面をチェックできます。

Web監視を実行するには、Zabbixサーバーが最初にcURL(libcurl)サポート付きで構成されている必要があります。

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

Webシナリオは、アイテムやトリガーなどと同じ方法でホスト/テンプレートに関連付けられます。つまり、Webシナリオはテンプレートレベルでも作成でき、複数のホストに一度に適用できます。

任意のWebシナリオで収集される情報は次のとおりです。

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

任意のWebシナリオステップで収集される情報は次のとおりです。

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

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

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

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

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

Webシナリオの設定

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

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

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

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

シナリオパラメータ:

パラメータ 説明
名前 一意のシナリオ名。
ユーザーマクロがサポートされています。注意:ユーザーマクロを使用した場合、これらのマクロはWeb監視アイテム名で未解決のままになります。
更新間隔 シナリオが実行される頻度。
時間のサフィックスがサポートされています(例:30s、1m、2h、1d)。
ユーザーマクロがサポートされています。注意:ユーザーマクロを使用し、その値を変更した場合(例:5m → 30s)、次のチェックは前の値に従って実行されます(例の値では将来のより遅いタイミングで実行されます)。
新しいWebシナリオは作成から60秒以内にチェックされます。
試行回数 Webシナリオステップの実行試行回数。ネットワークの問題(タイムアウト、接続不可など)の場合、Zabbixはステップの実行を複数回繰り返すことができます。設定した数値はシナリオの各ステップに等しく適用されます。最大10回まで指定でき、デフォルト値は1です。
注意:Zabbixは、応答コードが間違っている場合や必要な文字列が一致しない場合にはステップを繰り返しません。
エージェント クライアントエージェントを選択します。
Zabbixは選択したブラウザになりすまします。これは、Webサイトが異なるブラウザに対して異なるコンテンツを返す場合に便利です。
このフィールドではユーザーマクロが使用できます。
HTTPプロキシ 使用するHTTPプロキシを[protocol://][username[:password]@]proxy.example.com[:port]の形式で指定できます。
これはCURLOPT_PROXY cURLオプションを設定します。
オプションのprotocol://プレフィックスを使用して代替プロキシプロトコルを指定できます(プロトコルプレフィックスのサポートはcURL 7.21.7で追加されました)。プロトコルが指定されていない場合、プロキシはHTTPプロキシとして扱われます。
デフォルトでは、1080ポートが使用されます。
指定した場合、プロキシはhttp_proxy、HTTPS_PROXYなどのプロキシ関連の環境変数を上書きします。指定しない場合、プロキシはプロキシ関連の環境変数を上書きしません。入力された値は「そのまま」渡され、整合性チェックは行われません。
SOCKSプロキシアドレスも入力できます。間違ったプロトコルを指定すると、接続は失敗し、アイテムはサポート対象外になります。
注意:HTTPプロキシではシンプル認証のみサポートされています。
このフィールドではユーザーマクロが使用できます。
変数 シナリオステップ(URL、POST変数)で使用できる変数。
次の形式で指定します:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<正規表現>
{macro4}=jsonpath:<jsonpath>
{macro5}=xmlxpath:<xmlxpath>
{macro6}={{macro}.function()}(マクロ関数を参照)
例:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
{url}=jsonpath:$.host_url
{status}=xmlxpath://host/response/status
{newvar}={{myvar}.btoa()}
これらのマクロは、ステップ内で{username}、{password}、{hostid}などとして参照できます。Zabbixは自動的に実際の値に置き換えます。regex:付きの変数は、正規表現の値を取得するために1ステップ必要なので、抽出した値は次のステップでのみ適用できます。
値の部分がregex:で始まる場合、その後の部分はWebページを検索する正規表現として扱われ、見つかった場合は一致した値が変数に格納されます。少なくとも1つのサブグループが必要です。
ユーザーマクロおよび{HOST.*} マクロがサポートされています。
変数は、クエリフィールドやPOST変数のフォームデータで使用する場合は自動的にURLエンコードされますが、raw postやURLで直接使用する場合は手動でURLエンコードする必要があります。
ヘッダー リクエスト実行時に使用されるHTTPヘッダー。デフォルトおよびカスタムヘッダーが使用できます。
ヘッダーは、シナリオレベルでドロップダウンリストから選択したエージェントタイプに応じてデフォルト設定で割り当てられ、すべてのステップに適用されます。ただし、ステップレベルでカスタム定義されている場合は除きます。
ステップレベルでヘッダーを定義すると、シナリオレベルで以前に定義されたすべてのヘッダーが自動的に破棄されます。ただし、シナリオレベルでドロップダウンリストから「User-Agent」を選択して割り当てたデフォルトヘッダーは除きます。
ただし、「User-Agent」デフォルトヘッダーもステップレベルで指定することで上書きできます。
シナリオレベルでヘッダーを解除するには、ステップレベルでヘッダー名を指定し、値を空にします。
ヘッダーは、HTTPプロトコルで表示されるのと同じ構文でリストし、CURLOPT_HTTPHEADER cURLオプションでサポートされている追加機能をオプションで使用できます。
例:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
ユーザーマクロおよび{HOST.*} マクロがサポートされています。
有効 このボックスにチェックを入れるとシナリオが有効になります。チェックを外すと無効になります。

既存のシナリオを編集する場合、フォームに2つの追加ボタンが表示されます。

既存のシナリオのプロパティを元に別のシナリオを作成します。
シナリオの履歴およびトレンドデータを削除します。これにより、データ削除後すぐにサーバーがシナリオを実行します。

HTTPプロキシフィールドを空のままにした場合、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で使用しないでください。"******"に解決されます。

ステップの設定

ステップパラメータ:

パラメータ 説明
名前 一意のステップ名。
ユーザーマクロがサポートされています。注意:ユーザーマクロを使用した場合、これらのマクロはWeb監視アイテム名では解決されません。
URL 接続してデータを取得するURL。例:
https://www.example.com
http://www.example.com/download
ドメイン名はUnicode文字で指定できます。Webシナリオステップの実行時に自動的にpunycodeでASCIIに変換されます。
解析ボタンを使用すると、オプションのクエリフィールド(例:?name=Admin&password=mypassword)をURLから分離し、属性と値をクエリフィールドに移動して自動的にURLエンコードできます。
URLには{macro}構文で変数を使用できます。変数を手動でURLエンコードするには、{{macro}.urlencode()}構文を使用します。
ユーザーマクロおよび{HOST.*} マクロがサポートされています。
2048文字まで。
クエリフィールド URLのHTTP GET変数。
属性と値のペアで指定します。
値は自動的にURLエンコードされます。シナリオ変数、ユーザーマクロ、{HOST.*}マクロの値は解決され、その後自動的にURLエンコードされます。{{macro}.urlencode()}構文を使用すると、二重にURLエンコードされます。
ユーザーマクロおよび{HOST.*} マクロがサポートされています。
Post HTTP POST変数。
フォームデータモードでは、属性と値のペアで指定します。
値は自動的にURLエンコードされます。シナリオ変数、ユーザーマクロ、{HOST.*}マクロの値は解決され、その後自動的にURLエンコードされます。
生データモードでは、属性/値が1行で表示され、&記号で連結されます。
生の値は、{{macro}.urlencode()}または{{macro}.urldecode()}構文を使用して手動でURLエンコード/デコードできます。
例:id=2345&userid={user}
{user}がWebシナリオの変数として定義されている場合、ステップ実行時にその値に置き換えられます。変数をURLエンコードしたい場合は、{user}を{{user}.urlencode()}に置き換えてください。
ユーザーマクロおよび{HOST.*} マクロがサポートされています。
変数 GETおよびPOST関数で使用できるステップレベルの変数。
属性と値のペアで指定します。
ステップレベルの変数は、シナリオレベルの変数や前のステップの変数を上書きします。ただし、ステップレベルの変数の値は次のステップにのみ影響し(現在のステップには影響しません)。
以下の形式です:
{macro}=値
{macro}=regex:<正規表現>
詳細はシナリオレベルの変数説明を参照してください。
変数は、クエリフィールドやPOST変数のフォームデータで使用する場合は自動的にURLエンコードされますが、生のPOSTやURLで直接使用する場合は手動でURLエンコードする必要があります。
ヘッダー リクエスト実行時に送信されるカスタムHTTPヘッダー。
属性と値のペアで指定します。
ステップレベルで定義されたヘッダーは、その特定のステップで使用されます。
ステップレベルでヘッダーを定義すると、シナリオレベルでドロップダウンリストから'User-Agent'を選択して割り当てたデフォルトヘッダーを除き、以前に定義されたすべてのヘッダーが自動的に破棄されることに注意してください。
ただし、'User-Agent'のデフォルトヘッダーもステップレベルで指定することで上書きできます。
例えば、ヘッダーに名前を割り当てて値を設定しない場合、シナリオレベルのデフォルトヘッダーが解除されます。
ユーザーマクロおよび{HOST.*}マクロがサポートされています。
これはCURLOPT_HTTPHEADER cURLオプションを設定します。
リダイレクトを追跡 HTTPリダイレクトを追跡する場合はチェックボックスをオンにします。
これはCURLOPT_FOLLOWLOCATION cURLオプションを設定します。
取得モード 取得モードを選択します:
本文 - HTTPレスポンスから本文のみ取得
ヘッダー - HTTPレスポンスからヘッダーのみ取得
本文とヘッダー - HTTPレスポンスから本文とヘッダーを取得
タイムアウト Zabbixは、URLの処理に設定された時間(1秒から最大1時間)以上は費やしません。実際には、このパラメータはURLへの接続の最大時間とHTTPリクエストの実行の最大時間を定義します。したがって、Zabbixはステップに2 x タイムアウト秒以上は費やしません。
時間のサフィックス(例:30s、1m、1h)がサポートされています。ユーザーマクロがサポートされています。
必須文字列 必須の正規表現パターン。
取得したコンテンツ(HTML)が必須パターンに一致しない場合、ステップは失敗します。空の場合、必須文字列のチェックは行われません。
例:
Homepage of Zabbix
Welcome.*admin
注意: このフィールドでは、Zabbixフロントエンドで作成した正規表現の参照はサポートされていません。
ユーザーマクロおよび{HOST.*} マクロがサポートされています。
必須ステータスコード 期待されるHTTPステータスコードのリスト。Zabbixがリストにないコードを取得した場合、ステップは失敗します。
空の場合、ステータスコードのチェックは行われません。
例:200,201,210-299
ユーザーマクロがサポートされています。

Webシナリオステップの変更は、シナリオ全体を保存した場合にのみ保存されます。

Web監視ステップの設定方法については、実際の例も参照してください。

タグの構成

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

タグ付けにより、WebシナリオとWeb監視アイテムをフィルタリングできます。

認証の設定

認証タブでは、シナリオの認証オプションを設定できます。タブ名の横に緑色のドットが表示されている場合は、何らかのHTTP認証が有効になっていることを示します。

認証パラメータ:

パラメータ 説明
HTTP認証 認証オプションを選択します:
なし - 認証を使用しません;
Basic - Basic認証を使用します;
NTLM - NTLM (Windows NT LAN Manager) 認証を使用します;
Kerberos - Kerberos認証を使用します(参考: ZabbixでのKerberosの設定);
Digest - Digest認証を使用します。
ユーザー ユーザー名を入力します(最大255文字)。
HTTP認証がBasic、NTLM、Kerberos、Digestのいずれかに設定されている場合に利用できます。ユーザーマクロがサポートされています。
パスワード ユーザーパスワードを入力します(最大255文字)。
HTTP認証がBasic、NTLM、Kerberos、Digestのいずれかに設定されている場合に利用できます。ユーザーマクロがサポートされています。
SSLピアの検証 WebサーバーのSSL証明書を検証する場合はチェックボックスをオンにします。
サーバー証明書はシステム全体の証明書認証局(CA)の場所から自動的に取得されます。CAファイルの場所は、Zabbixサーバーまたはプロキシの設定パラメータSSLCALocationで上書きできます。
この設定はCURLOPT_SSL_VERIFYPEERのcURLオプションを設定します。
SSLホストの検証 Webサーバー証明書のCommon NameフィールドまたはSubject Alternate Nameフィールドが一致するかどうかを検証する場合はチェックボックスをオンにします。
この設定はCURLOPT_SSL_VERIFYHOSTのcURLオプションを設定します。
SSL証明書ファイル クライアント認証に使用するSSL証明書ファイル名。証明書ファイルはPEM1形式である必要があります。証明書ファイルに秘密鍵も含まれている場合は、SSLキー ファイルフィールドを空にしてください。秘密鍵が暗号化されている場合は、SSLキーパスワードフィールドにパスワードを指定してください。このファイルを含むディレクトリは、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証明書ファイル」フィールドにそのファイルを指定し、「SSLキーファイル」フィールドは空にしてください。証明書と鍵はPEM形式である必要があります。証明書と鍵の結合は簡単です:

cat client.crt client.key > client.pem

表示

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

Webシナリオの概要は、Web監視ウィジェットによってダッシュボードにも表示できます。

Webシナリオ実行の最近の結果は、監視 → 最新データセクションで確認できます。

拡張監視

受信したHTMLページの内容を記録する必要がある場合があります。 これは、Webシナリオのステップが失敗した場合に特に便利です。 デバッグレベル5(トレース)はその目的に使用されます。 このレベルは、サーバーおよびプロキシの設定ファイル、またはランタイム制御オプション(-R log_level_increase="http poller,N"、Nはプロセス番号)を使用して設定できます。 次の例は、デバッグレベル4がすでに設定されている場合に拡張監視を開始する方法を示しています。

# すべてのhttp pollerのログレベルを上げる:
       zabbix_server -R log_level_increase="http poller"
       
       # 2番目のhttp pollerのログレベルを上げる:
       zabbix_server -R log_level_increase="http poller,2"

拡張Web監視が不要な場合は、-R log_level_decreaseオプションを使用して停止できます。