Alibaba Arthas 3.1.2 版本发布:增加 logger /heapdump/vmoption 命令,支持 tunnel server - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hengyunabc
V2EX    开源软件

Alibaba Arthas 3.1.2 版本发布:增加 logger /heapdump/vmoption 命令,支持 tunnel server

  •  
  •   hengyunabc 2019-09-10 10:47:12 +08:00 3942 次点击
    这是一个创建于 2291 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Arthas

    Arthas是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。

    Arthas 3.1.2 版本持续增加新特性,下面重点介绍:

    • logger/heapdump/vmoption/stop命令
    • 通过 tunnel server 连接不同网络的 arthas,方便统一管控
    • 易用性持续提升:提示符修改为arthas@pid形式,支持ctrl + k清屏快捷键

    logger/heapdump/vmoption/stop 命令

    logger 命令

    查看 logger 信息,更新 logger level

    查看所有 logger 信息

    以下面的logback.xml为例:

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>2GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%logger{35} - %msg%n</pattern> </encoder> </appender> <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="APPLICATION" /> </appender> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n </pattern> <charset>utf8</charset> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="ASYNC" /> </root> </configuration> 

    使用logger命令打印的结果是:

    [arthas@2062]$ logger name ROOT class ch.qos.logback.classic.Logger classLoader sun.misc.Launcher$AppClassLoader@2a139a55 classLoaderHash 2a139a55 level INFO effectiveLevel INFO additivity true codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar appenders name CONSOLE class ch.qos.logback.core.ConsoleAppender classLoader sun.misc.Launcher$AppClassLoader@2a139a55 classLoaderHash 2a139a55 target System.out name APPLICATION class ch.qos.logback.core.rolling.RollingFileAppender classLoader sun.misc.Launcher$AppClassLoader@2a139a55 classLoaderHash 2a139a55 file app.log name ASYNC class ch.qos.logback.classic.AsyncAppender classLoader sun.misc.Launcher$AppClassLoader@2a139a55 classLoaderHash 2a139a55 appenderRef [APPLICATION] 

    appenders的信息里,可以看到

    • CONSOLE logger 的 target 是System.out
    • APPLICATION logger 是RollingFileAppender,它的 file 是app.log
    • ASYNC它的appenderRefAPPLICATION,即异步输出到文件里

    查看指定名字的 logger 信息

    [arthas@2062]$ logger -n org.springframework.web name org.springframework.web class ch.qos.logback.classic.Logger classLoader sun.misc.Launcher$AppClassLoader@2a139a55 classLoaderHash 2a139a55 level null effectiveLevel INFO additivity true codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar 

    更新 logger level

    [arthas@2062]$ logger --name ROOT --level debug update logger level success. 

    heapdump 命令

    dump java heap, 类似 jmap 命令的 heap dump 功能。

    dump 到指定文件

    [arthas@58205]$ heapdump /tmp/dump.hprof Dumping heap to /tmp/dump.hprof... Heap dump file created 

    只 dump live 对象

    [arthas@58205]$ heapdump --live /tmp/dump.hprof Dumping heap to /tmp/dump.hprof... Heap dump file created 

    vmoption 命令

    查看,更新 VM 诊断相关的参数

    查看所有的 option

    [arthas@56963]$ vmoption KEY VALUE ORIGIN WRITEABLE --------------------------------------------------------------------------------------------- HeapDumpBeforeFullGC false DEFAULT true HeapDumpAfterFullGC false DEFAULT true HeapDumpOnOutOfMemory false DEFAULT true Error HeapDumpPath DEFAULT true CMSAbortablePrecleanW 100 DEFAULT true aitMillis CMSWaitDuration 2000 DEFAULT true CMSTriggerInterval -1 DEFAULT true PrintGC false DEFAULT true PrintGCDetails true MANAGEMENT true PrintGCDateStamps false DEFAULT true PrintGCTimeStamps false DEFAULT true PrintGCID false DEFAULT true PrintClassHistogramBe false DEFAULT true foreFullGC PrintClassHistogramAf false DEFAULT true terFullGC PrintClassHistogram false DEFAULT true MinHeapFreeRatio 0 DEFAULT true MaxHeapFreeRatio 100 DEFAULT true PrintConcurrentLocks false DEFAULT true 

    查看指定的 option

    [arthas@56963]$ vmoption PrintGCDetails KEY VALUE ORIGIN WRITEABLE --------------------------------------------------------------------------------------------- PrintGCDetails false MANAGEMENT true 

    更新指定的 option

    [arthas@56963]$ vmoption PrintGCDetails true Successfully updated the vm option. PrintGCDetails=true 

    stop 命令

    之前有用户吐槽,不小心退出 Arthas console 之后,shutdown会关闭系统,因此增加了stop命令来退出 arthas,功能和shutdown命令一致。

    通过 tunnel server 连接不同网络的 arthas

    在新版本里,增加了 arthas tunnel server 的功能,用户可以通过 tunnel server 很方便连接不同网络里的 arthas agent,适合做统一管控。

    启动 arthas 时连接到 tunnel server

    在启动 arthas,可以传递--tunnel-server参数,比如:

    as.sh --tunnel-server 'ws://47.75.156.201:7777/ws' 

    目前47.75.156.201是一个测试服务器,用户可以自己 搭建 arthas tunnel server

    • 如果有特殊需求,可以通过--agent-id参数里指定 agentId。默认情况下,会生成随机 ID。

    attach 成功之后,会打印出 agentId,比如:

     ,---. ,------. ,--------.,--. ,--. ,---. ,---. / O \ | .--. ''--. .--'| '--' | / O \ ' .-' | .-. || '--'.' | | | .--. || .-. |`. `-. | | | || |\ \ | | | | | || | | |.-' | `--' `--'`--' '--' `--' `--' `--'`--' `--'`-----' wiki https://alibaba.github.io/arthas tutorials https://alibaba.github.io/arthas/arthas-tutorials version 3.1.2 pid 86183 time 2019-08-30 15:40:53 id URJZ5L48RPBR2ALI5K4V 

    如果是启动时没有连接到 tunnel server,也可以在后续自动重连成功之后,通过 session 命令来获取 agentId:

    [arthas@86183]$ session Name Value ----------------------------------------------------- JAVA_PID 86183 SESSION_ID f7273eb5-e7b0-4a00-bc5b-3fe55d741882 AGENT_ID URJZ5L48RPBR2ALI5K4V TUNNEL_SERVER ws://47.75.156.201:7777/ws 

    以上面的为例,在浏览器里访问 http://47.75.156.201:8080/ ,输入 agentId,就可以连接到本机上的 arthas 了。

    Arthas tunnel server 的工作原理

    browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent 

    https://github.com/alibaba/arthas/blob/master/tunnel-server/README.md

    易用性持续提升

    • 提示符修改为arthas@pid形式,用户可以确定当前进程 ID,避免多个进程时误操作

      [arthas@86183]$ help 
    • 增加ctrl + k清屏快捷键

    总结

    总之,3.1.2版本的 Arthas 新增加了logger/heapdump/vmoption/stop命令,增加了 tunnel server,方便统一管控。另外还有一些 bug 修复等,可以参考

    最后,Arthas 的在线教程考虑重新组织,欢迎大家参 与,提出建议:


    公众号

    欢迎关注横云断岭的专栏,专注 Java,Spring Boot,Arthas,Dubbo。

    横云断岭的专栏

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5046 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 01:23 PVG 09:23 LAX 17:23 JFK 20:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86