海量日志的一些组件

浏览: 2302

企业日志的几种情况:

A.  服务器监控日志

B.  内部应用程序日志

C.  网站用户点击行为日志

在这,我们和大家仅仅是交流下不同模式下的架构设计和使用场景而已。很多的内容我也并未深入研究下去,过程中如有不妥之处,请大家及时指正。

服务器监控日志对企业来讲是非常重要的一个部分。这部分数据包含服务器的性能监控,也包含应用程序站点的日志监控。企业上了一定规模以后,是迫切需要解决当前服务器的运行状态、应用程序运行状态。如果在外部市场投放了广告,带来巨大流量后,可视化实时监控web应用程序运行状态是很关键的。

服务器监控通常会用到Cacti,zabbix,ganglia,Splunk等工具。其中Splunk是一个顶级日志分析软件,它不仅可以用多种方式来添加日志,生产图形化报表,最厉害的是它的搜索功能 - 被称为“Google for IT”。Splunk是商业版。

Cacti,zabbix大部分是用来做服务器CPU、磁盘、网络等情况进行监控。

日志信息分析工具中推荐使用Logstash+ Elasticsearch+ Kibana这三个组合进行监控。

Clipboard Image.png

logstash agent 监控日志——》redis(队列) ——》logstashindex——》全文搜索服务ElasticSearch.前端通过Kibana 来结合 自定义搜索进行页面展示.

在安装这些的时候要准备好Ruby,JDK等环境。

安装过程中一定要考虑Logstash+ Elasticsearch+ Kibana这三个版本的兼容性,切莫追求最新最高大上的版本。

 

官网:

https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html

logstash支持的inputs、codecs、filters和outputs的参数配置:

https://www.elastic.co/guide/en/logstash/current/index.html

 

如果大家有兴趣,推荐中文学习资料:

http://udn.yyuap.com/doc/logstash-best-practice-cn/get_start/introduction.html

 

内部应用程序日志

应用程序内部产生的日志,码农专用。

应用程序的日志是在研发体系中一个非常重要的环节。一个产品上线后出现问题,例如需要排查程序过程中拼接产生的SQL,记录查询接口的请求参数和输出参数等,随着应用程序的访问量上升,存储量增大,存储的内容也非常复杂。团队在处理这类问题时,如果都是采用cat、tail、sed、awk、perl以及grep来处理,则非常耗时。

在这种情况下,我们非常需要一种既能灵活查询,又支持海量存储的程序日志架构。考虑到程序日志的特殊性,我们建议使用mongodb来负责程序日志的存储问题。Mongodb的好处不用多说。

 

网站用户点击行为日志

    用户和互联网公司之间主要有两个方面的接触:

1.  消费数据。这部分需要实时响应,用户提交一个表单,通过应用程序存放到关系型数据库(Oracle、Mysql、sqlserver)。

2.  点击数据。用户在网站、App上的所有操作,例如页面访问量、用户行为、搜索情况。这些数据是准实时性的消息流。公司可以根据这类消息做个性化推荐,运营监控,营销等一系列的应用。

第一点的数据及其重要,是创营收的程序,这是大部分码农必须要保障的根本性任务,要做好关系型数据库的维护工作,能抗每秒**订单的指标就行了。它和本次要讲的日志有什么关系等下再说。

    点击数据是企业做精细化过程中非常重要的一个宝库。它能做如下事情:

1.  分析流量的ROI,指导流量投放。

前端的点击做好渠道跟踪体系,根据用户的访问流量来统计付费渠道、免费渠道的效果。指导网站该在哪些渠道上做改进。每个互联网公司几乎都有竞价、应用市场等各个渠道的流量来源,而实时监控并统计效果,则能让流量投放更加有的放矢,把钱都花在刀刃上。

2.  建立浏览跟踪体系,优化产品页面设计

Web程序中首页、列表页、产品详情页、预订页都是可看做一个一个独立的产品。为每个类型的页面打上标记,并在用户浏览的时候记录下来。这样就可以根据用户的是否成单、停留时长、跳出率等指标来评定哪些页面是需要改进,并且也可以给出参考的数据指标。例如A页面需要改进,提升转化率到30%;B页面需要改进,提升支付率到60%。

3.  统计分析页面质量,分析漏斗转化率

根据流量漏斗,我们可以知晓页面的质量。运营此页面的人员可以跟进,迭代优化。

