【微服务】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栈是一个涉及多个组件和配置的过程,可能会遇到各种问题。因此,耐心调试和仔细阅读文档是非常重要的。希望本文能够帮助你顺利完成集成,并且能够从中获得实际的价值。
相关文章:

【微服务】Spring Boot集成ELK实用案例
推荐一款我一直在用国内很火的AI网站,包含GPT3.5/4.0、文心一言、通义千问、智谱AI等多个AI模型,支持PC、APP、VScode插件同步使用,点击链接跳转->ChatGPT4.0中文版 一、前言 在现代软件开发中,微服务架构已成为一种流行趋势。…...

已解决: ImportError: cannot import name ‘relu‘ from ‘keras.layers‘ 问题
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...

python-产品篇-火车票分析助手
文章目录 开发环境要求运行方法PyCarmVsCode 代码效果 开发环境要求 本系统的软件开发及运行环境具体如下。 (1)操作系统:操作系统:Windows 7、Windows 8、Windows 10。 (2)Python版本:Python …...

设计一个可以智能训练神经网络的流程
设计一个可以智能训练神经网络的流程,需要考虑以下几个关键步骤: 初始化参数:设定初始的batch size和learning rate,以及其他的神经网络参数。训练循环:开始训练过程,每次迭代更新网络的权重。监控loss:在每个训练周期(epoch)后,监控loss的变化情况。动态调整:根据l…...
自然语言处理(02/10):自然语言处理任务和应用程序
一、描述 在广阔的人工智能领域,自然语言处理 (NLP) 是一个迷人而充满活力的领域。NLP 弥合了计算机和人类语言之间的鸿沟,使机器能够理解、解释和生成类似人类的文本。这项变革性技术具有深远的影响,影响着我们日常生…...
Jmeter学习系列之三:测试计划详细介绍
目录 前言 步骤1:启动JMeter窗口 步骤2:添加/删除测试计划元素 步骤3:加载并保存测试计划元素。 步骤4:配置树元素 步骤5:保存JMeter测试计划 步骤6:运行JMeter测试计划...

mermaid使用指南+notion使用实例-持续更新中
最近一个月了吧,发现Notion插入图片的功能坏了,直接paste会404,本地上传也不行。电脑本地版和手机端都插不了图片,很头疼。解决方法也简单,用图床,放链接。 付费版我用的七牛,结合PicGo&#x…...

Pytroch 自写训练模板适合入门版 包含十五种经典的自己复现的一维模型 1D CNN
训练模板 在毕业之前,决定整理一下手头的代码,自己做1D-CNN这吗久,打算开源一下自己使用的1D-CNN的代码,包括用随机数生成一个模拟的数据集,到自己写的一个比较好的适合入门的基础训练模板,以及自己复现的…...
【30秒看懂大数据】变量
简单说 变量是指研究或观察中可能发生变化的事物、属性或特征,它们可以用来描述数据或现象的不同方面。 举例理解 一位热衷于烹饪的大厨老李,经常尝试不同的菜肴来满足不同顾客的口味。 1. 老李明白,每种食材都等同于一个重要的变量…...
Redis - 多集群数据源配置
目录 前言依赖yml配置redis多集群数据源配置类思考 redis工具类 前言 工作时有一个项目配置了多个redis数据源,使用时出现了指定了使用副数据源,数据却依然使用了主数据源的情况。经过排查,发现配置流程较为繁琐易错,此处做一个记…...
五大架构风格之四-虚拟机架构风格
虚拟机架构风格: 虚拟机架构风格是一种软件架构,它通过模拟完整的计算机系统(包括硬件)来运行程序。这种风格的核心是虚拟机监控器。如最出名的虚拟机VM,在使用虚拟机架构,一个或多个虚拟机可以在单一物理主…...
在 C# 中 checked 和 unchecked 关键字
在 C# 中,checked 和 unchecked 是用于控制整数运算溢出检查的关键字。它们允许我们明确指定在进行整数运算时是否要检查溢出,以及如何处理溢出情况。 默认情况下,C# 中的整数运算是未检查的,也就是说,当运算结果溢出…...

【算法分析与设计】跳跃游戏
📝个人主页:五敷有你 🔥系列专栏:算法分析与设计 ⛺️稳中求进,晒太阳 题目 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断…...
openssl3.2 - helpdoc - P12证书操作
文章目录 openssl3.2 - helpdoc - P12证书操作概述笔记/doc/html/man1/CA.pl.htmlCA.pl -newcaCA.pl -newreqCA.pl -signCA.pl -pkcs12 "My Test Certificate"/doc/html/man1/openssl-pkcs12.html备注END openssl3.2 - helpdoc - P12证书操作 概述 D:\3rd_prj\cryp…...

【产业实践】使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通
使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通 效果图 背景介绍 当谈到目标检测算法时,YOLO(You Only Look Once)系列算法是一个备受关注的领域。YOLO通过将目标检测任务转化为一个回归问题,实现了快速且准确的目标检测。以下是YOLO的基…...

【操作系统】HeapByteBuffer和DirectByteBuffer的区别
DirectByteBuffer和HeapByteBuffer是Java NIO中ByteBuffer的两种实现方式。 HeapByteBuffer是在Java堆上分配的字节缓冲区,它使用数组来存储数据。HeapByteBuffer的优点是它具有良好的兼容性和可移植性,且在大多数情况下性能表现良好。它适用于大部分的…...

