開發與維運

一不小心,它成為了 GitHub Alibaba Group 下 Star 最多的開源項目

來源 | 阿里巴巴雲原生公眾號

Arthas Star 突破 2.5 萬啦

1.png

隨著微服務的流行,應用更加輕量和高效,但是帶來的困境是線上問題排查越來越複雜困難。傳統的 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

2.png

2. Arthas Github Contributors 數

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

3.png

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

過去一年,Arthas 在工商銀行、中原銀行、樸樸科技、貝殼找房、鬥魚等生產場景落地,歡迎更多用戶登記:https://github.com/alibaba/arthas/issues/111

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

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

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

4.png

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

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

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

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

5..png

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:

6.png

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

  • 不斷改進幫助文檔
  • 上線 arthas.aliyun.com ,改進國內用戶訪問速度
  • 為大部分命令準備交互式的在線教程

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

歡迎登陸 start.aliyun.com 知行動手實驗室體驗 Arthas 57 個動手實驗:
https://start.aliyun.com/handson-lab/#!category=arthas

1617788975354-c95a0286-f1af-4bba-b19b-7b2d5e44df6d.gif

Arthas 實驗預覽

Leave a Reply

Your email address will not be published. Required fields are marked *