有赞埋点质量保障
文 | 见风 on 大数据
一、常见问题
事件重复&丢失。重复是由于SDK自身或者前端开发疏忽的问题,导致相同事件重复发送;丢失可能是设备、网络原因,或者是开发者漏埋导致。 事件参数错误。常见的情况有:”必传而未传“、”非空而为空“、”值类型不对“、”值内容不对”等。 前端常见错误。比如值为“undefined”、“null”,通常是前端代码bug导致的值错误。 事件断流。这种case经常发生,前端在做改造升级的时候,可能导致事件上报不规范,或者误下线。
二、保障机制
页面/组件类型,登记该元素的业务标识,以及是否有业务ID。日志上报时,会有对应的字段记录该信息。
事件信息,事件的名称/标识/描述,所属页面/组件,以及所处状态等信息。
事件参数,属于该事件的一系列业务参数,比如一个点击事件的参数可能是被点击的商品的ID。对于参数的登记,我们支持标识/类型/是否必传/参数结构的设置。其中类型支持int/string/float/list/map,用于申明值内容结构;参数结构支持对复杂的数据类型,进一步定义其细节。
2.2.1 完备性/扩展性
通过分析校验规则,抽象语义,我们设定以下语法(示例):
{
"compare":"length",
"condition":[
"sdk_type",
"in",
[
"iOS",
"Android",
"js"
]
],
"assert":"true",
"assert_fail":"ERROR",
"value":36,
"key":"uuid",
"fail_msg":"did/uuid invalid",
"require":1
}
key:参数名 value_type:参数值类型,默认为string,可指定int compare:参数值检查方式,支持: in:在一系列值内 length:对于字符串类型,指定长度 regex:对字符串类型,指定正则 value:参数值约束,对于compare=in是一个list;对于compare=length是一个数值;对于compare=regex是一个正则字符串 assert:检查结果需符合的值,true或false assertfail:检查失败给出的异常等级,WARNING、ERROR、TESTWARNING fail_msg:检查失败给出的错误信息 condition:检查前置条件,符合该条件才进行检查。 require:该参数是否必须,非必需情况下,若为空则不检查
开关&配置化
2.2.2 可解释/可分析
{
"log_id":"571531737e29586094318d3bf64e9407",
"timestamp":1556174577000,
"event_type":"click",
"sdk_version":"0.7.7",
"sdk_type":"js",
"display_url":"url",
"scope":"OVERALL",
"field1":"",
"field2":"",
"status":"SUCCESS",
"value":""
}
2.3 定时监控
2.4 专项优化
2.5 评估模型
2.6 质量中心
三、现状&规划
支持更丰富的校验功能,将复杂的校验配置可视化 结合流量预测做监控告警,优化误报率 评估模型优化,结合现状,调整维度和权重 更完善的质量中心,集成快捷的优化操作 明确奖惩机制,推动业务方主动关心和优化质量问题,让前文提到的闭环,顺畅运行
大数据开发平台(Data Platform)在有赞的最佳实践 有赞数据仓库元数据系统实践 How we redesigned the NSQ - 其他特性及未来计划 HBase 写吞吐场景资源消耗量化分析及优化 有赞大数据平台安全建设实践 Flink 在有赞实时计算的实践 SparkSQL 在有赞的实践 Druid 在有赞的实践 实时计算在有赞的实践-效率提升之路 DataX在有赞大数据平台的实践 Flink 滑动窗口优化