日志服务+函数服务实战: 访问日志地域、运营商实时分析

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 日志服务的LogHub是流式的数据中心,日志写入后可实时消费。日志服务ETL面向的正是这些流式写入的数据,提供准实时(1分钟级别)的ETL作业。

概述

ETL(Extract-Transform-Load)用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。

传统ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

在今天,随着业务需求的日益增加,不同系统的相互大批量数据交互也已成为常态。数据在不同系统中流动起来,有助于充分发掘日志大数据的价值。

日志服务的LogHub是流式的数据中心,日志写入后可实时消费。日志服务ETL面向的正是这些流式写入的数据,提供准实时(1分钟级别)的ETL作业。

日志服务ETL

两个场景

  • 一站式建模分析

log-inner-etl.png

通过日志服务,快速完成日志采集、加工、查询、分析。

  • 数据交换

log-shipper-etl.png

为数据的目的端落地提供支撑,构建云上大数据产品间的数据管道。

ETL模型

实时数据流处理,基于流的模型。ETL Trigger轮询源logstore下各shard的写入位置,并定时生成三元组信息触发函数执行,该三元组用于标识本次ETL任务所应该处理的数据范围。

etl-model.png

通过shard的并发做到水平扩展,shard弹性伸缩保证了ETL的动态伸缩,通过定时器触发作业完成持续的数据加载。

在ETL任务执行层面,考虑UDF的灵活性,加工逻辑会跑在函数服务的函数上,而函数服务提供了按需付费、弹性伸缩能力以及自定义代码执行功能,正是很多云上用户所需要的。另一方面,从用户数据端到端延时、大数据吞吐、SQL易用性角度,日志服务未来也考虑把ETL的runtime扩展到流计算引擎(例如阿里云流计算)上,去服务更多的用户场景。

ETL日志

  • ETL过程日志

这是一类是执行过程日志,这一部分日志是在ETL执行过程中每执行一步的记录关键点和错误,包括某一步骤的开始、结束时间、初始化动作完成情况,模块出错信息等。记录日志的目的是随时可以知道ETL运行情况,如果出错了,可以知道哪里出错。

函数运行产生的日志记录了数据加工过程中关键点、异常:

etl-function-log.png

  • ETL调度日志

调度日志只记录ETL任务开始的时间、结束时间,任务是否成功以及成功返回的信息。如果ETL任务出错了,不仅要形成ETL出错日志,而且要向系统管理员发送报警邮件或短信。

etl-trigger-log.png

在调度日志的基础上,可以构建出报表统计ETL的总体运行状况,会在下文实践部分介绍。

“日志服务+函数服务”ETL的优势

  • 一站式采集、存储、加工、分析
  • 全托管加工任务,按时间触发,自动重试
  • 资源按shard水平扩展,满足大数据需求
  • 基于函数服务提供数据加工,弹性资源,按需付费
  • ETL对用户透明,提供日志、报警功能
  • 持续增加内置函数模板,降低主流需求下的函数开发代价

日志服务ETL实战

对于数据分析工程师而言,ETL过程往往占据整个项目工作60%~70%的工作量。日志服务的目标是使用内置的函数模板的前提下,将构建ETL的时间缩短到15分钟内。

题目:ip归属查找

通过Nginx、apache等HTTP服务器构建的软件,可以记录每一个用户访问日志。本次实践的题目是:看看我们到底服务了哪些地区的用户,这些用户通过什么链路访问我们的服务。

第一步:日志集中化存储

我们使用日志服务的Logtail客户端快速接入机器上的日志文件。本节请参考日志服务实时采集数据,本文不作赘述。

客户端采集nginx访问日志将会集中存储到日志服务的一个logstore中,如下图,forward字段的ip记录了用户请求的来源:

source-log.png

第二步:云端数据加工

1. 登录函数服务控制台创建service

fc-service.png

