功能优势
日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势:
使用便捷
您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。
避免重复收集工作
由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。
充分复用日志服务内的日志分类管理工作
用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。
在大部分情况下日志数据在写入Logstore后的0.5~1个小时导入到MaxCompute,用户可以在控制台“投递任务管理”查看导入状态。导入成功后用户即可在MaxCompute内查看到相关日志数据。
结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。
配置流程
举例日志服务的一条日志如下:
日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。
1 初始化数加平台
1.1 在日志服务的控制台[backcolor=transparent]Logstore列表单击日志投递列的[backcolor=transparent]MaxCompute。
自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见
MaxCompute计量计费说明
1.2 查看服务协议和条款后单击[backcolor=transparent]确定,初始化数加平台。
初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。
目前暂不支持子用户来投递大数据计算服务MaxCompute(原ODPS)。
2.1 数据模型映射
在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考
日志服务日志数据结构和
MaxCompute表了解两种数据结构。
将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系:
- MaxCompute表至少包含一个数据列、一个分区列。
- 系统保留字段中建议使用__partition_time__,__source__,__topic__。
- MaxCompute单表有分区数目6万的限制,分区数超出后无法再写入数据,所以日志服务导入MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。
- 系统保留字段__extract_others__历史上曾用名_extract_others_,填写后者也是兼容的。
- MaxCompute分区列的值不支持”/“等特殊字符,这些是MaxCompute的保留字段。
- MaxCompute分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。
3 投递配置
3.1 开启投递
初始化数加平台之后,根据页面提示进入[backcolor=transparent]LogHub —— 数据投递页面,选择需要投递的Logstore,并单击[backcolor=transparent]开启投递。
您也可以在[backcolor=transparent]MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击[backcolor=transparent]开启投递以进入[backcolor=transparent]LogHub —— 数据投递页面。
3.2 配置投递规则
在[backcolor=transparent]LogHub —— 数据投递页面配置[backcolor=transparent]字段关联等相关内容。
选项含义:
- 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。
- 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。
- 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。
参考信息
将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。
日志服务根据日志Time字段和分区时间格式计算出日期作为分区列。为满足MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐。
举例来说,日志提取的time字段是”27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下:
- 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。
- 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。

其他操作
编辑投递配置
在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。
投递任务管理
在启动“投递功能”后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考
日志投递任务管理。
如果投递任务出现错误,控制台上会显示相应的错误信息:
当投递任务发生错误时,请查看错误信息,问题解决后可以通过管理控制台中“日志投递任务管理”或SDK来重试失败任务。
MaxCompute中消费日志
MaxCompute用户表中示例数据如下:
同时,我们推荐客户直接使用已经与MaxCompute绑定的
大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。
授予MaxCompute数据投递权限
如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。
在MaxCompute项目空间下添加用户:
可以参考
MaxCompute用户授权管理指南了解更多细节。