来源 | 阿里巴巴云原生公众号

Arthas Star 突破 2.5 万啦

  • 开源地址:https://github.com/alibaba/arthas
  • 文档:https://arthas.aliyun.com/doc/

随着微服务的流行,应用更加轻量和高效,但是带来的困境是线上问题排查越来越复杂困难。传统的 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. Arthas Github Contributors 数

Arthas 的开源贡献者人数从 85 增长到 119,非常感谢他们的工作:

3. Arthas 登记公司数从 117 增长到 151 家

过去一年,Arthas 在工商银行、中原银行、朴朴科技、贝壳找房、斗鱼等生产场景落地,欢迎更多用户登记:https://github.com/alibaba/arthas/issues/111

  • 工商银行打造在线诊断平台的探索与实践

4. Arthas 在线教程学习人次:133,996,学习时长:51798小时

人均体验时长 23 分钟以上。

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

上线了 Arthas 新网站之后,我们统计平均每个月 arthas zip 包下载 6.5 万次。所以保守估计,Arthas 平均每个月诊断 6W+ 台机器。

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

阿里内部的技术论坛 ATA 发布年度热搜关键词 top 100,Arthas 作为 Java 诊断神器是唯一进入 top 10 的非集团指定产品。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 支持

  • https://arthas.aliyun.com/doc/http-api.html

Http API 提供类似 RESTful 的交互接口,请求和响应均为 JSON 格式的数据。相对于 Telnet/WebConsole 的输出非结构化文本数据,Http API 可以提供结构化的数据,支持更复杂的交互功能。

3. 统一鉴权

在今天,应用的安全越来越受到重视。因此,诊断工具在提升诊断效率的同时,也要注意自身的安全性。
因为 Arthas 增加了 auth 命令,并且统一了 Telnet/WebSocket/HTTP API 的鉴权,参考:

  • https://arthas.aliyun.com/doc/auth.html

4. 全新的热更新命令 retransform

  • https://arthas.aliyun.com/doc/retransform.html

之前,Arthas 里的 redefine 命令已经支持热更新功能,但是容易和 jad 命令或者其它 java agent 冲突。因此,我们开发了全新的 retransform 命令。

retransform 命令和 watch/trace 命令等是同一机制下实现的。如果对同一个类执行多个命令,则会经过下面的处理:

retransform 命令 -> watch 命令 -> trace命令

可以看到,retransform 命令执行后,不会影响 watch/trace 命令。

5. Tunnel Server 支持集群部署

  • https://arthas.aliyun.com/doc/tunnel.html

通过 Arthas Tunnel Server/Client 可以远程管理/连接多个 Agent。Tunnel Server 新增加功能:

  • 支持集群部署,支持 redis 存储
  • 支持 http proxy,查看火焰图

6. arthas-spring-boot-starter

  • https://arthas.aliyun.com/doc/spring-boot-starter.html

通过 arthas-spring-boot-starter,用户可以直接以编程方式引入 Arthas,结合 Tunnel Server,可以轻松实现集群化管理。

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

  • https://arthas.aliyun.com/

之前,Arthas 的文档放在 github io 的域名下,经常访问失败。为了改进访问速度,因此,我们建设了全新网站,用户访问文档和下载 Arthas,都更加方便快捷。

Arthas 有奖征文活动

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

  • 工商银行打造在线诊断平台的探索与实践
  • Spring Boot 微服务性能下降九成!使用 Arthas 定位根因
  • 是谁在调用我?使用 arthas+jprofiler 做复杂链路分析
  • Arthas 定位 Dubbo 手动注册 Eureka 异常
  • 用 Arthas 神器来诊断 HBase 异常进程

有奖征文活动还在继续,欢迎大家分享~

投稿地址:http://alibabacloud.mikecrm.com/9khcRrs

Arthas 规划

去年,我们规划了三个目标:

  • RESTful API 支持
  • 全新的字节码框架 ByteKit
  • 插件化支持

实际上完成了 2.5 个,其中插件化支持,我们孵化出全新的 One Java Agent 项目来实现。

  • https://github.com/alibaba/one-java-agent

One Java Agent 项目的目标:

  • 提供插件化支持,统一管理众多的 Java Agent
  • 插件支持 install/unstall,需要插件方实现接口
  • 支持传统的 java agent,即已经开发好的 java agent

从开源到现在,Arthas 在 Github 上一共有 1200 多个 Issue,最近我们回收了第一个 Issue:

在不断增强功能的同时,我们一直在持续改进 Arthas 的易用性。

  • 不断改进帮助文档
  • 上线 arthas.aliyun.com ,改进国内用户访问速度
  • 为大部分命令准备交互式的在线教程

