WebTracking は、ブラウザでのページビュー、購入、セッション時間などのユーザー行動をキャプチャし、最小限のコード変更で分析のために Simple Log Service (SLS) へストリーミングします。
WebTracking は 2 つのインジェスト方法をサポートしています。認証済みインジェストを推奨します。
-
認証済みインジェスト (推奨)
フロントエンドは、バックエンドから一時的な STS トークンを取得します。このトークンは、SLS への署名付きログリクエスト用の有効期限付きの最小権限の認証情報 (AccessKey+SecurityToken) を提供することで、偽造やデータ汚染を防止します。本番環境に最適です。 -
未認証インジェスト
フロントエンドは、認証情報なしでパブリック WebTracking エンドポイントにログを直接書き込みます。設定は簡単ですが、匿名書き込み権限が必要です。プロジェクトまたは Logstore の情報が漏洩すると、データが汚染される可能性があります。テスト環境でのみ使用することを推奨します。
クラウドリソースの準備
ログストレージに必要なクラウドリソースを作成します。
ステップ 1: プロジェクトの作成
プロジェクトは、SLS における主要なリソース管理単位であり、異なるアプリケーションのリソースを分離します。
手順: Log Service コンソールにログインし、[プロジェクトの作成] をクリックします。
パラメータ:
-
[リージョン]: ログソースの場所に基づいてリージョンを選択します。プロジェクトの作成後、この設定は変更できません。
-
[プロジェクト名]: Alibaba Cloud 上でグローバルに一意な名前を入力します。プロジェクトの作成後、この名前は変更できません。
-
その他の設定はデフォルト値のままにして、作成 をクリックします。
ステップ 2: Logstore の作成
Logstore は、収集されたフロントエンドログを保存します。
手順: 対象のプロジェクトに移動します。ナビゲーションペインで、[ログストレージ]
を選択し、[+] をクリックします。
パラメータ:
-
[Logstore 名]: プロジェクト内で一意の名前を入力します。この名前は後で変更できません。例:
web-tracking-logstore。 -
[Logstore タイプ]: 要件に応じて、Standard または Query を選択します。
-
[課金モード]:
-
[使用機能に基づく課金]: すべての Logstore タイプでサポートされています。ログ量が少ないシナリオ、または開発およびテスト環境に適しています。
-
[書き込みデータ量課金]:
Standardタイプの Logstore でのみサポートされています。ログ量が安定しており、長期的な分析が必要なシナリオに適しています。
-
-
[Data Retention Period]: デフォルトは 30 日です。サポートされている範囲は 1~3,650 日です。
-
その他の設定はデフォルト値のままにし、OK をクリックします。
STS 認証モード (推奨)
この方法では、バックエンド認証情報サービスを使用してフロントエンドキーが公開されるのを防ぎます。本番環境での使用を推奨します。
仕組み
フロントエンドは、アプリケーションサーバー上の STS サービスから一時的な認証情報をリクエストします。WebTracking SDK は、この認証情報を使用してログをアップロードします。デフォルトでは、認証情報は 60 分後に失効します。
-
フロントエンドアプリケーションは、ログをアップロードするために、アプリケーションサーバーに一時的なセキュリティ認証情報をリクエストします。
-
リクエストを検証した後、アプリケーションサーバーは事前に設定された RAM ユーザーを使用して Alibaba Cloud STS の AssumeRole API を呼び出し、SLS への書き込み権限を持つ RAM ロールを引き受けます。
-
STS はロールの権限を検証し、AccessKey ID、AccessKey Secret、およびセキュリティトークンを含む一時的なセキュリティ認証情報を発行します。
-
アプリケーションサーバーは、一時的なセキュリティ認証情報をフロントエンドアプリケーションに返します。
-
フロントエンドアプリケーションは、WebTracking SDK で一時的なセキュリティ認証情報を使用して、指定された Logstore にログをアップロードします。
手順1:RAM 権限の設定
バックエンド認証情報サービスとフロントエンド SDK 用に最小権限のアイデンティティを作成します。
1. フロントエンド用の RAM ロールの作成
この仮想アイデンティティには長期的なキーがありません。フロントエンドは、ログを書き込むために一時的にこのロールを引き受けます。
1.1 RAM ロールの作成
手順: RAM コンソールにログインします。左側メニューで、 を選択し、ロールの作成 をクリックします。
設定:
-
[信頼プリンシパルタイプ]:クラウドアカウント を選択します。
-
[信頼プリンシパル名]:現在のクラウドアカウントを選択するか、別のクラウドアカウントを指定します。
-
OK をクリックし、ロール名として
sls-web-trackingを入力します。
1.2 ログ書き込みポリシーの作成
このポリシーは、ロールの権限を、指定された Logstore へのログ書き込みのみに制限します。
手順:左側メニューで、 を選択し、ポリシーの作成 をクリックします。
設定:
-
JSON エディターを使用して、次のスクリプトを貼り付けます。
<ProjectName>と<LogstoreName>を実際のプロジェクト名と Logstore 名に置き換えます。{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "log:PostLogStoreLogs", "log:PutLogs" ], "Resource":[ "acs:log:*:*:project/<ProjectName>/logstore/<LogstoreName>" ] } ] } -
OK をクリックし、ポリシー名 として
post-logs-policyを入力してポリシーを作成します。
1.3 ロールへのログ書き込み権限の付与
前の手順で作成した書き込みポリシーをフロントエンドロールにアタッチします。
手順:左側メニューで、 を選択します。ターゲットロールの名前をクリックして、その詳細ページに移動します。承認管理 タブで、権限を新規付与する をクリックします。
設定:
-
[権限の追加] パネルで、前の手順で作成したカスタムポリシー (
post-logs-policy) を検索して選択します。 -
権限付与 をクリックしてポリシーをアタッチします。
2. バックエンド用の RAM ユーザーの作成
この RAM ユーザーは、バックエンドが STS を呼び出してロールを引き受けるために使用する長期的な AccessKey ペアを提供します。
2.1 RAM ユーザーの作成
手順: RAM コンソールにログインします。左側メニューで、 を選択し、ユーザーの作成 をクリックしてください。
設定:
-
[ログイン名]:文字、数字、ピリオド (.)、ハイフン (-)、アンダースコア (_) のみを含む名前を入力します。名前は最大 64 文字です。例:
sls-token-service。 -
[アクセス方法]:永久 AccessKey を使用したアクセス を選択します。
-
その他の設定はデフォルト値のままにして、OK をクリックしてユーザーを作成し、AccessKey ID と AccessKey Secret を保存します。
AccessKey Secret は作成時に一度しか表示されず、後で取得することはできません。すぐに安全な場所に保存してください。
2.2 ロールを引き受ける権限の付与
手順:ターゲットユーザーの名前をクリックしてユーザー詳細ページに移動し、承認管理 タブに切り替えて 権限を新規付与する をクリックします。
設定:
-
権限ポリシー セクションで、
AliyunSTSAssumeRoleAccessポリシーを選択します。 -
その他の設定はデフォルト値のままにして、権限を付与 をクリックします。
概要: バックエンドサービスは、RAM ユーザーの AccessKey ペアを使用して sls-web-tracking RAM ロールを引き受けます。このプロセスにより、一時的なセキュリティ認証情報が生成され、フロントエンドアプリケーションに返されます。WebTracking SDK は、この一時的な認証情報を使用してログを安全にアップロードします。
手順2: バックエンド STS サービスの構築
フロントエンドからの認証情報リクエストを受信し、STS の一時的なセキュリティ認証情報を返すバックエンド API エンドポイントを構築する必要があります。次の例では Python と Flask を使用します。
Java、Node.js、PHP、および Ruby の例については、付録1:多言語での STS の例をご参照ください。
1. サーバー環境の準備
STS 認証情報 API を既存のアプリケーションサーバーに統合するか、スタンドアロンでデプロイします。要件:
-
フロントエンドアプリケーションが HTTP または HTTPS を介してサーバーにアクセスできること。
-
Python 3 がインストールされていること。バージョン 3.8 以降を推奨します。
次のコマンドを実行して、必要なライブラリをインストールしてください。
# Flask Web フレームワークと関連する Alibaba Cloud SDK ライブラリをインストールします
pip3 install Flask==2.1.2
pip3 install aiohttp==3.8.4
pip3 install alibabacloud-credentials==0.3.2
pip3 install alibabacloud-sts20150401==1.1.3
pip3 install alibabacloud-tea==0.3.2
pip3 install alibabacloud-tea-openapi==0.3.7
pip3 install alibabacloud-tea-util==0.3.8
pip3 install alibabacloud-tea-xml==0.0.22. バックエンド STS サービスコードの記述
STS 一時的なセキュリティ認証情報を生成して返す HTTP エンドポイント /get_sts_token を作成します。
2.1 プロジェクトディレクトリとファイルの作成
# プロジェクトディレクトリを作成して移動します
mkdir my_web_sample
cd my_web_sample
touch main.py
2.2 main.py ファイルの編集
次のコードを main.py ファイルに貼り付けます。 <YOUR_ROLE_ARN> を sls-web-tracking RAM ロールの ARN に、 <YOUR_ROLE_SESSION_NAME> をカスタムセッション名 (例: role_session_test) に置き換えます。
import json
from flask import Flask, render_template
from alibabacloud_tea_openapi.models import Config
from alibabacloud_sts20150401.client import Client as Sts20150401Client
from alibabacloud_sts20150401 import models as sts_20150401_models
from alibabacloud_credentials.client import Client as CredentialClient
app = Flask(__name__)
# ================== ユーザー設定 ==================
# 使用するRAMロールのARN。形式:acs:ram::${accountId}:role/${roleName}
role_arn_for_sls_upload = '<YOUR_ROLE_ARN>'
# ロールセッション名。リクエスト元の一意な識別子の使用を推奨。
role_session_name = '<YOUR_ROLE_SESSION_NAME>' # 例:sls-web-session-001
# STSサービスのリージョン (例:cn-hangzhou)。
region_id = 'cn-hangzhou'
# ==============================================
@app.route("/")
def hello_world():
return render_template('index.html')
@app.route('/get_sts_token', methods=['GET'])
def get_sts_token():
"""
エンドポイント:/get_sts_token
メソッド:GET
機能:STS AssumeRole API を呼び出して一時的なセキュリティトークンを取得します。
戻り値:JSON 形式の Credentials オブジェクト。
"""
# CredentialClient の初期化時にパラメーターを指定しない場合、デフォルトの認証情報チェーンが使用されます。
# プログラムをローカルで実行する場合は、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を使用して AccessKey ペアを指定します。
# ECS、ECI、または Container Service で実行する場合は、ALIBABA_CLOUD_ECS_METADATA 環境変数を使用してインスタンス RAM ロールを指定します。SDK は自動的に STS の一時的な認証情報を取得します。
config = Config(
region_id=region_id,
credential=CredentialClient()
)
sts_client = Sts20150401Client(config=config)
# AssumeRole リクエストを構築
assume_role_request = sts_20150401_models.AssumeRoleRequest(
role_arn=role_arn_for_sls_upload,
role_session_name=role_session_name,
)
# STS を呼び出して一時的な認証情報を取得
response = sts_client.assume_role(assume_role_request)
token = json.dumps(response.body.credentials.to_map())
return token
app.run(host="0.0.0.0", port=80)
3. バックエンドサービスの起動
手順1で作成した RAM ユーザーの AccessKey ペアを使用して、次のコマンドを実行してサービスを起動してください。
ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR_AK_ID>
ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR_AK_SECRET>
python3 main.py4. エンドポイントの検証
テストリクエストを送信します。
curl http://<your_instance_public_ip_address>/get_sts_token
成功レスポンスの例:
{
"AccessKeyId": "STS.L4xxxxxx",
"AccessKeySecret": "Dcyyyyyyyy",
"Expiration": "2024-04-05T10:30:00Z",
"SecurityToken": "CAISzxxxxxxxxxxx..."
}
検証ポイント:
-
レスポンスには、
AccessKeyId、AccessKeySecret、およびSecurityTokenフィールドが含まれます。 -
AccessKeyIdはSTS.で始まり、一時的な認証情報であることを示します。 -
Expirationフィールドは有効期限を示しており、妥当な範囲内の値である必要があります。
手順3: WebTracking SDK の統合
SDK をフロントエンドアプリケーションに統合し、安全なログアップロードのために STS プラグインを設定します。完全な動作例は、付録2:フロントエンドアプリケーションのサンプルプロジェクトをご参照ください。
1. SDK 依存関係のインストール
npm を使用して、WebTracking SDK とその STS プラグインをインストールしてください。
npm install --save @aliyun-sls/web-track-browser
npm install --save @aliyun-sls/web-sts-plugin2. SDK の初期化と STS の設定
JavaScript ファイル (例えば、index.js) を作成して、 SlsTracker インスタンスを初期化し、STS プラグインを設定します。
2.1 コアモジュールのインポート
import SlsTracker from "@aliyun-sls/web-track-browser";
import createStsPlugin from "@aliyun-sls/web-sts-plugin";
2.2 SLS 情報の設定
実際のリソース情報に基づいて、次のパラメーターを指定してください。
const opts = {
host: "${endpoint}", // リージョンに対応するエンドポイント。例:cn-hangzhou.log.aliyuncs.com
project: "${project}", // プロジェクト名。
logstore: "${logstore}", // Logstore 名。
time: 10, // ログを送信する時間間隔 (秒)。デフォルト:10。
count: 10, // バッチで送信するログの数。デフォルト:10。
topic: "topic", // カスタムのログトピック。
source: "source",
tags: {
tags: "tags",
},
};
2.3 STS プラグインの設定
フロントエンドは長期的な AccessKey ペアを保存すべきではありません。STS プラグインを使用して、バックエンドから一時的なトークンを取得し、自動的に更新します。
const stsOpt = {
accessKeyId: "",
accessKeySecret: "",
securityToken: "",
// STS トークンを更新するための非同期関数。
refreshSTSToken: () =>
new Promise((resolve, reject) => {
const xhr = new window.XMLHttpRequest();
xhr.open("GET", "http://<your_instance_public_ip_address>/get_sts_token", true);
xhr.send();
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
let credential = JSON.parse(xhr.response);
// 一時的な認証情報を更新
stsOpt.accessKeyId = credential.AccessKeyId;
stsOpt.accessKeySecret = credential.AccessKeySecret;
stsOpt.securityToken = credential.SecurityToken;
resolve();
} else {
reject("Wrong status code.");
}
}
};
}),
// (オプション) カスタムの更新間隔。デフォルト:5 分 (300,000 ms)。
// refreshSTSTokenInterval: 300000,
// (オプション) トークンの有効期限が切れる前に更新をトリガーする期間 (ミリ秒)。
// stsTokenFreshTime: undefined,
};
2.4 トラッカーの初期化と STS プラグインの有効化
// トラッカーインスタンスを作成
const tracker = new SlsTracker(opts);
// STS プラグインを作成して登録
const stsPlugin = createStsPlugin(stsOpt);
tracker.useStsPlugin(stsPlugin);
3. ログのレポート
Web ページで、標準の DOM イベントバインディングを使用してユーザーのアクションをキャプチャし、tracker.send() メソッドを呼び出してカスタムログを送信してください。
3.1 ユーザーインタラクションの監視
例:ユーザーのログインイベントを追跡します。
document.getElementById("loginButton").addEventListener("click", () => {
const username = document.getElementById("username").value;
tracker.send({
eventType: "login",
username: username,
});
console.log("Login event tracked for:", username);
});
3.2 スクリプトの参照
JavaScript ファイルが正しく読み込まれていることを確認してください。モジュールとしてインポートすることを推奨します。
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title>User Behavior Monitoring Example</title>
</head>
<body>
<input type="text" id="username" placeholder="Enter username" />
<button id="loginButton">Login</button>
<!-- モジュールとしてスクリプトを使用 -->
<script type="module" src="/static/js/index.js"></script>
</body>
</html>
4. 実行とテスト
フロントエンドを起動し、ページにアクセスしてユーザー行動イベントをトリガーし、SDK がログを収集してアップロードすることを確認してください。
-
フロントエンドサービスを起動し、
http://<your_instance_public_ip_address>でフロントエンドページにアクセスしてください。 -
ログインボタンをクリックするなど、ユーザーアクションをシミュレートしてください。
-
ブラウザで開発者ツールを開きます (F12)。
-
[コンソール] タブで、出力に
Login event tracked for: xxxが表示されるかどうかを確認してください。 -
[ネットワーク] タブで、成功した POST リクエストが
cn-xxx.log.aliyuncs.comに送信されたことを確認します。
-
5. ログの取り込みの検証
フロントエンドのログが SLS Logstore に書き込まれていることを確認してください。
-
SLS コンソールにログインします。
-
[プロジェクト] リストで、ターゲットプロジェクトをクリックしてください。
-
[Logstores] ページで、ターゲット Logstore 名の横にある
をクリックして展開してください。 -
をクリックして 検索と分析 ページに移動してください。 -
有効化 をクリックします。右側に表示されるパネルで、自動インデックスの生成 をクリックしてください。
-
システムは自動的にログ構造を識別し、推奨されるフィールド設定を生成します。設定を確認し、OK をクリックしてください。
-
インデックスを有効にした後、インデックスが有効になるまで約 1 分間待ってください。その後、ログをクエリできるようになります。
認証なしの取り込み
この方法では、Logstore で WebTracking を有効にして、パブリック書き込みアクセスを許可します。クライアントは、SDK、HTTP リクエスト、または HTML タグを介して、認証情報なしで直接ログをアップロードします。
WebTracking を有効にすると、ログのアップロードに認証は不要になります。プロジェクトや Logstore の情報が漏洩した場合、攻撃者によってデータが汚染される可能性があります。この機能はテスト環境でのみ使用してください。
WebTracking を有効にすると、Logstore ACL インターフェイスは匿名書き込みリクエストに対して HTTP 200 を返します。これは匿名でのログ収集における想定される動作であり、重大なセキュリティ脆弱性を示すものではありません。ただし、データ汚染という軽微なリスクが伴います。厳格なデータ完全性要件を持つサービスの場合は、STS 認証モードを有効にしてください。匿名書き込みアクセスを無効にするには、Logstore のプロパティで [WebTracking] スイッチをオフにします。WebTracking を無効にした後、フロントエンドアプリケーションに STS プラグインなどの認証方法が統合されていることを確認してください。
手順1:WebTracking の有効化
-
SLS コンソールにログインします。
-
[Projects] セクションで、ターゲットプロジェクトをクリックします。
-
タブで、目的のログストアを探し、 を選択します。
-
Logstore 属性 ページで、変更 をクリックします。
-
WebTracking を有効にし、保存 をクリックします。
手順2:認証なしの取り込みの設定とログのアップロード
SLS は、以下の4つの統合方法をサポートしています:
-
WebTracking SDK の統合:フロントエンドコードに WebTracking SDK をインポートし、
send()メソッドを呼び出して構造化ログを送信します。この方法は、最新の Web アプリケーションやミニプログラムアプリケーションに最適です。 -
HTTP GET リクエスト:URL パラメーターにログデータを追加し、GET リクエストで直接アップロードします。この方法は実装が簡単で、デバッグや少数のログの手軽な収集に最適です。
-
HTML タグ (img):
<img>タグのsrc属性を使用してリクエストを開始し、ログ情報を URL にエンコードします。この方法は JavaScript を必要とせず、標準でクロスドメインリクエストをサポートしており、静的ページやメールトラッキングに最適です。 -
OpenAPI バッチ書き込み:POST リクエストを送信して SLS OpenAPI を呼び出します。この方法は、サーバーから大量のデータをアップロードするのに最適です。
WebTracking SDK
認証なしの取り込みモードでは、STS プラグインを設定する必要はありません。SDK を直接初期化できます。
依存関係のインストール
# ブラウザ用
npm install --save @aliyun-sls/web-track-browser
# ミニプログラム用
npm install --save @aliyun-sls/web-track-mini
SLS 基本情報の設定
import SlsTracker from '@aliyun-sls/web-track-browser'
const opts = {
host: '${host}', // リージョン内の SLS のエンドポイント。例:cn-hangzhou.log.aliyuncs.com
project: '${project}', // プロジェクト名。
logstore: '${logstore}', // Logstore 名。
time: 10, // ログを送信する時間間隔 (秒)。デフォルト値:10。
count: 10, // バッチで送信するログの数。デフォルト値:10。
topic: 'topic', // カスタムのログトピック。
source: 'source',
tags: {
tags: 'tags',
},
}
const tracker = new SlsTracker(opts) // SlsTracker オブジェクトを作成します
ログのアップロード
単一のログをアップロードする場合、それは単一の object として表されます。複数のログをアップロードする場合、データ構造は object の 配列 になります。
単一ログ
tracker.send({
eventType:'view_product',
productName: 'Tablet',
price: 500
})
単一のログをすぐにアップロードします(time と count パラメーターは無視されます):
tracker.sendImmediate({
eventType:'view_product',
productName: 'Tablet',
price: 500
})
バッチログ
tracker.sendBatchLogs([
{
eventType: 'view_product',
productName: 'Tablet',
price: 500
},
{
eventType: 'view_product',
productName: 'Laptop',
price: 1200
}
])
バッチログをすぐにアップロードします(time と count パラメーターは無視されます):
tracker.sendBatchLogsImmediate([
{
eventType:'view_product',
productName: 'Tablet',
price: 500
},
{
eventType:'view_product',
productName: 'Laptop',
price: 1200
}
])
HTTP GET リクエスト
ログデータを URL パラメーターとしてエンコードし、SLS の取り込みエンドポイントに直接 GET リクエストを送信します。
curl --request GET 'https://${project}.${host}/logstores/${logstore}/track?APIVersion=0.6.0&key1=val1&key2=val2'
-
host:リージョンに対応する SLS エンドポイント。利用可能なエンドポイントは、「エンドポイント」に記載されています。 -
key1=val1&key2=val2:SLS にアップロードするフィールド名と値 (キーと値のペア)。複数のフィールドを設定できます。全長は 16 KB 未満である必要があります。
HTML タグ (img)
フロントエンドページに非表示の <img> タグを埋め込みます。ブラウザは自動的に画像を読み込み、これによりログのアップロードがトリガーされます。
<!-- カスタムフィールドを収集 -->
<img src='https://${project}.${host}/logstores/${logstore}/track.gif?APIVersion=0.6.0&key1=val1&key2=val2'/>
<!-- User-Agent と Referer も収集 -->
<img src='https://${project}.${host}/logstores/${logstore}/track_ua.gif?APIVersion=0.6.0&key1=val1&key2=val2'/>
track_ua.gif を使用すると、User-Agent と Referer の情報が自動的に収集されます。ブラウザのキャッシュを防ぐために、タイムスタンプパラメーターを追加してください。
OpenAPI:バッチ書き込み
大量のログをアップロードするには、PutWebtracking API を呼び出します。
手順3:ログの取り込みの検証
フロントエンドのログが SLS Logstore に到達することを確認します。
-
SLS コンソールにログインします。
-
[Projects] リストで、ターゲットプロジェクトをクリックします。
-
[Logstores] ページで、対象の Logstore 名の横にある
をクリックして展開します。 -
をクリックして 検索と分析 ページに移動します。 -
有効化 をクリックします。右側に表示されるパネルで、自動インデックスの生成 をクリックします。
-
システムがログ構造を自動的に識別し、推奨フィールド設定を生成します。設定を確認し、OK をクリックします。
-
インデックス作成を有効にした後、インデックスが有効になるまで約 1 分待ちます。その後、ログをクエリできます。
クォータと制限
サービスの安定性を確保するため、SLS WebTracking は、ブラウザからのログのアップロードに以下のクォータを適用します:
-
リクエストあたりの最大データサイズ:3 MB
-
リクエストあたりの最大ログエントリ数:4,096
WebTracking は、IP アドレスホワイトリストやアクセス元制限をサポートしていません。この機能は行動データの収集を目的として設計されており、組み込みのソース IP フィルタリングやホワイトリストのメカニズムは含まれていません。アクセス制御が必要な場合は、STS 認証モード を使用するか、バックエンドプロキシサーバー経由でログのアップロードをルーティングしてください。
ネットワーク要件:WebTracking では、ブラウザがインターネット経由で Alibaba Cloud Simple Log Service (SLS) のパブリックエンドポイントに直接アクセスできる必要があります。ネットワークポリシーやクロスオリジン制限によってクライアントが SLS エンドポイントに直接接続できない場合、WebTracking は使用できません。このような場合は、バックエンドプロキシサーバー経由でログのアップロードをルーティングすることを検討してください。
QPS 制限:WebTracking は、ログの取り込みに対して QPS 制限を適用します。具体的な値については、SLS の製品ドキュメントまたはコンソールをご参照ください。クロスボーダーのレポートシナリオでは、ネットワークが不安定なため、アップロードが失敗する可能性があります。本番環境にデプロイする前に、単一の IP アドレスからの高頻度アップロード (例:毎秒 300 リクエスト) の実現可能性と安定性リスクを評価してください。
課金
WebTracking 機能は無料ですが、ログの書き込み、ストレージ、クエリ操作には料金が発生します。
1. 課金モード
Logstore を作成する際に、課金モードを選択できます:
-
取り込みデータ量課金:複数のシナリオにわたる長期的なログの保存、分析、処理、活用を必要とする複雑なユースケースに適しています。
-
機能別課金:柔軟なコスト管理が必要な軽量または段階的なユースケースに適しています。
2. 主な課金項目
取り込みデータ量課金
-
取り込み生データ量:これは主な料金で、生ログの 非圧縮 サイズ (GB 単位) に基づいて課金されます。この料金には、データの書き込み、インデックス作成、API コール、最初の 1 か月 (30 日間) のホットストレージが含まれます。
-
ストレージ料金:30 日を超えるストレージには追加料金が発生します。
機能別課金
-
インデックストラフィック:データが書き込まれる際に、生ログの 非圧縮 サイズに基づいて一度限りの料金が適用されます。これは、ログを検索可能にするための前提条件です。
-
ストレージ料金:圧縮 データのサイズに基づいて初日から課金されます。
-
読み取りおよび書き込みトラフィック、読み取りおよび書き込み回数、アクティブなシャードなど。
よくある質問
CDN インポート
この方法は、npm のビルドプロセスを必要としない軽量なフロントエンドプロジェクト、静的ページ、または迅速な検証シナリオに最適です。
古いバージョンのリスク:CDN で利用可能な最新バージョンは 0.3.5 です。このバージョンには、npm の最新バージョンにある機能が含まれていない可能性があります。
インポート方法:
-
HTML ファイルの
<head>タグまたは<body>タグに、次のスクリプトタグを追加します。<script src="https://g.alicdn.com/sls/sls-js-sdk/0.3.5/web-track-browser.js"></script> -
SDK が読み込まれた後、グローバルオブジェクト
window.SLS_Trackerを使用してトラッカーインスタンスを初期化します。if (window.SLS_Tracker) { const tracker = new SLS_Tracker({ host: 'your-project.cn-hangzhou.log.aliyuncs.com', project: 'your-project', logstore: 'your-logstore', time: 10, count: 10 }); }
@aliyun-sls/web-browser と @aliyun-sls/web-track-browser の違い
|
|
|
|
|
ログフォーマット |
LogGroup (構造化された SLS ログフォーマット) |
フリー JSON (柔軟なキーと値のペア) |
|
自動収集 |
サポートされていません |
サポートされていません |
どちらの SDK も、JavaScript エラーやネットワークリクエストデータを自動的に収集しません。これらのイベントをキャプチャしてレポートするには、手動でコードを記述する必要があります。
Simple Log Service (SLS) ログ処理パイプラインとの互換性のために LogGroup フォーマットが必要な場合は、@aliyun-sls/web-browser を選択してください。開発オーバーヘッドが少なく、柔軟でフリーフォームの JSON フォーマットを希望する場合は、@aliyun-sls/web-track-browser を選択してください。
関連ドキュメント
付録 1:多言語 STS サンプル
Alibaba Cloud は、Java、Node.js、PHP、Ruby で利用できるオープンソースの STS サービス サンプルを提供しています。各サンプルは AssumeRole API を呼び出し、フロントエンドアプリケーションに一時的な認証情報を発行します。
サンプルプロジェクト:Java、Node.js、PHP、Ruby
サンプルを使用するには、config.json ファイルを変更し、言語別の手順に従ってサービスを起動します。
|
言語 |
ポート |
|
Java |
7080 |
|
Node.js |
3000 |
|
PHP |
8000 |
|
Ruby |
4567 |
> 変更