去哪儿网开源的一个对应用透明,无侵入的Java应用诊断工具

今天 V 哥给大家带来一款开源工具Bistoury,Bistoury 是去哪儿网开源的一个对应用透明,无侵入的java应用诊断工具,用于提升开发人员的诊断效率和能力。

Bistoury 的目标是一站式java应用诊断解决方案,让开发人员无需登录机器或修改系统,就可以从日志、内存、线程、类信息、调试、机器和系统属性等各个方面对应用进行诊断,提升开发人员诊断问题的效率和能力。

Bistoury 在公司内部原有agent的基础上集成Alibaba开源的arthas和唯品会开源的vjtools,提供了更加丰富的功能,感谢他们做出的优秀工作。

自从 V 哥发现了这款工具,就赶紧用了一下:

先来看一下Bistoury的简介:

  • Arthas和vjtools已经是很优秀的工具,我们为什么还要开发Bistoury?
  • Arthas和vjtools通过命令行或类似的方式使用,不可否认命令行在很多时候具有比较高的效率;但图形化界面也有其自身的优点,特别是在参数复杂时使用起来更加简单,效率更高。Bistoury在保留命令行界面的基础上,还对很多命令提供了图形化界面,方面用户使用。
  • Arthas和vjtools针对单台机器,从机器的维度对系统进行诊断,没有提供全局的视角;而在线应用往往部署在多台机器,Bistoury可以和使用方应用中心整合,从应用的维度对系统进行诊断,提供了更多的可能。
  • Arthas和vjtools在使用上,要么登录机器,要么需要使用者提供相应的ip和端口;Bistoury去掉各种设置,提供统一的web入口,从页面上选择应用和机器即可使用。
  • 除了这些针对性优化,Bistoury在保留arthas和vjtools的所有功能之外,还提供了更加丰富的功能。
  • Bistoury的在线debug功能去掉了各种复杂参数,模拟ide调试体验,通过web界面提供断点调试的功能,可以在不阻塞应用的情况下捕获断点处的信息(包括本地变量、成员变量、静态变量和方法调用栈)。
  • Bistoury提供了线程级cpu使用率监控,可以监控系统每个线程的分钟级cpu使用率,并提供最近几天的历史数据查询。
  • Bistoury可以动态对方法添加监控,监控方法的调用次数、异常次数和执行时间,同时也保留最近几天的监控数据。
  • Bistoury提供了日志查看功能,可以使用tail、grep等命令对单台或同时对多台机器的日志进行查看。
  • Bistoury提供可视化页面实时查看机器和应用的各种信息,包括主机内存和磁盘使用、cpu使用率和load、系统配置文件、jar包信息,jvm信息、内存使用和gc等等。

(简介来源于Github 上的介绍)

也许你正面对一个难以捉摸的线上问题束手无策,不妨来试试Bistoury的快捷部署脚本,在一分钟内启动Bistoury然后插入断点开始调试吧!

1. 环境准备:

确保你的系统是 Linux(支持 Mac OS),因为 Bistoury 目前只支持这些系统。
确保已安装 JDK 1.7+ 或 1.8+,并且设置了 JAVA_HOME 环境变量。

2. 端口准备:

确保本机的9090、9091、9880、9881端口未被占用,因为这些端口将被 Bistoury 使用,如果当端口冲突了怎么解决?

  • 修改自己占用的端口
  • 修改 bistoury 的端口

3. Java 应用准备:

如果你有一个待诊断的 Java 应用,确保它已经启动。如果是非 Spring Web 应用,可能需要配置启动脚本的 -c 参数。

4. 下载 Bistoury:

从 Bistoury 的官方 GitHub 或 Gitee 页面下载快速部署包。如无法下载,请联系 V 哥给你下载链接。

5. 解压部署包:

将下载的快速部署包 bistoury-quick-start.tar.gz 拷贝到你希望安装的位置,并解压。

6. 启动 Bistoury:

使用 quick_start.sh 脚本启动 Bistoury。如果待诊断的应用以当前用户启动,可以使用 ./quick_start.sh -p <pid> start 命令启动,其中 是待诊断应用的进程 ID。

如果应用以其他用户启动,需要使用

sudo -u <username> ./quick_start.sh -p <pid>vstart 命令,其中 <username> 是应用启动的用户名称。

7. 访问 Bistoury UI:

通过浏览器访问 Bistoury 的 UI 界面,通常是 http://:9091,其中 是部署 Bistoury 的服务器 IP 地址。

8. 在线 Debug:

如果需要在线 Debug,可以在 Bistoury UI 中设置断点,模拟 IDE 调试体验,查看断点处的信息。

9. 线程级 CPU 监控:

使用 Bistoury 提供的线程级 CPU 监控功能,监控系统每个线程的 CPU 使用率,并查询历史数据。

10. 动态监控:

