log4j+kafka+ElasticSearch+Kibana数据收集和统计(一)

前言:最近这一段时间对接合作方的广告项目统计数据,每天一上班,合作方就一大堆问题,为什么昨天数据又怎么不对呀,问题在哪, 数据统计问题 道不明,很难去找原因,搞的LZ头都大了,老板也催,真是无奈,我已经把代码已经调整到没有问题的状态,他妈还是统计数据不对,不知道是对方的原因还是我们自身的原因,很难去定位,没办法,最终我只能使出大招,每天打日志数据文件,看到底是什么原因的,最终预料之中背锅侠不是我,的确是合作方自身的原因。统计的问题也就告一段落了,也就闲下来和大家聊聊技术,吹吹牛皮了。今天和大家聊聊日志统计收集的问题,通过log4j 打日志的方式,通过kafka生产和消费 入到ElasticSearch中,然后再用Kibana做展示层实时的看每天的数据。咋们回归正题,我给大家一一道来(里面的技术很多是CTO实现的,我只是个打杂的)。

今天先简单的给大家介绍 log4j  kafka  ElasticSerach  kibana 这些技术在我们的系统中扮演了什么角色。以及它们的基础知识。

Log4j:其实就是一个日志文件系统的具体实现,当然还有其他的日志文件的系统实现,比如Log4j 的升级版Logback,是不消耗内存和计算开销的日志系统。据说很吊的样子 虽然我也用过,但是感觉不出来。没看过源码 不知道它对于Log4j 优化了哪些。

我们经常提Log4j  也会提到Logback,SLF4J,那他们三者是个什么样的关系?

官方是这样说明的:

slf4j译为简单日志门面,是一系列的日志接口,是日志框架的抽象。而log4j和logback是众多日志框架中的几种,SLF4J在具体开发中,需要绑定一个日志框架,才能正常的使用slf4j。而日志框架比如就是Log4j或者logback等等

而log4j和logback的区别:

log4j是apache实现的一个开源日志组件。(Wrapped implementations)

logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架。是slf4j的原生实现

在Log4j在我们的系统中作用是以JSON的格式输出统计日志文件。

我们的log4J配置文件类似如下: 下一章给大家md代码并给大家介绍具体的配置

KafKa: 其实就是消息队列,业内有很多成熟的消息队列 有redis java原生的消息队BloackQueue,阿里的RabbitMQ,Apache下的ActiveMQ等等,大家都大同小异,而我们采用的是kafka而已。

简单的介绍kafka的基本知识,kafka中有以下概念:

producer:消息生产者,发布消息到 kafka 集群的终端或服务。

.broker:kafka 集群中包含的服务器。

topic:每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。

partition:partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。

consumer:从 kafka 集群中消费消息的终端或服务。

Consumer group:high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。

replica:partition 的副本,保障 partition 的高可用。

leader:replica 中的一个角色, producer 和 consumer 只跟 leader 交互。

follower:replica 中的一个角色,从 leader 中复制数据。

controller:kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。

zookeeper:kafka 通过 zookeeper 来存储集群的 meta 信息。

下载window kafka的包 可以通过以下方式来操作kafka 

打开kafka:(打开kafka之前 首先要启动zookeeper)

.\bin\windows\kafka-server-start.bat .\config\server.properties

创建topics(主题)

.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test


这个报创建的主题我之前创建过了 报存在 可以忽视


打开producer:

.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

打开Consumer:

.\bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test

在producer生产界面生产数据 在消费者界面就可以看到消费的数据 例如:

kafka 在我们的系统中扮演的角色是生产日志文件 并进行消费到ES中。

ElasticSearch

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

而我们用ES来收集统计日志,可以实时的分析数据。

简单的介绍一下ES中的基本知识点:

index

ES中的索引,类似于mysql中的database

Type

文档类型, 类似于mysql中的table,根据用户需求每个index中可以新建任意数量的type。

Document

定义:对应mysql中的row。有点类似于MongoDB中的文档结构,每个Document是一个json格式的文本。每个文档由不同的结构,限制条件:不同的文档类型对同一个字段不能设置为不同的字段类型。

Mapping

更像是一个用来定义每个字段类型的语义规范在mysql中类似sql语句,在ES中经过包装后,都被封装为友好的Restful风格的接口进行操作。这一点也是为什么开发人员更愿意使用ES或者compass这样的框架而不是直接使用Lucene的一个原因。

分片:将数据切分,分布在不同的机器上,但归属一个index

副本:副本分片是对原始分片的一个精准拷贝,原始分片被称为主分片。

在官网上https://www.elastic.co/cn/downloads/elasticsearch 下载windows版本。

进入bin目录启动elasticsearch.bat文件即可  es单机版就启动了  访问9200端口 即可看到数据

9300 是es客户端操作es数据存储端口,9200是展示数据的端口

访问内容如下:

具体url后面带的参数我后面再给大家介绍,这里不做具体的讨论。

在我们的系统中  ES 扮演着收集日志数据的存储系统。

Kibana:

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。其实就是ES的web展示层 可以实时看到数据和统计数据。统计数据可以采用表格 图形都可以支持的。

在官网上https://www.elastic.co/cn/downloads/kibana 下载windows版本。一定要下载ES对应适配的版本,否则启动不了Kibana。会报以下的错:直接报警了

版本不兼容  大意就是下载一个5.4.2的版本就可以解决了。我用的是5.5.2版本 肯定不行 不兼容。

换了个版本也就正常了   正常的如下:

kibana通过http访问 默认端口是5601

我在里面建立了业务相关的三个索引 也可以看到我们展示的数据 我们对这些数据做分组统计 也可以建图表 或者表格的方式来进行统计 kinana支持很多种方式的统计。而且还是实时的 非常的方便。

Kibana在我们的系统中扮演的角色作为ES数据的展示层,给我们实时的统计数据和以表格或者图表的方式看数据 非常的方便 看到想要统计的BI数据。

说了这么多,今天介绍的内容大概就这些了,简单介绍了log4j、kafka、ElasticSearch、Kibana 这些是什么  基础的相关知识点 以及在我们的系统中扮演的角色。下一章我们将以我们的具体业务如何将这些知识点应用到具体的场景中去的 我会以代码的形式给大家分享,感谢上次肖大神给我提的建议 贴代码不好 优好性太差,不便于阅读,我记住了,下次直接md贴代码 哈哈。你们的建议是我最大的向前奔跑的动力。

我是小志码字,一个简单码代码的小人物。看了这么多,喜欢就关注我 或者点赞哦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 概述 监控预警平台, eagle + eye (鹰眼)的合体词, 寓意可以快速发现问题, 并及时作出响应,Eagl...
    Kungfu猫熊阅读 7,386评论 0 52
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • 1、ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容来自:http://bai...
    螺旋上升的世界阅读 3,011评论 0 20
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,038评论 1 13
  • 本人陆陆续续接触了ELK的1.4,2.0,2.4,5.0,5.2版本,可以说前面使用当中一直没有太多感触,最近使用...
    三杯水Plus阅读 4,102评论 0 12