Springboot部署ELK实战
Springboot部署ELK实战
- 1、部署docker、docker-compose环境
- 安装docker
- 安装docker-compose
- 2、搭建elk
- 1、构建目录&&配置文件
- 1、docker-compose.yml 文档
- 2、Kibana.yml
- 3、log-config.conf
- 2、添加es分词器插件
- 3、启动
- 3、Springboot项目引入es、logStash配置
- 1、引入依赖
- 2、修改application.yml配置文件
- 3、调整logback.properties配置文件
- 4、使用情况
- 1、查看服务是否成功运行
- 2、Kibana管理索引
- 3、日志搜索
1、部署docker、docker-compose环境
安装docker
# 安装docker
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun# docker开机自启
systemctl enable docker
# 启动docker
systemctl start docker# 创建docker用户组
groupadd docker# 当前用户加入docker组
usermod -aG docker $USER# 测试安装是否正确
docker info
docker run hello-world# 配置镜像服务
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://6xe6xbbk.mirror.aliyuncs.com"]
}
EOF
# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker
安装docker-compose
# 安装docker-compose依赖
curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 添加执行权限
chmod +x /usr/local/bin/docker-compose
# 查看是否安装成功
docker compose version
2、搭建elk
1、构建目录&&配置文件
按照图中展示的层级创建目录以及文件
共创建2个目录 kibana、logstash,3个文件docker-compose.yml、kibana.yml、log-config.conf

