金服平台数据分析系统各类日志数据采集方案_第1页
金服平台数据分析系统各类日志数据采集方案_第2页
金服平台数据分析系统各类日志数据采集方案_第3页
金服平台数据分析系统各类日志数据采集方案_第4页
金服平台数据分析系统各类日志数据采集方案_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档 1欢迎下载 金服平台数据分析系统 各类日志数据采集系统总体方案 修订记录 日期日期修订版本修订版本修改描述修改描述作者作者 2017 04 290 5 0 开始写金服平台数据分析系统各类日志数据采集方案 2017 05 90 7 0 初步完成移动和 Web 页面非实时日志采用 Countly 实 现日志采集与收集实现方案 2017 05 180 8 0 补充移动和 Web 页面实时日志采集部分内容 2017 05 220 8 5 初步设计拦截器实现移动和 Web 页面后端实时日志采 集构架 精品文档 2欢迎下载 1 1 金服平台移动金服平台移动 AppApp 日志内容要求规范日志内容要求规范 1 11 1 日志系统需收集更多数据时移动应用日志系统需收集更多数据时移动应用采用埋点上传日志技术与采用埋点上传日志技术与 AppApp 日志上传暂行规定日志上传暂行规定 很早之前 也就是当年的 PC 时代 由于受限于存储和计算能力 大家一般很少用日志 来分析业务 而是在业务逻辑里 将业务需要分析的数据事先写入到库里 针对库的数据 进行统计分析 所以之前做 OLAP 需要很高级的硬件支持 大家都去 IOE 等买昂贵的服务 器来做数据仓库以及进行数据分析 由于成本的问题 拿到的数据是很少的 所以进行统 计分析和挖掘所得到的收益微乎其微 随着 HadoopHadoop 的兴起 分布式文件系统和分布式计算大大降低了存储成本和计算成本 使得现在用日志分析业务成为了可能 1 1 11 1 1 移动移动 AppApp 分析的数据类型分析的数据类型 对于移动端的 App 来说 分析的数据大致上都可以分为俩种 一种是在线数据在线数据 一种 是离线数据离线数据 还有 App 业务需要的综合动态数据 简称动态数据 综合动态数据 简称动态数据 1 1 1 11 1 1 1 在线数据在线数据 精品文档 3欢迎下载 在线数据在线数据 即 App 后端服务所产生的日志数据 例如服务接口的性能数据 服务接口 的调用及其参数等 通过服务端的日志数据 我们不但可以统计服务接口的性能指标 还可以针对具体的业务逻辑 做相关的分析 一些常见的 App 分析指标如新增 活跃 累 计 留存等 也都可以通过服务日志来统计出来 因为因为 AppApp 嵌入了移动嵌入了移动 WebWeb 的的 Html5Html5 页面 故页面 故 AppApp 的在线数据包含了的在线数据包含了 AppApp 原生应用后原生应用后 端服务接口性能数据和移动端服务接口性能数据和移动 WebWeb 日志数据 日志数据 1 1 1 21 1 1 2 离线数据离线数据 对应的离线数据离线数据即是 App 客户端本身产生的数据 这种情况一般是发生在客户端不调 用底层服务的情况下 需要了解用户在客户端的行为 就需要用到离线数据 离线日志一 般记录用户在客户端的具体行为 如用户在客户端的拖动 上下滚动 翻页等不涉及到后 端服务的操作 以及 App 本身的崩溃行为产生的数据 都可以被记录 一般的 记录的内 容包括事件类型 控件编号 控件属性及相关参数 事件时间等 因为 Html5Html5 提供离线功能应用提供离线功能应用 故这里的离线数据也要考虑离线状态下 Html5 前端产 生或者使用的数据 对于离线数据还要考虑原生与对于离线数据还要考虑原生与 Html5Html5 混搭混搭 HybridHybrid 接口上原生到接口上原生到 JSJS 和和 JSJS 到原生的数到原生的数 据调用情况 据调用情况 1 1 1 31 1 1 3 动态数据动态数据 针对针对 AppApp 为了统计和分析 为了统计和分析服务成功率 服务耗时 连接成功率和连接耗时等性能和质服务成功率 服务耗时 连接成功率和连接耗时等性能和质 量 新增加量 新增加除了上述在线数据和离线数据的第三种类型数据 暂时命名为综合动态数据综合动态数据 简简 称动态数据称动态数据 一个 综合 动态数据内容主要记录了用户开始操作一个 App 界面元素 发送 Http 请求 接收对应的 Http 响应 界面展现等时间点 过程中内存流量和处理失败原因 对 综合 动态数据和与之关联的在线数据进行关联分析 可以统计出服务成功率 服务耗 时 连接成功率和连接耗时等性能和质量数据 1 1 21 1 2 在线日志在线日志 精品文档 4欢迎下载 在线日志 一般来讲 有两种 webweb 服务器的配置化 log 如 Nginx apache 等 web 服务器的 access log 这一类日志不 需要用户自己做实现 只需要开启 web 服务器的相关日志功能 即可完成日志记录 应用服务器的应用服务器的 loglog 一般包括应用服务器的配置化 log 以及 用户自定义的 log 用户自 定义 log 包括用户通过相关日志组件自己的 debug waring error info 等级别的日志 这一类日志没有固定的格式 完全有用户自行控制 在线日志一般会伴随业务直接产生 在相关的业务服务器上 web 服务器日志产生在 web 服务器上 但是有的时候 为了将 相关服务的监控日志与业务分析日志分离 会将业务日志直接记录在一台独立的日志服 务器上 这里 这里 AppApp 的在线日志主要包含上述的在线日志主要包含上述 1 1 11 1 1 章节涉及的在线数据类型包含的章节涉及的在线数据类型包含的 AppApp 原生原生 应用后端服务接口性能数据日志和应用后端服务接口性能数据日志和 Html5Html5 移动后端移动后端 WebWeb 日志 日志 1 1 31 1 3 离线日志离线日志 离线日志 和离线数据有关的 一般也有两种 客户端的客户端的 本地本地 行为日志行为日志 用户在操作 App 的时候 客户端不调用底层服务的情况下 产 生的行为 都可以记录下来 行为日志一般是用来研究用户使用习惯 分析应用的使用 热度的 同时可以结合客户端异常日志来分析异常原因 客户端的客户端的 本地本地 异常日志 异常日志 用来监控客户端异常原因 帮助解决相关问题 针对针对 AppApp 的离线日志除了涉及到的离线日志除了涉及到 AppApp 客户端行为日志与异常日志 还要包含客户端行为日志与异常日志 还要包含 Html5Html5 离离 线状态数据日志和线状态数据日志和 HybridHybrid 接口数据日志 接口数据日志 1 1 41 1 4 综合综合 动态日志动态日志 综合 动态日志是针对 App 统计和分析服务成功率 服务耗时 连接成功率和连接耗 时等性能和质量新增加的日志 该日志数据类型是上述 1 1 1 章节涉及的 综合 动态数据 1 1 51 1 5 埋点及上传埋点及上传 精品文档 5欢迎下载 不管是在线日志 还是离线日志 或者 综合 动态日志 首先都要确认在什么地方记在什么地方记 录日志录日志 于是就引入了埋点埋点的概念 通俗的讲 在正常业务代码逻辑上 添加记录日志的 代码 都叫做埋点 但是一般的 埋点只用来描述客户端日志记录 由于在线日志是直接产生在服务器端 日志采集工具可以直接从含有日志的服务器上 采集日志数据到相应的文件系统 所以不存在日志上传的问题 但是对于离线日志和 综 合 动态日志来说 数据是产生在 App 客户端的 所以上传机制必须考虑 1 1 61 1 6 离线日志和动态日志上传机制离线日志和动态日志上传机制 业界采用的离线日志上传机制如下 服务端提供日志记录接口 当客户端有事件时 直接调用日志记录接口将日志记录 在服务器端 服务端提供日志上传接口 客户端先将日志暂存客户端本地 当达到一定的大小 网络环境允许的情况下 通过上传接口 将日志文件打包压缩后上传 第一种上传方式 时效性方面有一定的保障时效性方面有一定的保障 在网络环境允许的情况下 能及时的将 信息记录到服务器 但是当埋点较多时 记录日志产生的流量会很大但是当埋点较多时 记录日志产生的流量会很大 占据很大的带宽 给用户带来损失 同时 前端的某些行为 如在某个 activity 停留时间等也无法通过这种 在线的方式捕获 还有一个重要的问题是 由于客户端数据没有暂存机制 当网络暂时无 法使用时 日志记录接口无法正常调用 所有的日志也就随之丢失 第二种方式 在时效性上较差在时效性上较差 因为它需要等待数据累计到一定程度 或者网络允许 的情况下 如在 wifi 情况下 才发送 但是占用的带宽相对较小 对客户端动作的捕获较 为灵活 对于的对于的离线日志和 综合 动态日志 建议采用离线日志和 综合 动态日志 建议采用第二种日志上传方式 第二种日志上传方式 AppApp 的实时日志和的实时日志和 PC webPC web 的页面实时日志在后台的的页面实时日志在后台的 ActionAction 或者或者 ControllerController 上处理 上处理 详细参见详细参见 3 23 2 移动移动 AppApp 和和 WebWeb 的实时业务日志采集方案 的实时业务日志采集方案 精品文档 6欢迎下载 1 1 71 1 7 埋点的三种方案埋点的三种方案 1 1 7 11 1 7 1 传统埋点 传统埋点 开发者直接在客户端埋点 优点 开发者可以随意的在任何地方添加埋点 缺点 成本高 每次埋点的增删改都需要发版 很难控制 启明星现在采用的就是传统 的埋点方式 由于之前没有统一的规划 相关页面的同一个按钮 不同的版本功能不 同 但却埋了同一个点 造成统计比较混乱 之后引入了埋点下发平台 虽然一定程度 上缓解了这种问题 但是由于其灵活性以及主观性 问题依然无法避免 1 1 7 21 1 7 2 可视化埋点可视化埋点 精品文档 7欢迎下载 由于传统埋点的一系列问题 自然而然的就产生了可视化埋点的方案 用可视化交互 的手段来代替写代码 将核心代码和配置 资源分开 在 App 启动时通过网络更新配置和 资源来实现埋点功能 可视化埋点的大体流程如下 首先埋点服务平台与埋点客户机做关联 包括客户机包含的埋点模块扫描当前整个客户 端页面的控件 形成控件树 并将当前页面截图 发送给埋点服务端平台 埋点服务端平台接收到截图和控件树数据后 在服务端重新绘制 App 界面 通过可视化 交互的方式 给当前页面需要埋点的控件上添加事件 添加完毕后 形成配置文件 并 发布上线 装有埋点模块的所有客户端 接收到配置文件并解析 根据配置为页面中相关的控件添 加监听事件 当这些控件出发事件时记录日志 其中有很多细节的地方需要注意 可视化埋点也需要考虑不同版本之间埋点的差异 可视化埋点在分发埋点配置文件的时候 会有延迟或者丢失的情况 有的客户端有可能 收不到或者很久才能收到配置文件 这样埋点的时效性会大打折扣 1 1 7 31 1 7 3 无埋点无埋点 所谓的无埋点 其实也就是全埋点 它和可视化埋点很像 可视化埋点是根据埋点配 置来收集数据 而无埋点方案则是尽可能的收集所有控件的操作数据 实现原理也很简单 客户端添加扫描代码 为每个扫描到的控件添加监听事件 当事件被触发后 记录日志 其实 大家对此也不陌生 比如很早之前 对 PC 站点的统计 各大分析平台 都需要 在网页之间添加一段 js 代码 其实那段 js 代码 就是现在提到的无埋点 的扫描代码 这里强调一下 由于可视化埋点是在需要的时候才埋点 所以它并不能回溯事件 也 就是说 只能统计需求提出后 埋点开始的所有的数据 埋点之前的数据是拿不到的 而 无埋点方案 在开始埋点的时候 所有的数据已经都被记录了 所以它可以查看之前的数 精品文档 8欢迎下载 据 这里的之前也是相对与提统计需求的时间 而不是相对于埋点的时间 也就是说它可 以做回溯 而这种回溯是建立在大量存储要求的基础上的 AppApp 暂行采用传统埋点方案 暂行采用传统埋点方案 1 21 2 移动移动 AppApp 日志内容参考格式日志内容参考格式 具体根据需求确定具体根据需求确定 1 2 21 2 2 AppApp 客户端离线日志内容格式客户端离线日志内容格式 参考或草拟参考或草拟 当前字段有 参考阿里巴巴移动数据日志分析数据字段 字段名字段名类型类型注释注释 app idstring 当前统一为 888888 app namestring app id 对应的 app 中文名称 app versionstring app 的应用版本号 channelstring 应用分发渠道 imeistring 移动设备国际身份码的缩写 imsistring 国际移动用户识别码 brandstring 手机或终端的品牌 device modelstring 手机或终端的机型 resolutionstring 手机或终端的屏幕分辨率 osstring 操作系统 如 Android iPhone OS os versionstring 操作系统的版本 精品文档 9欢迎下载 字段名字段名类型类型注释注释 carrierstring 移动运营商 如 中国移动 中国联通 中国电信 accessstring 连接的网络 如 2G 3G Wi Fi 4G access subtypestring 网络类型 如 HSPA EVDO EDGE GPRS 等 network typestring 根据 access acess subtype 转化后的网络类型 schoolstring 根据 client ip 如果为校园网解析出的学校 由服务器分析 client ipstring 客户端 ip 是服务端获取到的外网 IP 不是 app 上传的 longitudestring 经度 latitudestring 纬度 countrystring 根据 client ip 解析出的国家或地区 由服务器分析 provincestring 根据 client ip 解析出的省 直辖市 自治区 由服务器分析 citystring 根据 client ip 解析出的地级市 由服务器分析 districtstring 根据 client ip 解析出的区 县 县级市 由服务器分析 session idstring 用户的一次会话 id 就是 token reach timestring 到达日志服务器的时间 此时间可作为日志时间直接使用 格式为 yyyyMMddHHmmss 注意本字段在注意本字段在 AppApp 上传时为空上传时为空 event idstring 埋点的事件埋点的事件 ID ID 或者用户行为的标识或者用户行为的标识 ID ID last pagestring 当前页面来源页 上一页 的页面标题 精品文档 10欢迎下载 字段名字段名类型类型注释注释 Last urlstring 当前页面来源页 上一页 的页面 URL 可以是空 start nowpage timestring 用户最初进入当前页面的时间点 用于计算当前页面的停留时间 now page titlestring 当前用户离线行为发生时的当前页面 now page timestring 当前用户离线行为发生时的时间 now page area idstring 标记点击所在页面的栏位所属的区域 如首页的个性化栏位 now content idstring 表示业务内容的 ID 例如栏目页的分类 ID 搜词页的关键词 促销页的 促销活动 ID 详情页的商品 ID 或者下单页的订单 ID next pagestring 当前用户行为导致的切换页面 next page timesizestring 切换页面后打开页面时间大小 arg1string 事件参数 当前页面更新时间点 不涉及页面切换 arg2string 事件参数 内存流量峰值 参考 arg3string 事件参数 电池消耗下降峰值 参考 arg4string 保留事件参数 1 arg5string 保留事件参数 2 argsstring 事件参数 00000 表示事件成功 99999 表示离线行为事件的结果为失败 arg1 对应失 败原因 如 sysexit 异常退出 actfail 离线行为失败 sysdie 系统僵 死 local timestring 终端时间 格式为 yyyy mm dd hh24 mi ss 上报服务器时的时间 精品文档 11欢迎下载 字段名字段名类型类型注释注释 local timestampstring 终端时间 格式为数字型的 unix 时间 精确到毫秒 可通过 from unixtime 函数转换成日期 utdidstring 服务端生成的设备唯一标识符 设备出厂参数有关 与 SIM 卡无关 user nickstring 长登录会员名称 长登录是指只要登录一次就会记住该设备最近一次登 录会员 即使该设备下一次打开 App 且没有登录 其日志也会记录该设 备最近一次登录会员 user idstring 长登录会员 id short user nickstring 短登录会员名称 短登录是指当前处于登录状态的会员 short user idstring 短登录会员 id dsstring 分区字段 表示日期 一般格式为 yyyymmdd hourstring 分区字段 表示小时 一般格式为 hh abteststring 用于 AB 测试的流量分组 ID 例如 a 表示第一组 b 表示第二组 c 表示 第三组 Z 表示当前 0 组即没有分组 事件 ID 即 event id 类型如下 事件 ID 含义 详解 后续由 app 主管负责根据实际情况补充事件 ID 离 线日志 event id 范围是 200000 到 299999 其中 200000 到 249999 是正常行为日志事件 id 范围 250000 到 259999 是离 线日志异常事件 id 离线日志异常事件是 App 自身发生的 不 是离线行为导致的 200000 本地行为本地行为 日志日志 事件 用户在客户端的拖动 精品文档 12欢迎下载 事件 ID 含义 详解 后续由 app 主管负责根据实际情况补充事件 ID 离 线日志 event id 范围是 200000 到 299999 其中 200000 到 249999 是正常行为日志事件 id 范围 250000 到 259999 是离 线日志异常事件 id 离线日志异常事件是 App 自身发生的 不 是离线行为导致的 200001 本地行为本地行为 日志日志 事件 上下滚动 200002 本地行为本地行为 日志日志 事件 翻页 250000 本地异常 日志 事件 android 手机 java crash 250001 本地异常 日志 事件 android 手机 native crash iOS crash 250002 本地异常 日志 事件 Android ios 僵死 260000 Hybrid Hybrid 接接 口数据口数据 事 件 原生到 JS 260001 Hybrid Hybrid 接接 口数据口数据 事 件 JS 到原生 260002 Hybrid Hybrid 接接 口数据口数据 事 切换发生错误 精品文档 13欢迎下载 事件 ID 含义 详解 后续由 app 主管负责根据实际情况补充事件 ID 离 线日志 event id 范围是 200000 到 299999 其中 200000 到 249999 是正常行为日志事件 id 范围 250000 到 259999 是离 线日志异常事件 id 离线日志异常事件是 App 自身发生的 不 是离线行为导致的 件 270000 Html5Html5 离线离线 状态数据日状态数据日 志志事件 写本地数据库 270001 Html5Html5 离线离线 状态数据日状态数据日 志志事件 读本地数据库 270002 Html5Html5 离线离线 状态数据日状态数据日 志志事件 1 2 31 2 3 AppApp 客户端客户端 综合综合 动态日志内容格式动态日志内容格式 参考或草拟参考或草拟 当前字段有 字段名字段名类型类型注释注释 精品文档 14欢迎下载 字段名字段名类型类型注释注释 app idstring 当前统一为 888888 app namestring app id 对应的 app 中文名称 app versionstring app 的应用版本号 channelstring 应用分发渠道 imeistring 移动设备国际身份码的缩写 imsistring 国际移动用户识别码 brandstring 手机或终端的品牌 device modelstring 手机或终端的机型 resolutionstring 手机或终端的屏幕分辨率 osstring 操作系统 如 Android iPhone OS os versionstring 操作系统的版本 carrierstring 移动运营商 如 中国移动 中国联通 中国电信 accessstring 连接的网络 如 2G 3G Wi Fi access subtypestring 网络类型 如 HSPA EVDO EDGE GPRS 等 network typestring 根据 access acess subtype 转化后的网络类型 schoolstring 根据 client ip 如果为校园网解析出的学校 由服务器分析 client ipstring 客户端 ip 是服务端获取到的外网 IP 不是 app 上传的 精品文档 15欢迎下载 字段名字段名类型类型注释注释 longitudestring 经度 latitudestring 纬度 countrystring 根据 client ip 解析出的国家或地区 由服务器分析 provincestring 根据 client ip 解析出的省 直辖市 自治区 由服务器分析 citystring 根据 client ip 解析出的地级市 由服务器分析 districtstring 根据 client ip 解析出的区 县 县级市 由服务器分析 session idstring 用户的一次会话 id 就是 token reach timestring 到达日志服务器的时间 此时间可作为日志时间直接使用 格式为 yyyyMMddHHmmss 注意本字段在注意本字段在 AppApp 上传时为空上传时为空 event idstring 埋点的事件埋点的事件 ID ID 或者用户行为的标识或者用户行为的标识 IDID 例如点击商品详情为 例如点击商品详情为 和和 AppApp 访问服务器的原生接口方法名是一一对应的访问服务器的原生接口方法名是一一对应的 last pagestring 当前页面来源页 上一页 的页面标题 Last urlstring 当前页面来源页 上一页 的页面 URL 可以是空 start nowpage timestring 用户最初进入当前页面的时间点 用于计算当前页面的停留时间 now page titlestring 当前用户行为发生时的页面 now page area idstring 标记点击所在页面的栏位所属的区域 如首页的个性化栏位 now content idstring 表示业务内容的 ID 例如栏目页的分类 ID 搜词页的关键词 促销页的 促销活动 ID 详情页的商品 ID 或者下单页的订单 ID 精品文档 16欢迎下载 字段名字段名类型类型注释注释 now page timestring 当前用户行为发生 或者触发 click 时的时间 一般情况与 arg4 相同 next page titlestring 当前用户行为导致的切换页面 next urlstring 当前用户行为导致的切换页面 URL 可以是空 next page jumptimestring 页面即将切换或者跳转的时间点 arg1string 事件参数 不是页面变换的 当前页面更新时间点 arg2string 事件参数 内存流量峰值 参考 arg3string 事件参数 电池消耗下降峰值 参考 arg4string 事件参数 发送 http 请求时间点 arg5string 事件参数 接收到 http 响应时间点 arg6string 保留事件参数 1 arg7string 保留事件参数 2 argsstring 事件参数 00000 表示事件成功 99999 表示事件失败 argg1 对应失败 原因 如 timeout 超时 netexcept 网络异常 local timestring 终端时间 格式为 yyyy mm dd hh24 mi ss 上报服务器时的时间 local timestampstring 终端时间 格式为数字型的 unix 时间 精确到毫秒 可通过 from unixtime 函数转换成日期 utdidstring 服务端生成的设备唯一标识符 设备出厂参数有关 与 SIM 卡无关 精品文档 17欢迎下载 字段名字段名类型类型注释注释 user nickstring 长登录会员名称 长登录是指只要登录一次就会记住该设备最近一次登 录会员 即使该设备下一次打开 App 且没有登录 其日志也会记录该设 备最近一次登录会员 user idstring 长登录会员 id short user nickstring 短登录会员名称 短登录是指当前处于登录状态的会员 short user idstring 短登录会员 id dsstring 分区字段 表示日期 一般格式为 yyyymmdd hourstring 分区字段 表示小时 一般格式为 hh abteststring 用于 AB 测试的流量分组 ID 例如 a 表示第一组 b 表示第二组 c 表示 第三组 Z 表示当前 0 组即没有分组 事件 ID 即 event id 类型如下 事件 ID含义详解 动态日志 event id 范围 100000 到 199999 100000 注册事件对应注册接口 100001 登录事件对应登录接口 100002 启动事件App 启动 一般用于计算启动次数 100003 退出事件App 退出 一般用于计算时长 精品文档 18欢迎下载 事件 ID含义详解 动态日志 event id 范围 100000 到 199999 2 2 金服平台业务系统金服平台业务系统 WebWeb 日志内容要求规范日志内容要求规范 2 12 1 网站网站 WebWeb 收集数据常用方法简介收集数据常用方法简介 眼下网站分析数据主要有三种收集方式 WebWeb 日志日志 JavaScriptJavaScript 标记标记和包嗅探器包嗅探器 2 1 12 1 1 以以 WebWeb 日志的方式日志的方式 Web 日志收集数据的过程示意图如下 精品文档 19欢迎下载 从上图可以看出网站分析数据的收集从网站访问者输入 URL 向网站服务器发出 http 请求就开始了 网站服务器接收到请求后会在自己的 Log 文件中追加一条记录 记录内容 包括 远程主机名 或者是 IP 地址 登录名 登录全名 发请求的日期 发请求的时间 请求的详细 包括请求的方法 地址 协议 请求返回的状态 请求文档的大小 随后 网站服务器将页面返回到访问者的浏览器内得以展现 一些专业的工具厂商会有专门的处理服务器对大量的 Log 数据进行处理 并将处理后的 数据存放入自己的数据库中 网站经营人员通过访问分析报表系统查看网站的分析数据 也有一些中小网站主出于成本的考虑不会求助于专业的工具厂商 他们会借助简单的网站 日志分析软件完成对 Log 数据的处理 当然处理后的数据会有一定的局限性 2 1 22 1 2 以以 JavaScriptJavaScript 标记的方式标记的方式 又称又称 埋码技术埋码技术 或者网络信标或者网络信标 JavaScript 标记收集数据的过程示意图如下 上图所示 JavaScript 标记同 Web 日志收集数据一样 从网站访问者发出 http 请求 开始 不同的是 JavaScript 标记返回给访问者的网页代码中会包含一段特殊的 JavaScript 代码 当页面展示的同时这段代码也得以执行 这段代码会从访问者的 Cookie 中取得详细信息 访问时间 浏览器信息 工具厂商赋予当前访问者的 userID 等 并发送 到工具商的数据收集服务器 数据收集服务器对收集到的数据处理后存入数据库中 网站 经营人员通过访问分析报表系统查看这些数据 网站统计中的网站统计中的 JSJS 方式的数据收集原理及实现 详方式的数据收集原理及实现 详 情情 参参 见见 http http document document 1089 html 1089 html 精品文档 20欢迎下载 JavaScript 标记以其快捷性和精确性已经得到大多数工具厂商的青睐 已经发展成为当 前最为流行的数据收集方式 2 1 32 1 3 包嗅探器的方式包嗅探器的方式 下图是包嗅探器收集数据过程的示意图 上图可以看出网站访问者发出的请求到达网站服务器之前 会先经过包嗅探器 然后 包嗅探器才会将请求发送到网站服务器 包嗅探器收集到的数据经过工具厂商的处理服务 器后存入数据库 随后网站经营人员就可以通过分析报表系统看到这些数据 2 1 42 1 4 数据收集方式的优劣比较数据收集方式的优劣比较 没有一种数据收集方式是完美无缺的 不同数据收集方式也决定了各自的特性 了解不同 收集方式的优劣所在 会对工具的选择也有一定的指导作用 下表是三种数据收集方式的优劣比较详细 WebWeb 日志日志JavaScriptJavaScript 标记标记包嗅探器包嗅探器 精品文档 21欢迎下载 优点 比较容易获取数据源 方便对历史数据再处理 可以记录搜索引擎爬虫的访问记录 记录文件下载状况 数据收集灵活 可定制性强 可以记录缓存 代理服务器访问 对访问者行动追踪更为准确 对跨域访问的监测比较方便 取得实时数据比较方便 缺点 无法记录缓存 代理服务器访问 无法捕获自定义的业务信息 对访问者的定位过于模糊 对跨域访问的监测比较麻烦 用户端的 JS 设置会影响数据收集 记录下载和重定向数据比较困难 会增加网站的 JS 脚本负荷 初期导入费用较高 无法记录缓存 代理服务器访问 对用户数据隐私有安全隐患 决定选择采用哪种数据收集方式之前 你需要先了解自己的需求 如果你不想自己 网站的流量数据被任何第三方获取 那么 Web 日志无疑是你的最佳选择了 但想得到更贴 近网站访问者行为的精确数据 还是需要采用 JavaScript 标记收集数据 这种数据收集方 式不仅可以对缓存访问 代理访问正确记录 而且可以通过 Cookie 对独立访问者进行更为 精确的定位 当然也有一些网站为了获得多方面的数据而同时采取多种数据收集方式 例如采用 JavaScript 标记收集精确数据的同时 为了搜索引擎优化对 Web 日志中的搜索引擎爬虫记 录也进行分析 也有已经采用包嗅探器收集数据 但为获取缓存访问而同时进行 JavaScript 标记 金服平台业务金服平台业务 PCPC WebWeb 页面非实时日志采集方案页面非实时日志采集方案采用采用 JSJS 标记标记 埋码或者网络信标埋码或者网络信标 方方 式 式 金服平台业务金服平台业务 PCPC WebWeb 页面实时日志采集方案 页面实时日志采集方案 详细参见详细参见 3 23 2 移动移动 AppApp 和和 WebWeb 的实时的实时 业务日志采集方案 业务日志采集方案 3 3 业务系统移动业务系统移动 AppApp 日志和日志和 WebWeb 页面非实时日志与实时采集与页面非实时日志与实时采集与 收集方案收集方案 3 13 1 移动移动 AppApp 和和 WebWeb 页面非实时日志采集与收集采用页面非实时日志采集与收集采用 CountlyCountly 框架框架 3 1 13 1 1 CountlyCountly 简介简介 精品文档 22欢迎下载 Countly 是一站式的数据分析平台 可同时跟踪移动和网络用户 分为社区版 云版 本和企业版 版本提供的功能对比表如下 Countly 是一款创新实时移动和 Web 分析软件 专注于易用性 扩展性和功能丰富程 度 Countly 包括服务器 移动 SDK 适用于移动分析 或 Web SDK 适用于 Web 分析 所有组件均可根据许可条款在公司内应用程序中自由使用 Countly 服务器部分由在端口 80 运行的服务组成 允许系统管理员连接到用户界面 并获取关于被跟踪应用程序的见解 移动部分包括适用于各种智能手机 平板电脑和桌面 操作系统 Windows 和 Mac OS X 的 SDK Web SDK 与之类似 用于跟踪整个站点的网页 活动 3 1 23 1 2 CountlyCountly 自定义事件自定义事件 自定义事件 它是一种可用于将任何类型的数据发送到 Countly 服务器的强大功能 精品文档 23欢迎下载 基本结构基本结构 最简单的事件对象的结构如下 JavaScriptJavaScript key button click count 1 以下属性是事件的唯一强制属性 key 识别事件 count 是发生此事件的次数 如果事件与全部数值数据 如购买 紧密相关 我们可以使用 sum 进行跟踪 JavaScriptJavaScript key in app purchase count 1 sum 0 99 分段分段 在基础基础部分中 我们会看到只有 count 和 sum 属性的示例 in app purchase 事件 能够跟踪购买总数和购买总金额非常好 但有时我们可能需要更详细的信息 购买次数最多的是哪种商品 根据应用程序内购买哪个国家是顶级销售员 哪个应用程序版本销量更高 通过分段可以对事件进行归类 标记以回答所有这些问题和更多问题 通过简单地将分段键 值对添加到事件便可以跟踪详细指标 JavaScriptJavaScript 精品文档 24欢迎下载 key in app purchase count 1 sum 0 99 segmentation app version 1 0 country Turkey item sword 3 1 33 1 3 使用使用 CountlyCountly 常见技术问题常见技术问题 请介绍请介绍 CountlyCountly 平台如何操作 平台如何操作 在应用程序中安装 Countly SDK 后 该应用程序用户开始将事件数据发送至 Countly 服 务器 Countly 从这些事件中收集用户操作 行为 所使用电信公司等相关信息 CountlyCountly 使用哪种语言编写 使用哪种语言编写 正在使用 Node js 和 MongoDB 后端和前端完全由 javascript 编写 您可以查看 API 代码 该代码从客户端 SDK 收集数据并将此数据写入数据库 事件和会话数据如何发送至事件和会话数据如何发送至 CountlyCountly 随着用户打开应用程序 Countly SDK 将开始按您定义的方式收集数据 对事件和会话进 行收集 随后每 60 秒使用 HTTPS 请求发送至 Countly 或您的 服务器 如果在应用内记录超过 10 个不同事件 甚至无需等到下次发送 将立即发送 CountlyCountly 是否实时显示我的数据 是否实时显示我的数据 所有报告和图表均实时显示 后台中不运行批处理以可视化或收集数据 因此无需等待下 次处理运行 CountlyCountly 是否会降低移动应用程序反应速度 是否会降低移动应用程序反应速度 精品文档 25欢迎下载 轻型 SDK 异步工作 不会阻碍代码内任何函数调用 iOS 性能分析表明 SDK 只占用总 CPU 使用量的 2 与发送应用内视频的高 CPU 和数据占用服务相比 我们明显具有优势 使用 Android 性能分析程序进行的测试表明 在 5 分钟会话 发送 5 个事件和 8 条请 求的典型使用场景中 对于单核 CPU Countly 占用不到 0 1 的 CPU 时间 对于多核 CPU 此数值将低于 0 1 SDKSDK 无法发送请求时会发生什么情况 无法发送请求时会发生什么情况 如果移动程序无法发送事件信息 主要是由于设备未连接到互联网 用户乘坐飞机或地铁 等事实 此时此信息将存储在非易失性存储器中 连接建立后 将立即发送至服务器并 将数据从队列中移除 CountlyCountly 服务器能够处理多少用户 服务器能够处理多少用户 在测试中 高配置服务器每秒可以处理 700 个事件 约为 20 000 个并行移动用户 请 参见实施和配置场景了解可选安装方案 但请勿将此数字作为参考 该数字在很大程度上 依赖于事件数量 网络负载 配置 磁盘速度 RAM 大小和许多其他条件 请注意这些数字适用于请注意这些数字适用于 CountlyCountly 社区版 社区版 3 1 43 1 4 使用使用 CountlyCountly 的用户的用户 精品文档 26欢迎下载 精品文档 27欢迎下载 精品文档 28欢迎下载 3 1 53 1 5 移动和移动和 WebWeb 页面页面非实时日志非实时日志采用采用 CountlyCountly 实现日志采集与收集实现方案实现日志采集与收集实现方案 3 1 5 1 非实时日志收集与采集实现架构非实时日志收集与采集实现架构 3 1 5 2 Web 页面定制 埋点 JS 信标 实现采集非实时 web 日志 1 npm install countly sdk web 2 设置异步使用 Web SDK 异步使用 Web SDK 不阻止加载内容 并在它没加载统计脚本情况使用 通过 Countly q 调用或同步允许脚本加载 在页面的关闭前标签插入异步代码 举例如下 Countly init provide your app key that you retrieved from Countly dashboard 精品文档 29欢迎下载 app key YOUR APP KEY provide your server IP or name Use try count ly for EE trial server if you use your own server make sure you have https enabled if you use https below url track sessions automatically Countly track sessions track pageviews automatically Countly track pageview 3 页面自定义事件 send event on button click function clickEvent ob Countly q push add event key asyncButtonClick segmentation id ob id 精品文档 30欢迎下载 自定义事件可跟踪您的网站上的任何行为 也可提通过分段 segments 查看段值 segment values 以分解用户行为 举例如下 Countly q push add event key click count 1 sum 1 5 dur 30 segmentation key1 value1 key2 value2 4 4 采用辅助方法轻松地跟踪网络上最常见的行为采用辅助方法轻松地跟踪网络上最常见的行为 自动化跟踪用户会话 Countly q push track sessions 跟踪页面浏览数 page views 使用 location path 为页面名称跟踪当前页面 Countly q push track pageview Ajax web 应用程序更新的内容和单页 传递页面名称以记录新页面浏览记录 Countly q push track pageview pagename 其他常见行为不一一列举 这些辅助跟踪网络常见行为的事件记录结构 详解参见CountlyWebSDKCountlyWebSDK 里里 Countly jsCountly js 精品文档 31欢迎下载 5 5 修改修改 CountlyWebSDKCountlyWebSDK 里里 Countly jsCountly js 里里 sendXmlHttpRequest params sendXmlHttpRequest params callback callback apiPathapiPath 的值的值 apiPath 对应 CountlyServer Web 插件处理页面非实时 web 日志的 URL 路径后面部分 3 1 5 33 1 5 3 CountlyServerCountlyServer WebWeb 插件定制插件定制 AjaxAjax get postget post 处理处理 WebWeb 页面非实时页面非实时 webweb 日志日志 CountlyServer Web 插件位置在 countly server master plugins web 需 要处理前端页面非实时页面非实时 webweb 日志的文件是日志的文件是 web frontend app js web frontend app js 1 解析页面自定义事件 2 解析网络常见行为 请求事件 3 归纳综合自定义事件和请求事件为统一页面采集非实时业务字段存入 Web 业务 log 文本 文件 统一页面采集业务字段表格 字段字段含义含义必须必须备注备注 client ip 客户端 IP在服务器获取的客 户端网关入口地址 referrer url 当前页的来源页 上一页 的 URL request url 当前界面的 URL forward url 即将跳转页面的 URL ie type IE 类型 精品文档 32欢迎下载 client type 访问 web 的终端类型 mobile or pc user id 网站会员 ID session id 会话 ID page area id 页面区域 ID 标记点击所在页面的栏位所属的区域 如 首页的个性化栏位 in action array 页面内部 action 和后台有交互 系列事件有关数据结 构 JSON 格式 否如 Ajax 调用或者单页 面 详解见本表格后 in nonaction array 页面内部非 action 不和后台有交互 系列事件有关数 据结构 JSON 格式 否详解见本表格后 event id 用户行为 导致页面跳转 的事件标识 ID 例如点击商品 详情为 blueshirt detail action id 页面跳转的后台 action 相对路径 action time 用户行为的客户端时刻用于对应 web 端后 台实时日志记录 page date Web 页面打开的日期 YYYY Month Day response time 页面的响应时长 break time 用户停留时长 content id 表示业务内容的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论