コンテンツにスキップ

ブラウザ監視

Version-2.1.0


ブラウザ監視は inputs.dialtesting 収集器の BROWSER タスク種別で、Lightpanda ブラウザエンジンを使ってページアクセス、操作、アサーションをシミュレートし、ページ性能、ステップ結果、失敗理由を送信します。Lightpanda エンジンは現在スクリーンショットに対応していません。

基本的な監視ノードの設定についてはネットワーク監視を参照してください。ここではブラウザ監視に関する追加設定、デプロイ、切り分け方法のみを説明します。

要件

ブラウザ監視は Linux の監視ノードでデフォルト有効です。Linux 以外の環境では、DataKit のサービスモードは BROWSER タスクを実行しません。ローカル debug 検証モードを除きます。

ノードのランタイムから Lightpanda ブラウザエンジンへアクセスできる必要があります。DataKit は BROWSER タスクの実行に Lightpanda を強制的に使用します。タスク内の advance_options.engine はノード設定で上書きされます。

DataKit は次の順で Lightpanda を खोजします。

  1. [inputs.dialtesting.browser].engine_path
  2. LIGHTPANDA_EXECUTABLE_PATH
  3. PATH 内の lightpanda
  4. ~/.cache/lightpanda-node/lightpanda

ブラウザ監視を明示的に無効化したい場合は、dialtesting.conf で次のように設定します。

[[inputs.dialtesting]]
  [inputs.dialtesting.browser]
    enabled = false

max_concurrency で同時実行するブラウザタスク数を制限できます。0 は制限なしを意味します。リソース制約のあるノードでは 1 を推奨します。

Kubernetes デプロイ

Kubernetes では DataKit イメージを直接使用することを推奨します。

pubrepo.guance.com/datakit/datakit:<version>

DataKit イメージには Lightpanda が内蔵されており、BROWSER タスクを直接実行できます。カスタムの Lightpanda バイナリを使用したい場合は、ファイルをマウントして実行ファイルを提供し、engine_path を設定します。

[[inputs.dialtesting]]
  [inputs.dialtesting.browser]
    enabled = true
    engine = "lightpanda"
    engine_path = "/opt/datakit-browser/bin/lightpanda"
    max_concurrency = 10

ホストデプロイ

ホストへデプロイする場合は、先に Lightpanda をインストールする必要があります。以下の例は Linux ホストを想定しています。

Lightpanda のインストール

Lightpanda のインストール方法は公式インストールドキュメントを参照してください。Linux ホストでは公式インストールスクリプトを使用できます。

curl -fsSL https://pkg.lightpanda.io/install.sh | bash

バージョンを指定することもできます。例

curl -fsSL https://pkg.lightpanda.io/install.sh | bash -s "0.3.1"

固定バージョンのバイナリを手動でインストールする場合、x86_64 Linux の例は次のとおりです。

curl -L -o lightpanda \
  https://github.com/lightpanda-io/browser/releases/download/0.3.1/lightpanda-x86_64-linux
chmod a+x ./lightpanda
sudo install -m 0755 lightpanda /usr/local/bin/lightpanda

arm64/aarch64 Linux では次を使用できます。

curl -L -o lightpanda \
  https://github.com/lightpanda-io/browser/releases/download/0.3.1/lightpanda-aarch64-linux
chmod a+x ./lightpanda
sudo install -m 0755 lightpanda /usr/local/bin/lightpanda

インストール後にバージョンを確認します。

lightpanda version
lightpanda serve --help

DataKit の設定

監視収集器の設定をコピーします。

cd /usr/local/datakit/conf.d/samples
sudo cp dialtesting.conf.sample ../dialtesting.conf

/usr/local/datakit/conf.d/dialtesting.conf を編集し、ブラウザエンジンとパスを明示的に指定することを推奨します。

[[inputs.dialtesting]]
  server = "https://dflux-dial.guance.com"
  region_id = "<your-private-node-id>"
  ak = "<your-ak>"
  sk = "<your-sk>"
  pull_interval = "1m"
  time_out = "30s"

  [inputs.dialtesting.browser]
    engine = "lightpanda"
    engine_path = "/usr/local/bin/lightpanda"
    max_concurrency = 10

  [inputs.dialtesting.tags]
    region = "<your-region>"

環境変数で指定することもできます。

export LIGHTPANDA_EXECUTABLE_PATH=/usr/local/bin/lightpanda

DataKit が systemd サービスとして実行されている場合、現在のシェルで export しても通常は DataKit サービスプロセスへ引き継がれません。ホストデプロイでは dialtesting.confengine_path を設定する方法を推奨します。

設定を変更したら DataKit を再起動します。

sudo datakit service -R

ローカル検証

