天天看點

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

來源 | 阿裡巴巴雲原生公衆号

Arthas Star 突破 2.5 萬啦

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

随着微服務的流行,應用更加輕量和高效,但是帶來的困境是線上問題排查越來越複雜困難。傳統的 Java 排查問題,需要重新開機應用再進行調試,但是重新開機應用之後現場會丢失,問題難以複現。

是以自 2018 年 9 月,阿裡巴巴開源了久經考驗,深受開發者喜愛的應用診斷利器 Arthas。

Arthas 通過創新的位元組碼織入技術,可以在應用無需重新開機時,檢視調用上下文,高效排查問題;結合火焰圖,可以直接定位熱點,發現性能瓶頸;通過位元組碼替換,實作線上熱更新代碼;同時支援黑屏化和白屏化診斷,可以連接配接診斷大規模的叢集。

在 2020 年 5 月時,我們做了 Arthas Star 破 2 萬的回顧:

  • 精益求精 | 開源應用診斷利器 Arthas GitHub Star 突破兩萬

冬去春又來,轉眼間一年過去了,Arthas 的 Star 數突破 2.5 萬了~

下面來回顧 Arthas 去年的一些資料和工作。

Arthas 過去一年的資料

1. Arthas Github Star 數突破 2.5W

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

2. Arthas Github Contributors 數

Arthas 的開源貢獻者人數從 85 增長到 119,非常感謝他們的工作:

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

3. Arthas 登記公司數從 117 增長到 151 家

過去一年,Arthas 在工商銀行、中原銀行、樸樸科技、貝殼找房、鬥魚等生産場景落地,歡迎更多使用者登記:

https://github.com/alibaba/arthas/issues/111

  • 工商銀行打造線上診斷平台的探索與實踐

4. Arthas 線上教程學習人次:133,996,學習時長:51798小時

人均體驗時長 23 分鐘以上。

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

5. Arthas zip 包月均下載下傳 6.5w 次

上線了 Arthas 新網站之後,我們統計平均每個月 arthas zip 包下載下傳 6.5 萬次。是以保守估計,Arthas 平均每個月診斷 6W+ 台機器。

6. Arthas 在 ATA 年度技術搜尋排行第 6

阿裡内部的技術論壇 ATA 釋出年度熱搜關鍵詞 top 100,Arthas 作為 Java 診斷神器是唯一進入 top 10 的非集團指定産品。Arthas 在阿裡内部的受歡迎程度可見一斑。

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

Arthas 過去一年的工作

在過去的一年裡,Arthas 釋出了 19 個 release 版本,做了大量的改進,下面列出一些重點:

  • 全新的 Bytekit 位元組碼增強架構
  • 完整支援 HTTP API,所有指令都完成适配
  • Tenlet/WebSocket/HTTP API 支援統一的鑒權方案
  • 全新的熱更新指令 retransform
  • Tunnel Server 支援叢集部署,支援檢視火焰圖,内部上線支援流計算應用
  • 增加 arthas-spring-boot-starter 子產品,并支援 endpoint,使用者可以用程式設計方式引入 Arthas
  • 上線 arthas.aliyun.com 網站,更好服務國内使用者

1. 全新的 Bytekit 位元組碼增強架構

Github:

https://github.com/alibaba/bytekit

Bytekit 架構可以通過簡潔的注解來實作位元組碼增強,具體功能點:

  • 豐富的注入點支援
  • 動态的 Binding
  • 可程式設計的異常處理
  • 比如在函數入口做增強:
public static class SampleInterceptor {
        @AtEnter(inline = true, suppress = RuntimeException.class, 
suppressHandler = PrintExceptionSuppressHandler.class)
        public static void atEnter(@Binding.This Object object, 
                @Binding.Class Object clazz,
                @Binding.Args Object[] args, 
                @Binding.MethodName String methodName,
                @Binding.MethodDesc String methodDesc) {
            System.out.println("atEnter, args[0]: " + args[0]);
        }           
  • inline 支援
  • invokeOrigin 技術

比如在 Dubbo Filter 裡插入 APM 代碼:

@Instrument(Interface = "org.apache.dubbo.rpc.Filter")
public abstract class DubboFilter_APM {
    public Result invoke(Invoker<?> invoker, Invocation invocation) 
throws RpcException {
        System.err.println("invoker class: " + 
this.getClass().getName());
        Result result = InstrumentApi.invokeOrigin();
        return result;
    }
}           

通過 Bytekit 架構,Arthas:

