elk 组件介绍


简介

ELK是三个核心开源软件的缩写:elasticsearch,logstash,kibana
另外还有filebeat工具,轻量级,适合部署在各个机器上收集日志,替代logstash的client。

1.1 elasticsearch

elasticsearch开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。特点是分布式、零配置、自动发现、索引自动分片、索引副本机制、restful风格接口、多数据源、自动搜索负载等。主要负责将日志索引并存储起来,方便业务方检索查询。

1.2 logstash

logstash是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client在需要收集日志的主机,server将收到的各节点日志进行过滤、修改等操作,再发往elasticsearch。是一个日志收集、过滤、转发的中间件。

1.3 kibana

Kibana是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

架构一 传统部署方式

传统的elk有一些瑕疵,虽然部署方便,但是logstash消耗cpu和内存高,且没有消息队列缓存机制,容易丢失数据

架构二 引入消息队列

引入消息队列机制,各个节点上的Logstash Agent将日志传递给Kafka(或者Redis),消息队列中消息传递给Logstash,过滤、分析后将数据传递给Elasticsearch存储。最后Kibana将日志和数据呈现给用户。因为引入了Kafka,所以远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

架构三 将logstash Agent替换为beats

将logstash Agent替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。

elk