springboot应用接入 Arthas Tunnel Server

1.在springboot项目中引入包

<dependency>
   <groupId>com.taobao.arthas</groupId>
   <artifactId>arthas-spring-boot-starter</artifactId>
   <version>3.7.2</version>
</dependency>

2.在本地运行项目

如果可以正常访问http://localhost:8563页面,说明引入成功。如果不能访问,需要排除解决其他问题

3.搭建Arthas Tunnel Server服务。

我们是通过k8s部署的,因此把https://github.com/alibaba/arthas.git

使用分支3.x, 然后修改配置文件:

arthas.enable-detail-pages=true

然后加入Dockerfile.

FROM openjdk:8-jdk


RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

COPY target/*.jar /app.jar
EXPOSE 8080

ENV PARAMS="--server.port=8080"
ENV JVM_OPTS=""
ENTRYPOINT ["/bin/sh","-c","java ${JVM_OPTS} -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar /app.jar ${PARAMS}"]

打包成镜像。

去k8s中添加工作负载,使用yml

kind: Deployment
apiVersion: apps/v1
metadata:
  name: arthas-tunnel-server372-v1
  namespace: szqc2023002-dev
  labels:
    app: arthas-tunnel-server372
    version: v1
  annotations:
    deployment.kubernetes.io/revision: '10'
    kubesphere.io/creator: XXX
spec:
  replicas: 1
  selector:
    matchLabels:
      app: arthas-tunnel-server372
      version: v1
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: arthas-tunnel-server372
        version: v1
      annotations:
        kubesphere.io/creator: XXX
    spec:
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
            type: ''
      containers:
        - name: container-jx32i4
          image: 'XXXX:40080/szqc2023002/arthas-tunnel-server:3.7.2'
          args:
            - '--arthas.enable-detail-pages=true'
          ports:
            - name: tcp-8080
              containerPort: 8080
              protocol: TCP
            - name: tcp-7777
              containerPort: 7777
              protocol: TCP
          env:
            - name: PARAMS
              value: '--server.port=8080 --arthas.enable-detail-pages=true'
          resources: {}
          volumeMounts:
            - name: host-time
              readOnly: true
              mountPath: /etc/localtime
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: Always
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600
 

去k8s中添加服务,可以使用以下yml

kind: Service
apiVersion: v1
metadata:
  name: arthas-tunnel-server372
  namespace: szqc2023002-dev
  labels:
    app: arthas-tunnel-server372
    version: v1
  annotations:
    kubesphere.io/creator: XXX
    kubesphere.io/serviceType: statelessservice
spec:
  ports:
    - name: tcp-8080
      protocol: TCP
      port: 8080
      targetPort: 8080
      nodePort: 31999
    - name: tcp-7777
      protocol: TCP
      port: 7777
      targetPort: 7777
      nodePort: 31449
  selector:
    app: arthas-tunnel-server372
  clusterIP: 10.233.39.19
  clusterIPs:
    - 10.233.39.19
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster
从配置文件可以看到映射为31999。

打开网页可以查看:

4.将应用中的arthas注册到Arthas Tunnel Server中

应用的配置添加下面的配置即可

arthas:

agent-id: ${HOSTNAME:${spring.application.name}}

tunnel-server: ws://10.233.39.19:7777/ws

app-name: ${HOSTNAME:${spring.application.name}}

telnet-port: -1

http-port: -1

${HOSTNAME:${spring.application.name}} 含义:HOSTNAME 含义为容器id,因为agent-id是唯一的,所以用这个比较方便。

10.233.39.19 为tunnel-server 的容器的虚拟ip。7777默认端口

app-name 是应用名称,用与apps.html展示

telnet-port: -1 防止本地端口调试时被重复绑定,设置随机

http-port: -1 防止本地端口调试时被重复绑定,设置随机

5.用tunnel-server连接应用的arthas

先找到应用的容器id

然后你就可以愉快的使用arthas了

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值