数据分发是指通过数据加工任务,将一份源日志按照预设的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。
一对多:一个数据集 → 多个目标。
多对一:多个数据集 → 同一个目标。
多对多:多个数据集分别写入多个目标