{"id":13487670,"url":"https://github.com/qunarcorp/bistoury","last_synced_at":"2025-05-14T18:06:59.019Z","repository":{"id":37359587,"uuid":"200004447","full_name":"qunarcorp/bistoury","owner":"qunarcorp","description":"Bistoury是去哪儿网的java应用生产问题诊断工具，提供了一站式的问题诊断方案","archived":false,"fork":false,"pushed_at":"2022-12-16T08:45:38.000Z","size":32465,"stargazers_count":4059,"open_issues_count":77,"forks_count":832,"subscribers_count":150,"default_branch":"master","last_synced_at":"2025-04-13T12:46:55.611Z","etag":null,"topics":["agent","bistoury","cpu","debug","debugging","java","jvm","monitor","trouble-shooting"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qunarcorp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-01T07:54:25.000Z","updated_at":"2025-04-09T06:42:35.000Z","dependencies_parsed_at":"2023-01-29T11:32:26.653Z","dependency_job_id":null,"html_url":"https://github.com/qunarcorp/bistoury","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qunarcorp%2Fbistoury","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qunarcorp%2Fbistoury/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qunarcorp%2Fbistoury/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qunarcorp%2Fbistoury/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qunarcorp","download_url":"https://codeload.github.com/qunarcorp/bistoury/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198515,"owners_count":22030966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","bistoury","cpu","debug","debugging","java","jvm","monitor","trouble-shooting"],"created_at":"2024-07-31T18:01:01.871Z","updated_at":"2025-05-14T18:06:54.011Z","avatar_url":"https://github.com/qunarcorp.png","language":"Java","funding_links":[],"categories":["Java","JVM运行期工具","Java 程序设计","3. Application"],"sub_categories":["网络服务_其他","Java"],"readme":"# Bistoury\n\n![license](https://img.shields.io/github/license/qunarcorp/bistoury)\n![release](https://img.shields.io/github/v/release/qunarcorp/bistoury)\n\n`Bistoury` 是去哪儿网开源的一个对应用透明，无侵入的java应用诊断工具，用于提升开发人员的诊断效率和能力。\n\n`Bistoury` 的目标是一站式java应用诊断解决方案，让开发人员无需登录机器或修改系统，就可以从日志、内存、线程、类信息、调试、机器和系统属性等各个方面对应用进行诊断，提升开发人员诊断问题的效率和能力。\n\n`Bistoury` 在公司内部原有agent的基础上集成Alibaba开源的[arthas](https://github.com/alibaba/arthas)和唯品会开源的[vjtools](https://github.com/vipshop/vjtools)，提供了更加丰富的功能，感谢他们做出的优秀工作。\n\n## 简介\n\nArthas和vjtools已经是很优秀的工具，我们为什么还要开发Bistoury？\n\nArthas和vjtools通过命令行或类似的方式使用，不可否认命令行在很多时候具有比较高的效率；但图形化界面也有其自身的优点，特别是在参数复杂时使用起来更加简单，效率更高。Bistoury在保留命令行界面的基础上，还对很多命令提供了图形化界面，方面用户使用。\n\nArthas和vjtools针对单台机器，从机器的维度对系统进行诊断，没有提供全局的视角；而在线应用往往部署在多台机器，Bistoury可以和使用方应用中心整合，从应用的维度对系统进行诊断，提供了更多的可能。\n\nArthas和vjtools在使用上，要么登录机器，要么需要使用者提供相应的ip和端口；Bistoury去掉各种设置，提供统一的web入口，从页面上选择应用和机器即可使用。\n\n除了这些针对性优化，Bistoury在保留arthas和vjtools的所有功能之外，还提供了更加丰富的功能。\n\nBistoury的[在线debug功能](docs/cn/debug.md)去掉了各种复杂参数，模拟ide调试体验，通过web界面提供断点调试的功能，可以在不阻塞应用的情况下捕获断点处的信息（包括本地变量、成员变量、静态变量和方法调用栈）。\n\nBistoury提供了[线程级cpu使用率监控](docs/cn/jstack.md)，可以监控系统每个线程的分钟级cpu使用率，并提供最近几天的历史数据查询。\n\nBistoury可以[动态对方法添加监控](docs/cn/monitor.md)，监控方法的调用次数、异常次数和执行时间，同时也保留最近几天的监控数据。\n\nBistoury提供了日志查看功能，可以使用tail、grep等命令对单台或同时对多台机器的日志进行查看。\n\nBistoury提供可视化页面实时查看机器和应用的各种信息，包括主机内存和磁盘使用、cpu使用率和load、系统配置文件、jar包信息，jvm信息、内存使用和gc等等。\n\n## 快速上手\n\n也许你正面对一个难以捉摸的线上问题束手无策，不妨来试试Bistoury的[快捷部署脚本](docs/cn/quick_start.md)，在一分钟内启动Bistoury然后[插入断点开始调试](docs/cn/debug.md)吧！ \n\n## 使用文档\n- [快速开始](docs/cn/quick_start.md)\n- [git及maven配置](docs/cn/gitlab_maven.md)\n- [在线debug](docs/cn/debug.md)\n- [线程级cpu使用率监控](docs/cn/jstack.md)\n- [命令使用文档](docs/cn/commands.md)\n- [动态监控](docs/cn/monitor.md)\n- [应用中心](docs/cn/application.md)\n- [生产部署](docs/cn/deploy.md)\n- [常见问题汇总](docs/cn/FAQ.md)\n- [设计文档](docs/cn/design/design.md)\n- [应用pid获取](docs/cn/PID.md)\n- [文件下载](docs/cn/downloadFile.md)\n- [性能分析](docs/cn/profiler.md)\n## java版本要求\n\nui、proxy使用Java1.8+，agent使用java1.7+，由于agent会attach到应用中，所以应用也需要使用Java1.7+，最好保持应用和agent的版本一致。点击[这里](docs/cn/java11.md)使用Java11运行bistoury\n\n## 系统要求\n\n目前只支持linux系统（支持mac os）\n\n## project\n\n欢迎大家各种star，fork，提issue，pull request，感觉还可以就点个star吧！\n\n## Q \u0026 A\n\n- 前端有的地方似乎有点不那么好看，实现的似乎也不太棒 \n\n    所有的前端代码都是后端同学兼职完成，欢迎各位前端大牛贡献相关代码。\n    \n## 常见问题汇总\n\n使用Bistoury出现各种问题请先点[这里](docs/cn/FAQ.md)\n    \n## 技术支持\n\nqq群：717242486\n\n![QQ](docs/image/bistoury_qq_small.png)\n\n## Screenshots\n\n通过命令行界面查看日志，使用arthas和vjtools的各项功能\n![console](docs/image/console.png)\n\n在线debug，在线应用调试神器\n![debug](docs/image/debug_panel.png)\n\n线程级cpu监控，帮助你掌握线程级cpu使用率\n![jstack_dump](docs/image/jstack.png)\n\n在web界面查看JVM运行信息，以及各种其它信息\n![jvm](docs/image/jvm.png)\n\n动态给方法添加监控\n![monitor](docs/image/monitor.png)\n\n线程dump\n![thread_dump](docs/image/thread_dump.png)\n\n文件下载\n![downlaod](docs/image/download.png)\n\n火焰图\n![性能分析栈](docs/image/profiler_stack.png)\n\njava热点方法\n![性能分析方法](docs/image/profiler_method.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqunarcorp%2Fbistoury","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqunarcorp%2Fbistoury","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqunarcorp%2Fbistoury/lists"}