arthas在线监控和debug

news2024/11/17 11:32:04

文章目录

  • 一. arthas-tunnel-server
      • 1.1 制作镜像
      • 1.2 k8s部署arthas-tunnel-server
      • 1.3 docker-compose部署
      • 1.4 Redis缓存
  • 二. 源码本地启动
      • 2.1 启动后端
      • 2.2. 启动前端
      • 2.3 启动客户端

官方文档 https://arthas.aliyun.com/doc/tunnel.html

一. arthas-tunnel-server

1.1 制作镜像

在这里插入图片描述
Dockerfile

FROM openjdk:11.0.15-slim-buster
WORKDIR /app/
COPY arthas-tunnel-server-3.6.6-fatjar.jar /app/app.jar
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && mkdir /app/data && mkdir /app/logs

CMD ["sh","-c","java -jar -server $JAVA_OPTS /app/app.jar $PARAMS"]

制作镜像

docker build -t registry.cn-shanghai.aliyuncs.com/wanfei/arthas-tunnel-server:v1 .

推送镜像

docker push registry.cn-shanghai.aliyuncs.com/wanfei/arthas-tunnel-server:v1

1.2 k8s部署arthas-tunnel-server

cat <<EOF> arthas-tunnel-server.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: arthas-tunnel-server
spec:
  selector:
    matchLabels:
      app: arthas-tunnel-server
  template:
    metadata:
      labels:
        app: arthas-tunnel-server
    spec:
      containers:
      - name: arthas-tunnel-server
        image: registry.cn-shanghai.aliyuncs.com/wanfei/arthas-tunnel-server:v1
        ports:
        - containerPort: 8080
        - containerPort: 7777
---
apiVersion: v1
kind: Service
metadata:
  name: arthas-tunnel-server
  labels:
    app: arthas-tunnel-server
spec:
  type: NodePort
  ports:
  - port: 8080
    protocol: TCP
    name: http
    nodePort: 30776
  - port: 7777
    protocol: TCP
    name: arthas
    nodePort: 30777
  selector:
    app: arthas-tunnel-server
EOF

部署

kubectl apply -f arthas-tunnel-server.yaml

访问 http://122.51.103.44:30776/
在这里插入图片描述

本地启动远程服务无法注册

1.3 docker-compose部署

mkdir -p /root/i/docker-compose/arthas && cd /root/i/docker-compose/arthas

cat <<EOF> /root/i/docker-compose/arthas/docker-compose.yaml
version: '3'
services:
  arthas-tunnel-server:
    environment:
      # 开放管理页面有风险!管理页面没有安全拦截功能,务必自行增加安全措施
      PARAMS: '--arthas.enable-detail-pages=true'  
    restart: always
    image: registry.cn-shanghai.aliyuncs.com/wanfei/arthas-tunnel-server:v1
    container_name: arthas-tunnel-server
    ports:
      - 9080:8080
      - 7777:7777
EOF
  • 为了避免占用8080端口,修改为9080
  • arthas.enable-detail-pages=true:开发管理页面,默认是false,不开放访问 http://127.0.0.1:9080/apps.html 获取不到所有连接应用

部署

docker-compose -f /root/i/docker-compose/arthas/docker-compose.yaml up -d

访问 http://127.0.0.1:9080
在这里插入图片描述

卸载

docker-compose -f /root/i/docker-compose/arthas/docker-compose.yaml down

1.4 Redis缓存

默认的 agentIds 存储在本地缓存,替换成 Redis 缓存

修改

cat <<EOF> /root/i/docker-compose/arthas/docker-compose.yaml
version: '3'
services:
  arthas-tunnel-server:
    environment:
      # 开放管理页面有风险!管理页面没有安全拦截功能,务必自行增加安全措施
      PARAMS: '--arthas.enable-detail-pages=true --spring.cache.type=redis --arthas.embedded-redis.enabled=true --spring.redis.host=124.223.207.141 --spring.redis.port=6379 --spring.redis.password=root'  
    restart: always
    image: registry.cn-shanghai.aliyuncs.com/wanfei/arthas-tunnel-server:v1
    container_name: arthas-tunnel-server
    ports:
      - 9080:8080
      - 7777:7777
