SpringBoot集成KoTime

koTime是一个开源免费的springboot项目性能分析工具,通过追踪方法调用链路以及对应的运行时长快速定位性能瓶颈,除此之外,代码热更新、异常检测都可以有!

一.添加KoTime依赖:

<dependency>
     <groupId>cn.langpy</groupId>
     <artifactId>ko-time</artifactId>
     <version>2.4.1</version>
</dependency>

二.添加yml 配置文件

# 代码监控
ko-time:
  # 是否开启koTime,默认开启,当为false时,关闭koTime
  enable: true
  # 是否开启控制输出,默认false
  log-enable: true
  # 语言(english/chinese)默认chinese
  language: chinese
  # 时间阈值,用于前端展示,大于阈值显示红色,小于阈值显示绿色,默认800
  threshold: 800.0
  # context-path: http://localhost:80 # 前端页面调用接口的上下文环境,无法自动获取时可手动配置,一般情况切记不要配置   v2.0.1开始支持
  exception-enable: true # 是否开启异常检测,默认为false,开启后会对方法内部抛出的异常进行统计 v2.0.0开始支持
  # 是否开启认证,默认为false,开启后需要登录才能访问调用链路 v2.0.2开始支持
  auth-enable: false
  # 登录用户 v2.0.2开始支持
#  user-name: admin
  # 登录密码 v2.0.2开始支持
#  password: 123456
  # 使用静态的token值进行认证访问(/koTime?kotoken=xxx) v2.3.7开始支持,该模式和user-name认证模式二选一
  #static-token: xxxx
  # 是否开启入参组合分析 默认开启 v2.0.8开始支持 双击方法节点即可看到效果
  param-analyse: true
  # 启动时是否删除过往数据 默认false v2.2.3开始支持
  data-reset: false
  # 调用信息存储线程数(为了不影响项目本身性能,链路存储异步进行),默认2,该值并非越大越好,瓶颈取决于数据库性能和服务器配置,尽可能少占用项目资源为上  v2.2.0-BETA开始支持
  thread-num: 2
  # 丢弃率(0-1) 同一个方法在多次连续调用时,耗时差距并不大,为了存储的IO性能考虑,可以随机丢弃一部分耗时数据。默认30% v2.2.5开始支持
  discard-rate: 0.3
  # 登录超时时间考虑 默认43200s(12个小时) v2.3.0开始支持
  auth-expire: 43200
  # 获取最新版本通知开关 在页面上可以看到 默认true v2.3.3开始支持
  version-notice: true
  #需要监测的范围,是链路包含的范围,不仅仅是接口层,参考aop的@pointcut 
  pointcut: execution(public * com.test.web.controller..*.*(..))

三.注意事项:

1.生产上尽量设置user-name 以及password  或者使用static-token 的方式进行加密处理
 开启认证需要在配置文件中auth-enable参数改为true

2.引入了上面的依赖和配置以后,确认项目中是否有aop相关的包,koTime使用了@Aspect注解,未引入的自行引入,如aspectj或者spring-boot-starter-aop

3.做完前面的步骤,koTime的集成已经完毕,无需进行其他配置

