美文网首页
Arthas简单使用

Arthas简单使用

作者: Lolipiza | 来源:发表于2021-06-13 11:21 被阅读0次

    起因是线上环境有个问题,但是方法又没有打印日志这就很头痛了,又不可能直接发个版本上线,查询了相关资料以后,发现Arthas可以简便的达到目的。

    arthas的使用方法有很多:
    方法一.无需在客户端做任何操作,只需要在服务器上现场下载arthas并使用

    // 下载并启动
    curl -O https://arthas.aliyun.com/arthas-boot.jar
    (或wget https://......)
    java -jar arthas-boot.jar
    
    

    方法二.arthas安装到基础镜像

    RUN if $MIRROR; then MAVEN_HOST=${MIRROR_MAVEN_HOST} ;ALPINE_HOST=${MIRROR_ALPINE_HOST} ; sed -i "s/dl-cdn.alpinelinux.org/${ALPINE_HOST}/g" /etc/apk/repositories ; fi && \
        # https://github.com/docker-library/openjdk/issues/76
        apk add --no-cache tini && \ 
        # download & install arthas
        wget -qO /tmp/arthas.zip "${MAVEN_HOST}/com/taobao/arthas/arthas-packaging/${ARTHAS_VERSION}/arthas-packaging-${ARTHAS_VERSION}-bin.zip" && \
        mkdir -p /opt/arthas && \
        unzip /tmp/arthas.zip -d /opt/arthas && \
        rm /tmp/arthas.zip
    
    ENTRYPOINT ["/sbin/tini", "--", "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
    

    方法三.在业务模块集成arthas

    // 在pom加入依赖
     <dependency>
                <groupId>com.taobao.arthas</groupId>
                <artifactId>arthas-spring-boot-starter</artifactId>
                <version>${arthas.version}</version>
            </dependency>
    

    配置yml:

    arthas:
     # 通过http访问的端口
      http-port: 8563
      # 通过telnet访问的端口
      telnet-port: 3658
      session-timeout: 1800
      # 绑定的ip
      ip: 0.0.0.0
    

    如果配置 arthas.telnetPort为 -1 ,则不监听 telnet端口。如果配置 arthas.telnetPort为 0 ,则随机telnet端口。arthas.httpPort类似
    通过http访问:localhost:8563


    使用:

    // 输入需要查看的方法以及入参:
    watch com.cmcc.hui.tv.service.display.impl.DisplayServiceImpl frame "target"
    此时用户调用接口,arthas日志就会打印出调用这个方法的入参
    
    使用 ctrl+C退出watch功能
    
    

    其他具体功能见arthas官网:https://alibaba.github.io/arthas/

    参考:https://www.cnblogs.com/linyb-geek/p/14756092.html

    原理:
    ASM是一个Java字节码操作框架,用来动态生成class或者增强class,cglib的底层就是它,arthas也是通过它实现对class的增强的;Arthas增强功能的核心是Enhancer和AdviceWeaver这两个类,对方法进行Aop织入,达到watch,trace等效果
    https://zhuanlan.zhihu.com/p/115127052


    后续:因为之前在业务pod上使用javaagent的方式运行skywalking,我直接在业务上运行arthas就报错了,但不是一定会报错,猜想可能是和SW代理了同一个方法导致出现问题,待研究

    相关文章

      网友评论

          本文标题:Arthas简单使用

          本文链接:https://www.haomeiwen.com/subject/nbgweltx.html