EOF

二. 源码本地启动

项目地址 https://gitee.com/www19930327/arthas

2.1 启动后端

在这里插入图片描述

2.2. 启动前端

点击右下角的yarn install
在这里插入图片描述
启动
在这里插入图片描述

2.3 启动客户端

添加依赖

        <!--arthas监控-->
        <dependency>
            <groupId>com.taobao.arthas</groupId>
            <artifactId>arthas-spring-boot-starter</artifactId>
            <version>3.6.6</version>
        </dependency>

添加配置

# arthas tunnel server配置
arthas:
  agent-id: form-demo_123123123
  tunnel-server: ws://127.0.0.1:7777/ws

注意:当使用 http://127.0.0.1:8000/apps.html 查看连接的所有应用时
如果agent-id没有_,直接返回了null,列表就不显示应用了,所以后面添加 _随机id,前面最好不要有_,例如form_demo_123123123最后会显示form

    private static String findAppNameFromAgentId(String id) {
        int index = id.indexOf('_');
        if (index < 0 || index >= id.length()) {
            return null;
        }

        return id.substring(0, index);
    }

启动客户端应用
在这里插入图片描述
点击进入
在这里插入图片描述
点击IP进入
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3年以上Android开发者,关于学习 Compose,我的经验总结和建议

缘起 又到一年快结束的日子了 这一年里经历了裁员&#xff0c;跳槽&#xff0c;跑路&#xff0c;也当过面试官面试一些同学。 经历过攻守的角色转换后&#xff0c;沉下心&#xff0c;回顾过往&#xff0c;不由得发出感叹&#xff0c;今年卷的不行。 无论是裁员还是跳槽&…

10 个你应该知道的强大的JavaScript代码片段

JavaScript 现在非常流行&#xff0c;尤其是在 Web 开发中。随着新的 ECMAScript 版本&#xff0c;JavaScript 语法有了很大的改进。因此&#xff0c;JavaScript语言现在具有许多强大且有趣的功能&#xff0c;我们可以作为开发人员在代码中使用它们。 另一件好事是&#xff0c…

跨域解决方法

1.JSONP 前端通过script标签的src属性将回调函数传给服务器&#xff0c;服务器拿到回调函数后&#xff0c;会将数据作为回调函数的参数并将该回调函数返回&#xff0c;前端这边拿到回调函数执行&#xff0c;就可以获取服务端的数据 非直接方式获取数据 并且只支持get&#xf…

PostgreSQL数据库存储结构

PostgreSQL数据库集簇是——多个数据库的集合。 初始化库集簇&#xff1a;INITDB –D $PGDATA来完成。&#xff08;相当于oracle数据库dbca建库&#xff09; pg_ctl -d $PGDATA可以启动数据库 对象标识符&#xff08;OID&#xff09;来对整个数据集簇中唯一的标识数据库对象&a…

一个支持 CRUD 快速开发的 Web 框架,用着太爽

RUD 可谓是程序员又爱又恨的操作了。 爱&#xff0c;大部分的业务基本上都是增删改查的变种&#xff0c;基于增删改查可以实现大部分的业务。 恨&#xff0c;是因为普通的增删改查页面开发占据了大量的时间&#xff0c;非常无聊&#xff0c;同时又不会有技术上的提升。 如何能…

week14|week15 查阅文章总结

带宽的概念 信道容量 参数估计 朴素贝叶斯 数学建模 关联规则 聚类 github http 奈氏准则和香农定理 计算机控制 带宽的概念:带宽的两种概念__Charles_Chen的博客-CSDN博客_带宽的两种含义 信道容量:

【计算机视觉】关键考点

计算机标定 计算机标定的流程&#xff1f; 1.求解内参矩阵和外参矩阵的积H 当一张图片上的标定板角点数量等于4时&#xff0c;即可求得该图片对应的矩阵H 。当一张图片上的标定板角点数量大于4时&#xff0c;利用最小二乘法回归最佳的矩阵H 。 最小二乘法:简单地说就是通过n…

浅谈JVM及原理

