1、常见ELK架构工作流程
一、ELK架构介绍
1、核心组成:
ELK是一个应用套件,由elasticsearch 、logstash 和 kibana三部分组件组成,简称ELK。他是一套开源免费、功能强大的日志分析管理系统,
ELK可以将我们的系统日志、网站日志、应用系统日志等各种日志进行收集、过滤、清洗,然后进行集中存放并可用于实时检索分析。
2、elasticsearch 介绍:
elasticsearch是一个实时的分布式搜索和分析引擎,他可以用于全文搜索,结构化搜索以及分析,采用java语言编写,他的主要特点如下: 1、实时搜索,实时分析 2、分布式架构、实时文件存储,并将没一个字段都编入索引 3、文档导向,所有的对象全部是文档 4、高可用,易扩展,支持集群(cluster)、分片和复制(shards和replicas) 5、接口友好,支持json
elasticsearch支持集群架构,典型的集群架构如下图所示:
从图中可以看出,elasticsearch集群中有master node和 slave node 两种角色,
3、Logstash介绍
Logstash是一款轻量级的、开源的日志收集处理框架,他可以方便的把分散的、多样化的日志搜集起来,并进行自定义过滤分析处理,然后传输到指定的位置,
比如某个服务器或者文件。Logstash采用JRuby语言编写,他的主要特点如下:
Logstash的理念很简单,从功能上来讲,他只做三件事情: 1、input:数据收集 2、filter:数据加工,如过滤,改写等 3、output:数据输出
别看他只做三件事,单通过组合输入和输出,可以变幻出多种架构实现多种需求
Logstash内部运行逻辑如下图所示:
其中,每部分含义如下:
shipper:主要用来收集日志数据,负责监控本地日志文件变化,及时把日志文件的最新内容收集起来,然后经过加工、过滤、输出到Broker. Broker:相当于日志Hub,用来连接多个shipper和indexer. Indexer:从Broker读取文本,经过加工、过滤、输出到指定的介质(可以是文件、网络、elasticsearch等)中。
redis服务器是logstash官方推荐的broker,这个broker起数据缓存的作用,通过这个缓存器可以提高Logstash shipper发送日志到 Logstash indexer的速度,
同时避免由于突然断电等导致的数据丢失。可以实现Broker功能的还有很多软件,例如kafka 等。
这里需要说明的是,在实际用用中,logstash自身并没有什么角色,只是根据不同的功能,不同的配置给出不同的称呼而已,无论是shipper还是indexer,始终只做前面提到的三件事
这里需要重点掌握的是logstash中shipper和indexer的作用,因为这两部分是logstash功能的核心。
4、kibana介绍
kibana是一个开源的数据分析可视化平台,使用kibana可以为logstash和elasticsearch提供的日志数据进行高效的搜索、可视化汇总和多维度分析,还可以与elasticsearch搜索引擎之中的数据进行交互,他基于浏览器的界面操作可以快速创建动态仪表板,实时监elasticsearch的数据状态与更改。
5、ELK工作流程:
一般都是再需要收集日志的服务上部署logstash,作为logstash shipper 用于监控并手机、过滤日志,接着,将过滤后的日志发送给broker,然后,logstash indexer将存放再broker中的数据再写入elasticsearch 、elasticsearch对这些数据创建索引,左后kibana对其进行各 种分析并以图表的形式展示。
有些时候,如果收集的日志量比较大,为了保证日志收集的性能和数据的完整性,logstash shipper 和 logstash indexer之间的缓冲器(broker)也经常采用kafka来实现。