ブラウザ監視
ブラウザ監視は inputs.dialtesting 収集器の BROWSER タスク種別で、Lightpanda ブラウザエンジンを使ってページアクセス、操作、アサーションをシミュレートし、ページ性能、ステップ結果、失敗理由を送信します。Lightpanda エンジンは現在スクリーンショットに対応していません。
基本的な監視ノードの設定についてはネットワーク監視を参照してください。ここではブラウザ監視に関する追加設定、デプロイ、切り分け方法のみを説明します。
要件¶
ブラウザ監視は Linux の監視ノードでデフォルト有効です。Linux 以外の環境では、DataKit のサービスモードは BROWSER タスクを実行しません。ローカル debug 検証モードを除きます。
ノードのランタイムから Lightpanda ブラウザエンジンへアクセスできる必要があります。DataKit は BROWSER タスクの実行に Lightpanda を強制的に使用します。タスク内の advance_options.engine はノード設定で上書きされます。
DataKit は次の順で Lightpanda を खोजします。
[inputs.dialtesting.browser].engine_pathLIGHTPANDA_EXECUTABLE_PATHPATH内のlightpanda~/.cache/lightpanda-node/lightpanda
ブラウザ監視を明示的に無効化したい場合は、dialtesting.conf で次のように設定します。
max_concurrency で同時実行するブラウザタスク数を制限できます。0 は制限なしを意味します。リソース制約のあるノードでは 1 を推奨します。
Kubernetes デプロイ¶
Kubernetes では DataKit イメージを直接使用することを推奨します。
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 ホストでは公式インストールスクリプトを使用できます。
バージョンを指定することもできます。例
固定バージョンのバイナリを手動でインストールする場合、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
インストール後にバージョンを確認します。
DataKit の設定¶
監視収集器の設定をコピーします。
/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>"
環境変数で指定することもできます。
DataKit が systemd サービスとして実行されている場合、現在のシェルで export しても通常は DataKit サービスプロセスへ引き継がれません。ホストデプロイでは dialtesting.conf で engine_path を設定する方法を推奨します。
設定を変更したら DataKit を再起動します。
ローカル検証¶
まだページから 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.conf の server を一時的にローカルファイルのアドレスへ変更します。
[[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 で実行します。
通常は、メトリクスで BROWSER タスクが確認できるはずです。
検証が完了したら、server、region_id、ak、sk などの設定を実際の監視ノードの設定に戻してください。
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 では goto、click、input、wait_for_selector、assert_title、assert_url、assert_text などのアクションとアサーションを使えます。完全なタスク JSON では、browser_config は BROWSER タスクオブジェクト内にあります。
{
"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 のメトリクスでタスクと送信状態を確認します。
ブラウザエンジンの環境は次のコマンドで確認できます。
よくある問題
- タスクを取得できない:
server、region_id、ak、skの設定が正しいこと、またdatakit_dialtesting_task_number{protocol="BROWSER"}が 0 より大きいことを確認します。 - ページ側で BROWSER タスクを配信済みなのにノードで実行されない:
[inputs.dialtesting.browser].enabled = falseを明示的に設定していないことを確認し、DataKit ログにbrowser.enabled is false or unsupportedが出ていないか確認します。 - タスクが送信されない: タスクの
post_urlに到達できること、また送信失敗、キャッシュ、破棄に関するメトリクスが継続的に増加していないことを確認します。 - ブラウザが起動しない:
engine_path、LIGHTPANDA_EXECUTABLE_PATH、またはPATH内のlightpandaに DataKit プロセスからアクセスできることを確認します。 - ブラウザ依存関係が不足している: Kubernetes では
datakit:<version>イメージの直接利用を推奨します。ホストデプロイでは Lightpanda が正しくインストールされていることを確認します。 - スクリーンショットがアップロードされない: Lightpanda エンジンは現在スクリーンショットを生成しません。