基于Docker的日志分析平台(一) 介绍

1. 为何要分析日志

传统的Web开发中,日志可能并不被重视,只有应用出现问题后,才会适时性的去看一眼。并且日志的储存方式也很简单,直接写入一个文本文件或者扔到数据库中就了事了。这样对于单机应用来讲没有什么不能够的,但是当系统架构分布式后,官网、论坛、社交、交易等各个大大小小的子系统愈来愈多,再加上操做系统、应用服务、业务逻辑等等,日志的管理与查看就愈加的麻烦,面对大量的日志数据并且又是分布在各个不一样的机器甚至不一样的机房,若是咱们仍是按照传统的方式登陆到某一台机器上去查看日志,而后再汇总起来,再作个跨机房的排序,那这样感受就太糟糕了。因此一套集中式的实时日志分析平台就显得很是重要了,而一套日志分析平台至少要包括一下几个特色:docker

  • 收集, 能够收集不一样来源的日志,包括Web日志,请求日志,本地机器,跨机房机器等
  • 存储,稳定的存储日志信息并索引发来
  • 分析,支持各类层面的分析,并且能够以UI展现出来
  • 警告,根据日志内容进行不一样错误级别的报警

2. ELK协议栈

其实市面上的日志分析产品不少,简单的Rsyslog,商业化的Splunk,开源的ScribeApacheFlumeClouderaELK。这里采用的是ELK这个体系架构,ELK(Elasticsearch, Logstash, Kibana)通过这么多年的发展,一直到如今的6.0.0版本。可以发展这么快,其中确定有他的缘由所在。简单介绍一下这三个软件的特色:数据库

  • Elasticsearch 高可用性,实时索引,拓展简单,接口友好
  • Logstash 是一个具备实时的数据收集引擎,几乎能够收集全部的数据
  • Kibana 提供分析和可视化的Web平台,用来查询分析以及生成各类报表

ELK日志分析平台架构

经过架构图能够看到,总体日志平台的原理其实并不难,日志的生产者做为Shipper产生各类各样的日志,而后传输到Kafka中,这里传输也是从生产者中读取而后传输经过 Logstash 到 Kafka, 再者Logstash经过读取Kafka中的日志数据,储存到ElasticSearch。只在中间再增长了Kafka作为缓冲层,由于Logstash会同步把日志传输到Elasticsearch,一旦ElasticSearch挂掉数据就有可能会丢失。因而,咱们考虑利用Kafka做为缓冲区。架构

这里选择Kafka的缘由是由于与大多数消息系统比较,Kafka有更好的吞吐量,内置分区,副本和故障转移,这有利于处理大规模的消息,由于互联网应用日志基本上都是海量的。分布式

3.基于Docker

Docker算是云计算时代拥有划时代意义的项目了,关于Docker的介绍与资料很是多。特别是docker-compose至关于给Docker插上了翅膀。Docker相对于传统的虚拟化技术,Docker应用运行于宿主内核,无需启动完整的操做系统,能够作到秒级、甚至毫秒级的启动时间,大大的节约了开发、测试、部署的时间。而且确保了运行环境的一致,「这段代码在我机器上没问题啊」这一些的问题不再会出现。测试

图片描述

相关文章
相关标签/搜索