各位编程爱好者,你们是否也遇到过这样的问题:如何对海量的埋点日志进行精准监控,保证监控的易用性、稳定性与准确性呢?今天,我们就来聊聊这个话题。
01 引言
日志中台作为百度数据埋点的一站式解决方案,承载着每天千亿量级的埋点日志 PV。对这些流量进行准确监控,并支持个性化字段的抽取、下钻,是日志中台的一大难题。本文将深入讲解低成本实现可扩展、高准确度的埋点监控的技术方案。
02 概念简介&需求分析
首先,我们来了解一下 UBC(User Behavior Collection)用户行为收集的概念,它是日志中台数据埋点的主流协议。根据打点所表达的场景,UBC 日志可分为事件打点和流式打点。此外,UBC 日志中还包括公共参数和业务参数。
2.1 UBC 打点类型
- 事件打点:记录一个单次行为,例如一次点击、一次列表页展示等。
- 流式打点:记录一个持续行为,例如一次视频观看、某功能的使用时长等。
2.2 公共参数与业务参数
- 公共参数:由 UBC 的打点 SDK 统一获取并上报,例如系统类型、设备 ID、APP 名称、APP 版本等。
- 业务参数:业务在打点时可自行定义其他参数,对同一类 UBC ID 的行为日志进行进一步细分。
2.3 埋点监控需求分析
埋点监控的核心目标是:高时效性、多样化监控维度、支持按照公共参数与业务参数组装筛选条件。
03 整体方案
基于日志中台的实时流架构,我们对埋点监控能力进行了方案设计。整体方案包括日志管理平台、流式处理任务、监控消息队列和监控处理任务。
04 难点与解决
在实现过程中,我们遇到了维度膨胀、数据偏移和降低监控成本等难点,并提出了相应的解决方案。
4.1 如何避免维度膨胀
通过数据映射的方式解决维度膨胀的问题,提供了至多6个自定义筛选维度项,并支持 1对1、多对1 两种映射逻辑。
4.2 如何防止数据偏移
参考了流式数据处理的思想,在监控中引入了水位(watermark)的概念,以规避数据偏移问题。
4.3 如何降低监控成本
通过数据裁剪、时间聚合等方式,极大降低了监控的运算、存储与检索成本。
05 总结与展望
日志中台作为观测用户行为的一站式解决方案,将持续秉承简单可依赖的价值观,为业务提供更准确、更可靠、更优质的服务。
我是「新派编程网」(www.xjpbg.com)的林译川,希望这篇文章能帮助到你们。如果你们对技术有任何疑问,欢迎关注我们的网站,了解更多内容。
