【微服务】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.hqwc.cn/news/444173.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 axios 请求库,设置请求拦截

什么是 axios&#xff1f; 基于promise网络请求库&#xff0c;可以同构&#xff08;同一套代码可以运行在浏览器&#xff09;&#xff0c;在服务端&#xff0c;使用原生node.js的http模块&#xff0c;在客户端&#xff08;浏览器&#xff09;中&#xff0c;使用XMLHttpRequests…

轻松录制视频,WPS录屏功能全攻略

“有人知道wps怎么录屏吗&#xff1f;老师要求我们录制一段视频&#xff0c;是关于课堂教学的&#xff0c;可是我不会录制文档&#xff0c;眼看就快到提交的时间了&#xff0c;现在真的很着急&#xff0c;希望大家帮帮我&#xff01;” 随着信息技术的发展&#xff0c;录制屏幕…

探索设计模式的魅力:精准解读桥接模式-用桥接模式构建可扩展的软件系统

设计模式专栏&#xff1a;http://t.csdnimg.cn/nolNS 目录 一、了解桥接模式&#xff1a;探索抽象和实现的分离 1.1 开-闭原则 1.2 组合/聚合复用原则 1.3 定义 1.4 用意 1.5 基本思想 1.6 组成部分 1.7 桥梁模式的示意性系统的结构图 二、桥接模式的优势&#xff1a…

vue-cli项目运行流程介绍

一、前言 ​ 本文介绍 vue-cli搭建的项目运行流程&#xff0c;基于已经搭建好的基础项目。关于 vue-cli 构建项目的详细流程&#xff0c;可参考博文&#xff1a;使用vue脚手架构建项目 二、main.js 项目运行 会加载入口文件 main.js /* html文件中&#xff0c;通过script …

uWSGI、灰度发布、网站数据指标分析、网站限速

1 案例1&#xff1a;部署Python网站项目 1.1 问题 配置Nginx使其可以将动态访问转交给uWSGI&#xff1a; 1.2 方案 安装Python工具及依赖 安装uWSGI并编写配置文件 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a; 首先$教学资料目录/python拷贝到虚拟…

D2076——低压立体声耳机放大电路,适用于便携式小型收音机或立体声耳机作双通道或BIL应用,外接元件少,采用SOP8封装

D2076是一块双通道音频功率放大器&#xff0c;最低工作电压可到1.0V. 适用于便携式小型收音机或立体声耳机作双通道或BIL应用。 主要特点&#xff1a; ● BTL工作 Po90mW (典型值)。 ● 外接元件少 ● 通过外接晶体管作为耳机功率放大。 ● 工作电压低 (1.0V最小值)。 ● 工…

【计算机网络】Socket的SO_REUSEADDR选项与TIME_WAIT

SO_REUSEADDR用于设置套接字的地址重用。当一个套接字关闭后&#xff0c;它的端口可能会在一段时间内处于TIME_WAIT状态&#xff0c;此时无法立即再次绑定相同的地址和端口。使用SO_REUSEADDR选项可以允许新的套接字立即绑定到相同的地址和端口&#xff0c;即使之前的套接字仍处…

地理空间分析10——空间数据分析中的地理编码与Python

目录 写在开头1. 地理编码基础1.1 地理编码的基本原理1.1.1 坐标系统1.1.2 地名解析1.1.3 编码算法1.2 Python中使用地理编码的基础知识1.2.1 百度地图API1.2.2 高德地图API1.2.3 腾讯地图API1.3 Python中实现代码2. 逆地理编码2.1 利用Python进行逆地理编码2.1.1 获取高德地图…

使用Java实现HTTP持久连接:一次与网络的“长聊“

大家都知道&#xff0c;传统的HTTP连接就像是一次性的餐具&#xff0c;每发送一个请求&#xff0c;就得重新建立一个连接&#xff0c;然后快速用完就扔。这对于网络资源来说&#xff0c;简直就是一场"大肆挥霍"的派对。但幸好&#xff0c;我们有HTTP持久连接&#xf…

8、应急响应-战前溯源反制主机蜜罐系统HFishHIDSElkeidWazuh

用途&#xff1a;个人学习笔记&#xff0c;欢迎指正 目录 背景&#xff1a; 一、潮源反制-平台部署-蜜罐-Hfish 二、溯源反制-平台部署-HIDS-Wazuh 三、溯源反制-平台部署-HlDS-Elkeid-hub 背景&#xff1a; 攻击者对服务器存在着各种威胁行为&#xff0c;作为安全人员&am…

解决:ModuleNotFoundError: No module named ‘torchvision’

解决&#xff1a;ModuleNotFoundError: No module named ‘torchvision’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named torchvision背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff0c;直接安装方法二&#xff0c;手动下载安装方法三&…

Mongodb安装Linux

确定你的CentOS 版本 使用以下命令: /etc/centos-release下载Mongodb 解压tgz压缩包 创建data和log文件夹 , 确定你的文件夹访问权限 在log文件夹里面创建mongodb.log文件(这一步很重要 ! ! !) touch mongodb.log创建mongodb.conf文件 在你的mongodb文件夹下 vi mongo…