在高级配置中,建议为ETL function配置加工过程中的日志记录的存储logstore,方便通过日志来定位加工过程中的异常行为。为函数授予日志服务AliyunLogFullAccess权限,函数在运行过程中会读源logstore数据,数据处理后再写到目标logstore。

2. 通过内置模板创建函数

fc-create-function.png

默认的函数配置如下:

fc-function.png

3. 在函数上新建日志服务触发器

日志服务触发器配置如下:

fc-trigger.png

指定数据源为第一步中采集到中心化nginx日志logstore,例如本例子的project:etl-test/logstore:nginx_access_log。

日志服务将轮询logstore的数据,当数据持续产生时,每60秒(3秒~600秒,可配置)创建一次ETL任务,并调用函数执行。触发函数执行以及函数执行结果将会记录到触发器日志logstore:etl-trigger-log中。

函数配置因不同函数的实现和功能而已,ip-lookup的详细配置项说明请参考README

4. 保存配置,等待1分钟后ETL任务开始执行

可以关注一下ETL过程日志、调度日志,按如上配置,分别在logstore:etl-function-log、etl-trigger-log。

可以通过查询语句构建出如本文日志部分所示的报表:

etl-trigger.png

左上图是每分钟调度函数执行的触发次数,构建自查询语句:

project_name : etl-test and job_name : ceff019ca3d077f85acaad35bb6b9bba65da6717 | select from_unixtime(__time__ - __time__ % 60) as t, count(1) as invoke_count group by from_unixtime(__time__ - __time__ % 60) order by t asc limit 1000

右上图是ETL任务成功、失败的比例,构建自查询语句:

project_name : etl-test and job_name : ceff019ca3d077f85acaad35bb6b9bba65da6717 | select task_status, count(1) group by task_status

左下图是每5分钟的摄入的日志字节数,构建自查询语句:

project_name : etl-test and job_name : ceff019ca3d077f85acaad35bb6b9bba65da6717 and task_status : Success | select from_unixtime(__time__ - __time__ % 300) as t, sum(ingest_bytes) as ingest_bytes group by from_unixtime(__time__ - __time__ % 300) order by t asc limit 1000

右下图则是每5分钟摄入处理的日志行数,构建自查询语句:

project_name : etl-test and job_name : ceff019ca3d077f85acaad35bb6b9bba65da6717 and task_status : Success | select from_unixtime(__time__ - __time__ % 300) as t, sum(ingest_lines) as ingest_lines group by from_unixtime(__time__ - __time__ % 300) order by t asc limit 1000

第三步:加工后数据建模

机器上的nginx日志经由Logtail实时采集到源logstore,再由ETL准实时加工后写出到目标logstore。经函数处理后带ip信息数据如下:

target-log.png

对比加工前后,我们发现,新的数据增加了四个字段(country、省province、city、isp),可以知道:ip源117.136.90.160的请求来自中国山西太原,运营商是中国移动。

接下来,使用日志服务的日志分析功能查询一个时间段内请求ip的城市和isp分布。通过如下两个查询语句构建报表:

* | select city, count(1) as c group by city order by c desc limit 15
* | select isp, count(1) as c group by isp order by c desc limit 15

access-ip-statistic.png

至此,本节的实践内容结束。欢迎大家试用自定义ETL

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
Java Maven Spring
超实用的SpringAOP实战之日志记录
【11月更文挑战第11天】本文介绍了如何使用 Spring AOP 实现日志记录功能。首先概述了日志记录的重要性及 Spring AOP 的优势,然后详细讲解了搭建 Spring AOP 环境、定义日志切面、优化日志内容和格式的方法,最后通过测试验证日志记录功能的准确性和完整性。通过这些步骤,可以有效提升系统的可维护性和可追踪性。
|
2月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
137 14
|
2月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
505 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
2月前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
29 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
2月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
42 1
|
2月前
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
194 0
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
335 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
14天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
331 3
|
23天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。

相关产品

  • 日志服务