当前位置: 首页 > news >正文

【微服务】Spring Boot集成ELK实用案例

推荐一款我一直在用国内很火的AI网站,包含GPT3.5/4.0、文心一言、通义千问、智谱AI等多个AI模型,支持PC、APP、VScode插件同步使用,点击链接跳转->ChatGPT4.0中文版

一、前言

在现代软件开发中,微服务架构已成为一种流行趋势。随之而来的挑战之一是如何有效地管理和分析分布在各个服务中的日志数据。本文将深入探讨如何在Spring Boot中集成ELK栈,以实现集中日志管理的目标。

二、为什么需要ELK

随着微服务架构的普及,服务数量的增加导致日志数据分散在不同的服务器上,这使得日志管理变得复杂。ELK栈的引入能够帮助我们集中管理日志,提供实时监控,快速搜索以及日志分析的能力,从而提升系统的可维护性和可观察性。

三、ELK介绍

3.1 什么是ELK

ELK是Elasticsearch、Logstash和Kibana的缩写。这三个组件协同工作,提供了一个强大的解决方案,用于日志的收集、存储、搜索和可视化。

3.2 ELK工作原理

ELK的工作原理基于以下流程:

  • Logstash 处理来自不同源的日志数据,并将其转换成结构化的格式。
  • Elasticsearch 作为搜索和分析引擎,存储和索引日志数据。
  • Kibana 为用户提供了一个强大的前端界面,用于数据的搜索、展示和图形化分析。

在这里插入图片描述

四、ELK环境搭建

4.1 搭建Elasticsearch环境

4.1.1 获取Elasticsearch镜像

使用Docker可以轻松获取Elasticsearch镜像。

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.9.3
4.1.2 启动Elasticsearch容器

使用Docker启动Elasticsearch容器,并映射必要的端口。

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:7.9.3
4.1.3 配置Elasticsearch参数

通过修改配置文件elasticsearch.yml,可以设置集群名称、节点名称等参数。

4.1.4 重启Elasticsearch容器并访问

重启容器以应用配置更改,并通过浏览器访问http://localhost:9200验证是否启动成功。
在这里插入图片描述

4.2 搭建Kibana

4.2.1 拉取Kibana镜像
docker pull docker.elastic.co/kibana/kibana:7.9.3
4.2.2 启动Kibana容器
docker run -d --name kibana --link elasticsearch:elasticsearch -p 5601:5601 kibana:7.9.3
4.2.3 修改配置文件

kibana.yml中配置Elasticsearch的URL。

4.2.4 重启容器并访问

重启Kibana容器,并通过http://localhost:5601访问Kibana界面。

在这里插入图片描述

4.3 搭建Logstash

4.3.1 下载安装包

从官方网站下载Logstash的安装包。

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.1.0.tar.gz
4.3.2 解压安装包

解压下载的安装包到指定目录。

tar -zxvf logstash-7.1.0.tar.gz
4.3.3 新增配置Logstash文件

创建Logstash配置文件,定义输入、过滤器和输出。

cd cd logstash-7.1.0/mkdir log-confvi logstash.conf
input {tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json}
}
output {elasticsearch {hosts => "es公网地址:9200"index => "springboot-logstash-%{+YYYY.MM.dd}"},stdout { codec => rubydebug }
}

五、Spring Boot集成ELK

5.1 集成过程

5.1.1 创建Spring Boot工程

使用Spring Initializr或者你喜欢的IDE创建一个新的Spring Boot项目。选择Web、Actuator和其他你需要的依赖。

5.1.2 导入依赖

pom.xml中添加以下依赖,以便集成ELK:

<dependencies><!-- Logstash logback encoder --><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version></dependency><!-- 其他依赖 -->
</dependencies>
5.1.3 配置logback日志

创建或修改logback-spring.xml文件,配置Logback以使用Logstash encoder,并将日志发送到Logstash:

<configuration><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>localhost:5000</destination> <!-- Logstash的地址 --><encoder class="net.logstash.logback.encoder.LogstashEncoder" /></appender><root level="INFO"><appender-ref ref="LOGSTASH" /></root>
</configuration>
5.1.4 增加测试接口

在你的Spring Boot应用中增加一个简单的REST接口,用于生成日志:

@RestController
public class LoggingController {private static final Logger logger = LoggerFactory.getLogger(LoggingController.class);@GetMapping("/log")public String log() {logger.info("Log message from Spring Boot");return "Check the logs for a message";}
}

5.2 效果演示

5.2.1 启动服务工程

运行Spring Boot应用,并确保所有的ELK服务都已经启动并运行。
在这里插入图片描述

5.2.2 配置索引模式

在Kibana中创建一个索引模式,以便能够检索和查看Elasticsearch中的日志数据。
在这里插入图片描述

5.2.3 调用接口验证效果

通过调用之前创建的REST接口,生成日志。然后在Kibana中查看这些日志,验证集成是否成功。
在这里插入图片描述

5.3 ELK使用补充

在实际使用中,可能需要对ELK进行更多的配置,比如设置Logstash的过滤器来解析复杂的日志格式,或者在Kibana中创建复杂的仪表板来展示日志数据。

六、写在文末

通过本文的介绍,我们了解了如何在Spring Boot应用中集成ELK栈,从而实现高效的日志管理。ELK栈的强大功能能够帮助我们更好地理解和分析系统的运行情况,是微服务架构中不可或缺的工具之一。

集成ELK栈是一个涉及多个组件和配置的过程,可能会遇到各种问题。因此,耐心调试和仔细阅读文档是非常重要的。希望本文能够帮助你顺利完成集成,并且能够从中获得实际的价值。

http://www.lryc.cn/news/293592.html

相关文章:

  • 已解决: ImportError: cannot import name ‘relu‘ from ‘keras.layers‘ 问题
  • python-产品篇-火车票分析助手
  • 设计一个可以智能训练神经网络的流程
  • 自然语言处理(02/10):自然语言处理任务和应用程序
  • Jmeter学习系列之三:测试计划详细介绍
  • mermaid使用指南+notion使用实例-持续更新中
  • Pytroch 自写训练模板适合入门版 包含十五种经典的自己复现的一维模型 1D CNN
  • 【30秒看懂大数据】变量
  • Redis - 多集群数据源配置
  • 五大架构风格之四-虚拟机架构风格
  • 在 C# 中 checked 和 unchecked 关键字
  • 【算法分析与设计】跳跃游戏
  • openssl3.2 - helpdoc - P12证书操作
  • 【产业实践】使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通
  • 【操作系统】HeapByteBuffer和DirectByteBuffer的区别
  • C++并发编程 -2.线程间共享数据
  • Kubernetes-资源清单
  • ABAP 笔记--内表结构不一致,无法更新数据库MODIFY和UPDATE
  • 机器学习-3降低损失(Reducing Loss)
  • 蓝桥杯备战(AcWing算法基础课)-高精度-减-高精度
  • AspNet web api 和mvc 过滤器差异
  • HarmonyOS应用/服务发布:打造多设备生态的关键一步
  • 【数据结构】双向带头循环链表实现及总结
  • 创建自己的Hexo博客
  • 音箱、功放播放HDMI音频解决方案之HDMI音频分离器HHA
  • 天猫数据分析:2023年坚果炒货市场年销额超71亿,混合坚果成多数消费者首选
  • YouTrack 用户登录提示 JIRA 错误
  • 题目 1163: 排队买票
  • 【lesson9】高并发内存池Page Cache层释放内存的实现
  • Java基础面试题-6day