ブラウザアイテムでWebサイトを監視する

はじめに

このページでは、browser item を使用して Web サイトの基本的な監視を開始するために必要な手順を説明します。

このガイドの対象者

このガイドは、Zabbixの新規ユーザー向けに作成されており、ブラウザーアイテムを使用してWebサイトの基本的な監視を有効にするために必要な最小限の手順をまとめています。 より詳細なカスタマイズオプションや、さらに高度な設定が必要な場合は、ZabbixマニュアルのBrowser itemsページまたはConfigurationセクションを参照してください。

前提条件

このガイドを進める前に、OS向けの手順に従って Zabbix サーバーと Zabbix Webインターフェースをダウンロードしてインストール する必要があります。

環境によっては、このガイドの一部の手順が多少異なる場合があります。 このガイドは Ubuntu で動作する環境を前提としています。

WebDriverの設定

ブラウザーアイテムには、ブラウザーを制御して操作し、ボタンのクリックやテキスト入力などのテストコマンドを実行するWebテスト用エンドポイントとして、自動化フレームワーク(Selenium Server または ChromeDriver などのプレーンな WebDriver)が必要です。
例として、このガイドでは Docker コンテナ内の Chrome を使った Selenium Server を使用します。

Docker はすでに設定済みであることを前提としています。このガイドでは Docker の設定については扱いません。
インストール手順については、Ubuntu に Docker Engine をインストールする を参照してください。

1. 次のオプションを指定して、Docker コンテナ内で Chrome 付きの Selenium Server を起動します。

  • docker run --name browser - "browser" という名前の新しい Docker コンテナを起動します。
  • -p 4444:4444 - ホストマシンのポート 4444 をコンテナのポート 4444 にマッピングします(これは Selenium Server がコマンドを受け付けるために使用するポートです)。
  • -p 7900:7900 - ホストマシンのポート 7900 をコンテナのポート 7900 にマッピングします(これは Virtual Network Computing (VNC) サーバーが使用するポートで、VNC クライアントが必要です。これにより、ブラウザーの GUI をリモートで表示できます)。
  • --shm-size="2g" - コンテナに 2GB の共有メモリを割り当てます(Chrome を正常に動作させるために重要です。クラッシュを避けるには、かなりの共有メモリが必要になる場合があります)。
  • -d - コンテナをデタッチモードで実行します。つまり、バックグラウンドで動作します。
  • selenium/standalone-chrome:latest - 使用する Docker イメージを指定します。この場合は、Selenium Server with Chrome の最新バージョンです。
docker run --name browser \
-p 4444:4444 \
-p 7900:7900 \
--shm-size="2g" \
-d selenium/standalone-chrome:latest

2. browser Docker コンテナが実行中で、アクセス可能であることを確認します。

  • コンテナの IP アドレスを取得します(この例では 192.0.2.1 です)。
ip addr

# 1: lo: <LOOPBACK,UP,LOWER_UP>
#    ...
# 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> ...
#    inet 192.0.2.1/16 brd 192.0.255.255 scope global docker0
#    ...
  • Ncat を使ってコンテナへの接続をテストします。
nc -zv 192.0.2.1 4444

# Connection to 192.0.2.1 4444 port [tcp/*] succeeded!
  • curl を使って Selenium Server から Web ページの内容を取得します。
curl -L 192.0.2.1:4444

# <!DOCTYPE html>
# <html lang="en">
# 
# <head>
#   <meta charset="utf-8"/>
#   <link href="favicon.svg" rel="icon" type="image/svg">
#   <meta content="width=device-width, initial-scale=1" name="viewport"/>
#   <link href="logo192.png" rel="apple-touch-icon"/>
#   <link href="manifest.json" rel="manifest"/>
#   <title>Selenium Grid</title>
# </head>
# 
# <body>
# ...

トラブルシューティングについては、Docker documentation を参照してください。

Zabbixサーバーの設定