4.如果后台有权限认证,需要放开/koTime和/koTime/** 
 

四.切入点监控详解:pointcut: 参数规则如下

假设项目的包路径为:

com.test.demo
        |-controller
        |-service
        |-mapper
        |-others
            |-other1
            |-other2
            |-Test.java
1.想要切com.test.demo下面的所有方法(包括子包中的),可以写:
execution(public * com.test.demo..*.*(..)) #切记,是两个点.
2.只想要切cn.test.demo.controller下面的类的所有方法(不包括子包的),可以写:
execution(public * com.test.demo.controller.*.*(..)) #切记,是一个点.
3.只想要切cn.test.demo.others下面的类的所有方法(不包括other1和other2下面的),可以写:
execution(public * com.test.demo.others.*.*(..))
4.只想要切cn.test.demo.others下面的类的所有方法(包括other1和other2),可以写:
execution(public * com.test.demo.others..*.*(..))
5.如果想排除某些类如Test.class,可以
execution(public * com.test.demo.others..*.*(..)) && !execution(public * com.test.demo.others.Test(..))
6.如果想监控多个不同的包下,可以
execution(public * com.test.a..*.*(..)) || execution(public * com.test.b..*.*(..))

五:若按照以上配置完成,则启动项目后通过页面访问:http://localhost:port/koTime

也可通过接口列表来具体执行情况,耗时在哪,如下图:

 

 六,集成后若CPU显示异常解决

需要查看项目中是否引入 oshi或 jna ,若引入以上依赖,则需把相应的版本进行升级,这里使用的是如下版本,亲测可行,可供参考

 <oshi.version>6.4.0</oshi.version>
 <jna.version>5.9.0</jna.version>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【直接收藏】前端 VUE 高阶面试题(二)

44.vuex的数据丢失知道吗 怎么解决 原理&#xff1a;可以利用缓存&#xff0c;将vuex中的state&#xff0c;在缓存中备份一下&#xff0c;当状态发生改变时&#xff0c;同步缓存的的备份。同时当刷新时&#xff0c;去缓存中的备份&#xff0c;给state赋值 实际开发中我们一般…

【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)

处理类别数据 &#x1f331;简要理解处理类别数据的重要性☘️类别数据的分类☘️方便研究——用pandas创建包含多种特征的数据集&#x1f340;映射有序特征&#x1f340;标称特征标签编码&#x1f340;标称特征的独热编码&#x1f331;独热编码的优缺点 &#x1f331;简要理解…

NeuralNLP-NeuralClassifier的使用记录(二),训练预测自己的【中文文本多分类】

NeuralNLP-NeuralClassifier的使用记录&#xff0c;训练预测自己的【中文文本多分类】 数据准备&#xff1a; ​ 与英文的训练预测一致&#xff0c;都使用相同的数据格式&#xff0c;将数据通过代码处理为JSON格式&#xff0c;以下是我使用的一种&#xff0c;不同的原数据情况…

【Visual Studio Code】--- Win11 安装 VS Code 超详细

Win11 安装 VS Code 超详细 概述一、下载 Vscode二、安装 Vscode 概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径&#xff0c;学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、下载 Vscode Vscode官网 二、…

【数据分析入门】Numpy进阶

目录 一、数据重塑1.1 透视1.2 透视表1.3 堆栈/反堆栈1.3 融合 二、迭代三、高级索引3.1 基础选择3.2 通过isin选择3.3 通过Where选择3.4 通过Query选择3.5 设置/取消索引3.6 重置索引3.6.1 前向填充3.6.2 后向填充 3.7 多重索引 四、重复数据五、数据分组5.1 聚合5.2 转换 六、…

电气测试相关

项目&#xff1a; 长期过电压 瞬态过电压 瞬态欠压 跳跃启动 卸载 纹波电压 电源电压缓慢下降和上升 电源电压缓慢下降、快速上升 复位行为 短暂中断 启动脉冲 带电气系统控制的电压曲线 引脚中断 连接器中断 反极性 信号线和负载电路短路 启动行为 对分流不…

Flink之Task解析

Flink之Task解析 对Flink的Task进行解析前,我们首先要清楚几个角色TaskManager、Slot、Task、Subtask、TaskChain分别是什么 角色注释TaskManager在Flink中TaskManager就是一个管理task的进程,每个节点只有一个TaskManagerSlotSlot就是TaskManager中的槽位,一个TaskManager中可…

k8s问题汇总

作者前言 本文章为记录使用k8s遇到的问题和解决方法&#xff0c;文章持续更新中… 目录 作者前言正常配置ingress&#xff0c;但是访问错误添加工作节点报错安装k8s报错使用kubectl命令报错container没有运行安装会出现kubelet异常&#xff0c;无法识别删除k8s集群访问dashboa…

IT运维:使用数据分析平台监控深信服防火墙

概述 深信服防火墙自身监控可以满足绝大部分需求&#xff0c;比如哪个应用占了最大带宽&#xff0c;哪个用户访问了哪些网站&#xff1f;这里我们为什么使用鸿鹄呢&#xff1f;因为我们要的是数据的处理和分析&#xff0c;比如某个用户在某个事件都做了哪些行为&#xff0c;这个…

Nginx运行Vue项目:基本运行

需求 在Nginx服务器中&#xff0c;运行Vue项目。 说明 Vue项目打包生成的生产文件&#xff0c;是无法直接在浏览器打开的。需要放到Nginx服务器中&#xff0c;才能够访问。 本文章只介绍最基本的情况&#xff1a;Nginx中运行一个Vue项目。 实际生产环境&#xff0c;一个Ng…

Linux-C++开发项目:基于主从Reactor模式的高性能并发服务器

目录 1.项目介绍2.1项目部署2.2安装版本较高的编译器 2.项目开发过程2.1网络库模块开发2.1.1简单日志宏的实现2.1.2Buffer模块实现2.1.3Socket模块实现2.1.4Channel模块实现2.1.5Poller模块实现2.1.6TimerWheel模块实现2.1.7EventLoop模块实现2.1.8整合测试12.1.9LoopThread模块…

centos7离线安装gdal3.6.3

本文档以纯离线环境为基础&#xff0c;所有的安装包都是提前下载好的。以gdal3.6.3为例&#xff08;其他版本安装步骤或方式可能不同&#xff09;&#xff0c;在centos7系统离线安装&#xff0c;并运行java项目&#xff0c;实现在java服务中调用gdal库解析地理数据。以下任意组…

【JavaEE基础学习打卡04】JDBC之MySQL数据库安装

目录 前言一、JDBC与数据库二、MySQL数据库1.MySQL数据库2.MySQL服务下载安装3.MySQL服务启动停止4.MySQL命令 三、MySQL客户端安装总结 前言 &#x1f4dc; 本系列教程适用于JavaWeb初学者、爱好者&#xff0c;小白白。我们的天赋并不高&#xff0c;可贵在努力&#xff0c;坚持…

Ajax及前端工程化

Ajax&#xff1a;异步的js与xml。 作用&#xff1a; 1、通过ajax给服务器发送数据&#xff0c;并获得其响应的数据。 2、可以在不更新整个网页的情况下&#xff0c;与服务器交换数据并更新部分网页的技术。 一、同步与异步 二、原生Ajax 1、准备数据地址 2、创建XMLHttpReq…

Vitis高层次综合学习——FPGA

高层次综合 什么是高层次综合&#xff1f;就是使用高级语言&#xff08;如C/C&#xff09;来编写FPGA算法程序。 在高层次综合上并不需要制定微架构决策&#xff0c;如创建状态机、数据路径、寄存器流水线等。这些细节可以留给 HLS 工具&#xff0c;通过提供输入约束&#xff…

tauri-vue:快速开发跨平台软件的架子,支持自定义头部UI拖拽移动和窗口阴影效果

Tauri Vue Typescript 一个使用 taurivuets 开发跨平台软件的模板&#xff0c;支持窗口头部自定义 UI 和拖拽和窗口阴影&#xff0c;不用再自己做适配了&#xff0c;拿来即用&#xff0c;非常 nice。而且已经封装好了 tauri 的 http 请求工具&#xff0c;省去很多弯路。开源…

(二)结构型模式:8、代理模式(Proxy Pattern)(C++示例)

目录 1、代理模式&#xff08;Proxy Pattern&#xff09;含义 2、代理模式的UML图学习 3、代理模式的应用场景 4、代理模式的优缺点 5、C实现代理模式的实例 1、代理模式&#xff08;Proxy Pattern&#xff09;含义 代理模式&#xff08;Proxy&#xff09;&#xff0c;为…

大数据-玩转数据-Flink 自定义Sink(Mysql)

一、说明 如果Flink没有提供给我们可以直接使用的连接器&#xff0c;那我们如果想将数据存储到我们自己的存储设备中&#xff0c;mysql 的安装使用请参考 mysql-玩转数据-centos7下mysql的安装 创建表 CREATE TABLE sensor (id int(10) ) ENGINEInnoDB DEFAULT CHARSETutf8二…

Wi-Fi 安全在学校中的重要性

Wi-Fi 是教育机构的基础设施&#xff0c;从在线家庭作业门户到虚拟教师会议&#xff0c;应有尽有。大多数 K-12 管理员对自己的 Wi-Fi 网络的安全性充满信心&#xff0c;并认为他们现有的网络安全措施已经足够。 不幸的是&#xff0c;这种信心往往是错误的。Wi-Fi 安全虽然经常…

Layui列表表头去掉复选框改为选择

效果&#xff1a; 代码&#xff1a; // 表头复选框去掉改为选择 $(".layui-table th[data-field"0"] .layui-table-cell").html("<span>选择</span>");