一、概述
在一个大型的分布式架构的项目里,不同的服务模块部署在不同的服务器上,如果想要定位问题,可能需要去不同的服务器上查看不同服务的日志。
那么,ELK可以很方便的把日志集成到一起,无须再去各个服务器上的日志中定位问题。
1.1、什么是ELK
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称(但是后期出现的filebeat(beats中的一种)可以用来替代logstash的数据收集功能,比较轻量级)。市面上也被称为 Elastic Stack。
1.1.1、Elasticsearch
是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。
1.1.2、Logstash
Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。Logstash能够动态地采集、转换和传输数据,不受格式或复杂度的影响。
- Logstash架构
Logstash由Input、Filter、Output三部分组成
Input: 数据采集,可以是kafka、http、文件等
Filter: 对数据进行过滤、处理
Output:数据存储,可以是ElasticSearch、MongoDB等
- logstash.conf pipeline文件
跟其架构一致,分为Input、Filter、Output三个部分,用于处理数据
input {}filter {}output {}1.1.3、Kibana
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
1.2、ELK与日志收集
日志---> Logstash 采集日志数据 ---> ES存储 ---> Kibana集中查看
ELK是Elastic公司的三个组件,他们三个配合实现日志收集.
- ElasticSearch:用于存储日志信息;
- Logstash:用于收集、处理和转发日志信息;
- Kibana:提供可视化的Web界面.
二、ELK安装
2.1、安装ElasticSearch、Kibana
关于ElasticSearch、Kibana的安装请参看重学ElasticSearch (ES) 系列(一):核心概念及安装
2.2、安装Logstash
这里我是用docker进行安装
- 拉取镜像
- 创建目录文件
- 编写配置文件
在logstash/config目录下编写配置文件
- logstash/config/logstash.yml
- logstash/config/pipelines.yml