SLS 基于访问日志实现用户画像

简介: 阿里云 SLS 是云上一站式大数据处理、分析平台,其目标是“让用户专注在数据价值上,把数据系统部署、运维、扩容的工作交给 SLS”

简介

阿里云 SLS 是云上一站式大数据处理、分析平台,其目标是“让用户专注在数据价值上,把数据系统部署、运维、扩容的工作交给 SLS”。随着用户在 SLS 存储的数据越来越多,除了最常见的运维等场景,如何进一步挖掘数据的价值,就成为了下一步的重要目标。这里,我们通过一个实例,介绍如何使用 SLS 基于 WEB 访问日志一站式实现用户画像分析,一步一步实现数据价值的挖掘。

访问日志

WEB 访问日志包含了很多用户特征数据,以 nginx 服务器为例,如下是使用 logtail 从测试 nginx 服务器采集到访问日志样例,该样例是模拟“电商商品点击”场景:

content:  127.0.0.1 - - [26/Oct/2020:21:43:09 +0800] "GET /product/8396812?from=source-2 HTTP/1.1" 200 473 "-" "Mozilla/5.0 (iPhone; U; fr; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5"

在访问日志中,包含以下用户特征信息:

  • 客户端 IP:可以解析得到访问发出的地理位置信息、IP 风险度(是否存在共攻击风险)
  • 时间:用户的访问频率,访问的时间偏好
  • URL 地址:用户的商品偏好(商品ID)、点击来源(广告源)
  • HTTP 状态码:运维定位访问失败的原因、跟踪客户流失
  • 请求数据大小
  • 客户端 UserAgent:用户设备信息(硬件设备、操作系统、浏览器)

但是,访问日志的所有内容被打包成一条非结构化的文本数据条目,无法直接使用。为了实现有效信息的使用,第一步就是需要进行数据规整,从其中抽取出有效信息,变为结构化数据。SLS 中【数据加工】就是实现数据处理和结构化的完整解决方案。

有了结构化数据,下一步则是统计分析和可视化展示。SLS 提供大规模数据的实时查询与分析能力,并支持使用 SQL 做统计分析。SLS 还提供了丰富的数据可视化方式,只需要在控制台选择配置就可以,简使用单方便。

SLS 处理

Logtail: 采集访问日志

使用 logtail 采集已经有很多社区文章的讲解,这里就不再赘述。列举以下几篇文章以供参考:
Logtail从入门到精通系列
Kubernets日志采集配置模式介绍与对比

数据加工:规整数据

SLS 的数据加工功能是一个全托管、高可用、易扩展的数据处理服务,广泛适用于数据的规整、富化、分发、汇总、重建索引等场景。数据加工 DSL(Domain Specific Language)语法是 SLS 数据加工使用的与Python兼容的脚本,编排灵活易用。DSL 目前提供 200+ 内置函数来简化数据加工模式,更多函数还在添加和更新。

这里,我们展示使用数据加工从访问日志中抽取出部分用户相关的特征数据:

  • 客户端 IP
  • 点击商品
  • 设备信息

数据加工 DSL 脚本如下:

e_regex("content", grok(r'%{IPORHOST:client_ip} - %{USER} \[%{HTTPDATE:time}\] %{QS:request} %{NUMBER} (?:%{NUMBER}|-) %{QS} %{QS:user_agent}'))
e_regex("request", grok(r'"%{WORD:method} %{URIPATH:product}%{URIPARAM:params} %{NOTSPACE:http_version}"'))

e_kv("params")
e_set("user_os", ua_parse_os(v("user_agent")))
e_drop_fields("content", "request", "params", "user_agent", regex=False)

这里,DSL 首先使用正则函数,从非结构化文本中提取出各个组成部分,而且支持丰富的 GROK 模式,使得正则抽取不再那么令人生畏。接着通过 KV 抽取访问请求中的参数变量,和解析用户的设备信息。最后,我们可以操作时间字段,保持数据的简洁,方便分析使用和减少存储成本。

经过加工处理以后,数据内容规整为:

client_ip: 127.0.0.1
from: source-2
http_version: HTTP/1.1
method: GET
product: /product/8396812
time: 26/Oct/2020:21:43:09 +0800
user_os: {"family": "iOS", "major": "4", "minor": "2", "patch": "1"}

从以上可以看出,数据加工 DSL 使用很方便,因为 DSL 内置函数非常丰富,可以满足各种各样的数据处理需求。而且开发活跃,一直在添加、更新函数。

查询/SQL:分析展示结果

通过数据加工将非结构化的文本规整为结构化数据后,SLS 就可以非常方便地进行同居分析。这里,我们从 3 个实例展示 SLS 的统计分析和可视化,实现用户画像。

1. 用户设备信息统计

统计访问涞源的用户设备统计,SQL语句如下:

* | select "user_os.family" as Device, count(1) as Count group by Device

涉及到成分占比对比分析,选择“饼图”,效果如图:
用户设备信息统计

2. 访问地域分布

模拟访问数据的地理位置信息,SQL语句如下:

* | select ip_to_province(client_ip) as ip_province, count(*) as Users group by ip_province order by Users desc limit 500

3. 各商品的点击来源

分析每一个广告投放对于各个商品的点击效果,SQL语句如下:

* | select product, "from" as source, count(1) as count group by product, source

分类统计,选择“流图”,类型“柱状图”,聚合列选择“source”,效果如下:
各商品的点击来源

总结

如果我们为了实现数据分析,需要搭建多个不同的系统组件,就会分散我们对于数据价值挖掘的投入,SLS 正是解决这个问题。从数据采集,到规整化处理,最后统计分析和可视化,一站式完成。

  1. Logtail 采集性能高、开销少、延迟低
  2. 数据加工处理灵活易用、免运维、易扩展
  3. 统计分析支持 SQL,丰富强大,完整的可视化方式
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
7月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
210 2
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
566 9
|
12月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1120 54
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
850 5
图解MySQL【日志】——Redo Log
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
1556 13
|
缓存 Java 编译器
|
域名解析 应用服务中间件 网络安全
阿里云个人博客外网访问中断应急指南:从安全组到日志的七步排查法
1. 检查安全组配置:确认阿里云安全组已开放HTTP/HTTPS端口,添加规则允许目标端口(如80/443),授权对象设为`0.0.0.0/0`。 2. 本地防火墙设置:确保服务器防火墙未阻止外部流量,Windows启用入站规则,Linux检查iptables或临时关闭防火墙测试。 3. 验证Web服务状态:检查Apache/Nginx/IIS是否运行并监听所有IP,使用命令行工具确认监听状态。 4. 测试网络连通性:使用外部工具和内网工具测试服务器端口是否开放,排除本地可访问但外网不可的问题。 5. 排查DNS解析:确认域名A记录指向正确公网IP,使用`ping/nslookup`验证解析正
541 2
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
865 7
MySQL事务日志-Undo Log工作原理分析