社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

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

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