集中式日志解决方案

2017-09-18  本文已影响0人  那些年未曾努力过

背景

随着业务的快速发展,各种服务和组件也要随着增加或扩容,服务器的台数随之增加,这样给日志运维带来很大的问题。如果你要查阅某个项目的日志,服务器数十上百台的话,这将是一件非常繁琐和低效的事。另外,如果你想对这些日志进行实时的分析统计,也无从下手。因此,我们需要一种数据收集框架,它可以将不同服务器上的日志数据,高效地收集汇总在一起,供在线或者离线查阅和分析,并且还可以对系统实施监控和故障告警。

本文档通过介绍Flume NG、Scribe、Kafka、Chukwa和ELK的特点,结构模型,使用时的优势和劣势,以及我们自定义的指标项对比,最后得出它们各自的应用场景,为框架选型提供技术参考。

数据收集系统

Flume NG

Flume NG的介绍

Flume NG 是Cloudera提供的分布式数据收集系统,它能够将不同数据源的海量日志数据进行高效的收集、聚合、移动,最后存储到存储中心。Flume NG支持(故障转移)failover和负载均衡。

Flume NG的结构

Flume NG传输数据的基本单元是event,如果是文件,通常是一行记录。运行的核心是Agent,包含三个核心组件,分别是Source、Channel和Sink,其结构模型图如下:

Flume NG的介绍
Flume NG的结构图:
多个Agent顺序连接 多个Agent的数据汇聚在同一个Agent中

最常见的部署方式,比如在各个应用服务器上部署Flume NG,将原始数据同步到一台agent上。

多路Agent连接

包括分流和复制两种方式,分流是根据header信息进行数据的分类存储数据,复制是将数据复制多份。

负载均衡数据模型

Agent1负责路由,每个Sink连接一个Agent,Sink支持负载均衡和Failover。

Flume NG的优势劣势

Scribe

Scribe介绍

Scribe是Facebook开源的一个基于thrift框架的日志收集系统,在facebook内部已经得到大量的应用。Scribe可以从不同数据源,不同机器上收集日志,然后将它们存入存储中心,目前Facebook已停止对Scribe的更新和维护。

Scribe结构
Scribe结构图
Scribe优势和劣势

Kafka

Kafka的介绍

Kafka 是一个基于分布式的消息系统,开发自 LinkedIn ['lɪŋktɪn],作为 LinkedIn 的活动流和运营数据处理管道。活动流数据包括页面访问量、被查看内容方面的信息以及搜索情况等。运营数据指服务器的性能数据,包括CPU、IO使用率、请求时间、服务日志等。

Kafka结构模型:
Kafka结构模型
Kafka的优势和劣势

Kafka 通过系统解耦、Partition(分片存储)、复制备份、持久化、缓存、集群和异步通信等策略提供了一个高性能、高可靠、可扩展的数据管道和消息系统。

Chukwa

Chukwa的介绍

chukwa 是一个用于监控大型分布式系统的数据收集系统,构建在 Hadoop 的 HDFS 和 map/reduce 框架之上的,继承了 hadoop 的扩展性和健壮性,还包含HICC,可用于展示、监控和分析已收集的数据。

Chukwa的结构
image.png
Chukwa的优势和劣势

ELK

ELK的介绍

ELK 不是一款软件,而是Elasticsearch、Logstash和Kibana首字母的缩写。这三者是开源软件,通常配合一起使用,而且先后归于Elasic.co公司的名下,所以简称ELK Stack。根据Google Trend的信息显示,ELK已经成为目前最流行的的集中式日志解决方案。

ELK的结构
最简单的结构模型

这种结构很简单,适合初学者。初学者可以搭建此结构,了解ELK如何工作。

Logstash作为日志收集器

这种结构模型需要在各个应用服务器上部署Logstash,但Logstash比较消耗CPU和内存资源,所以比较适合资源丰富的服务器,否则可能会导致应用服务器无法工作。

Beats作为日志收集器

这种结构解决了Logstash在各服务器节点上占用资源高的问题。另外,数据格式规范的情况下,可以移出Logstash节点,Beats直接发送数据到Elasticsearch,解决Logstash占用资源高的问题。

引入消息队列机制

这种结构适合日志规模比较大的情况。引入消息队列,将上下游服务解耦,减轻下游服务的压力,解决在巨量日志下,网络阻塞延迟、数据丢失的问题,使得网络传输更稳定、更高效,避免级联效应。在巨量日志的情况下,Logstash节点和Elasticsearch节点负荷比较重,可将它们配置成集群模式,分担负荷。在日志比较规范的情况下,可以去掉Logstash,Beats直接发送数据到Elasticsearch,解决Logstash占用资源高的问题。

ELK的优势和劣势

指标项对比

指标项对比

结论

结论

ELK告警策略

ELK告警策略

参考资料

Flume NG

http://blog.csdn.net/zhaodedong/article/details/52541688
http://www.gegugu.com/2016/04/11/5484.html

Scribe

http://www.itdadao.com/articles/c15a502872p0.html
http://www.36dsj.com/archives/66047

Kafka

http://www.cnblogs.com/likehua/p/3999538.html
http://www.infoq.com/cn/articles/kafka-analysis-part-1

Chukwa

http://www.it165.net/admin/html/201403/2507.html
http://f.dataguru.cn/thread-97612-1-1.html

ELK Stack 中文指南

http://kibana.logstash.es/content/

Logstash最佳实践

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

Elasticsearch 权威指南

https://es.xiaoleilu.com/

Elasticsearche配置:

https://my.oschina.net/topeagle/blog/405149
https://my.oschina.net/Yumikio/blog/805877

Filebeat配置:

http://m.blog.csdn.net/article/details?id=53584173
http://michaelkang.blog.51cto.com/1553154/1864225

Search Guard:

https://github.com/floragunncom/search-guard-docs
http://www.cnblogs.com/Orgliny/p/6168986.html
http://kibana.logstash.es/content/elasticsearch/auth/searchguard-2.html

上一篇 下一篇

猜你喜欢

热点阅读