ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kibana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。适用于
Elasticsearch是基于Lucene(一个全文引擎的架构)开发的分布式存储搜索引擎,用来存储各类日志。Elasticsearch是通过Java开发的,可通过RESTful Web接口,让用户可以通过浏览器与Elasticsearch通信。Elasticsearch是个分布式搜索和分析引擎,优点是能对大容量的数据进行接近实时的存储、搜索和分析操作。
特点:分布式、零配置、自动发现、索引自动分片、索引副本机制、resultful风格接口、多数据源、自动搜索负载等。
作为数据收集引擎,它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给Elasticsearch。Logstash由JRuby语言编写,运行在Java虚拟机(JVM)上,是一款强大的数据处理工具,对内存资源要求比较高,可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能,主要用来日志的搜集、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client(rsyslog,apache,nginx)端安装在需要收集日志的主机上,server(Logstash)端负责将收到的各节点日志进行过滤、修改等操作然后在一并将收到的数据发往Elasticsearch上去。
基于Node.js开发的展示工具,可以为Logstash和ElasticSearch提供图形化的日志分析web界面展示,可以汇总、分析和搜索重要数据日志。
轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装Filebeat,并指定目录与日志格式,Filebeat就能快速收集数据,并发送给logstash进行解析,或是直接发给Elasticsearch存储,性能上相比运行于JVM上的logstash优势明显,是对他的替代。
日志系统主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散的储存到不同的设备上。如果你管理数十台上百台服务器,你还使用传统的方式查询日志,这样难免会觉得繁琐和效率低下。所以使用集中化的日志管理,例如syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又是比较麻烦的事情,一般使用grep、awk和wc等Linux命令实现检索和统计,但对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免力不从心。
一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。
1、收集:能够采集多种来源的日志数据
2、传输:能够稳定的把日志数据解析过滤并传输到存储系统
3、存储:存储日志数据
4、分析:支持ui分析
5、警告:能够提供错误报告,监控机制
1、在所有需要收集日志的服务器上部署Logstash,或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署Logstash;
2、Logstash收集日志,将日志格式化并输出到Elasticsearch集群中;
3、Elasticsearch对格式化后的数据进行索引和存储;
4、Kibana从ES集群中查询数据生成图表,并进行前端数据的展示。
参考博客:参考地址