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,一经查实,立即删除!

相关文章

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

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

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架构图 先上经典的…

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;但实际…

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 查看运行结…

vue、小程序腾讯地图开放平台使用

一、登录账号 腾讯地图API 官方文档&#xff1a; 腾讯位置服务 - 立足生态&#xff0c;连接未来 二、申请秘钥 key 从首页【开发文档】-【微信小程序 SDK】进到微信小程序的开发文档&#xff1a;微信小程序JavaScript SDK | 腾讯位置服务 然后我们根据【Hello World】的提示…

电赛入门之软件stm32keil+cubemx

hal库可以帮我们一键生成许多基本配置&#xff0c;就不需要自己写了&#xff0c;用多了hal库就会发现原来用基本库的时候都过的什么苦日子&#xff08;笑 下面我们以f103c8t6&#xff0c;也就是经典的最小核心板来演示 一、配置工程 首先来新建一个工程 这里我们配置rcc和sys&…

Elasticsearch开源仓库404 7万多star一夜清零

就在昨晚&#xff0c;有开发者惊奇地发现自己的开源项目 star 数竟然超过了最流行的开源全文搜索引擎 Elasticsearch。发生了什么事&#xff1f;Elasticsearch 竟然跌得比股票还凶 —— 超 7 万 star 的 GitHub 仓库竟然只剩下 200 多。 从社交媒体的动态来看&#xff0c;Elast…

汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动

故障现象  一辆2010款起亚赛拉图车&#xff0c;搭载G4ED 发动机&#xff0c;累计行驶里程约为17.2万km。车主反映&#xff0c;车辆行驶正常&#xff0c;但组合仪表上的发动机转速表指针始终不动。 故障诊断  接车后进行路试&#xff0c;车速表、燃油存量表及发动机冷却温度…

【电商搜索】现代工业级电商搜索技术-亚马逊-经典的Item-to-Item协同推荐算法

【电商搜索】现代工业级电商搜索技术-亚马逊-经典的Item-to-Item协同推荐算法 文章目录 【电商搜索】现代工业级电商搜索技术-亚马逊-经典的Item-to-Item协同推荐算法1. 论文信息2. 算法介绍3. 创新点小结4. 实验效果5. 算法结论6. 代码实现7. 问题及优化方向1. 冷启动问题2. 稀…

Java - 数组实现大顶堆

题目描述 实现思路 要实现一个堆&#xff0c;我们首先要了解堆的概念。 堆是一种完全二叉树&#xff0c;分为大顶堆和小顶堆。 大顶堆&#xff1a;每个节点的值都大于或等于其子节点的值。 小顶堆&#xff1a;每个节点的值都小于或等于其子节点的值。 完全二叉树&#xff…

人工智能与数据安全:Facebook如何应对隐私挑战

在数字时代&#xff0c;数据隐私和安全成为了用户和企业关注的核心问题。作为全球最大的社交媒体平台之一&#xff0c;Facebook面临着日益严峻的隐私挑战。近年来&#xff0c;频繁发生的数据泄露事件和对用户隐私的质疑&#xff0c;使得Facebook在保护用户数据方面倍感压力。为…