Py学习  »  docker

Arthas全面使用指南:离线安装+Docker/K8s集成+集中管理

终码一生 • 11 月前 • 312 次点击  
点击“终码一生”,关注,置顶公众号
每日技术干货,第一时间送达!
图片

Arthas 是阿里巴巴开源的一款 Java 线上诊断工具,能够在不重启、不修改代码的情况下,实时监控和诊断生产环境中的 Java 应用。
它能帮你解决这些问题:
• 这个类是从哪个 jar 包加载的?为什么报 ClassNotFoundException
• 我改的代码怎么没生效?是不是分支错了?
• 线上某个用户请求出错,但无法 debug,日志也不够?
• 接口响应慢,到底哪里卡住了?
• 如何查看 JVM 实时内存、线程、GC 状态?
• 如何生成火焰图定位性能热点?
• 怎样从 JVM 内部直接调用方法或获取对象实例?
图片
01
离线安装 Arthas(推荐生产环境使用)
图片
由于生产环境通常禁止外网访问,推荐使用离线方式安装 Arthas。
官方文档:https://arthas.aliyun.com/doc/
步骤 1:下载arthas全量包
下载arthas全量包、安装
浏览器输入网址下载:
https://github.com/alibaba/arthas/releases/download/arthas-all-4.0.5/arthas-bin.zip
图片
或者进入github 地址手动下载
https://github.com/alibaba/arthas/releases
建议使用 v4.0.5 或更高版本(功能更全,支持 pm 命令等)。
步骤 2:将全量压缩包拷贝到目标服务器
scp arthas-bin.zip user@your-server:/opt/arthas/
步骤 3:启动 Arthas 并 attach 到目标 Java 进程
cd  /opt/arthas/
unzip arthas-bin.zip
java -jar /opt/arthas/arthas-boot.jar
会列出当前服务器上的 Java 进程,输入对应编号即可 attach。



    
[INFO] Found existing java process, please choose one:
* [1]: 12345 demo.jar
  [2]: 67890 app.jar
1
[INFO] Attach success.
[arthas@12345]$
图片
02
Docker 容器化集成 Arthas(Dockerfile 方式)
图片
将 Arthas 预装进镜像,确保每个容器都具备诊断能力。
目录结构建议
your-project/
├── Dockerfile
├── pom.xml
├── src/
│   └── ...
└── arthas/
    ├── arthas-agent.jar
    ├── arthas-bin.zip
    ├── arthas-boot.jar
    ├── arthas-client.jar
    ├── arthas-core.jar
    ├── arthas.properties
    ├── arthas-spy.jar
    ├── as.bat
    ├── as-service.bat
    ├── as.sh
    ├── async-profiler/
    ├── install-local.sh
    ├── lib/
    ├── logback.xml
    └── math-game.jar
Dockerfile 示例



    
FROM openjdk:8-jdk-alpine

# 创建 arthas 目录
RUNmkdir -p /opt/arthas

# 复制离线 arthas 包
COPY ./arthas /opt/arthas/

# 复制应用 jar
COPY target/your-app.jar /app.jar

# 启动脚本:先启动应用,再 attach arthas(可选自动连接 tunnel)
CMD java -jar /app.jar & \
    sleep 15 && \
    java -jar /opt/arthas/arthas-boot.jar --tunnel-server 'ws://tunnel-server:7777/ws' --app-name myapp --telnet-port 3658 --http-port 8563
sleep 15 确保应用完全启动后再 attach。
图片
03
Kubernetes(K8s)环境集成 Arthas
图片
方案 1:使用 arthas-k8s 工具(推荐)



    
helm repo add arthas https://alibaba.github.io/arthas
helm install arthas arthas/arthas-k8s
一键 attach:
arthas-k8s attach myapp-0
方案 2:在 Deployment 中预装 Arthas
apiVersion:apps/v1
kind:Deployment
metadata:
name:myapp
spec:
replicas:3
template:
    spec:
      containers:
      -name:app
        image:myapp:latest
        command: [ "/bin/sh"]
        args:
          -"-c"
          -|
            java -jar /app.jar &
            sleep 15
            java -jar /opt/arthas/arthas-boot.jar --tunnel-server 'ws://tunnel-server:7777/ws' --app-name myapp
图片
04
多机/多 Pod 集中管理:Arthas Tunnel(推荐)
图片
架构图(Mermaid)
图片
优势
• 统一入口,无需 SSH
• 支持多租户、权限控制
• 可记录诊断会话,便于审计
图片
05
常用命令速查表(Arthas 快速上手)——实战扩展版
图片
图片
图片
06
最佳实践建议
图片
图片
图片
07
总结
图片
图片
Arthas 是每个 Java 工程师都应掌握的“线上救命工具”。
结合 离线安装 + Docker/K8s 集成 + arthas-tunnel,你将拥有:
随时可诊断、全局可监控、问题秒定位 的强大能力!
立即行动建议:
    • • 下载 arthas-boot.jar 放入项目根目录
    • • 修改 Dockerfile 预装 Arthas
    • • 部署 arthas-tunnel-server,实现集中管理
    从此,告别“重启加日志”,拥抱“实时诊断”新时代!
    来源:https://blog.csdn.net/longzhutengyue
    END
    PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。



    往期推荐



    如何优雅实现多账号统一登录?so easy!

    HTTPS 行为大赏:三分钟了解加密过程

    优雅实现多系统一致性补偿方案,稳!

    动态配置管理!SpringBoot的YAML配置存储到数据库,省心多了!

    工作中常用的 git 命令,建议收藏!

    让 SpringBoot 飞起来!15条性能优化秘籍,轻松应对百万并发


    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/185931