数据分发是指通过数据加工任务,将一份源日志按照预设的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,该角色已包含访问当前账号下日志服务资源的通用权限,适用于源和目标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。
-
一对多:一个数据集 → 多个目标。
-
多对一:多个数据集 → 同一个目标。
-
多对多:多个数据集分别写入多个目标