Web監視
概要
Zabbix を使用すると、Webサイトの可用性に関するいくつかの側面を確認できます。
Web監視を行うには、Zabbix サーバーを最初に cURL (libcurl) サポート付きで設定する必要があります。
Web監視を有効にするには、Webシナリオを定義する必要があります。Webシナリオは、1つ以上の HTTP リクエスト、つまり「ステップ」から構成されます。ステップは、あらかじめ定義された順序で Zabbix サーバーによって定期的に実行されます。ホストがプロキシによって監視されている場合、ステップはプロキシによって実行されます。
Webシナリオは、アイテム、トリガーなどと同様にホスト/テンプレートに関連付けられます。つまり、Webシナリオはテンプレートレベルで作成し、1回の操作で複数のホストに適用することもできます。
任意の Webシナリオでは、次の情報が収集されます。
- シナリオ全体の全ステップにおける1秒あたりの平均ダウンロード速度
- 失敗したステップ番号
- 最後のエラーメッセージ
任意の Webシナリオの各ステップでは、次の情報が収集されます。
- 1秒あたりのダウンロード速度
- 応答時間
- 応答コード
詳細については、Web監視アイテムを参照してください。
Webシナリオの実行によって収集されたデータはデータベースに保存されます。このデータは、グラフ、トリガー、および通知に自動的に使用されます。
Zabbix は、取得した HTML ページにあらかじめ定義された文字列が含まれているかどうかも確認できます。また、ログインをシミュレートし、ページ上でマウスクリックを模擬した一連の操作を実行することもできます。
Zabbix の Web監視は HTTP と HTTPS の両方をサポートしています。Webシナリオの実行時には、必要に応じてリダイレクトを追跡します(下記のオプション Follow redirects を参照)。リダイレクトの最大数は 10 に固定されています(cURL オプション CURLOPT_MAXREDIRS を使用)。すべての cookie は、1つのシナリオの実行中に保持されます。
Webシナリオの設定
Webシナリオを設定するには、次の手順を実行します。
- データ収集 > ホスト(またはテンプレート)に移動します。
- ホスト/テンプレートの行にあるWebをクリックします。
- 右側のWebシナリオの作成をクリックします(既存のシナリオを編集する場合は、シナリオ名をクリックします)。
- フォームにシナリオのパラメータを入力します。
シナリオタブでは、Webシナリオの一般的なパラメータを設定できます。

必須入力フィールドには赤いアスタリスクが付いています。
シナリオのパラメータ:
| パラメータ | 説明 |
|---|---|
| 名前 | 一意のシナリオ名。 ユーザーマクロがサポートされています。注:ユーザーマクロを使用した場合、これらのマクロはWeb監視アイテム名内で未解決のままになります。 |
| 更新間隔 | シナリオを実行する頻度。 時間のサフィックスがサポートされています(例: 30s、1m、2h、1d)。 ユーザーマクロがサポートされています。注:ユーザーマクロを使用し、その値を変更した場合(例: 5m → 30s)、次回のチェックは以前の値に従って実行されます(この例では、より後の時刻に実行されます)。 新しいWebシナリオは、作成後60秒以内にチェックされます。 |
| 試行回数 | 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、POST変数)。 次の形式で指定します。 {macro1}=value1 {macro2}=value2 {macro3}=regex:<regular expression> {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で使用しないでください。"\*\*\*\*\*\*"に解決されます。
ステップの設定

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

タグ付けを使用すると、WebシナリオとWeb監視の アイテムをフィルタリングできます。
認証の設定
Authentication タブでは、シナリオの認証オプションを設定できます。タブ名の横に緑の点が表示されている場合は、何らかの HTTP 認証が有効になっています。

認証パラメーター:
| Parameter | Description |
|---|---|
| HTTP authentication | 認証オプションを選択します: None - 認証を使用しません; Basic - Basic 認証を使用します; NTLM - NTLM (Windows NT LAN Manager) 認証を使用します; Kerberos - Kerberos 認証を使用します (参照: Zabbix で Kerberos を設定する); Digest - Digest 認証を使用します。 |
| User | ユーザー名を入力します (最大 255 文字)。 このフィールドは、HTTP authentication が Basic、NTLM、Kerberos、または Digest に設定されている場合に使用できます。ユーザーマクロがサポートされています。 |
| Password | ユーザーパスワードを入力します (最大 255 文字)。 このフィールドは、HTTP authentication が Basic、NTLM、Kerberos、または Digest に設定されている場合に使用できます。ユーザーマクロがサポートされています。 |
| SSL verify peer | チェックボックスをオンにすると、Webサーバーの SSL 証明書を検証します。 サーバー証明書は、システム全体の証明機関 (CA) の場所から自動的に取得されます。Zabbix サーバーまたはプロキシの設定パラメーター SSLCALocation を使用して、CA ファイルの場所を上書きできます。 これは CURLOPT_SSL_VERIFYPEER cURL オプションを設定します。 |
| SSL verify host | チェックボックスをオンにすると、Webサーバー証明書の Common Name フィールドまたは Subject Alternate Name フィールドが一致することを検証します。 これは CURLOPT_SSL_VERIFYHOST cURL オプションを設定します。 |
| SSL certificate file | クライアント認証に使用する SSL 証明書ファイル名です。証明書ファイルは PEM1 形式である必要があります。証明書ファイルに秘密鍵も含まれている場合は、SSL key file フィールドを空にしてください。鍵が暗号化されている場合は、SSL key password フィールドにパスワードを指定します。このファイルを含むディレクトリは、Zabbix サーバーまたはプロキシの設定パラメーター SSLCertLocation で指定します。 このフィールドでは HOST.* マクロとユーザーマクロを使用できます。これは CURLOPT_SSLCERT cURL オプションを設定します。 |
| SSL key file | クライアント認証に使用する SSL 秘密鍵ファイル名です。秘密鍵ファイルは PEM1 形式である必要があります。このファイルを含むディレクトリは、Zabbix サーバーまたはプロキシの設定パラメーター SSLKeyLocation で指定します。 このフィールドでは HOST.* マクロとユーザーマクロを使用できます。これは CURLOPT_SSLKEY cURL オプションを設定します。 |
| SSL key password | 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シナリオを表示するには、次の手順を実行します。
- 監視 > ホスト に移動します。
- 一覧からホストを見つけ、最後の列にある Web ハイパーリンクをクリックします。
- シナリオ名をクリックすると、詳細情報が表示されます。

Webシナリオの概要は、Web監視ウィジェットを使用して ダッシュボード に表示することもできます。
Webシナリオの実行結果は、監視 > 最新データ セクションで確認できます。
拡張監視
受信した HTML ページの内容をログに記録する必要がある場合があります。
これは、Web シナリオのステップが失敗した場合に特に有用です。
デバッグレベル 5(trace)は、その目的のために使用されます。
このレベルは、サーバー および プロキシ の設定ファイルで、または ランタイム制御 オプション(-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 オプションを使用して停止できます。

