【阿里云网站日志分析实践】通过Log Service日志服务导入MaxCompute分析

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用非常简单。用户只需要完成2步配置即可以把日志服务Logstore的日志数

免费开通大数据服务:https://www.aliyun.com/product/odps

日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势:

  • 使用非常简单。用户只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。
  • 避免重复收集工作。由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。
  • 充分复用日志服务内的日志分类管理工作。用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。

在大部分情况下日志数据在写入Logstore后的0.5~1个小时导入到MaxCompute,用户可以在控制台“投递任务管理”查看导入状态。导入成功后用户即可在MaxCompute内查看到相关日志数据。

结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。

配置流程

举例日志服务的一条日志如下:


16年01月27日20时50分13秒
10.170.148.237
ip:10.200.98.220
status:200
thread:414579208
time:27/Jan/2016:20:50:13 +0800
url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0UjpekFQOVJW45A&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1
user-agent:aliyun-sdk-java



日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。

1.第一步:配置AK&自动开通

首先在日志服务的控制台“Logstore列表”点击日志投递列“创建ODPS”,即打开了配置AK(注意复制过来不要有空格)来自动开通数加及大数据计算服务MaxCompute(原ODPS)(默认是按量后付费模式,具体参见MaxCompute计量计费说明)的页面。配置AK及自动开通如上图,填写账号的阿里云AK信息,勾选自动开通项,点击确定,初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。

目前暂不支持子用户来投递大数据计算服务MaxCompute(原ODPS)。

2.第二步:建表&映射数据

数据模型映射

在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。你可以参考日志服务日志数据结构ODPS表了解两种数据结构。

将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系:

MaxCompute列类型 MaxCompute列名(可自定义) MaxCompute列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义
数据列 log_source string __source__ 系统保留字段 日志来源的机器IP
log_time bigint __time__ 系统保留字段 日志的Unix时间戳(是从1970年1月1日开始所经过的秒数),由用户日志的time字段计算得到
log_topic string __topic__ 系统保留字段 日志主题
time string time 日志内容字段 解析自日志
ip string ip 日志内容字段 解析自日志
thread string thread 日志内容字段 解析自日志
log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其它日志内字段会通过key-value序列化到json,该json是一层结构,不支持字段内部json嵌套。
分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的time字段对齐计算而得,分区粒度可配置,在配置项部分详述。
status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。
  • MaxCompute表至少包含一个数据列、一个分区列。
  • 系统保留字段中建议使用__partition_time__,__source__,__topic__。
  • MaxCompute单表有分区数目6万的限制,分区数超出后无法再写入数据,所以日志服务导入MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。
  • 系统保留字段__extract_others__历史上曾用名_extract_others_,填写后者也是兼容的。
  • MaxCompute分区列的值不支持”/“等特殊字符,这些是MaxCompute的保留字段。
  • MaxCompute分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。
投递配置

配置好AK后进入到投递配置页面,在该页面需要配置投递大数据计算服务MaxCompute(原ODPS)的相关内容:投递配置

选项含义:

参数 语义
投递名称 自定义一个投递的名称,方便后续管理
MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project
MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表
MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型
MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型
分区时间格式 __partition_time__输出的日期格式,参考Java SimpleDateFormat
导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒
  • 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。
  • 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。
  • 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。
  • __partition_time__ 格式

将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。

日志服务根据日志time字段和分区时间格式计算出日期作为分区列,且为满足MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐。

举例来说,日志提取的time字段是”27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下:

导入MaxCompute间隔 分区时间格式 __partition_time__
1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00
1800 yyyy-MM-dd HH:mm 2016-01-27 20:30
1800 yyyyMMdd 20160127
3600 yyyyMMddHHmm 201601272000
3600 yyyy_MM_dd_HH 2016_01_27_20
  1. 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。
  2. 以上分区时间格式是测试通过的样例,你也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。
编辑投递配置

在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。

投递任务管理

