分布式日志收集与分析
概述
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products
- Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
- kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
- Flume是开源的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume比较看重数据的传输,因此几乎没有数据的解析预处理。仅仅是数据的产生,封装成event然后传输。传输的时候flume比logstash多考虑了一些可靠性。因为数据会持久化在channel中(一般有两种可以选择,memoryChannel就是存在内存中,另一个就是FileChannel存储在文件种),数据只有存储在下一个存储位置(可能是最终的存储位置,如HDFS;也可能是下一个Flume节点的channel),数据才会从当前的channel中删除。这个过程是通过事务来控制的,这样就保证了数据的可靠性。我们用Flume代替logstash做日志收集处理。
Flume+Elasticsearch+kibana结构图
Flume安装与部署
官网下载最新版本http://flume.apache.org/download.html,目前最新的版本是1.6.0
flume1.6和elasticsearch2.3.4兼容要使用第三方sink
https://github.com/lucidfrontier45/ElasticsearchSink2
Flume Agent启动命令 bin/flume-ng agent --conf conf --conf-file conf/case1-exec-elasticsearch.conf --name agent -Dflume.root.logger=INFO,console
Elasticsearch安装与部
下载地址
部署两台机器10.1.234.142(主节点) 10.1.234.143(主节点) 10.1.234.144,3个节点
端口 9200
启动命令:bin/elasticsearch -d -Xms512m -Xmx512m & 使用elasticsearch用户
访问地址:http://10.1.234.142:9200/ http://10.1.234.143:9200/ http://10.1.234.144:9200/
安装head插件:bin/plugin install mobz/elasticsearch-head http://10.1.234.144:9200/_plugin/head/
安装kopf插件:bin/plugin install lmenezes/elasticsearch-kopf http://10.1.234.142:9200/_plugin/kopf/
Cluster Health API:http://10.1.234.142:9200/_cluster/health
Node Info API:http://10.1.234.142:9200/_nodes
the Index Status API:http://10.1.234.142:9200/A/_status
kibana安装与部署
下载地址:https://download.elastic.co/kibana/kibana/kibana-4.5.4-linux-x64.tar.gz
访问地址:http://10.1.234.144:5601/
演进
引入Kafka、HDFS和Storm实时大数据日分析,kafka的目的是提供一个发布订阅解决方案,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。于离线处理,hadoop还是比较适合的,但是对于实时性比较强的,数据量比较大的,我们可以采用Storm.
演进结构图