1、docker-compose.yml 文档
version: "3.3"
volumes:data:config:plugin:
networks:es:
services:elasticsearch:image: elasticsearch:7.14.0ports:- "9200:9200"networks:- "es"environment:# 单节点模式- "discovery.type=single-node"- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"# 文件挂载volumes:- data:/usr/share/elasticsearch/data- config:/usr/share/elasticsearch/config- plugin:/usr/share/elasticsearch/pluginskibana:image: kibana:7.14.0ports:- "5601:5601"networks:- "es"volumes:- ./kibana/kibana.yml:/usr/share/kibana/config/kibana.ymllogstash:image: logstash:7.14.0ports:- "4560:4560"- "4561:4561"networks:- "es"volumes:- ./logstash/log-config.conf:/usr/share/logstash/pipeline/logstash.conf
2、Kibana.yml
server.host: "0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN" # 这个是为了可视化界面展示为中文
3、log-config.conf
input {
# logback发送日志信息,为tcp模式,也可以使用redis、kafka等方式进行日志的发送tcp {# logstash接收数据的端口和ip# 4560收集日志级别为infomode => "server"host => "0.0.0.0"port => 4560codec => json_linestype => "info"}tcp {# 4561收集日志级别为errormode => "server"host => "0.0.0.0"port => 4561codec => json_linestype => "error"}
}
output {elasticsearch {hosts => "elasticsearch:9200"# 可自定义,通过参数值补充,不存在的索引会先创建再赋值# 按日生成索引index => "logutils-%{type}-%{+YYYY-MM-dd}" }# 输出到控制台stdout { codec => rubydebug }
}
2、添加es分词器插件
todo 引入插件
# 将分词器放在创建es镜像所指定的插件挂载目录
plugin:/usr/share/elasticsearch/plugins
# 检索当前所有的卷
docker volume ls

# 查找es挂载插件目录的绝对路径
docker volume inspect elk_workspace_plugin

# 将ik-7.14.0.zip 解压到es挂载插件目录的对接路径
unzip -d /var/lib/docker/volumes/elk_workspace_plugin/_data ik-7.14.0.zip

3、启动
# 在当前docker-compose.yml 同级目录下启动
# -d 后台启动
docker-compose up -d # 查看运行情况
docker ps -a# 查看运行日志
docker logs -f 容器id/容器名查看运行日志# 停止运行
docker-comopse down# 强制读取更新配置后重启
docker-compose up --force-recreate -d

3、Springboot项目引入es、logStash配置
1、引入依赖
<!--集成logstash-->
<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.3</version>
</dependency><!--elasticsearch-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.3.10.RELEASE</version>
</dependency>
2、修改application.yml配置文件
spring:elasticsearch:# 此处替换对应ipuris: ip:9200
3、调整logback.properties配置文件
message的配置根据需要,sessionId、traceId是通过配置才能引用的
"message": "[%X{sessionId}] [%X{traceId}] %class:%line <![CDATA[%message]]>"
<!--LogStash访问host--><springProperty scope="context" name="LOG_STASH_HOST" source="logstash.host"/><!--ERROR日志输出到LogStash--><appender name="LOG_STASH_ERROR" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><!-- 这里定义转发ip和端口 --><destination>ip:4561</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>Asia/Shanghai</timeZone></timestamp><!--自定义日志输出格式--><pattern><pattern>{"project": "logutils-error","level": "%level","service": "${APP_NAME:-}","thread": "%thread","class": "%logger","message": "[%X{sessionId}] [%X{traceId}] %class:%line <![CDATA[%message]]>","stack_trace": "%exception{20}","classLine":"%class:%line"}</pattern></pattern></providers></encoder></appender><!--接口访问记录日志输出到LogStash--><appender name="LOG_STASH_RECORD" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>ip:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>Asia/Shanghai</timeZone></timestamp><!--自定义日志输出格式--><pattern><pattern>{"project": "logutils-info","level": "%level","service": "${APP_NAME:-}","class": "%logger","message": "[%X{sessionId}] [%X{traceId}] %class:%line %message","thread": "%thread","classLine":"%class:%line"}</pattern></pattern></providers></encoder></appender><logger name="com" level="ERROR"><appender-ref ref="LOG_STASH_ERROR"/></logger><logger name="com" level="INFO"><appender-ref ref="LOG_STASH_RECORD"/></logger>
4、使用情况
1、查看服务是否成功运行
Eleasticsearch: http://ip:9200

Kibana: http://ip:5601

2、Kibana管理索引
检索Stack Management

创建索引模式

启动后会自动生成对应的索引提供选择

配置按照@timestamp 作为全局时间筛选

3、日志搜索
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUEwTdrM-1691146011745)(爽哥手记.assets/image-20230802144715724.png)]](https://img-blog.csdnimg.cn/4581bc8f45af407aa16efa05539ce2bd.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-em0pDJjF-1691146011745)(爽哥手记.assets/image-20230802144732473.png)]](https://img-blog.csdnimg.cn/dc1e2c7ac73a4cdda7b7b412a421b565.png)
以上便是Springboot部署ELK实战的全部内容,如有解析不当欢迎在评论区指出!
相关文章:
Springboot部署ELK实战
Springboot部署ELK实战 1、部署docker、docker-compose环境安装docker安装docker-compose 2、搭建elk1、构建目录&&配置文件1、docker-compose.yml 文档2、Kibana.yml3、log-config.conf 2、添加es分词器插件3、启动 3、Springboot项目引入es、logStash配置1、引入依赖…...
【Leetcode】76.最小覆盖子串(困难)
一、题目 1、题目描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存…...
C++ 指针函数和函数指针
除了void类型的函数之外,函数在调用结束之后都要有返回值,指针也可以是函数的返回值。当一个函数的返回值是指针类型时,这个函数就是指针型函数。 使用指针型函数的最主要目的就是要在函数结束时把大量的数据从被调函数返回到主调函数中。而通…...
JAVA实现存在更新不存在插入与及多余的进行删除(三)
这个版本,主要是迭代重载了下save方法,不废话,直接上代码: /*** 保存数据,处理数据的增删改** param paramData 前台的参数* param dbData 后台的数据* param clazz 前后台参数对应的class* param beanName …...
iMX6ULL驱动开发 | OLED显示屏SPI驱动实现(SH1106,ssd1306)
周日业余时间太无聊,又不喜欢玩游戏,大家的兴趣爱好都是啥?我觉得敲代码也是一种兴趣爱好。正巧手边有一块儿0.96寸的OLED显示屏,一直在吃灰,何不把玩一把?于是说干就干,最后在我的imax6ul的lin…...
拥抱创新:用Kotlin开发高效Android应用
拥抱创新:用Kotlin开发高效Android应用 引言 在当今数字时代,移动应用已经成为人们生活中不可或缺的一部分。无论是社交媒体、电子商务还是健康管理,移动应用已经深刻地影响了我们的生活方式。随着移动设备的普及和功能的增强,A…...
Effective Java笔记(20)接口优于抽象类
Java提供了两种机制,可以用来定义允许多个实现的类型:接口和抽象类。自从Java 8为继承引入了缺省方法( default method),这两种机制都允许为某些实例方法提供实现。主要的区别在于,为了实现由抽象类定义的类型,类必须成…...
react学习笔记——1. hello react
包含的包一共有4个,分别的作用如下: babel.min.js:可以进行ES6到ES5的语法转换;可以用于import;可以用于将jsx转换为js。注意,在开发的时候,这个转换(jsx转换js)不在线上…...
明明已经安装字体,但IDEA、CLION无法找到思源黑体/Source Hans Sans的问题解决
IDEA、CLION的Jetbrain系列软件不支持非TrueType的中文字体,而Adobe官方给出的字体却不是TrueType的,所以便会导致Jetbrain系软件无法找到已安装的中文字体,因此我们需要安装TrueType的字体 请在以下Github链接中下载: TrueType思…...
2023-08-03力扣今日四题
链接: 剑指 Offer 67. 把字符串转换成整数 题意: 按规则将字符串转换成整数,规则不详叙 解: 字符串处理 实际代码: #include<iostream> #include<cstring> #include<climits> using namespac…...
【学会动态规划】最佳买卖股票时机含冷冻期(15)
目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟我…...
随机RSI震荡指标公式(StochRSI),RSI和KDJ二合一
随机RSI震荡指标(StochRSI)是由图莎尔钱德和斯坦利克罗发明的一种摆动指标,结合了相对强弱指标(RSI)和随机指标(KDJ)的原理,目的是提高灵敏度,解决RSI难以达到超买超卖区的问题,以便…...
轻松搭建酒店小程序
酒店小程序的制作并不需要编程经验,只需要按照以下步骤进行操作,就能很快地搭建自己的小程序商城。 第一步,注册登录账号进入操作后台,找到并点击【商城】中的【去管理】进入商城的后台管理页面,然后再点击【小程序商城…...
算法通过村——Hash和队列问题解析
算法的备胎Hash和找靠山的队列 备胎Hash Hash,不管是算法,还是在工程中都会大量使用。很多复杂的算法问题都用Hash能够轻松解决,也正是如此,在算法例就显得没什么思维含量,所以Hash是应用里的扛把子,但在算…...
租赁类小程序定制开发|租赁管理系统源码|免押租赁系统开发
随着互联网的发展,小程序成为了一种重要的移动应用开发方式。租赁小程序作为其中的一种类型,可以为很多行业提供便利和创新。下面我们将介绍一些适合开发租赁小程序的行业。 房屋租赁行业:租房小程序可以帮助房东和租户快速找到合适的租赁…...
后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄,vue成神之路★ ★ 解决算法,一个专栏就够了★ ★ 架…...
Mac 安装不在 Apple 商店授权的应用程序
文章目录 一、场景介绍二、实操说明 一、场景介绍 在日常的工作生活中,发现一些好用的应用程序,但是出于某些原因,应用程序的开发者并没有将安装包上架到苹果商店。 那么这些优秀的应用程序下载安装以后就会出现如下弹框被拒之门外 二、实操…...
【MyBatis】MyBatis把空字符串转换成0的问题处理方案(96)
先看问题: Postman入参: MyBatis采用map循环插入: // Mapper接口层void addPar(Param(value "question") Map<String, Object> paramMap);<!-- 新增:参数 --><insert id"addPar" parameterType"map">INSERT IGNO…...
OpenLayers实战,OpenLayers获取移动端精确定位,OpenLayers适配App混合H5方式调用手机定位位置并定位到指定点
专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解OpenLayers如何获取移动端精确定位位置。不使用任何native本地方法,只使用纯js实现。 本篇文章适用于App混合H5方式调用手机精确定位,打包时需要选择GPS位置权限,手机获取定位过程中会弹出是否允许定位的权限提示。 …...
Go指针取址问题:循环后每次都拿到相同内容
例子: func main() {yourList : [...]int{1, 2, 3}yourMap1 : make(map[int]*int)yourMap2 : make(map[int]*int)for key, value : range yourList {// 修改前yourMap1[key] &value// 修改后tmp : valueyourMap2[key] &tmpfmt.Println(value, &value…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...
HTML版英语学习系统
HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具,使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章,系统朗读帮助练习听力和发音,适合跟读练习,模仿学习;实时词典查询 - 双…...
