ELK是三个开源软件的缩写,分别表示:Elasticsearch,Logstash,Kibana。新增了一个FlieBeat,它是一个轻量级的日志收集处理工具,FlieBeat占用资源少,适用于在各个服务器上搜集日之后,传输给Logstash。

Elasticsearch:开源分布式搜索引擎,提供搜集,分析,缓存数据三大功能,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负 载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构, client 端安装在需要收集日志的主机上, server 端负责将收到的各节点日志进行过
滤、修改等操作在一并发往 elasticsearch 上去。
Kibana 也是一个开源和免费的工具, Kibana 可以为 Logstash ElasticSearch 提供的日志分析友
好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

ELKEFK

由于 logstash 内存占用较大,灵活性相对没那么好, ELK 正在被 EFK 逐步替代 . 其中本文所讲的 EFK 是 Elasticsearch+Fluentd+Kfka。
Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch Fluentd Kibana EFK) 技术栈,也是官方现在比较推荐的一种方案。
Fluentd 是一个收集日志文件的开源软件,目前提供数百个插件可用于存储大数据用于日志搜索,数据分析和存储。

Fluentd适用于以下场景。

        收集多台服务器的访问日志进行可视化
        在AWS 等云端使用 AutoScaling 时把日志文件收集至 S3( 需要安装插件 )
        收集客户端的信息并输出至Message Queue ,供其他应用处理

常见架构:

1、 Elasticsearch + Logstash + Kibana
Elasticsearch:收集日志
Logstash:分析日志
Kibana:展示

 2、Elasticsearch + Logstash + Filebeat + Kibana

 

与上一个架构相比,增加了 filebeat 模块,它是一个轻量级的日志收集处理工具 (Agent) ,部署在客户 端,Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash ,生产中使用较多,但缺 点是logstash 出现故障,会造成日志丢失。
3、 Elasticsearch + Logstash + Filebeat + Kibana + Redis

 通过增加中间件来避免日志丢失。

4、Elasticsearch + Fluentd + Filebeat + Kibana

 

使用了 fluentd 代替了 logstash 。当然,我们也可以使用 Fluentd 的插件( fluent-plugin-elasticsearch)直接将日志发送给 Elasticsearch ,可以根据自己的需要替换掉 Filebeat ,从而形成
Fluentd => ElasticSearch => Kibana 的架构,也称作 EFK

基本流程

下面以第三种架构为例,基本流程如下:
1 Logstash-Shipper 获取日志信息发送到 redis
2 Redis 在此处的作用是防止 ElasticSearch 服务异常导致丢失日志,提供消息队列的作用。
3 logstash 是读取 Redis 中的日志信息发送给 ElasticSearch
4 ElasticSearch 提供日志存储和检索。
5 Kibana ElasticSearch 可视化界面插件。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