我们相信:赠人玫瑰之手,经久犹有余香,感谢广大用户的支持和喜爱。

欢迎登陆 start.aliyun.com 知行动手实验室体验 Arthas 57 个动手实验:
https://start.aliyun.com/handson-lab/#!category=arthas

Arthas 实验预览

一不小心,它成为了 GitHub Alibaba Group 下 Star 最多的开源项目相关推荐

  1. GitHub Alibaba Group 下 Star 最多的开源项目是?

    简介:随着微服务的流行,应用更加轻量和高效,但是带来的困境是线上问题排查越来越复杂困难.传统的 Java 排查问题,需要重启应用再进行调试,但是重启应用之后现场会丢失,问题难以复现. 来源 | 阿里巴 ...

  2. 吐血分享GitHub个人收藏最好的几个开源项目(2020年)

    2020 年已成往事,2021 年悄然而至. 在代码的路上越走越远,Github没少闲逛,也陆陆续续star好多好开源项目,为了不让其吃灰,吐血分享推荐,欢迎大家收藏Star! No.1 Switch ...

  3. GitHub上最受欢迎的Android开源项目TOP20

    以下这些开源项目都是从GitHub上筛选的,我强烈推荐android程序源代码有时间的时候自己在上面淘淘,或许能发现自己须要的开源程序. 了解开源项目有两个优点: 1.借鉴代码,一般来说.火爆的开源项 ...

  4. GitHub 上 11 月份最热门的开源项目

    开源最前线(ID:OpenSourceTop) 猿妹整编 链接:www.itcodemonkey.com/article/1468.html 转载请注明来源作者 2017 年 11 月份 GitHub ...

  5. GitHub 上超屌的 9 个 Vue 开源项目

    相比于其他前端框架,Vue 更加易学.尤其在中国,Vue 可以说是前端开发者必会的框架,在 GitHub 上基于 Vue 开源的优质项目也是数不胜数,今天我们就盘点 GitHub 上受欢迎的 9 个开 ...

  6. 推荐GitHub上几个比较热门的开源项目,记得收藏下!!!

    来自:开源最前线(ID:OpenSourceTop)  废话少说,直接来干货 1 terminal https://github.com/microsoft/terminal Star 42377 W ...

  7. GitHub上嵌入式相关的高星开源项目

    点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 关于GitHub,可能很多人都误以为这是互联网人的专属,其实并不是,那上面嵌入式相关的开 ...

  8. java项目介绍_3月Github最热门的10个Java开源项目

    1. JavaGuide Github 地址: https://github.com/Snailclimb/JavaGuide Star: 32.9k (6,196 stars this month) ...

  9. 不吹不黑!逛 GitHub 没看过这 10 个开源项目,绝对血亏...

    大家好,我是小 G. 前不久我在逛 Medium 的时候,偶然看到一篇文章<10 Extraordinary GitHub Repos for All Developers>,作者在里面介 ...

最新文章

  1. 常考数据结构与算法-NC105 二分查找-II
  2. ECCV 2020 《Propagating Over Phrase Relations for One-Stage Visual Grounding》论文笔记
  3. 从数据结构角度分析foreach效率比for循环高的原因
  4. 2.6.24及以上版本内核裁剪后启动黑屏的解决办法
  5. 在Linux环境下使用Apache部署ASP.NET Core
  6. UNIX网络编程笔记(1):TCP简介
  7. 进击的UI-------------------RAC
  8. Windows 全新终端 Windows Terminal
  9. 2019级C语言大作业 - 冷冻双侠
  10. 【原创】数据库基础之Mysql(2)主从库配置
  11. SPSS进行多元线性回归
  12. Python+matplotlib绘制地图
  13. 高级商务办公软件应用【9】
  14. 详解APP应用分发平台的榜单推荐和搜索排名规则
  15. 办公室网络还能这么搭建?从入门到精通,看这里
  16. web百度离线地图开发(详细教程)2019
  17. Nginx支持TCP端口转发
  18. Java时间戳是什么
  19. 《从你的全世界路过》
  20. Python与OpenCV(三)——基于光流法的运动目标检测程序分析

热门文章

  1. 9、MySQL中SQL语句的大小写规则
  2. 1.8 分割字符串(spilt())
  3. 1.4 @SuppressWarnings:抑制编译器警告
  4. 1.4 File类(文件操作类)获取文件属性,创建和删除文件\目录,遍历目录
  5. Java多线程的实现方式-Thread 类,Runnable 接口
  6. 136. 邻值查找【set lower_bound】
  7. 1151 LCA in a Binary Tree (30 分)【难度: 难 / 知识点: LCA 未完成】
  8. html实战例子: 简易的qq登录界面
  9. friend之友元函数和友元类
  10. JVM堆新生代分配比例