天天看点

使用LogHub进行日志实时采集

数据采集一般有两种方式,区别如下。我们这里主要讨论通过loghub流式导入(实时)采集。

方式

优势

劣势

例子

批量导入

吞吐率大,面向历史存量数据

实时性较差

ftp、oss上传、邮寄硬盘、sql数据导出

流式导入

实时,所见即所得,面向实时数据

收集端要求高

loghub、http上传、iot,queue

“我要点外卖“是一个平台型电商网站,用户、餐厅、配送员等。用户可以在网页、app、微信、支付宝等进行下单点菜;商家拿到订单后开始加工,并自动通知周围的快递员;快递员将外卖送到用户手中。

使用LogHub进行日志实时采集

在运营的过程中,发现了如下的问题:

获取用户难,投放一笔不小的广告费对到渠道(网页、微信推送),收货了一些用户,但无法评判各渠道的效果

用户经常抱怨送货慢,但慢在什么环节,接单、配送、加工?如何优化?

用户运营,经常搞一些优惠活动(发送优惠券),但无法获得效果

调度问题,如何帮助商家在高峰时提前备货?如何调度更多的快递员到指定区域?

客服服务,用户反馈下单失败,用户背后的操作是什么?系统是否有错误?

在数据化运营的过程中,第一步是如何将散落日志数据集中收集起来,其中会遇到如下挑战:

多渠道:例如广告商、地推(传单)等

多终端:网页版、公众账号、手机、浏览器(web,m站)等

异构网:vpc、用户自建idc,阿里云ecs等

多开发语言:核心系统java、前端nginx服务器、后台支付系统c++

设备:商家有不同平台(x86,arm)设备

我们需要把散落在外部、内部日志收集起来,统一进行管理。在过去这块需要大量几种工作,现在可以通过loghub采集功能完成统一接入。

使用LogHub进行日志实时采集

wechat-server (存储微信服务器访问日志)

wechat-app (存储微信服务器应用日志)

wechat-error (错误日志)

alipay-server

alipay-app

deliver-app (送货员app状态)

deliver-error (错误日志)

web-click (h5页面点击)

server-access(服务端access-log)

server-app (应用)

coupon (应用优惠券日志)

pay (支付日志)

order(订单日志)

如需要对原始数据进行清洗与etl,可以创建一些中间结果logstore

为获取新用户,一般有2种方式:

网站注册时直接投放优惠券

其他渠道扫描二维码,投放优惠券

传单二维码

扫描网页二维码登陆

定义如下注册服务器地址,生成二维码(传单、网页)供用户注册扫描。用户扫描该页面注册时,就知道用户通过特定来源进入,并记录日志。

当服务端接受请求时,服务器输出如下日志:

time:注册时间

session: 浏览器当前session,用以跟踪行为

source:来源渠道,例如活动a为10001, 传单为10002,电梯广告为10003

ref:推荐号,是否有人推荐注册,没有则为空

params:其他参数

收集方式:

支付宝/微信公众账号编程是典型的web端模式,一般会有三种类型日志:

nginx/apache 访问日志:用以监控、实时统计

nginx/apache 错误日志

应用层日志:应用层日志要把事件产生的时间、地点、结果、延时、方法、参数等记录详细,对于扩展类字段一般放在最后

应用层错误日志:错误发生时间、代码行、错误码、原因等

商家平台设备:x86 平台设备可以用sdk、arm平台可以使用native c交叉编译

页面用户行为收集可以分为两类:

页面与后台服务器交互:例如下单,登陆、退出等。

页面无后台服务器交互:请求直接在前端处理,例如滚屏,关闭页面等。

第一种可以参考服务端采集方法

例如:

syslog日志

应用程序debug日志

trace日志

参考服务端采集方法

loghub在各region提供 访问点,每个region提供三种方式接入点:

内网(经典网):本region内服务访问,带宽链路质量最好(推荐)

公网(经典网):可以被任意访问,访问速度取决于链路质量、传输安全保障建议使用https

私网(专有网vpc):本region内vpc网络访问