arthas一次方法追踪记录

调研spring-cloud-kubenetes,发现组件底层通过http请求k8s的apiserver服务查询k8s管理的service列表。

arthas一次方法追踪记录_第1张图片
arthas一次方法追踪记录_第2张图片
本地调用跟踪源码的结果url :https://kubernetes.default.svc/api/v1/services,由于未设置namaspace等信息所以url是最简单的url,源码会读取配置,然后最终生成url。然后想看看部署到k8s上的服务生成的url情况,想法是通过aop切这个方法,然后取到返回结果,由于实力有限没成功,所以想想其他方法,后来想到了阿里开源的arthas工具,所以记录一次使用过程。
1、首先去官网下载最新版jar包 version:3.2
2、本地启动并监控本地的服务中方法,通过watch命令,可以查看方法的返回值。命令:

watch com.cnpc.cloud.k8s.demo.controller health "{returnObj,target}"

3、怎么将arthas安装到镜像中
上传zip包到服务器
dockerfile中新增:
ADD arthas-3.2.0-bin.zip /usr/local/arthas/
k8s启动服务后通过命令 kubectl get pods 找到部署的pod
如果是单pod的服务则通过命令:kubectl exec -it [pod] – /bin/bash 进入容器
通过 java -jar arthas-boot.jar 启动服务
在这里插入图片描述
通过提示 找到服务,在这里由于是docker容器且之启动一个服务,所以输入 1并回车进入
arthas一次方法追踪记录_第3张图片
arthas中包含很多命令查看服务情况,这里只说watch查看方法执行数据观测。
这里由于前面已经找到所要监控的类的方法,所以直接输入命令

 watch io.fabric8.kubernetes.client.dsl.base.OperationSupport getNamespacedUrl "{returnObj,target}"

在这里插入图片描述

访问服务,查看方法返回结果

最终发现url:https://ip:port/api/v1/namespaces/default/services

由于制定了namespace所以可以发现url有所变化

你可能感兴趣的:(arthas一次方法追踪记录)