在启动“投递功能”后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考日志投递任务管理

如果投递任务出现错误,控制台上会显示相应的错误信息:

错误信息 建议方案
MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。
MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。
MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。
MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。
日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。

当投递任务发生错误时,请查看错误信息,问题解决后可以通过管理控制台中“日志投递任务管理”或SDK来重试失败任务。

MaxCompute中消费日志

MaxCompute用户表中示例数据如下:

同时,我们强烈推荐客户直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。推荐【新手上路】大数据“零基础”系列课程--如何通过大数据开发套件Data IDE玩转大数据



| log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |

+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+

| 10.170.148.237 | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.200.98.220 | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0UjpekFQOVJW45A&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 |

+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+


__partition_time__ 使用方法

使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据:


select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27";


__extract_others__ 使用方法

log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询:


select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10;


  1. get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。
  2. 示例供参考,请以MaxCompute产品建议为最终标准。

其它

授予ODPS数据投递权限

如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。

在ODPS项目空间下添加用户:

shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到ODPS


ADD USER aliyun$shennong_open@aliyun.com;


ODPS项目空间Read/List权限授予:


GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com;


ODPS项目空间的表Describe/Alter/Update权限授予:


GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com;


确认ODPS授权是否成功:


SHOW GRANTS FOR aliyun$shennong_open@aliyun.com;

A       projects/{ODPS_PROJECT_NAME}: List | Read

A     projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

加入我们,关注 MaxCompute产品:
a0d89b2b5b6284b1bc3c6057c38313b752eee0e2
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
341 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
14天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
9天前
|
存储 数据采集 监控
云上数据安全保护:敏感日志扫描与脱敏实践详解
随着企业对云服务的广泛应用,数据安全成为重要课题。通过对云上数据进行敏感数据扫描和保护,可以有效提升企业或组织的数据安全。本文主要基于阿里云的数据安全中心数据识别功能进行深入实践探索。通过对商品购买日志的模拟,分析了如何使用阿里云的工具对日志数据进行识别、脱敏(3 种模式)处理和基于 StoreView 的查询脱敏方式,从而在保障数据安全的同时满足业务需求。通过这些实践,企业可以有效降低数据泄漏风险,提升数据治理能力和系统安全性。
云上数据安全保护:敏感日志扫描与脱敏实践详解
|
21天前
|
存储 数据采集 监控
阿里云DTS踩坑经验分享系列|SLS同步至ClickHouse集群
作为强大的日志服务引擎,SLS 积累了用户海量的数据。为了实现数据的自由流通,DTS 开发了以 SLS 为源的数据同步插件。目前,该插件已经支持将数据从 SLS 同步到 ClickHouse。通过这条高效的同步链路,客户不仅能够利用 SLS 卓越的数据采集和处理能力,还能够充分发挥 ClickHouse 在数据分析和查询性能方面的优势,帮助企业显著提高数据查询速度,同时有效降低存储成本,从而在数据驱动决策和资源优化配置上取得更大成效。
119 9
|
24天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
1月前
|
存储 数据采集 监控
云上数据安全保护:敏感日志扫描与脱敏实践详解
随着企业对云服务的广泛应用,数据安全成为重要课题。通过对云上数据进行敏感数据扫描和保护,可以有效提升企业或组织的数据安全。本文主要基于阿里云的数据安全中心数据识别功能进行深入实践探索。通过对商品购买日志的模拟,分析了如何使用阿里云的工具对日志数据进行识别、脱敏(3 种模式)处理和基于 StoreView 的查询脱敏方式,从而在保障数据安全的同时满足业务需求。通过这些实践,企业可以有效降低数据泄漏风险,提升数据治理能力和系统安全性。
|
2月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
137 14
|
1月前
|
存储 监控 安全
什么是日志管理,如何进行日志管理?
日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。
108 0
|
2月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
43 0
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
278 0

相关产品

  • 云原生大数据计算服务 MaxCompute