ELK + Spring Boot:日志分析入门与实践(一)

目录

一、安装ELK

1.1 版本选择

1.2 linux环境安装

1.3 ES配置启动

 1.4 Kibana配置启动

1.5 Logstash配置启动

二、项目调整

2.1 pom依赖调整

2.2 yml配置文件调整

2.3  logback-spring配置

三、日志查询分析

3.1 创建索引模式

3.2 查询日志数据


一、安装ELK

1.1 版本选择

版本选择:7.17.0

7.17.x版本是最后一个支持JDK8的版本,后续版本不支持。Elasticsearch 、Kibana、Logstash保持版本一致。

官方文档:支持一览表 | Elastic

1.2 linux环境安装

# 下载elasticsearch
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.0-linux-x86_64.tar.gz
- tar -xzf elasticsearch-7.17.0-linux-x86_64.tar.gz
# 下载kibana
- wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.0-linux-x86_64.tar.gz
- tar -xzf kibana-7.17.0-linux-x86_64.tar.gz
# 下载logstash
- wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.0-linux-x86_64.tar.gz
- tar -xzf logstash-7.17.0-linux-x86_64.tar.gz

1.3 ES配置启动

ES配置 elasticsearch.yml:

# 本机ip
network.host: 192.168.64.128
# 集群发现列表
discovery.seed_hosts: ["192.168.64.128"]
# 不加会报错,据说是一个bug
ingest.geoip.downloader.enabled: false
# 开启安全认证
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
xpack.security.transport.ssl.enabled: true

启动ElasticSearch报错:error updating geoip database-CSDN博客

启动ES后修改密码:

./bin/elasticsearch-setup-passwords interactive

启动访问:http://192.168.64.128:9200/

 1.4 Kibana配置启动

修改配置 kibana.yml:

# 本机ip
server.host: "192.168.64.128"
# ES地址
elasticsearch.hosts: ["http://192.168.64.128:9200"]
# 用户名密码(上一步修改的)
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"
# 配置中文显示
i18n.locale: "zh-CN"

启动访问: http://192.168.64.128:5601/

1.5 Logstash配置启动

创建Logstash读写权限角色和用户:

修改配置 logstash.yml :

