文章目录
1、ELK简介
ELK是Elastic公司的三个组件,这三个组件配合实现日志收集.
- ElasticSearch: 日志分布式存储/搜索工具,原生支持集群功能,Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。无论是结构化文本还是非结构化文本,数字数据或地理空间数据,Elasticsearch都能以支持快速搜索的方式有效地对其进行存储和索引。
- Logstash: 用于收集、处理和转发日志信息,能够从从本地磁盘,网络服务(自己监听端口,接受用户日志),消息队列等多个来源采集数据,转换数据,然后进行过滤分析并将数据发送到最喜欢的“存储库(Elasticsearch等)”中。Logstash能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用Grok从非结构化数据中派生出结构,从IP地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。
- Kibana: 是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。并且可以为Logstash和ElasticSearch提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。还可以让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(Dashboard)实时显示Elasticsearch查询动态
简单的说就是:Logstash收集、处理和转发信息,Elasticsearch存储和搜索信息,Kibana展示信息。
2、Logstash(简要介绍,因为Logstash需要做较多配置)
Logstash 事件处理管道具有三个阶段:inputs→filters→output。 inputs生成事件(收集),filters修改它们(处理),outputs将它们发送到其它地方(转发)。
2.1、inputs
input plugin用于提取数据, 这些数据可以来自日志文件,TCP或UDP侦听器,若干协议特定插件(如syslog或IRC)之一,甚至是排队系统(如Redis,AQMP或Kafka)。 此阶段使用围绕事件来源的元数据标记传入事件。
一些常用的输入:
- file:从文件系统上的文件读取
- redis: 从 redis 服务器读取
- beats:处理 Beats 发送的事件。
- tcp: 从 TCP 套接字读取事件
2.1、filters
filters是 Logstash 管道中的中间处理设备。如果事件符合特定条件,可以将过滤器与条件结合起来对事件执行操作。换句话说可以对事件进行一些处理。
一些有用的过滤器包括:
- grok:解析和构造任意文本。 Grok 目前是 Logstash 中将非结构化日志数据解析为结构化和可查询的最佳方式。
- mutate:对事件字段执行一般转换。 您可以重命名、删除、替换和修改事件中的字段。
- drop:完全删除一个事件,例如调试事件。
- geoip:添加有关 IP 地址地理位置的信息
2.1、outputs
outputs是 Logstash 管道的最后阶段,可以将已处理的事件加载到其他内容中,例如ElasticSearch或其他文档数据库,或排队系统,如Redis,AQMP或Kafka。 它还可以配置为与API通信。 一个事件可以有多个输出,但是一旦所有输出处理完成,事件就完成了它的执行。
一些常用的输出包括:
- elasticsearch:将事件数据发送到 Elasticsearch。
- file:将事件数据写入磁盘上的文件。
- kafka:将事件写入 Kafka 主题
3、SpringBoot + ELK环境搭建
本机环境介绍:
linux:
pikaqiu@pikaqiu-virtual-machine:~$ uname -a
Linux pikaqiu-virtual-machine 5.11.0-27-generic #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Docker 环境:
pikaqiu@pikaqiu-virtual-machine:~$ docker version
Client: Docker Engine - Community
Version: 20.10.0
API version: 1.41
Go version: go1.13.15
Git commit: 7287ab3
Built: Tue Dec 8 18:59:53 2020
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.0
API version: 1.41 (minimum version 1.12)
Go version: go1.13