背景
随着移动互联网的发展,游戏几乎是进入快餐式消费时代,游戏公司也会面临方方面面的挑战,为了获得最佳的游戏运营方案,游戏公司希望将用户游戏日志与用户元数据进行联合分析。
对一个大型游戏而言,游戏日志是海量的并且需要实时分析,而SLS正好可以满足这一要求,所以可以将游戏日志采集到SLS的logstore中。由于用户信息访问频率高,但更新频率较低,加上redis本身就支持持久化存储,所以一般使用Redis来存储用户元数据。
SLS简介
日志服务(Log Service,简称SLS)是云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升您在研发、运维、运营、安全等场景的数字化能力。
数据加工服务是阿里云SLS推出的面向日志ETL处理的服务,主要解决数据加工过程中转换、过滤、分发、富化等场景。数据加工DSL是专门为日志实时行处理定制的一套语言(Python语法子集),目前已经提供200+ 内置函数来简化数据加工模式。
场景应用
SLS通过对游戏日志的加工富化,从而帮忙企业修复用户数据、定位系统异常、帮助运维等。下面通过一个实例说明数据加工DSL中的e_redis_map函数如何对用户游戏日志进行数据富化。
案例实践
Logstore采集日志
- 如何将日志采集到日志服务,可以使用ilogtail采集,这里就不再多说,这里举一个采集到的实例,如下:
- 日志包括用户ID、用户名、操作、点击位置、用户IP等信息。由于采集到的是一串json格式的字符串,不便于后续处理,这里可以使用数据加工DSL的语句,首先对数据进行简单的转换,使用加工语句:
e_json("data", fmt="parent")
# 丢弃原字段
e_drop_fields("data", regex=False)
- 加工后的日志就变成:
云数据库Redis中的用户元数据
- 首先需要创建云数据库Redis,参考云数据库 Redis创建实例,创建成功以后,插入用户元数据至数据库中,字段是用户ID,value值包含用户的性别、注册时间、地区等等,如下:
userId |
value |
9022 |
{ "sex": "female", "registration": 948354751, "region":shanghai } |
9098 |
{ "sex": "male", "registration": 1292831551, "region":nanjing } |
10112 |
{ "sex": "male", "registration": 1354428586, "region":hangzhou } |
数据加工
使用数据加工DSL的e_redis_map函数,通过Logstore日志中的用户ID字段对应的字段值(即data.userID的值),在用户元数据表(实例名r-bp1***)中查找该值对应的value,查到的结果作为字段“detail”的字段值,如下:
e_redis_map('data.userID', "detail",
"r-bp1***.redis.rds.aliyuncs.com", port=redis-port, db=0,
username=redis-username, password=redis-password)
加工结果
经过数据加工处理后,结果Logstore中的日志包含原始日志中的用户行为字段及个人信息,如下:
其他参考:
1、数据加工文档:https://help.aliyun.com/document_detail/125384.html
2、e_redis_map函数使用指南:https://help.aliyun.com/document_detail/125489.html#section-a4e-tmh-o1s
3、云数据库Redis文档:https://help.aliyun.com/document_detail/26351.html
3、3、
3
26gt%3B%26lt%3Bdiv%20class%3D%26quot%3Blake-content%26qu33ot%3B%26gt%3B%26lt%3Bimg%20src%3D%26quot%3Bhttps%3A%2F%2Fucc.alicdn.com%2Fimages%2Flark%2F0%2F2022%2Fpng%2F56156506%2F1669880189796-3d295f24-c222-402e-bc57-
ce%3Dwrap%3Bhtml%3D1%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22-572%22%20y%3D%22307%22%20width%3D%22385%22%20height%3D%227%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E