ELK+Filebeat 集中式日志解决方案实践(一)---概述

1、ELK  简介

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

  • Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;
  • Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
  • Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;
  • Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。

2、ELK 常用架构以及应用场景概述


本节主要对elk两种常用的场景进行简单的描述:

单纯使用elk的简单架构

在这种架构中,只是用了 Logstash、Elasticsearch 和 Kibana 。Logstash 通过输入插件从多种数据源(比如日志文件、标准输入 Stdin 等)获取数据,再经过Logstash的过滤插件对数据进行过滤清洗,然后经 Logstash输出插件输出到 Elasticsearch,通过 Kibana 展示。详见图 1。

ELK+Filebeat 集中式日志解决方案实践(一)---概述

                                                                                图1  单纯ekl的简单架构图

这种架构简单易于实现,一般用于架构搭建而是或者初学者了解 ELK 如何工作用,单纯的这种架构一般不能满足实际应用。实际应用中通常把 Logstash 安装到多台服务器用于数据的收集,将解析好的数据发送到 Elasticsearch server 进行存储,最后在 Kibana 查询、生成日志报表等。详见图 2。

   ELK+Filebeat 集中式日志解决方案实践(一)---概述

                                                                                       图2 ekl实际应用架构图

这种架构需要在各个服务器上部署 Logstash,而Logstash比较消耗 CPU 和内存资源,所以比较适合计算资源丰富的服务器,否则容易造成服务器性能下降,甚至可能导致无法正常工作。所以考虑到服务器的性能问题这种架构一般不太实用。

单纯使用elk的简单架构改进--Beats作为日志搜集器

这种架构引入 Beats 作为日志搜集器。目前 Beats 包括四种:

  • Packetbeat(搜集网络流量数据);
  • Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据);
  • Filebeat(搜集文件数据);
  • Winlogbeat(搜集 Windows 事件日志数据)。



Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户。详见图 3

ELK+Filebeat 集中式日志解决方案实践(一)---概述
图3 Beats作为日志搜集器

这种架构解决了 Logstash 在各服务器节点上占用系统资源高的问题。相比 Logstash,Beats 所占系统的 CPU 和内存几乎可以忽略不计。另外,Beats 和 Logstash 之间支持 SSL/TLS 加密传输,客户端和服务器双向认证,保证了通信安全。

这里只是对elk的简单的架构形式做了一个简单概述,后边将详细对elk安装实用进行介绍。