SpringBoot集成KoTime

news2024/11/17 19:41:15

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>

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

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

相关文章

【深度学习--RNN 循环神经网络--附LSTM情感文本分类】

deep learning 系列 --RNN 循环神经网络 什么是序列模型 包括了RNN LSTM GRU等网络模型&#xff0c;主要用途是自然语言处理、语音识别等方面&#xff0c;比如生成乐曲&#xff0c;音频转换为文字&#xff0c;文本情感分类&#xff0c;机器翻译等等 标准模型的缺陷 以往的标…

Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流

场景 Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览&#xff1a; Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览_nginx rtmp 海康摄像头_霸道流氓气质的博客-CSDN博客 上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。 如果在其它业务场景…

ppt中线材相交接的地方,如何绘画

ppt中线材相交接的地方&#xff1a; 在ppt中绘画线材相互交接的地方&#xff1a; 1.1绘图工具中的“弧形” 1.2小技巧 “弧形”工具点一下&#xff0c;在ppt中如下 1.3拖动活动点进行调整图形 1.4绘画圆弧 1.5调整“圆弧”的大小&#xff0c;鼠标放在“黄色点”位置&#xf…

爬虫逆向实战(十七)--某某丁简历登录

一、数据接口分析 主页地址&#xff1a;某某丁简历 1、抓包 通过抓包可以发现数据接口是submit 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个enPassword加密参数 请求头是否加密&#xff1f; 通过查看请求头可以发现有一个To…

React 高阶组件(HOC)

React 高阶组件(HOC) 高阶组件不是 React API 的一部分&#xff0c;而是一种用来复用组件逻辑而衍生出来的一种技术。 什么是高阶组件 高阶组件就是一个函数&#xff0c;且该函数接受一个组件作为参数&#xff0c;并返回一个新的组件。基本上&#xff0c;这是从 React 的组成…

部署MES管理系统首先要解决什么问题

随着制造业市场竞争的加剧&#xff0c;企业需要更加高效、灵活的生产运营&#xff0c;以提高产品质量和降低成本。在这种情况下&#xff0c;MES管理系统解决方案成为许多企业的选择。然而&#xff0c;在部署MES管理系统之前&#xff0c;必须首先解决一些关键问题&#xff0c;以…

ReactNative进阶(三十四):ipa Archive 阶段报错error: Multiple commands produce问题修复及思考

文章目录 一、前言二、问题描述三、问题解决四、拓展阅读五、拓展阅读 一、前言 在应用RN开发跨平台APP阶段&#xff0c;从git中拉取项目&#xff0c;应用Jenkins进行组包时&#xff0c;发现最终生成的ipa安装包版本号始终与项目中设置的版本号不一致。 二、问题描述 经过仔…

常见排序集锦-C语言实现数据结构

目录 排序的概念 常见排序集锦 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 hoare 挖坑法 前后指针法 非递归 7.归并排序 非递归 排序实现接口 算法复杂度与稳定性分析 排序的概念 排序 &#xff1a;所谓排序&#xff0c;就是使一串记录&#…

PHP 报修管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 报修管理系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 下载地址&#xff1a; https://download.csdn.net/download/qq_41221322/88209950 视…

一次网络不通 “争吵” 引发的思考

为啥争吵&#xff0c;吵什么&#xff1f; "你到底在说什么啊&#xff0c;我 K8s 的 ecs 节点要访问 clb 的地址不通和本地网卡有什么关系..." 气愤语气都从电话那头传了过来&#xff0c;这时电话两端都沉默了。过了好一会传来地铁小姐姐甜美的播报声打断了刚刚的沉寂…

【校招VIP】java语言考点之List和扩容

考点介绍&#xff1a; List是最基础的考点&#xff0c;但是很多同学拿不到满分。本专题从两种实现子类的比较&#xff0c;到比较复杂的数组扩容进行分析。 『java语言考点之List和扩容』相关题目及解析内容可点击文章末尾链接查看&#xff01;一、考点题目 1、以下关于集合类…

仪表板展示 | DataEase看中国:2023年中国电影市场分析

背景介绍 随着《消失的她》、《变形金刚&#xff1a;超能勇士崛起》、《蜘蛛侠&#xff1a;纵横宇宙》、《我爱你》等国内外影片的上映&#xff0c;2023年上半年的电影市场也接近尾声。据国家电影专资办初步统计&#xff0c;上半年全国城市院线票房达262亿元&#xff0c;已经超…

气象监测站:用科技感知气象变化

气象监测站是利用科学技术感知当地小气候变化情况的气象观测仪器&#xff0c;可用于农业、林业、养殖业、畜牧业、环境保护、工业等多个领域&#xff0c;提高对环境数据的利用率&#xff0c;促进产业效能不断提升。 气象监测站主要由气象传感器、数据传输系统、电源系统、支架…

Python web实战之Django 的跨站点请求伪造(CSRF)保护详解

关键词&#xff1a;Python、Web、Django、跨站请求伪造、CSRF 大家好&#xff0c;今天我将分享web关于安全的话题&#xff1a;Django 的跨站点请求伪造&#xff08;CSRF&#xff09;保护&#xff0c;介绍 CSRF 的概念、原理和保护方法. 1. CSRF 是什么&#xff1f; CSRF&#…

字符设备驱动实例(LED、按键、input输入子系统)

目录 本章目标 一、LED驱动 二、基于中断的简单按键驱动 三、基于输入子系统的按键驱动 本章目标 本章综合前面的知识&#xff0c;实现了嵌入式系统的常见外设驱动&#xff0c;包括 LED、按键、ADC、PWM和RTC。本章从工程的角度、实用的角度探讨了某些驱动的实现。比如LED …

ZooKeeper的应用场景(命名服务、分布式协调通知)

3 命名服务 命名服务(NameService)也是分布式系统中比较常见的一类场景&#xff0c;在《Java网络高级编程》一书中提到&#xff0c;命名服务是分布式系统最基本的公共服务之一。在分布式系统中&#xff0c;被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等一这…

ListNode相关

目录 2. 链表相关题目 2.1 合并两个有序链表&#xff08;简单&#xff09;&#xff1a;递归 2.2 删除排序链表中的重复元素&#xff08;简单&#xff09;&#xff1a;一次遍历 2.3 两链表相加&#xff08;中等&#xff09;&#xff1a;递归 2.4 删除链表倒数第N个节点&…

数据结构:栈和队列(超详细)

目录 ​编辑 栈&#xff1a; 栈的概念及结构&#xff1a; 栈的实现&#xff1a; 队列&#xff1a; 队列的概念及结构&#xff1a; 队列的实现&#xff1a; 扩展知识&#xff1a; 以上就是个人学习线性表的个人见解和学习的解析&#xff0c;欢迎各位大佬在评论区探讨&#…

取证的学习

Volatility命令语法 1.判断镜像信息&#xff0c;获取操作系统类型 Volatility -f xxx.vmem imageinfo 在查到操作系统后如果不确定可以使用以下命令查看 volatility - f xxx.vmem --profile [操作系统] volshell 2.知道操作系统类型后&#xff0c;用–profile指定 volat…

redis查看执行的命令

1.SLOWLOG LEN 获取 Slowlog 的长度&#xff0c;以确定 Slowlog 中有多少条记录 2.SLOWLOG GET 获取 Slowlog 中的具体记录。你可以使用 SLOWLOG GET 命令来获取第 n 条记录的详细信息&#xff0c;其中 n 是记录的索引&#xff08;从 0 开始&#xff09; 3.如果你想获取多条最…