ブラウザアイテムは、browser poller の Zabbix プロセスによって実行および処理されます。これらのプロセスは、StartBrowserPollers サーバー設定パラメータを調整して有効にする必要があります。
さらに、WebDriverURL パラメータには、事前に設定した Web テストのエンドポイントを指定する必要があります。

デフォルトでは、StartBrowserPollers パラメータは 1 に設定されているため、Web テストのエンドポイントを指定するだけで済みます。

1. Zabbixサーバーの設定ファイルを開きます。

vi /etc/zabbix/zabbix_server.conf

2. Zabbixサーバーの設定ファイルで WebDriverURL パラメータを見つけて設定します。

### Option: WebDriverURL
#   WebDriver interface HTTP[S] URL. For example http://localhost:4444 used with Selenium WebDriver standalone server.
#
# Mandatory: no
# Default:
# WebDriverURL=

WebDriverURL=192.0.2.1:4444

3. Zabbixサーバーを再起動します。

systemctl restart zabbix-server

Zabbix Webインターフェースの設定

1. Zabbix Webインターフェースにログインします。

2. Zabbix Webインターフェースでホストを作成します。

  • Host name フィールドに、ホスト名を入力します(例: "git.zabbix.com")。
  • Templates フィールドで、"Website by Browser" テンプレートを入力または選択します。このテンプレートの詳細については、Website by Browser を参照してください。
  • Host groups フィールドで、ホストグループを入力または選択します(例: 新しいホストグループ "Websites")。

  • Macros タブで、Inherited and host macros に切り替え、次のマクロを探して、更新するにはマクロ値の横にある Change をクリックします。
    • {$WEBSITE.DOMAIN} - ドメイン名(例: git.zabbix.com/projects/ZBX/repos/zabbix/browse)
    • {$WEBSITE.GET.DATA.INTERVAL} - アイテムデータの更新間隔(例: 15m)

3. Add ボタンをクリックしてホストを作成します。このホストは、監視対象のWebサイトを表します。

収集されたメトリクスを表示する

おめでとうございます。ここまでで、Zabbix はすでに指定した Webサイトを監視しています。

収集されたメトリクスを表示するには、Monitoring → Hosts メニューセクションに移動し、対象のホストの横にある Dashboards をクリックします。

この操作により、ホストのダッシュボード(テンプレートレベルで設定済み)に移動し、Webサイトから収集された最も重要なメトリクスを確認できます。

障害アラートの設定

Zabbix は、さまざまな方法でインフラストラクチャの障害を通知できます。 このガイドでは、メールアラートを送信するための基本的な設定手順を説明します。

1. ユーザー設定 → プロファイル に移動し、Media タブに切り替えて、メールアドレスを追加します

2. 障害通知の受信 のガイドに従います。

次回 Zabbix が障害を検出したときに、メールでアラートを受信できるはずです。

設定をテストする

設定をテストするには、Zabbix Webインターフェースでホスト設定を更新して、実際の障害をシミュレートできます。

1. ZabbixでWebサイトのホスト設定を開きます。

2. Macros タブに切り替え、Inherited and host macros を選択します。

3. たとえば、以前に設定した} マクロ値の横にある Change をクリックし、誤ったドメイン名を設定します(例: /git.zabbix.com/projects/ZBX/repos/zabbix/browse)。

4. Update をクリックしてホスト設定を更新します。

5. しばらくすると、Zabbix は指定したWebサイトに接続できないため、"Failed to get JSON of the requested website" という障害を検出します。 この障害は Monitoring → Problems に表示されます。

アラートが 設定されている 場合は、障害通知も受信します。

6. 障害を解決してWebサイトの監視を続けるには、マクロ値を元の値に戻します。

関連項目

  • アイテムの作成 - 追加のメトリクスの監視を開始する方法。
  • 障害のエスカレーション - 複数ステップのアラートシナリオを作成する方法 (例: まずシステム管理者にメッセージを送信し、次に、障害が45分以内に解決されない場合は、データセンター管理者にメッセージを送信します)。
  • Browserアイテム - Browserアイテムを設定する方法。
  • テンプレート Website by Browser - Website by Browser テンプレートに関する追加情報。