C++并发编程 -2.线程间共享数据
本章就以在C中进行安全的数据共享为主题。避免上述及其他潜在问题的发生的同时,将共享数据的优势发挥到最大。 一. 锁分类和使用 按照用途分为互斥、递归、读写、自旋、条件变量。本章节着重介绍前四种,条件变量后续章节单独介绍。 由于锁无法进行拷贝…...

Kubernetes-资源清单
一、k8s中的资源 什么是资源清单 我们跟kubernetes集群进行交互的时候,我们需要给K8S集群传输数据,传输信息,K8S才能按照我们的要求来运行,这个传输的文件,基本上都会通过资源清单进行传递。资源清单是我们跟集群进行…...

ABAP 笔记--内表结构不一致,无法更新数据库MODIFY和UPDATE
目录 ABAP 笔记内表结构不一致,无法更新数据库MODIFY和UPDATE ABAP 笔记 内表结构不一致,无法更新数据库 MODIFY和UPDATE 如果是使用MODIFY或者UPDATE...

机器学习-3降低损失(Reducing Loss)
机器学习-3降低损失(Reducing Loss) 学习内容来自:谷歌ai学习 https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hlzh-cn 本文作为学习记录1.降低损失:迭代方法 迭代学习 下图展示了机器学习算法用于训…...
系统是win11+两个ubuntu,ubuntu20.04和ubuntu22.04,想删除ubuntu20.04且不用保留数据
在 Ubuntu 22.04 的终端里运行这些命令: 重启电脑,选择启动 Ubuntu 22.04;打开终端;从 lsblk 开始操作。 如果你不确定当前启动的是哪个系统,可以在终端输入: lsb_release -a它会输出: Distributor ID: …...

VLAN的作用和原理
1. 为什么要有vlan? 分割广播域,避免广播风暴,造成网络资源的浪费 可以灵活的组网,便于管理,同时还有安全加固的功能 2. vlan是怎么实现的?端口的原理? 设置VLAN后,流量之间的转…...

压缩包方式在Linux和Windows下安装mongodb
目录 安装流程安装实例1. Linux安装2. Windows安装 总结 安装流程 zip方式安装 优点:自定义性较高,可以自己控制数据、日志等文件的位置 1、下载安装包 2、解压安装包 3、创建各类文件路径 4、配置conf文件 5、使用自定义配置文件启动 安装实例 1. Li…...
Windows10下使用QEMU安装Ubuntu20.04虚拟机,并启用硬件加速
Windows10下使用QEMU安装Ubuntu20.04虚拟机,并启用硬件加速 作者将狼才鲸创建日期2025-05-30 CSDN阅读地址:Windows10下使用QEMU安装Ubuntu20.04虚拟机,并启用硬件加速 本文档源码地址:Windows10下使用QEMU安装Ubuntu20.04虚拟机…...
Android高级开发第一篇 - JNI(初级入门篇)
文章目录 Android高级开发JNI开发第一篇(初级入门篇)🧠 一、什么是 JNI?✅ 为什么要用 JNI? ⚙️ 二、开发环境准备开发工具 🚀 三、创建一个支持 JNI 的 Android 项目第一步:创建新项目项目结构…...
FactoryBean 接口
Spring 框架中 FactoryBean 接口的特性,这是 Spring 提供的一种特殊机制,用于创建和管理复杂 Bean。让我通过示例和解释帮您理解这个概念。 一、FactoryBean 是什么? FactoryBean 是 Spring 框架提供的一个工厂接口,用于创建复杂…...

2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析
2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析 一、流量分析 题目没有任何提示,附件gzl.pcap 解题哥斯拉流量300多KB包很多,没啥经验只能挨个看回来之后又狠狠得撸了一把哥斯拉流量分析我这里用的是哥斯拉4.0.1 测试链接…...
关于5090安装tensorrt(python api)的过程
前提条件 硬件5090 ubuntu24.04 cuda版本12.8 找到适配的tensorrt版本 Nvidia官网 完事了之后找到对应版本tar安装包 tar -xvzf tensorrt-你的安装包.tar 然后记得将路径加入到环境变量中 #在这里插入代码片 gedit ~/.bashrc # 添加 export PATH/PATH/To/TensorRT-你的按安…...
Python 爬虫工具 BeautifulSoup
文章目录 1. BeautifulSoup 概述1.1. 安装 2. 对象的种类2.1. BeautifulSoup2.2. NavigableString(字符串)2.3. Comment2.4. Tag2.4.1. 获取标签的名称2.4.2. 获取标签的属性2.4.3. 获取标签的内容2.4.3.1. tag.string2.4.3.2. tag.strings2.4.3.3. tag.…...

将ipynb文件转换为markdown格式文件
文章目录 将ipynb文件转换为markdown格式文件nbconvert 包安装nbconvert 使用 将ipynb文件转换为markdown格式文件 有时候,我们需要把Jupyter notebook的.ipynb格式文件转换为markdown格式.md,便于使用。 那么,我们可以通过安装nbconvert包&a…...