まだページから BROWSER タスクを配信していない場合は、ローカルの JSON タスクでブラウザ実行の経路を検証できます。browser_config は YAML 文字列です。

ブラウザスクリプトの例

name: browser-homepage
target: https://example.com
timeout_ms: 60000
viewport:
  width: 1280
  height: 720
steps:
  - name: open page
    action: goto
    url: https://example.com
  - name: assert title
    action: assert_title
    contains: Example

/tmp/dialtesting-browser-task.json を作成します。JSON に書き込む際は、上の YAML を文字列として browser_config に入れ、改行は \n で表現します。

{
  "BROWSER": [
    {
      "name": "browser-homepage",
      "url": "https://example.com",
      "status": "OK",
      "frequency": "1m",
      "post_url": "https://openway.guance.com?token=<your-token>",
      "browser_config": "name: browser-homepage\ntarget: https://example.com\ntimeout_ms: 60000\nviewport:\n  width: 1280\n  height: 720\nsteps:\n  - name: open page\n    action: goto\n    url: https://example.com\n  - name: assert title\n    action: assert_title\n    contains: Example\n"
    }
  ]
}

dialtesting.confserver を一時的にローカルファイルのアドレスへ変更します。

[[inputs.dialtesting]]
  server = "file:///tmp/dialtesting-browser-task.json"
  pull_interval = "10s"

  [inputs.dialtesting.browser]
    engine = "lightpanda"
    engine_path = "/usr/local/bin/lightpanda"
    max_concurrency = 10

debug で実行します。

datakit debug --input-conf /usr/local/datakit/conf.d/dialtesting.conf

通常は、メトリクスで BROWSER タスクが確認できるはずです。

curl -s http://127.0.0.1:9529/metrics | grep datakit_dialtesting

検証が完了したら、serverregion_idaksk などの設定を実際の監視ノードの設定に戻してください。

BROWSER タスク例

BROWSER タスクは browser_config でブラウザスクリプトを定義します。browser_config は YAML 文字列で、よく使うフィールドは次のとおりです。

ブラウザ監視の設定 YAML はページ録画から生成できます。詳細はブラウザ監視録画の説明を参照してください。

フィールド 必須 説明
name string N スクリプト名
target string N デフォルトのターゲット URL。goto ステップで URL を指定しない場合に使用します
timeout_ms int N スクリプト全体のタイムアウト時間。単位はミリ秒
viewport.width int N ブラウザのビューポート幅
viewport.height int N ブラウザのビューポート高さ
tags object N カスタムタグ
steps array Y ブラウザ実行ステップ

steps では gotoclickinputwait_for_selectorassert_titleassert_urlassert_text などのアクションとアサーションを使えます。完全なタスク JSON では、browser_configBROWSER タスクオブジェクト内にあります。

{
  "BROWSER": [
    {
      "name": "browser-homepage",
      "url": "https://example.com",
      "status": "OK",
      "frequency": "1m",
      "post_url": "https://openway.guance.com?token=<your-token>",
      "browser_config": "<browser_config YAML string>"
    }
  ]
}

スクリーンショット対応

Lightpanda エンジンは現時点でスクリーンショットに対応していません。タスクで advance_options.screenshot_on_failure = true を有効にしても、steps[].screenshot は生成されません。

トラブルシューティング

DataKit のメトリクスでタスクと送信状態を確認します。

curl -s http://127.0.0.1:9529/metrics | grep datakit_dialtesting

ブラウザエンジンの環境は次のコマンドで確認できます。

echo $LIGHTPANDA_EXECUTABLE_PATH
$LIGHTPANDA_EXECUTABLE_PATH version
command -v lightpanda

よくある問題

  • タスクを取得できない: serverregion_idaksk の設定が正しいこと、また datakit_dialtesting_task_number{protocol="BROWSER"} が 0 より大きいことを確認します。
  • ページ側で BROWSER タスクを配信済みなのにノードで実行されない: [inputs.dialtesting.browser].enabled = false を明示的に設定していないことを確認し、DataKit ログに browser.enabled is false or unsupported が出ていないか確認します。
  • タスクが送信されない: タスクの post_url に到達できること、また送信失敗、キャッシュ、破棄に関するメトリクスが継続的に増加していないことを確認します。
  • ブラウザが起動しない: engine_pathLIGHTPANDA_EXECUTABLE_PATH、または PATH 内の lightpanda に DataKit プロセスからアクセスできることを確認します。
  • ブラウザ依存関係が不足している: Kubernetes では datakit:<version> イメージの直接利用を推奨します。ホストデプロイでは Lightpanda が正しくインストールされていることを確認します。
  • スクリーンショットがアップロードされない: Lightpanda エンジンは現在スクリーンショットを生成しません。

フィードバック

このページは役に立ちましたか?