Bistoury開源工具介紹:提升Java應(yīng)用診斷效率的利器

2025-01-09 13:52 更新

今天 V 哥給大家?guī)硪豢铋_源工具Bistoury,Bistoury 是去哪兒網(wǎng)開源的一個(gè)對(duì)應(yīng)用透明,無侵入的java應(yīng)用診斷工具,用于提升開發(fā)人員的診斷效率和能力。

Bistoury 的目標(biāo)是一站式j(luò)ava應(yīng)用診斷解決方案,讓開發(fā)人員無需登錄機(jī)器或修改系統(tǒng),就可以從日志、內(nèi)存、線程、類信息、調(diào)試、機(jī)器和系統(tǒng)屬性等各個(gè)方面對(duì)應(yīng)用進(jìn)行診斷,提升開發(fā)人員診斷問題的效率和能力。

Bistoury 在公司內(nèi)部原有agent的基礎(chǔ)上集成Alibaba開源的arthas和唯品會(huì)開源的vjtools,提供了更加豐富的功能,感謝他們做出的優(yōu)秀工作。

自從 V 哥發(fā)現(xiàn)了這款工具,就趕緊用了一下: Bistoury

先來看一下Bistoury的簡(jiǎn)介:

  • Arthas和vjtools已經(jīng)是很優(yōu)秀的工具,我們?yōu)槭裁催€要開發(fā)Bistoury?
    - Arthas和vjtools通過命令行或類似的方式使用,不可否認(rèn)命令行在很多時(shí)候具有比較高的效率;但圖形化界面也有其自身的優(yōu)點(diǎn),特別是在參數(shù)復(fù)雜時(shí)使用起來更加簡(jiǎn)單,效率更高。Bistoury在保留命令行界面的基礎(chǔ)上,還對(duì)很多命令提供了圖形化界面,方面用戶使用。
    - Arthas和vjtools針對(duì)單臺(tái)機(jī)器,從機(jī)器的維度對(duì)系統(tǒng)進(jìn)行診斷,沒有提供全局的視角;而在線應(yīng)用往往部署在多臺(tái)機(jī)器,Bistoury可以和使用方應(yīng)用中心整合,從應(yīng)用的維度對(duì)系統(tǒng)進(jìn)行診斷,提供了更多的可能。
    - Arthas和vjtools在使用上,要么登錄機(jī)器,要么需要使用者提供相應(yīng)的ip和端口;Bistoury去掉各種設(shè)置,提供統(tǒng)一的web入口,從頁面上選擇應(yīng)用和機(jī)器即可使用。
    - 除了這些針對(duì)性優(yōu)化,Bistoury在保留arthas和vjtools的所有功能之外,還提供了更加豐富的功能。
    - Bistoury的在線debug功能去掉了各種復(fù)雜參數(shù),模擬ide調(diào)試體驗(yàn),通過web界面提供斷點(diǎn)調(diào)試的功能,可以在不阻塞應(yīng)用的情況下捕獲斷點(diǎn)處的信息(包括本地變量、成員變量、靜態(tài)變量和方法調(diào)用棧)。
    - Bistoury提供了線程級(jí)cpu使用率監(jiān)控,可以監(jiān)控系統(tǒng)每個(gè)線程的分鐘級(jí)cpu使用率,并提供最近幾天的歷史數(shù)據(jù)查詢。
    - Bistoury可以動(dòng)態(tài)對(duì)方法添加監(jiān)控,監(jiān)控方法的調(diào)用次數(shù)、異常次數(shù)和執(zhí)行時(shí)間,同時(shí)也保留最近幾天的監(jiān)控?cái)?shù)據(jù)。
    - Bistoury提供了日志查看功能,可以使用tail、grep等命令對(duì)單臺(tái)或同時(shí)對(duì)多臺(tái)機(jī)器的日志進(jìn)行查看。
    - Bistoury提供可視化頁面實(shí)時(shí)查看機(jī)器和應(yīng)用的各種信息,包括主機(jī)內(nèi)存和磁盤使用、cpu使用率和load、系統(tǒng)配置文件、jar包信息,jvm信息、內(nèi)存使用和gc等等。

(簡(jiǎn)介來源于Github 上的介紹)

也許你正面對(duì)一個(gè)難以捉摸的線上問題束手無策,不妨來試試Bistoury的快捷部署腳本,在一分鐘內(nèi)啟動(dòng)Bistoury然后插入斷點(diǎn)開始調(diào)試吧!

1. 環(huán)境準(zhǔn)備:

確保你的系統(tǒng)是 Linux(支持 Mac OS),因?yàn)?Bistoury 目前只支持這些系統(tǒng)。 確保已安裝 JDK 1.7+ 或 1.8+,并且設(shè)置了 JAVA_HOME 環(huán)境變量。

2. 端口準(zhǔn)備:

確保本機(jī)的9090、9091、9880、9881端口未被占用,因?yàn)檫@些端口將被 Bistoury 使用,如果當(dāng)端口沖突了怎么解決?

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

3. Java 應(yīng)用準(zhǔn)備:

如果你有一個(gè)待診斷的 Java 應(yīng)用,確保它已經(jīng)啟動(dòng)。如果是非 Spring Web 應(yīng)用,可能需要配置啟動(dòng)腳本的 -c 參數(shù)。

4. 下載 Bistoury:

從 Bistoury 的官方 GitHub 或 Gitee 頁面下載快速部署包。如無法下載,請(qǐng)聯(lián)系 V 哥給你下載鏈接。

5. 解壓部署包:

將下載的快速部署包 bistoury-quick-start.tar.gz 拷貝到你希望安裝的位置,并解壓。

6. 啟動(dòng) Bistoury:

使用 quick_start.sh 腳本啟動(dòng) Bistoury。如果待診斷的應(yīng)用以當(dāng)前用戶啟動(dòng),可以使用 ./quick_start.sh -p <pid> start 命令啟動(dòng),其中 <pid> 是待診斷應(yīng)用的進(jìn)程 ID。

如果應(yīng)用以其他用戶啟動(dòng),需要使用

sudo -u <username> ./quick_start.sh -p <pid>vstart 命令,其中 <username> 是應(yīng)用啟動(dòng)的用戶名稱。

7. 訪問 Bistoury UI:

通過瀏覽器訪問 Bistoury 的 UI 界面,通常是 http://<ip>:9091,其中 <ip> 是部署 Bistoury 的服務(wù)器 IP 地址。

8. 在線 Debug:

如果需要在線 Debug,可以在 Bistoury UI 中設(shè)置斷點(diǎn),模擬 IDE 調(diào)試體驗(yàn),查看斷點(diǎn)處的信息。

9. 線程級(jí) CPU 監(jiān)控:

使用 Bistoury 提供的線程級(jí) CPU 監(jiān)控功能,監(jiān)控系統(tǒng)每個(gè)線程的 CPU 使用率,并查詢歷史數(shù)據(jù)。

10. 動(dòng)態(tài)監(jiān)控:

對(duì)系統(tǒng)的方法添加動(dòng)態(tài)監(jiān)控,查看方法的調(diào)用次數(shù)、異常次數(shù)和執(zhí)行時(shí)間,并生成監(jiān)控圖。

11. 應(yīng)用中心管理:

如果有內(nèi)部的應(yīng)用中心,可以通過 Bistoury 的應(yīng)用中心功能管理應(yīng)用與機(jī)器的信息。

請(qǐng)注意,部署步驟可能會(huì)根據(jù) Bistoury 的版本更新和具體的使用環(huán)境有所變化,建議查看最新的官方文檔以獲得最準(zhǔn)確的部署指導(dǎo)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)