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

简介: 今天 V 哥给大家带来一款开源工具Bistoury,Bistoury 是去哪儿网开源的一个对应用透明,无侵入的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 的版本更新和具体的使用环境有所变化,建议查看最新的官方文档以获得最准确的部署指导。

相关文章
|
15天前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
10天前
|
Java 数据库连接 数据库
Java服务提供接口(SPI)的设计与应用剖析
Java SPI提供了一种优雅的服务扩展和动态加载机制,使得Java应用程序可以轻松地扩展功能和替换组件。通过合理的设计与应用,SPI可以大大增强Java应用的灵活性和可扩展性。
42 18
|
9天前
|
缓存 监控 Java
Java中的并发编程:理解并应用线程池
在Java的并发编程中,线程池是提高应用程序性能的关键工具。本文将深入探讨如何有效利用线程池来管理资源、提升效率和简化代码结构。我们将从基础概念出发,逐步介绍线程池的配置、使用场景以及最佳实践,帮助开发者更好地掌握并发编程的核心技巧。
|
6天前
|
SQL JavaScript 前端开发
用Java来开发Hive应用
用Java来开发Hive应用
20 7
|
6天前
|
SQL JavaScript 前端开发
用Java、Python来开发Hive应用
用Java、Python来开发Hive应用
18 6
|
10天前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。
|
5天前
|
Java 数据库连接 开发者
Java中的异常处理机制:理解与应用
在Java编程中,异常处理是一个核心概念,它允许程序在遇到错误时优雅地恢复或终止。本文将深入探讨Java的异常处理机制,包括异常的分类、如何正确使用try-catch-finally块以及throw关键字。我们将通过实例来说明如何在Java应用程序中有效地捕获和处理异常,以确保程序的健壮性和稳定性。
|
5天前
|
Java 调度 开发者
Java中的多线程基础及其应用
【9月更文挑战第13天】本文将深入探讨Java中的多线程概念,从基本理论到实际应用,带你一步步了解如何有效使用多线程来提升程序的性能。我们将通过实际代码示例,展示如何在Java中创建和管理线程,以及如何利用线程池优化资源管理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧,帮助你更好地理解和应用多线程编程。
|
6天前
|
存储 负载均衡 Java
Jetty技术深度解析及其在Java中的实战应用
【9月更文挑战第3天】Jetty,作为一款开源的、轻量级、高性能的Java Web服务器和Servlet容器,自1995年问世以来,凭借其卓越的性能、灵活的配置和丰富的扩展功能,在Java Web应用开发中占据了举足轻重的地位。本文将详细介绍Jetty的背景、核心功能点以及在Java中的实战应用,帮助开发者更好地理解和利用Jetty构建高效、可靠的Web服务。
20 2
|
10天前
|
Java 数据处理
技术分享:高效与灵活并存——Java版通用树形结构转换工具的实现与应用
在软件开发中,树形结构的数据表现形式无处不在,从文件系统的目录树到组织架构的部门树,再到各类产品的分类结构。处理这些具有层级关系的数据时,将其转换为树形结构以便展示和操作显得尤为重要。Java作为一门成熟的编程语言,虽然提供了强大的集合框架,但并未直接提供树形结构转换的内置工具。因此,开发一个高效且灵活的通用树形结构转换工具成为许多项目中的必备需求。
20 2