データ変換タスクは、事前に定義された構造化プロセス言語 (SPL) ルールを使用してソースログを処理します。処理されたログは、1 つ以上の宛先 Logstore に書き込まれます。このプロセスは、アカウント間およびリージョン間の書き込みをサポートします。このトピックでは、ログコンテンツを静的な宛先アドレスに配布する方法について説明します。`level` や `tenant_id` などのログコンテンツに基づいて宛先アドレスを動的に決定する方法については、「コンテンツに基づく動的ルーティング」をご参照ください。
1 つのデータ変換タスクで、最大 20 の出力先をサポートします。
ソース Logstore データの準備
ソース Logstore に生ログが含まれていることを確認してください。ログには、フィルタリングと分類のためのキーフィールドが含まれている必要があります。以下は生ログのサンプルです。
{
"status": 503,
"method": "POST",
"uri": "/api/submit",
"error_message": "service unavailable",
"stack_trace": "..."
}SPL ルールの作成
SPL を使用して生ログを処理し、ビジネスロジックに基づいて複数の結果セットを定義できます。これらの結果セットは、異なる宛先に配布されます。
Simple Log Service コンソールにログインします。
ソースプロジェクトの名前をクリックします。
左側のナビゲーションウィンドウで、
[タスク管理] をクリックします。[データ変換] タブで [データ変換タスクの作成] をクリックし、ソース Logstore を選択してから [確認] をクリックします。
データの時間範囲を選択し、SPL ルールを指定します。
1 対 1:状態コードに基づくログの配布
この例では、アクセスログを状態コードに基づいて 2 つの結果セット (成功したリクエストとサーバーサイドエラー) に分割します。これらのセットは、異なる Logstore に配布されます。
-- 成功したリクエスト (2xx)
.let success_logs = *
| where cast(status as int) >= 200 and cast(status as int) < 300
| project __time__, method, uri, status, response_time;
-- サーバーサイドエラー (5xx)
.let server_error_logs = *
| where cast(status as int) >= 500
| project __time__, method, uri, status, error_message, stack_trace;
-- すべてのデータセットを出力
$success_logs; $server_error_logs;SPL ルールをデバッグし、デフォルトのストレージ宛先を設定します。
[生ログ] セクションで、追加したいログを選択し、[テストデータに追加] をクリックします。
[テストデータ] タブで、[SPL のデバッグ] をクリックして [変換結果] を表示します。
変換結果が正しければ、[データ変換の保存 (新規)] をクリックします。
[データ変換タスクの作成 (新規)] パネルで、ストレージ宛先を次のように設定します。
[宛先リージョン]:宛先プロジェクトのリージョンを選択します。
宛先のプロジェクトと Logstore が存在し、必要なアクセス権限があることを確認してください。

配布結果の確認:タスクが開始された後、各宛先 Logstore のデータをクエリして、ログが設定どおりに配布されていることを確認します。以下に例を示します。
入力ログの特徴
実際の書き込み場所
status=200プロジェクト:
sls-project-beijing、Logstore:
access-successstatus=502プロジェクト:
sls-project-beijing、Logstore:server-error-logs
1 対多:エラーログのバックアップ (アカウント間およびリージョン間)
この例では、すべてのエラーログをリージョンやアカウントをまたいで、異なる宛先 Logstore に書き込む方法を示します。
-- すべてのエラーログ
.let all_errors = *
| where cast(status as int) >= 400
| project __time__, method, uri, status, error_message;
-- データセットを出力
$all_errors;SPL ルールをデバッグし、デフォルトのストレージ宛先を設定します。
[生ログ] セクションでログデータを選択し、[テストデータに追加] をクリックします。
[テストデータ] タブで、[SPL のデバッグ] をクリックして [変換結果] を表示します。
変換結果に問題がなければ、[データ変換の保存 (新規)] をクリックします。
[データ変換タスクの作成 (新規)] パネルで、ストレージ宛先を次のように設定します。
[宛先リージョン]:宛先プロジェクトが配置されているリージョン。
ロール ARN:
同一アカウント操作:[デフォルトロール] を選択して、Alibaba Cloud システムロール
AliyunLogETLRoleを使用します。このロールは、現在のアカウント内の Simple Log Service リソースにアクセスするために必要な権限を付与します。ソースと宛先の Logstore が同じアカウントにある場合にこのオプションを推奨します。アカウント間操作の場合は、[カスタムロール] を選択します。宛先 Logstore が別の Alibaba Cloud アカウントにある場合は、手動で RAM ロールを作成する必要があります。RAM ロールにソース Logstore からの読み取り権限と、すべての宛先 Logstore への書き込み権限を付与します。次に、宛先アカウントで RAM ロールの信頼ポリシーを設定します。権限付与の詳細については、「権限付与」をご参照ください。

配布結果の確認:タスクが開始された後、各宛先 Logstore のデータをクエリして、ログが設定どおりに配布されていることを確認します。以下に例を示します。
入力ログの特徴
実際の書き込み場所
status=502プロジェクト:
sls-project-beijing、Logstore:
error-logsプロジェクト:
sls-project-hangzhou、Logstore:error-logs-backup
多対 1:一元化された監査
この例では、異なる動作を記録したログを同じ宛先 Logstore に書き込む方法を示します。
-- 機密性の高い操作ログ
.let audit_logs = *
| where (uri like '/api/*/delete') or ( uri like '/api/*/create');
-- ログイン動作ログ
.let login_logs = *
| where uri = '/login' or uri = '/logout';
-- データセットを出力
$audit_logs;$login_logs;SPL ルールをデバッグし、デフォルトのストレージ宛先を設定します。
[生ログ] セクションでログエントリを選択し、[テストデータに追加] をクリックします。
[テストデータ] タブで、[SPL のデバッグ] をクリックして [変換結果] を表示します。
変換結果に問題がなければ、[データ変換の保存 (新規)] をクリックします。
[データ変換タスクの作成 (新規)] パネルで、ストレージ宛先を次のように設定できます。

配布結果の確認:タスクが開始された後、宛先 Logstore のデータをクエリして、ログが設定どおりに配布されていることを確認します。以下に例を示します。
入力ログの特徴
実際の書き込み場所
uri = /loginプロジェクト:
sls-project-beijing、Logstore:
security-audituri=/api/user/delete
サポートされるマッピングパターン
結果セットは、宛先 Logstore に書き込まれる SPL データセットです。
1 対 1:1 つのデータセットが 1 つの宛先 Logstore に書き込まれます。
1 対多:1 つのデータセットが複数の宛先に書き込まれます。
多対 1:複数のデータセットが同じ宛先に書き込まれます。
多対多:複数のデータセットが複数の宛先に書き込まれます。