4.  优化用户访问路径

有了用户点击数据,我们就可以进行web路径分析,找出用户从首页到产品的最短路径。

5.  专题活动分析

专题活动页面的上线,一定要做好用户点击数据的收集工作。这些数据决定了你的专题活动的好坏。例如有些专题是专门上线拉流量的,那通过用户点击数据可知道是否达到了此目标;有些专题上线是为了促进转化,那用户点击专题后都做了什么,有没有成单,这些数据便可以考核这个专题的好坏。

6.  营销推送效果分析

短信、app推送等都是激活老会员,增加会员忠诚度的一种营销手段。如果每天发送几万或几十上百万的短信,就要根据用户点击短信中的url来分析效果。这些url中可根据url参数、点击时所在地、浏览时长、页面点击等数据来分析短信的效果。

App推送也是一样的效果。在app推送上一般都是h5页面,那就要考虑多少用户打开,能不能获取设备ID,用户在h5页面的点击行为,及后续的浏览行为。

7.  丰富会员浏览等偏好数据

用户在网站或app上的所有点击都透露了一些信息。

例如在哪个地方访问,如果这个地方出现次数最多,那是不是就可判断为用户常用地。

用户经常逛哪些产品,哪些资源,在点评信息的停留时间,浏览的深度等等这些数据。

当然用户经常不登录,但是如果在pc上有登录了,那就要想办法把历史数据和当前会员匹配上。

App更好做,绑定设备和会员的关系就好。

8.  监控转化率数据,指导运营

转化率等数据是运营的一些核心指标,用户点击行为数据是完全可以支持的。

9.  浏览的推荐行为,丰富用户接触点

当搜索无结果、当用户下完单了等场景中,我们是一定要根据用户访问的数据来为用户推荐一些结果。

网站页面本身就是一个广告位,要尽可能为用户呈现一些感兴趣的产品,增加产品的曝光度,也丰富了用户的接触点。

10.  数据分析和预测

每次的用户点击行为数据,都是可以积累下来作为数据分析和预测的依据之一。例如在当前的流量情况,预测下月的流量。考虑季节和节假日因素的话,还可以预测下一年的流量,为投放做好依据。

也可以根据现有某个产品的转化率进行分析,找出几个可能提升的点,配合业务部门一起提升。

 

技术架构

用户点击行为数据一般都是巨大的,场景方面有离线和准实时。

在这些情况下,各个企业一般都要贴合实际来出发。例如每天流量如果只有几万UV,那就没必要上大数据来处理;反之,流量增长到几百万UV以后,用关系型数据库来处理也不合适。

每天流量如果只有几万UV的情况下:

Clipboard Image.png

Web程序:用户在浏览和点击时,触发js或app sdk事件,负责将数据以json等方式提交到接口程序。

接口程序:负责解析接收到的数据,并存储到数据库。在这个地方,最好考虑下做个负载均衡。

关系型数据库:数据库方面做个读写分离。相关的监控措施配套齐全即可。

后台统计:负责统计呈现用户行为数据

 

如果流量提升了,并需要准实时:

Clipboard Image.png

我们会用到Flume,kafka,storm等,这些都是分布式的。

前端的Tengine主要是输出接口程序收到的json数据到文本中。

Flume:推荐使用Flume-NG.

Kafka:在分布式集群方面要考虑一个topic多个partition的配置,还需要考虑zookeeper集群。

Storm:如果条件允许,就升级集群配置的内存。

用户行为数据共有几个类别:

a)  需要实时查询。这些可存储到索引集群中,例如elasticSearch,solrcould等。方便业务通过字符串等快速检索数据

b)  需要准实时。这些数据主要是用来计算用户的下一次访问、感兴趣的产品。可以用spark执行计算,并将结果输出到hbase。利用hbase集群来承担对外的应用查询

c)  一般应用数据。这些主要是离线的统计分析。可以使用关系型数据库来存储,让用户能看到隔天的数据效果。

 

从以上内容可以看出,kafka集群是非常重要的一个环节。如果我们想做到数据驱动产品,那么用户点击就数据,这些数据通过中央存储队列kafka,被不同的应用程序消费,并计算反馈最优结果。这也是我一直期望去做的“实时消息驱动”,驱动的背后可以是营销,大盘监控,运营监控,也可以是推荐。

 

推荐 2
本文由 Bob 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册