ELK 协议栈介绍及体系结构
ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,
Elasticsearch
,Logstash
和Kibana
。

Elasticsearch
Elasticsearch
是一个实时的分布式搜索和分析引擎
,它可以用于全文搜索
,结构化搜索
以及分析
。它是一个建立在全文搜索引擎Apache Lucene
基础上的搜索引擎,使用Java
语言编写
特点:
实时分析
分布式实时文件存储
,并将每一个字段都编入索引
文档导向,所有的对象全部是文档
高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
接口友好,支持JSON
Logstash
Logstash
是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。其作者是世界著名的运维工程师乔丹西塞 (JordanSissel)
特点:
几乎可以访问任何数据
可以和多种外部应用结合
支持弹性扩展
它由三个主要部分组成
Shipper-发送日志数据
Broker-收集数据,缺省内置 Redis
Indexer-数据写入

Kibana
Kibana
是一款基于Apache
开源协议,使用JavaScript
语言编写,为 Elasticsearch
提供分析和可视化的 Web 平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图.
Filebeat
ELK
协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder源代码开发,是对它的替代。在需要采集日志数据的 server 上安装Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,迅速发送到Logstash进行解析,亦或直接发送到 Elasticsearch进行集中式存储和分析
。
ELK 常用架构及使用场景介绍

在这种架构中,只有一个
Logstash
、Elasticsearch
和Kibana
实例。Logstash
通过输入插件从多种数据源(比如日志文件、标准输入 Stdin 等)获取数据,再经过滤插件加工数据,然后经Elasticsearch
输出插件输出到Elasticsearch
,通过Kibana
展示

在各个服务器上部署
Logstash
,而它比较消耗 CPU 和内存资源

这种架构解决了
Logstash
在各服务器节点上占用系统资源高的问题。相比 Logstash,Beats 所占系统的 CPU 和内存几乎可以忽略不计
。另外,Beats 和 Logstash 之间支持 SSL/TLS 加密传输,客户端和服务器双向认证
,保证了通信安全。
因此这种架构适合对数据安全性要求较高,同时各服务器性能比较敏感的场景

Filebeat
替代了Logstash-Forwarder
成为新一代的日志采集器,同时鉴于它轻量、安全等特点,越来越多人开始使用它。如何部署基于 Filebeat 的 ELK 集中式日志解决方案

这种架构
适合于日志规模比较庞大的情况
。但由于Logstash 日志解析节点和 Elasticsearch 的负荷比较重
,可将他们配置为集群模式
,以分担负荷。引入消息队列,均衡了网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性,但依然存在Logstash 占用系统资源过多
的问题。
网友评论