# 节点名
node.name: test
# 配置地址
path.config: /home/mlj/soft/ELK/logstash-7.17.0/config/conf/*.conf
# 本机ip
api.http.host: 192.168.64.128

 /config/conf/下新建日志同步配置 test-log.conf:

注意output用户名和密码一定要配置有读写权限的用户,否则启动报错401、403

input {tcp {mode => "server"port => 4560host => "192.168.64.128"}
}
filter {}
output {elasticsearch {##具有对索引写权限的用户user => "logstash_to_es"##用户的密码password => "123456"action => "index"hosts  => ["http://192.168.64.128:9200"]index  => "hbintrade-framework-log-%{+YYYY.MM.dd}"}
}

 启动:

二、项目调整

2.1 pom依赖调整

<!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder --><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>7.0.1</version></dependency>

注意哦:logstash-logback-encoder,注意与自己的logstash版本匹配,测试logstash7.17与7.4的依赖不兼容启动项目报错:(降低到7.3以下解决)

java.lang.NoSuchMethodError:ch.qos.logback.classic.spi.ILoggingEvent.getInstant()Ljava/time/Instant

2.2 yml配置文件调整

# logstash地址配置
log:logstash-host: 192.168.64.128:4560

2.3  logback-spring配置

主要是:

<!-- 读取SpringBoot配置文件获取logstash的地址和端口 --><springProperty scope="context" name="logstash-host" source="log.logstash-host"/><!-- 将日志文件输出到Logstash --><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!-- 获取logstash地址作为输出的目的地 --><destination>${logstash-host}</destination><encoder chatset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender>

完整如下: 

<configuration><!-- 引用 Spring Boot 的 logback 基础配置 --><include resource="org/springframework/boot/logging/logback/defaults.xml"/><!-- 变量 hbintrade.info.base-package,基础业务包 --><springProperty scope="context" name="hbintrade.info.base-package" source="hbintrade.info.base-package"/><!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 --><property name="PATTERN_DEFAULT"value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/><!-- 读取SpringBoot配置文件获取logstash的地址和端口 --><springProperty scope="context" name="logstash-host" source="log.logstash-host"/><!-- 控制台 Appender --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><pattern>${PATTERN_DEFAULT}</pattern></layout></encoder></appender><!-- 文件 Appender --><!-- 参考 Spring Boot 的 file-appender.xml 编写 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><pattern>${PATTERN_DEFAULT}</pattern></layout></encoder><!-- 日志文件名 --><file>${LOG_FILE}</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 滚动后的日志文件名 --><fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern><!-- 启动服务时,是否清理历史日志,一般不建议清理 --><cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart><!-- 日志文件,到达多少容量,进行滚动 --><maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize><!-- 日志文件的总大小,0 表示不限制 --><totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap><!-- 日志文件的保留天数 --><maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory></rollingPolicy></appender><!-- 异步写入日志,提升性能 --><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 --><queueSize>256</queueSize><appender-ref ref="FILE"/></appender><!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 --><appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><pattern>${PATTERN_DEFAULT}</pattern></layout></encoder></appender><!-- 将日志文件输出到Logstash --><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!-- 获取logstash地址作为输出的目的地 --><destination>${logstash-host}</destination><encoder chatset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender><!-- 本地环境 --><springProfile name="local"><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 --><appender-ref ref="ASYNC"/>  <!-- 本地环境下,如果不想打印日志,可以注释掉本行 --><appender-ref ref="logstash"/></root></springProfile><!-- 其它环境 --><springProfile name="dev,test,stage,prod,default"><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="ASYNC"/><appender-ref ref="GRPC"/><appender-ref ref="logstash"/></root></springProfile>
</configuration>

启动项目:

三、日志查询分析

3.1 创建索引模式

只有匹配上索引模式的索引,才能在Discovery查看到数据

3.2 查询日志数据

参考:

  • SpringBoot整合ELK做日志(超完整)_springboot elk-CSDN博客
  • elasticsearch7.x 开启安全认证xpack,以及kibana、logstash、filebeat组件连接开启安全认证的es;_elasticsearch安全认证-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/884193.shtml

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

相关文章

SQL中`ORDER BY`、`SORT BY`、`DISTRIBUTE BY`、`GROUP BY`、`CLUSTER BY`的区别详解

SQL中ORDER BY、SORT BY、DISTRIBUTE BY、GROUP BY、CLUSTER BY的区别详解 在MySQL以及大数据处理工具如Hive中&#xff0c;ORDER BY、SORT BY、DISTRIBUTE BY、GROUP BY、CLUSTER BY这些关键字都与数据的排序和分组操作密切相关&#xff0c;但它们各自有着不同的功能和适用场…

elasticsearch 8.x 插件安装(六)之Hanlp插件

elasticsearch 8.x 插件安装&#xff08;六&#xff09;之Hanlp插件 elasticsearch插件安装合集 elasticsearch插件安装&#xff08;一&#xff09;之ik分词器安装&#xff08;含MySQL更新&#xff09; elasticsearch 8.x插件&#xff08;二&#xff09;之同义词安装如何解决…

测试Bug提交报告模板

撰写测试Bug提交说明时&#xff0c;清晰、详细和准确是至关重要的。这有助于开发团队快速理解问题、重现Bug并修复它。以下是一个测试Bug提交说明的模板&#xff0c;可以根据实际情况进行调整&#xff1a; 测试Bug提交说明 1. Bug基本信息 Bug编号&#xff1a;[系统自动生成…

C++ --- 指针的使用(如何理解指针?指针的细节你又了解多少?)

目录 一.什么是指针&#xff1f; 1. 为什么要写成int* p? 2. & 这个是什么&#xff1f; 二.指针的细节&#xff1a; 1.一级指针&#xff08;p,*p,&p的区别&#xff09;&#xff1a; 2.二级指针&#xff08;pp,*pp,**pp,&p的区别&#xff09;&#xff1a; …

Spring 设计模式之适配器模式

Spring 设计模式之适配器模式 适配器模式用到的场景java举例 适配器模式 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许接口不兼容的类一起工作。 其核心思想是通过一个适配器类将不兼容的接口转换成客户端期望的另一个接口&…

vi —— 终端中的编辑器

目标 vi 简介打开和新建文件三种工作模式常用命令分屏命令常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中&#xff0c;要对 服务器 上的文件进行 简单 的修改&#xff0c;可以使用 ssh 远程登录到服务器上&#xff0c;并且使用 vi 进行快速的编辑即可常见需要修改…

stm32cubeIde 使用笔记

划分flash空间 需要更改STM32xxx_FLASH.ld文件 输出其他格式文件

图片批量处理神器将每个文件夹中的多张图片拼接,一键实现横向和纵向的长图拼接效果,让你的图片处理更高效

是不是经常面对一堆图片文件夹&#xff0c;想要把它们里面的宝贝图片一一拼接起来&#xff0c;却又被繁琐的操作吓得直摇头&#xff1f;别担心&#xff0c;今天我要给大家介绍一位图片处理界的超级英雄——首助编辑高手软件&#xff01;它就像是一位拥有魔法的图片大师&#xf…

【JVM详解JVM优化】聊聊JVM优化

简介&#xff1a; 前面两期文章讲了JVM内存模型&#xff1a;【JVM详解&JVM优化】JVM内存模型-CSDN博客 以及JVM垃圾回收机制&#xff1a;【JVM详解&JVM优化】JVM垃圾回收机制-CSDN博客 在本篇文章中&#xff0c;我们将深入探讨Java虚拟机&#xff08;JVM&#xff09;…

通俗易懂的餐厅例子来讲解JVM

餐厅版本 JVM&#xff08;Java虚拟机&#xff09;可以想象成一个虚拟的计算机&#xff0c;它能够运行Java程序。为了让你更容易理解&#xff0c;我们可以用一个餐厅的比喻来解释JVM&#xff1a; 菜单&#xff08;Java源代码&#xff09;&#xff1a; 想象一下&#xff0c;Java…

一文搞懂各种Attention机制

1.各种Attention 最近在重读Transformer论文的过程中&#xff0c;结合其他看过的资料&#xff0c;对各种Attention概念有进一步的了解。回顾最初刚接触时候的迷糊&#xff0c;觉得有必要写一篇文章记录一下对各种attention新的理解。 2.论文中的Transformer架构图 先上经典的…

Scala 的trait

在Scala中&#xff0c;trait是一种特殊概念。trait可以作为接口&#xff0c;同时也可以定义抽象方法。类使用extends继承trait&#xff0c;在Scala中&#xff0c;无论继承类还是继承trait都用extends关键字。在Scala中&#xff0c; 类继承trait后必须实现其中的抽象方法&#x…

Zipkin使用指南分布式追踪核心概念与架构详解

1. 简介 什么是Zipkin Zipkin是一个分布式追踪系统&#xff0c;主要用于监控和分析微服务架构中的调用链路。它帮助开发者和运维团队深入理解服务调用路径&#xff0c;从而识别性能瓶颈、异常或故障点。Zipkin最初是由Twitter开源的&#xff0c;当前已成为微服务追踪的流行解…

Python+Appium+Pytest+Allure自动化测试框架-代码篇

文章目录 自动化测试框架工程目录示例测试代码示例结果查看allurepytest编写pytest测试样例的规则pytest conftest.py向测试函数传参 appium启动appium服务代码端通过端口与appium服务通信对设备进行操作在pytest测试用例中调用appium 更多功能 PythonAppiumPytestAllure自动化…

【C++】红黑树的Iterator改造以及mapset的模拟实现与封装

目录 01.红黑树的迭代器 operator: operator*、-> operator、! 02.红黑树的改造 begin和end方法 keyOfValue insert方法 find方法 size方法 clear方法 03.map&set的模拟实现 01.红黑树的迭代器 前面的博客我们介绍了红黑树的底层原理并手撕了一个自己的红…

微信小程序服务通知

项目中用到了小程序的服务消息通知&#xff0c;通知订单状态信息&#xff0c;下边就是整理的一下代码&#xff0c;放到项目中&#xff0c;把项目的小程序appid和小程序的secret写进去&#xff0c;直接运行即可 提前申请好小程序服务信息通知短信模板&#xff0c;代码需要用到模…

linux命令行的艺术

文章目录 前言基础日常使用文件及数据处理系统调试单行脚本冷门但有用仅限 OS X 系统仅限 Windows 系统在 Windows 下获取 Unix 工具实用 Windows 命令行工具Cygwin 技巧 更多资源免责声明 熟练使用命令行是一种常常被忽视&#xff0c;或被认为难以掌握的技能&#xff0c;但实际…

【vue】11.Vue 3生命周期钩子在实践中的具体应用

Vue 3的生命周期钩子为开发者提供了在不同阶段操作组件的强大能力。本文将带您了解每个生命周期钩子的使用场景&#xff0c;并通过简单的案例来展示它们在实际开发中的应用。 1. 创建阶段&#xff08;Creation Hooks&#xff09; beforeCreate 进行一些初始化操作&#xff0c…

2024年最新版SSL证书

SSL证书行业变动很大&#xff0c;随着操作系统&#xff0c;浏览器新版本不断增加&#xff0c;对SSL证书兼容性要求越来也高&#xff0c;对于安全性也有所提升&#xff0c;主流CA机构根证书及交叉链迎来了换新&#xff0c;这是为了延续下一个20个年的安全计划的提前不如&#xf…

Spark入门到实践

Spark入门到实践 一、Spark 快速入门1.1 Spark 概述1.2 Spark 最简安装1.3 Spark实现WordCount1.3.1 下载安装Scala1.3.2 添加Spark依赖1.3.3 Scala实现WordCount1.3.4 通过IDEA运行WordCount1.3.5 IDEA配置WordCount输入与输出路径1.3.6 通过IDEA运行WordCount1.3.7 查看运行结…