ELK介绍

一、前言

前面的章节我们介绍通过ES Client将数据同步到ElasticSearch中,但是像日志这种数据没有必要自己写代码同步到ES那样会折腾死,直接采用ELK方案就好,ELK是Elasticsearch、Logstash、Kibana三款开源软件的缩写,ELK主要用于收集多台服务器日志统一整合后提供给用户。E和K前面都有介绍,L即Logstash它可以从各种数据源收集数据,并对数据进行过滤、分析和统一格式并将输出结果存储到指定位置。

二、Logstash工作原理介绍

图片来源于网络。

Logstash事件处理分为三个阶段

1、输入

使用输入将数据导入logstash,常见的输入file、syslog、redis、beats。

2、过滤器

过滤器是logstash管道的中间处理设备,一些常见有用过滤器:

grok:解析和构造任意文本。Grok是非结构化日志解析为结构化日志最佳方式。

mutate:对字段进行一般转换,可以重命令、删除、替换和修改事件中字段。

3、输出

一个事件可以有多个输出,一些常见的输出:elasticsearch、file、graphite。

四、ELK几种架构

1、各节点部署Logstash

Logstash部署于各节点,收集日志、数据、经过分析过滤后发送给远端ES.

优点是架构简单,缺点是Logstash比较占资源,并且当Logstash故障时数据会丢失,这种加构用来收集系统日志没什么问题,但用于同步业务数据肯定是不行的。

2、增加消息队列

在各节点部署Logstash Agent将日志数据收集然后发送给Kafka,Kafka再将数据传给Logstash进行过滤后发送给ES。引入消息队列,即使Logstash故障,数据也不会丢失。

3、Beats

收集端由logstash换成更轻量级的Beats,Beats有各种收集器,比如FileBeats(日志文件收集)、PacketBeats(网络数据包收集)等。

三、一个简单的ELK搭建例子

1、ES安装配置

下载地址:

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.2-linux-x86_64.tar.gz

解压后修改elasticsearch.yml,将xpack这些都设置为false,不然可能会报错。然后

./elasticsearch -d启动即可。

jvm.options 调整参数设置,不然机器搞崩掉了 -Xms512m -Xmx512m。

访问http://121.36.200.208:9200/有返回JSON,即说明安装正常。

2、Logstash安装配置

下载地址:

https://artifacts.elastic.co/downloads/logstash/logstash-8.5.2-linux-x86_64.tar.gz

解压后,执行./logstash -e 'input { stdin { } } output { stdout {} }', 在控制台输入字符,如果输出JSON表示安装成功。

config/jvm.options JVM参数调整一下 -Xms512m -Xmx512m

编写logstash配置文件 logstash-test.conf,配置从4560端口接收数据,然后输出到ES。

启动 ./bin/logstash -f ./config/logstash-test.conf

3、Kibana安装配置

下载地址

https://artifacts.elastic.co/downloads/kibana/kibana-8.5.2-linux-x86_64.tar.gz

解压安装,kibana.yml 修改 server.host: "0.0.0.0" 允许远程访问。

./kibana启动

http://121.36.200.208:5601/ 即可以打开kibana控制台

4、SpringBoot项目

快速搭建一个SpringBoot项目,logback-spring.xml配置如下

配置一个LogstashTcpSocketAppender,指定输出目标为4560端口。

代码中增加以slf4j日志输出

5、查看效果

请求 http://121.36.200.208:8080/testLogstash?billsCode=1

然后在Kibana上索引就可以查看到索引文件如下。

Kibana配置Data View

最后进入Discover,可以快速根据关键词搜索日志内容了。

最后我们再也不用到每台服务器上用grep命令去查日志了,用了ELK确实方便了很多。

相关推荐
学软件的小铃铛21 小时前
ELK日志管理框架介绍
elk·系统架构
livemetee1 天前
一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
大数据·elk·搜索引擎
Gold Steps.2 天前
从0到1认识ElasticStack
elk·云原生·es
一只BI鱼6 天前
微服务常用日志追踪方案:Sleuth + Zipkin + ELK
elk·微服务·架构
xrz2776 天前
docker部署ELK,ES开启安全认证
elk·elasticsearch·docker
怡人蝶梦7 天前
Java大厂后端技术栈故障排查实战:Spring Boot、Redis、Kafka、JVM典型问题与解决方案
java·jvm·redis·elk·kafka·springboot·prometheus
玩电脑的辣条哥7 天前
如何用docker部署ELK?
elk·docker·容器
万米商云10 天前
商城前端监控体系搭建:基于 Sentry + Lighthouse + ELK 的全链路监控实践
前端·elk·sentry
YJQ996710 天前
基于ELK的分布式日志实时分析与可视化系统设计
分布式·elk
hwj运维之路14 天前
k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
elk·容器·kubernetes