作者:vincihu、chenbo、alexwu
「导语」
随着腾讯游戏业务海外扩展的进程加快,腾讯云也加速了游戏海外合规的能力建设。而海外各国的监管机构也在不断强化执法,中国输出的文化产品在海外运营中面临着各种合规压力。
IEG Global腾讯游戏海外发行技术团队、腾讯云海外团队 (Tencent Cloud International - TCI) 与腾讯云CLS产品团队一起,积极配合业务完成海外拓展,助力业务快速完成不同国家区域的日志监控系统上线接入和审计合规,帮助业务在兼顾开发团队使用体验的前提下完成全球部署、敏感信息合规、日志使用合规。
业务背景
在国际隐私保护法规全面推进的背景下, 众多国家都出台了数据保护法规,例如欧盟GDPR、美国CCPA、加拿大PIPEDA、俄罗斯152-FZ、澳大利亚IPP、印度PDPB等。
IEG Global作为腾讯游戏全球海外的露出品牌, 在游戏全球运营的过程中,除了根据不同文化背景玩家的游戏喜好进行游戏习惯调整外,也必须针对各国的法规进行合规约束和改造。为了打造灵活运维、适配合规的出海新方案,海外游戏的运维团队采用“海外运营-国内开发”模式,这其中暴露的数据隐私法务风险,正是本文尝试解决的问题。
业务在交付运维上线运行后的日志,主要有以下几个作用:
- 用户行为日志
- 程序运行日志
- 记录系统或者设备的状态
- 记录业务的状态
日志检索合规属于“数据隐私法务合规”范畴。主要风险来源于跨境访问海外数据:国内开发同事因业务排障需求要访问存储在海外的业务日志,而业务日志中存在的玩家隐私数据就可能存在合规风险。
业务上线运营后,程序日志分布到全球众多服务器上,维护是一个伤脑筋的问题:
- 业务问题排查时是“现在就要”,对日志查询的效率和性能有很高要求;
- 日常时间段的态度是“别把磁盘写太满”,也没动力投入成本去维护。
腾讯云CLS作为托管式日志服务产品,完全可以满足IEG Global出海场景的日志需求:检索合规、维护成本低、提升日志使用体验(提升分析效率、降低分析难度)、挖掘日志价值。本次优化改造要做的就是提供满足法务要求的技术方案和工具。
挑战
IEG Global海外业务众多,游戏的Runtime监控日志多,技术结构复杂,数据量海量大,在本项目上带来了很多技术挑战。
业务体量大
以一个游戏为例子,服务器数量多(10000 ),日志数据量大(数TB/天)。如何低成本高效地管理这么大体量、低利用率的日志文件,是个难题。
全球分布广
IEG Global的腾讯海外游戏业务服务全球玩家,业务服务器也覆盖全球各地,这么多云厂商,各种不同的运行环境、网络环境,做日志管理也是个难题。是本地存储还是跨云集中存储?如何保证日志归档的性能?
地域合规风险
不同地区有对应的合规细则要求,例如要求数据本地化存储,甚至明文禁止中国云服务运营商。这给方案选型也带来了诸多限制。
技术方案和选型
传统ELK方案
为了满足上文列出的3个技术挑战,经过多方调研,根据当前的业界实践搞出了一个“高大上”的EFK方案。
看起来很美好:
1. 主流的开源日志管理方案ELK;
2. 按地域部署ES子集群;
3. Kafka在前端保障日志传输可靠性,汇总地区范围内上报的日志到后端ES集群;
4. ES集群内通过Logstash进行日志的加工处理(数据脱敏、数据富化);
5. 前端Kibana展示聚合展示日志。
但是里面这些花花绿绿的组件都是要自行维护的:设备采购、服务部署、集群配置、日常维护。多个EFK Kafka集群的建设成本高、维护人力投入高,再考虑一下当前团队人力储备,确实是“要不起”。
云方案
公有云拥有多种合规资质认证,并且对日志的传输、存储、加工、分析提供一站式服务, IEG Global DevOps团队最终决定使用公有云方案,来系统化解决日志运维复杂的问题。
把日志传输、存储、加工、分析都往云上放,平台架构图看上去就轻松多了,只需要专注于3件事:
1. 把冰箱门打开:上报日志到云日志服务;
2. 把大象塞进冰箱:对接云日志服务的日志检索SDK,提供日志检索页面;
3. 把冰箱门关上:合规鉴权的流程服务。
使用CLS一整套的托管式日志服务,可以帮助IEG Global大大降低运维压力,更灵活地管理存储容量,降低成本,提升日志使用体验(提升分析效率、降低分析难度),挖掘日志价值。
最终效果
整合上述的调研结果,日志服务的部署方案如下所示:
用户访问入口:日志检索平台日志检索平台只是呈现检索结果。
- 日志检索操作实际是发生在公有云上
日志存储:公有云日志服务常规环境的日志存储在新加坡。
- 有特殊合规需求的国家,数据存储在其境内
日志采集:Agent上报遵循各地的合规法律要求上报。
- 数据传输可靠性由厂商Agent机制提供保障
落地实施
相比传统日志方案需要自行搭建维护一套技术栈,CLS日志产品把日志采集、存储、加工、检索、展示的全周期服务都交付到腾讯云平台上,业务部门只需要建设统一平台来对接合规审计流程和日志展示页面即可。
日志加工处理
日志检索合规中的细节,配合腾讯云CLS的数据加工功能就可以用几行DSL语句轻松完成。
例如我们使用CLS的数据加工功能完成数据富化和敏感数据脱敏。
- 日志富化
提取日志信息中的metadata(如日志级别、进程名等),用于进行日志分类,提升日志检索效率。
代码语言:javascript复制ext_regex("__CONTENT__", regex="^202[0-9]{5} [0-2][0-9](:[0-5][0-9]){2}/(?(INFO|ERROR|ALERT))(.*)", output="level")
ext_regex("__CONTENT__", regex="^(?(202[0-9]{5} [0-2][0-9](:[0-5][0-9]){2}))(.*)", output="localtime")
ext_regex("__FILENAME__", regex="/data/home/user00/log/pangusvr/(?[a-z] ).log", output="proc")
- 数据脱敏
使用正则替换敏感信息为空,完成数据脱敏。
代码语言:javascript复制fields_set("__CONTENT__", regex_replace(v("__CONTENT__"),regex="open[iI]d[=: []{1,3}d (])?", replace="openid=*", count=0))
fields_set("__CONTENT__", regex_replace(v("__CONTENT__"), regex="uid[=: [("]{1,3}d (])?", replace="uid=*", count=0))
fields_set("__CONTENT__", regex_replace(v("__CONTENT__"), regex="(ip)[=[](d{1,3}.){3}d{1,3}(])?", replace="ip=*", count=0))
fields_set("__CONTENT__", regex_replace(v("__CONTENT__"), regex="(mobile|email|wechat_id|facebook_id)=[^,] ", replace="social_id=*", count=0))
收益
客户评价
“日志服务在业界有比较成熟的方案(ELK等) ,我们也根据自身需求整理了一套方案,看上去挺好,但是细想也会有各种容量管理/部署维护/成本/功能欠缺等问题,建设成本高,人力成本更高。
我们最终对比后选型选择CLS,把传输/存储/加工/分析/告警等繁杂的工作放在云端,平台工具专注于日志展示和合规流程, 业务在通用性/体验/维护效率/成本管控能力上大大提升。”
(引用客户vincihu评价内容)
结语
本文介绍了腾讯云CLS日志服务在游戏出海业务中的应用实践,CLS作为一站式日志服务平台,提供了从采集、存储、加工、检索、展示的全周期服务。
把日志管理从人力投入包袱带入到挖掘使用价值的阶段,释放了人力压力,同时也向开发团队提供了更好的服务体验。
CLS会继续打磨日志服务的细节,帮助用户在日志运维、运营、合规审计等业务方面实现跨越式发展,造福更多的运维团队与开发团队。
以上就是CLS在游戏出海业务中的应用实践,如果您有更多有意思的日志实践玩法分享,欢迎投稿!
加入「腾讯云日志服务CLS技术交流群」,获取更多资讯,掌握最新动态!
往期文章:
【腾讯云应用性能观测x日志服务】:链路日志关联,加速故障定位
【日志服务CLS】全新Grafana数据源,一键安装,功能升级
日志服务Grafana可视化实践——从自建ELK到使用CLS
千万级日活量,斗鱼如何基于日志实现秒级监控告警?
CLS 2021年度总结请您查阅|限量虎年红包封面等你来拿!