  • 解決了多個 watch/trace 指令會重複某個類的問題
  • 統一使用一個 Transformer,解決了多個增強指令沖突問題
  • 實作了動态增強功能,通過指定 ListenerId,watch/trace 指令可以一起協作

2. HTTP API 支援

Http API 提供類似 RESTful 的互動接口,請求和響應均為 JSON 格式的資料。相對于 Telnet/WebConsole 的輸出非結構化文本資料,Http API 可以提供結構化的資料,支援更複雜的互動功能。

3. 統一鑒權

在今天,應用的安全越來越受到重視。是以,診斷工具在提升診斷效率的同時,也要注意自身的安全性。

因為 Arthas 增加了 auth 指令,并且統一了 Telnet/WebSocket/HTTP API 的鑒權,參考:

4. 全新的熱更新指令 retransform

之前,Arthas 裡的 redefine 指令已經支援熱更新功能,但是容易和 jad 指令或者其它 java agent 沖突。是以,我們開發了全新的 retransform 指令。

retransform 指令和 watch/trace 指令等是同一機制下實作的。如果對同一個類執行多個指令,則會經過下面的處理:

retransform 指令 -> watch 指令 -> trace指令           

可以看到,retransform 指令執行後,不會影響 watch/trace 指令。

5. Tunnel Server 支援叢集部署

通過 Arthas Tunnel Server/Client 可以遠端管理/連接配接多個 Agent。Tunnel Server 新增加功能:

  • 支援叢集部署,支援 redis 存儲
  • 支援 http proxy,檢視火焰圖

6. arthas-spring-boot-starter

通過 arthas-spring-boot-starter,使用者可以直接以程式設計方式引入 Arthas,結合 Tunnel Server,可以輕松實作叢集化管理。

7. 全新的網站 arthas.aliyun.com

之前,Arthas 的文檔放在 github io 的域名下,經常通路失敗。為了改進通路速度,是以,我們建設了全新網站,使用者通路文檔和下載下傳 Arthas,都更加友善快捷。

Arthas 有獎征文活動

Arthas 征文活動一共辦了七期,共收到投稿 30+ 篇,下面是一些優秀的文章:

有獎征文活動還在繼續,歡迎大家分享~

投稿位址:

http://alibabacloud.mikecrm.com/9khcRrs

Arthas 規劃

去年,我們規劃了三個目标:

  • RESTful API 支援
  • 全新的位元組碼架構 ByteKit
  • 插件化支援

實際上完成了 2.5 個,其中插件化支援,我們孵化出全新的 One Java Agent 項目來實作。

One Java Agent 項目的目标:

  • 提供插件化支援,統一管理衆多的 Java Agent
  • 插件支援 install/unstall,需要插件方實作接口
  • 支援傳統的 java agent,即已經開發好的 java agent

從開源到現在,Arthas 在 Github 上一共有 1200 多個 Issue,最近我們回收了第一個 Issue:

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

在不斷增強功能的同時,我們一直在持續改進 Arthas 的易用性。

  • 不斷改進幫助文檔
  • 上線 arthas.aliyun.com ,改進國内使用者通路速度
  • 為大部分指令準備互動式的線上教程

我們相信:贈人玫瑰之手,經久猶有餘香,感謝廣大使用者的支援和喜愛。

歡迎登陸 start.aliyun.com 知行動手實驗室體驗 Arthas 57 個動手實驗:

https://start.aliyun.com/handson-lab/#!category=arthas
一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目Arthas Star 突破 2.5 萬啦Arthas 過去一年的資料Arthas 過去一年的工作Arthas 有獎征文活動Arthas 規劃

Arthas 實驗預覽