对系统的方法添加动态监控,查看方法的调用次数、异常次数和执行时间,并生成监控图。

11. 应用中心管理:

如果有内部的应用中心,可以通过 Bistoury 的应用中心功能管理应用与机器的信息。

请注意,部署步骤可能会根据 Bistoury 的版本更新和具体的使用环境有所变化,建议查看最新的官方文档以获得最准确的部署指导。

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

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

相关文章

【银角大王——Django课程——创建项目+部门表的基本操作】

Django框架员工管理系统——创建项目部门表管理 员工管理系统创建项目命令行的形式创建Django项目——创建app注册app——在sttings中的INSTALLED_APPS [ ]数组中注册 设计表结构&#xff08;django&#xff09;连接数据库——在settings里面改写DATABASESDjango命令执行生成数…

海外媒体广告投放 - 大舍传媒助力企业迈向新台阶,实现精准投放

一、为何选择海外媒体广告投放 随着全球化进程的不断推进&#xff0c;越来越多的企业开始将目光投向国际市场。海外媒体广告投放作为一种有效的宣传手段&#xff0c;可以帮助企业在全球范围内提高品牌知名度和影响力&#xff0c;吸引潜在客户&#xff0c;促进产品销售。 二、…

LeetCode 课程表二(拓扑排序+Python)

使用桶排序算法中的kahn&#xff08;卡恩&#xff09;算法&#xff0c;也可以使用dfs。 这里使用卡恩算法&#xff0c;主要维护一个列表cnt&#xff0c;cnt【i】表示能到达节点i的边&#xff0c;比如说&#xff1a;a到c有一条边&#xff0c;b到c有一条边&#xff0c;那么cnt【…

Pycharm破解流程

1.下载pycharm 网上很多&#xff0c;随便找一个&#xff0c;懒得找的话&#xff0c;或者去我传上去的资源pycharm部分直接取 2.下载文件 文件部分&#xff0c;我放在pycharm文件里面一起 打开下载好的激活包 3.执行脚本 先执行unisntall-all-users.vbs,直接双击打开&#xff0c…

在 Linux 上把 Vim 配置为默认编辑器

目录 ⛳️推荐 在 Linux 命令行中编辑 将 Vim 设置为其他程序的默认值 在 Alpine 中编辑电子邮件 总结 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 我使用 Linux 大概有…

若依集成mybatisplus报错找不到xml

引用&#xff1a;https://blog.csdn.net/qq_65080131/article/details/136677276 MybatisPlusAutoConfiguration中可以知道&#xff0c;系统会自动配置SqlSessionFactory&#xff0c;&#xff0c;但是&#xff0c;当你有自定义的SqlSessionFactory&#xff0c;&#xff0c;就会…

54、图论-实现Trie前缀树

思路&#xff1a; 主要是构建一个trie前缀树结构。如果构建呢&#xff1f;看题意&#xff0c;应该当前节点对象下有几个属性&#xff1a; 1、next节点数组 2、是否为结尾 3、当前值 代码如下&#xff1a; class Trie {class Node {boolean end;Node[] nexts;public Node(…

基于Spring Boot的自习室预定系统的设计与实现

基于Spring Boot的自习室预定系统的设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 自习室界面&#xff0c;在自习室页面可以查看名称、…

项目大集成

一 keeplived 高可用 192.168.11.11nginx keeplived192.168.11.12nginx keeplived 两台均编译安装服务器 1 主服务器修改文件&#xff1a; 2 备服务器修改文本 scp keepalived.conf 192.168.11.12:/etc/keepalived/ 3 给主服务器添加虚拟ip ifconfig ens33:0 192.168…

Flask-SQLAlchemy 中使用显式主主数据库设置

1、问题背景 在一个 Flask-SQLAlchemy 项目中&#xff0c;用户想要使用显式主主数据库设置。具体而言&#xff0c;他想要能够从默认数据库中读取数据&#xff0c;并将数据持久化到两个主数据库中。他希望知道是否可以使用 Flask-SQLAlchemy 和 binds 来实现这一目标。 2、解决…

three.js(3):添加three. js坐标轴、光源和阴影效果

1 实现步骤 要实现阴影效果同样需要几个重要的概念。 我们首先研究一下日常生活中是如何产生阴影效果的。 需要有光。需要一个物体&#xff0c;比如苹果、狗等。需要一个接受投影的元素&#xff0c;比如地面、桌面等。 在 Three.js 中要产生阴影效果其实和现实世界的原理差…

Azure AD统一认证及用户数据同步开发指导

本文主要目的为&#xff1a;指导开发者进行自有服务与Azure AD统一认证的集成&#xff0c;以及阐述云端用户数据同步的实现方案。本文除了会介绍必要的概念、原理、流程外&#xff0c;还会包含Azure门户设置说明&#xff0c;以及使用Fiddler进行全流程的实操验证&#xff0c;同…