資料分發是指通過資料加工任務,將一份源日誌按照預設的SPL規則處理後,寫入一個或多個目標LogStore,支援跨帳號、跨地區寫入。本文介紹如何?日誌內容的靜態分發,即將源日誌分發到固定的目標地址。如需根據日誌內容(如level、tenant_id)動態決定目標地址請參考按內容動態分流。
單個資料加工任務最多支援20個輸出目標。
準備源LogStore資料
確保源 LogStore 已正確接入原始日誌,並包含可用於過濾和分類的關鍵字段。原始日誌範例:
{
"status": 503,
"method": "POST",
"uri": "/api/submit",
"error_message": "service unavailable",
"stack_trace": "..."
}編寫SPL規則
使用SPL對原始日誌進行處理,並根據商務邏輯定義出最終需要分發到不同目標的多個結果集。
-
單擊源Project名稱,進入源Project。
-
在左側導覽列,單擊
任務管理。 -
在資料加工頁簽下,單擊建立資料加工任務,選擇源日誌庫,單擊確認。
-
選擇資料的時間範圍,SPL規則。
一對一:按狀態代碼精確分發
將訪問日誌按狀態代碼分為“成功請求”和“服務端錯誤”兩個結果集,分發到不同的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,查看加工結果。
-
當加工結果符合預期後,單擊儲存資料加工(新版)。
-
在建立資料加工任務(新版)面板中,儲存目標配置如下:
-
目標Region:選擇目標Project所在地區。
-
必須確保對目標Project和目標庫存在且有權訪問。

-
-
驗證分髮結果:啟動任務後,在各目標 LogStore 查詢資料,確認日誌是否按預設目標分發。樣本:
輸入日誌特徵
實際寫入位置
status=200Project:
sls-project-beijing,LogStore:
access-successstatus=502Project:
sls-project-beijing, LogStore:server-error-logs
一對多:備份錯誤記錄檔(跨帳號跨地區)
將所有錯誤記錄檔跨地區、跨帳號寫入不同的目標庫。
-- 所有錯誤記錄檔
.let all_errors = *
| where cast(status as int) >= 400
| project __time__, method, uri, status, error_message;
-- 輸出資料集
$all_errors;調試SPL並配置預設儲存目標:
-
在原始日誌中選擇日誌資料加入測試資料。
-
在測試資料頁簽中,單擊調試SPL,查看加工結果。
-
當加工結果符合預期後,單擊儲存資料加工(新版)。
-
在建立資料加工任務(新版)面板中,儲存目標配置如下:
-
目標Region:選擇目標Project所在地區。
-
角色ARN:
-
同帳號操作:選擇預設角色,使用阿里雲系統角色
AliyunLogETLRole,該角色已包含訪問當前帳號下Log Service資源的通用許可權,適用於源和目標LogStore均在當前帳號下的情境。 -
跨帳號操作:選擇自訂角色,當目標LogStore屬於其他阿里雲帳號時,需要手動建立一個RAM角色,為其授予讀取源LogStore和寫入所有目標LogStore的許可權,並在目標帳號側為該角色配置信任策略。詳細授權資訊請參考資料加工任務許可權配置。
-

-
-
驗證分髮結果:啟動任務後,在各目標 LogStore 查詢資料,確認日誌是否按預設目標分發。樣本:
輸入日誌特徵
實際寫入位置
status=502Project:
sls-project-beijing,LogStore:
error-logsProject:
sls-project-hangzhou, LogStore:error-logs-backup
多對一:集中審計
將不同行為日誌寫入同一個目標庫。
-- 敏感動作記錄
.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 = /loginProject:
sls-project-beijing,LogStore:
security-audituri=/api/user/delete
支援的映射模式
寫入結果集指需要寫入至當前目標LogStore的SPL資料集。
-
一對一:一個資料集 → 一個目標 LogStore。
-
一對多:一個資料集 → 多個目標。
-
多對一:多個資料集 → 同一個目標。
-
多對多:多個資料集分別寫入多個目標