大家好,首先给大家做一个简短的自我介绍,我叫陶明凯,2014 年曾在百度糯米负责大数据推荐工程侧的研发工作,后来加入到创业公司,在创业公司经历了几次从无到有的工程架构的搭建,目前就职于神策,负责中台业务的工程架构工作。今天主要给大家分享的内容是神策在 log 日志探针与动态化的探索和实践,希望能够给大家带来一些不一样的收获。
一、前言
今天的分享主要分为如下几个方面:
-
第一个方面,首先会给大家去讲一下背景,就是在数据安全私有部署的场景下,在问题诊断这个层面上所面临的一些挑战。
-
第二个方面,就是方案,我们去做这种技术选型的背后的一些思路,包括一些方法。
-
第三个方面,就是实现,我们会把一些核心的一部分代码会让大家能够看到,包括它是如何去实现认知探针,包括动态实现是怎么去做到的。
-
第四个方面,就是总结,总结其实更多的是想告诉大家,不只是把技术和工具是如何使用的告诉大家,而是要去告诉大家在技术选型的背后的思路,它的方式是什么。
希望能通过本次的分享,从整个的技术本质,包括对于技术认知,在成长方面,让大家能够有所收获。
二、背景:数据安全 & 私有部署
第一点背景,就是数据安全和数据部署。其实这一块还有一个副标题:以数据安全为基点,私有部署场景下的问题诊断,它会面临哪些挑战呢?
首先我们先讲一下神策在这一方面的一些设计理念,如下图:
第一个理念就是数据安全,这是神策我们这边非常敬重的一个理念。它能够进行私有化部署,就是以数据安全为基点,支持私有化一键自动部署。
第二个理念就是全端采集,数据采集与建模就是客户端服务器、业务数据、线下数据等,能够进行全端数据的采集与建模。
第三个理念就是多维分析,让数据采集到之后,我们能够给客户进行实时的多维度的分析,这一点是非常重要的。
第四个理念就是深度开发,我们不只是要去提供一个产品的技术层面的解决方案,更多的是能够集成一些用户的深度开发方面的需求。
在基于这 4 点设计理念的情况下,其中的数据安全是我们最核心,也是最敬重的一方面。 基于这四方面设计理念,神策会有一个整套完整的采集方案,如下图:
大家可以看到上面这个图片,从注册、浏览、下单、支付、收货这几个环节,然后通过 SDK 上传到数据仓库,然后进行一个整体的分析。其实分析从采集到分析这个链路是非常长的,当这个链路长的情况下,它会带来一个非常大的问题,只要有一个小点发生异常,发生问题,整个的排查,或者说一个请求的跟踪问题,都会面临一个非常大的挑战。这个挑战都有哪些呢?我们可以看一下,下面的图片:
第一个挑战就是保留现场。基于数据安全加私有化部署这一块,其实对于客户的操作行为,请求的入参出参是不可见的。所以说我们要想办法,要在问题发生的时候去保留完整的现场。
第二个就是快速定位,能否快速定位取决于我们的日志是否打印得非常全,包括异常,堆栈信息也是非常全,我们能够拿到请求的完整的一个链路日志,这也是我们快速定位的一个必要条件。
第三个就是动态输出,动态输出这一块其实大家可能会有这样一个痛点,就是当现场出现问题去排查日志的时候发现代码中没有记日志,是不是非常头疼?这个时候我要再去改代码&