使⽤LogHub进⾏⽇志实时采集
⽇志服务提供⽇志数据实时采集与消费,其中实时采集功能⽀持30+种⼿段,这⾥简单介绍下各场景的接⼊⽅式。
数据采集⼀般有两种⽅式,区别如下。我们这⾥主要讨论通过LogHub流式导⼊(实时)采集。
⽅式优势劣势例⼦
批量导⼊吞吐率⼤,⾯向历史存量数据实时性较差FTP、OSS上传、邮寄硬盘、SQL数据导出
流式导⼊实时,所见即所得,⾯向实时数据收集端要求⾼LogHub、HTTP上传、IOT,Queue
背景
“我要点外卖“是⼀个平台型电商⽹站,⽤户、餐厅、配送员等。⽤户可以在⽹页、App、、⽀付宝等进⾏下单点菜;商家拿到订单后开始加⼯,并⾃动通知周围的快递员;快递员将外卖送到⽤户⼿中。
运营需求
在运营的过程中,发现了如下的问题:
1. 获取⽤户难,投放⼀笔不⼩的⼴告费对到渠道(⽹页、推送),收货了⼀些⽤户,但⽆法评判各渠道的效果
2. ⽤户经常抱怨送货慢,但慢在什么环节,接单、配送、加⼯?如何优化?
3. ⽤户运营,经常搞⼀些优惠活动(发送优惠券),但⽆法获得效果
4. 调度问题,如何帮助商家在⾼峰时提前备货?如何调度更多的快递员到指定区域?
5. 客服服务,⽤户反馈下单失败,⽤户背后的操作是什么?系统是否有错误?
数据采集难点
在数据化运营的过程中,第⼀步是如何将散落⽇志数据集中收集起来,其中会遇到如下挑战:
多渠道:例如⼴告商、地推(传单)等
多终端:⽹页版、公众账号、⼿机、浏览器(web,m站)等
异构⽹:VPC、⽤户⾃建IDC,阿⾥云ECS等
多开发语⾔:核⼼系统Java、前端Nginx服务器、后台⽀付系统C++
设备:商家有不同平台(X86,ARM)设备
我们需要把散落在外部、内部⽇志收集起来,统⼀进⾏管理。在过去这块需要⼤量⼏种⼯作,现在可以通过LogHub采集功能完成统⼀接⼊。
⽇志统⼀管理、配置
1. 创建管理⽇志项⽬,例如叫myorder
2. 为不同数据源产⽣⽇志创建⽇志库,例如:
1. wechat-server (存储服务器访问⽇志)
2. wechat-app (存储服务器应⽤⽇志)
3. wechat-error (错误⽇志)
4. alipay-server
5. alipay-app
6. deliver-app (送货员app状态)
7. deliver-error (错误⽇志)
8. web-click (H5页⾯点击)
9. server-access(服务端Access-Log)
10. server-app (应⽤)
11. coupon (应⽤优惠券⽇志)
12. pay (⽀付⽇志)
13. order(订单⽇志)
3. 如需要对原始数据进⾏清洗与ETL,可以创建⼀些中间结果logstore
1. 参考
(更多操作可以参见)
⽤户推⼴⽇志采集
为获取新⽤户,⼀般有2种⽅式:
1. ⽹站注册时直接投放优惠券
2. 其他渠道扫描⼆维码,投放优惠券
1. 传单⼆维码
2. 扫描⽹页⼆维码登陆
做法
定义如下注册服务器地址,⽣成⼆维码(传单、⽹页)供⽤户注册扫描。⽤户扫描该页⾯注册时,就知道⽤户通过特定来源进⼊,并记录⽇志。
examplewebsite/login?source=10012&ref=kd4b
当服务端接受请求时,服务器输出如下⽇志:
2016-06-20 19:00:00 e41234ab342ef034,102345,5k4d,467890
time:注册时间
session: 浏览器当前session,⽤以跟踪⾏为
source:来源渠道,例如活动A为10001, 传单为10002,电梯⼴告为10003
ref:推荐号,是否有⼈推荐注册,没有则为空
params:其他参数
收集⽅式:
1. 应⽤程序输出⽇志到硬盘,通过
2. 应⽤程序通过SDK写⼊,参见
服务端数据采集
⽀付宝/公众账号编程是典型的Web端模式,⼀般会有三种类型⽇志:
Nginx/Apache 访问⽇志:⽤以监控、实时统计
10.1.168.193 - - [01/Mar/2012:16:12:07 +0800] "GET /Send?AccessKeyId=8225105404 HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64
Nginx/Apache 错误⽇志
2016/04/18 18:59:01 [error] 26671#0: *20949999 connect() to unix:/tmp/fastcgi.socket failed (111: Connection refused) while connecting to upstream 应⽤层⽇志:应⽤层⽇志要把事件产⽣的时间、地点、结果、延时、⽅法、参数等记录详细,对于扩展类字段⼀般放在最后
{
"time":"2016-08-31 14:00:04",
"localAddress":"10.178.93.88:0",
"methodName":"load",
"param":["31851502"],
"result":....
"serviceName":"ample",
"startTime":1472623203994,
"success":true,
"traceInfo":"88_1472621445126_1092"
}
应⽤层错误⽇志:错误发⽣时间、代码⾏、错误码、原因等
2016/04/18 18:59:01 :/var/www/html/SCMC/routes/example.php:329 [thread:1] errorcode:20045 message:extractFuncDetail failed: account_hsf_serv 做法
1. ⽇志写到本地⽂件,通过配置正则表达式写到指定Logstore
2. Docker中产⽣⽇志可以使⽤
3. Java程序可以使⽤Log4J Appender⽇志不落盘, ;
4. C#、Python、Java、PHP、C等可以使⽤
5. Windows服务器可以使⽤
终端⽤户⽇志接⼊
移动端:可以使⽤移动端SDK , 、或MAN(移动数据分析)接⼊
ARM设备:ARM平台可以使⽤交叉编译
商家平台设备:X86 平台设备可以⽤SDK、ARM平台可以使⽤Native C交叉编译
Web/M 站页⾯⽤户⾏为
页⾯⽤户⾏为收集可以分为两类:
1. 页⾯与后台服务器交互:例如下单,登陆、退出等。
2. 页⾯⽆后台服务器交互:请求直接在前端处理,例如滚屏,关闭页⾯等。
做法
1. 第⼀种可以参考服务端采集⽅法
2. 第⼆种可以使⽤Tracking Pixel/JS Library收集页⾯⾏为,参考
服务器⽇志运维
例如:
Syslog⽇志
Aug 31 11:07:24 zhouqi-mac WeChat[9676]: setupHotkeyListenning event NSEvent: type=KeyDown loc=(0,703) time=115959.8 flags=0 win=0x0 winN 应⽤程序Debug⽇志
__FILE__:build/release64/sls/shennong_worker/ShardDataIndexManager.cpp
__LEVEL__:WARNING
__LINE__:238
__THREAD__:31502
offset:816103453552
saved_cursor:1469780553885742676
seek count:62900
seek data redo
log:pangu://localcluster/redo_data/41/example/2016_08_30/250_1472555483
nginx和apache区别user_cursor:1469780553885689973
Trace⽇志
[2013-07-13 10:28:12.772518]    [DEBUG] [26064]  __TRACE_ID__:661353951201    __item__:[Class:Function]_end__  request_id:1734117  user_
做法
参考服务端采集⽅法
不同⽹络环境下数据采集
LogHub在各Region提供 访问点,每个Region提供三种⽅式接⼊点:
内⽹(经典⽹):本Region内服务访问,带宽链路质量最好(推荐)
公⽹(经典⽹):可以被任意访问,访问速度取决于链路质量、传输安全保障建议使⽤HTTPS 私⽹(专有⽹VPC):本Region内VPC⽹络访问
更多请参见,总有⼀款适合你。
其他
1. 参见。
2. 参见,涉及流计算、数据清洗、数据仓库和索引查询等功能。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。