一、ELK简介
ELK不是一款软件,而是elastic 公司旗下三款产品 ElasticSearch 、Logstash 、Kibana 的首字母组合。
Elasticsearch:提供存储数据、全文搜索、分析引擎三大功能。基于 Apache Lucene构建的RESTful 风格的开源软件,并具有高可伸缩、高可靠和易管理等特点。
Logstash:数据收集、分析、过滤工具。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、统一格式等操作,然后能输出多种设配包括文件、邮件、Redis、elasticsearch等;
Kibana:Web数据分析和可视化平台。通常与 Elasticsearch 配合使用,不仅可以对其中数据进行搜索、分析和以统计图表的方式展示,还可以以特殊的方式查询和过滤数据。
二、为什么使用ELK
对于很多公司来说,通常会很多个应用,并部署在大量的服务器上。当应用出现问题时,运维和开发人员常常需要通过查看日志来定位问题。试想如果没有统一日志管理平台,那么就需要登录到远程服务器上查看日志文件,是多么费时费力的事情。如果是分布式集群应用这个过程将会更加繁琐。
而通过 ELK 平台,可以同时实现日志收集、日志搜索和日志分析的功能。可以快速的在海量的日志信息中快速的定位、提取关键信息。
三、ELK架构
1. 架构(Logstash + Elasticsearch + Kibana)
由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据存储并提供多种API供用户查询检索。Kibana调用Elasticsearch提供的API已web方式对其中数据进行搜索、分析和以统计图表的方式展示。
优点:搭建简单便于维护,且易于上手。
缺点: logstash耗资源较大,运行占用CPU和内存高;当集群故障时,存在数据丢失隐患。
2. 架构(Beats + Logstash + Elasticsearch + Kibana)
添加beats接替Logstash在各个节点上收集数据,logstash以几个甚至单节点存在(具体看服务规模决定),负责过滤、分析数据、将数据存储的elasticsearch。
优点:解决logstash消耗资源过大,占多过多服务器的资源,将过多资源消耗限制较少的服务器上。
缺点:不能解决当集群故障时,存在数据丢失隐患。
3. 架构1(Beats + 缓存队列 + Logstash + Elasticsearch + Kibana)
在beats和Logstash之间添加Kafka、Redis、RabbitMQ 等消息队列,缓存收集到的日志数据。
优点:可以减小数据量过大时给各个节点造成的巨大压力,并可以降低当集群故障时数据丢失隐患。
缺点:更适合日志数量庞大的集群应用。