JVM一直是java知识里面进阶阶段的重要部分&#xff0c;如果希望在java领域研究的更深入&#xff0c;则JVM则是如论如何也避开不了的话题&#xff0c;本系列试图通过简洁易读的方式&#xff0c;讲解JVM必要的知识点。 运行流程 我们都知道java一直宣传的口号是&#xff1a;一次编…

【SSM项目案例】数据库增删改查-完整代码

一、搭建环境 1&#xff09;spring环境搭建 2&#xff09;spring整合springmvc框架 目的&#xff1a;在controller中能成功调用service对象的方法 在项目启动时&#xff0c;加载applicationContext.xml的配置文件&#xff0c;在web.xml中进行配置 在controller中注入servic…

星巴克激战瑞幸:“咖啡老三们”的危险时刻

老大和老二“打架”&#xff0c;老三却“伤”得不轻。 在国内品牌界&#xff0c;经常出现这种颇有意思的商业现象。凉茶界里的加多宝和王老吉相互厮杀&#xff0c;排在后面的和其正声势渐弱。可口可乐和百事可乐不断较量&#xff0c;结果非常可乐消失了。 眼下在国内的咖啡圈…

这可能是全网最详细的python安装教程(windows)

python安装是学习pyhon第一步&#xff0c;很多刚入门小白不清楚如何安装python&#xff0c;今天我来带大家完成python安装与配置&#xff0c;跟着我一步步来&#xff0c;很简单&#xff0c;你肯定能完成。 第一部分&#xff1a;python安装 &#xff08;一&#xff09;准备工作…

CocosCreator3.4.2源码渲染流程解读

首先上一张脑图镇楼&#xff0c;有些流程还有待后续补充&#xff0c;但是整个刷新过程差不多都完成了。 在上一个xmind文件地址https://download.csdn.net/download/m0_37609239/87254684 接下来就正式开始讲代码&#xff1a; 每帧刷新渲染还是从mainloop开始讲&#xff0c;前面…

华为机试 - 对称美学

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 对称就是最大的美学&#xff0c;现有一道关于对称字符串的美学。已知&#xff1a; 第1个字符串&#xff1a;R第2个字符串&#xff1a;BR第3个字符串&#xff1a;RBBR第4个字符串&#xff1a;BRRBRBBR…

达标的字符串

1、题目 给定一个数 NNN&#xff0c;想象只由 0 和 1 两种字符组成的所欲长度为 NNN 的字符串。 如果某个字符串&#xff0c;任何 0 字符的左边都有 1 紧挨着&#xff0c;认为这个字符串达标。 返回有多少达标的字符串。 2、思路 前几项推导&#xff1a; 两种解法&#x…

【滤波专题-第6篇】小波阈值去噪方法看这一篇就明白了~(附MATLAB实现)

小波阈值去噪的算法是近些年比较流行的一种滤波方法&#xff0c;由于其阈值函数有着众多的改进方式和改进空间&#xff0c;改进阈值函数也往往可以作为创新点和亮点写到论文中&#xff0c;所以对于正在搞相关研究的同学们写论文是比较友好的&#xff08;轻松水论文方式1&#x…

【高并发】超卖一人一单问题

一、超卖问题 1. 超卖场景 高并发场景下用户下单&#xff0c;存在如下所示的超卖问题&#xff0c;其产生的主要原因是一个线程刚读出库存值&#xff0c;还没进行修改时&#xff0c;另一个线程也读出来该库存值&#xff0c;从而导致这两个线程在进行下单时&#xff0c;对同一个…

【无人机】基于Matlab实现四旋翼无人机几何跟踪控制

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

红星美凯龙寻找「反弹线」

文|螳螂观察 作者| 青月 疫情三年&#xff0c;绝大多数企业都处在「水深火热」之中&#xff0c;到今天&#xff0c;这个情况仍未得到改善。 作为自媒体&#xff0c;「螳螂观察」的感触颇深&#xff0c;疫情之前对一家企业表示肯定的词一般是「暴涨」、「同比大增」&#xff…

C语言竞赛

目录 1059:C语言竞赛 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 思路: 1.结构: 2.判断素数 3.输出宽度调整 代码: 时间复杂度: 总结: 题目链接: 1059:C语言竞赛 C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。…