-
Notifications
You must be signed in to change notification settings - Fork 495
SCT Agent 注入javaagent
Spring-Cloud-Tencent的javaagent支持针对容器部署的应用以及虚拟机部署的应用进行注入。
容器化场景下,用户只需要往对应的deployment中打入对应的标签,即可完成javaagent的自动注入。
用户需要首先在自己的K8S集群中安装polaris-controller,以下为安装方式:
- 如果使用的是开源版本北极星,可以参考以下文档进行polaris-controller的安装:安装polaris-controller
- 如果使用的是腾讯云产品TSE-服务治理中心,则可以通过关联K8S集群的方式进行安装:关联k8s集群
找到需要注入javaagent的应用所在命名空间,通过以下命令开启自动注入:
kubectl label namespace <命名空间名> polaris-injection=enabled
可通过以下命令查询命名空间是否开启了自动注入:
kubectl get namespace -L polaris-injection
输出结果:
NAME STATUS AGE POLARIS-INJECTION
default Active 3d2h enabled
注解名称 | 注解描述 |
---|---|
polarismesh.cn/javaagentVersion | 需要注入的Javaagent版本号,对应是polaris-java-agent的release版本号 |
polarismesh.cn/javaagentFrameworkName | 应用所使用的服务框架的名称,比如spring-cloud |
polarismesh.cn/javaagentFrameworkVersion | 应用所使用的服务框架的版本,一般写的是大版本,比如2022 |
polarismesh.cn/javaagentConfig | 用户自定义的Spring Cloud Tencent配置,不填写的配置则使用默认配置,格式为JSON |
注:JavaAgent自带的SpringCloudTencent默认配置可以参考这里:javaagent-configmap.yaml
找到需要注入javaagent的应用(一般是deployment或者statefulset),编辑yaml并增加以下标签:
apiVersion: apps/v1
kind: Deployment
......
spec:
......
template:
metadata:
annotations:
# 声明需要往这个POD中注入javaagent
polarismesh.cn/javaagent: "true"
# 声明应用的框架类型,对于SpringCloud应用则填写spring-cloud
polarismesh.cn/javaagentFrameworkName: spring-cloud
# 声明应用的框架版本
polarismesh.cn/javaagentFrameworkVersion: 2022
# 声明java-agent包的镜像版本
polarismesh.cn/javaagentVersion: 1.6.0
......
修改yaml后,需要重新部署应用。重新部署后,会自动完成java-agent的注入。可以进入POD中,观察应用的启动日志,如果启动的时候出现以下关键字,则证明java-agent注入成功。
......
2024-02-01 21:19:16 [INFO ](PolarisAgentBootStrap) [Bootstrap] start bootStrapStarter:default
......
2024-02-01 21:19:16 [INFO ](PluginCreator) [BootStrap] plugin spring-cloud-hoxton-plugin has been loading
可以通过添加polarismesh.cn/javaagentConfig
的annotation来修改JavaAgent的默认配置。下面给出一个样例:
基于H版的SpringCloud开启优雅上下线功能:
如果是通过 Deployment 进行部署,则需要在 Deployment 部署配置的 spec.template.metadata.annotations 下添加对应的annotations:
apiVersion: apps/v1
kind: Deployment
# 其他部署配置这里忽略
spec:
template:
metadata:
annotations:
polarismesh.cn/javaagent: "true"
polarismesh.cn/javaagentVersion: "{填写 polaris-java-agent 的版本}"
polarismesh.cn/javaagentFrameworkName: "spring-cloud"
polarismesh.cn/javaagentFrameworkVersion: "2022"
polarismesh.cn/javaagentConfig: "{\"spring.cloud.polaris.lossless.enabled\": \"true\", \"spring.cloud.polaris.lossless.healthCheckPath\": \"/health\"}"
获取最新的polaris-java-agent的版本,并下载二进制zip包。版本下载
解压下载后到的zip包,进入polaris-java-agent的目录,并修改conf/polaris-agent.conf文件,填写需要使用的插件名称(需要按照应用的spring-cloud版本进行填写),内容示例如下:
plugins.enable=spring-cloud-2022-plugin
进入conf/plugin/spring-cloud-2022(不同插件有不同目录,需要按照上一步填写的插件来选择目录)目录中,修改application.properties文件。
主要是需要填写正确的应用名与北极星服务端的地址信息。
# 应用名称(必填)
spring.application.name=testSvcName
# 配置北极星服务端地址
spring.cloud.polaris.address=grpc\://9.134.5.52\:8091
在应用的启动参数中,添加-javaagent:<java-agent安装目录>/polaris-agent-core-bootstrap.jar
,然后重启应用,即可完成java-agent的注入。
如果是使用IDEA,则需要在VM Option下添加-javaagent的参数。
- 您在使用过程中遇到任何问题,请提 Issue 或者加入我们的开发者群告诉我们,我们会在第一时间反馈
- Spring Cloud Tencent 社区期待您的加入,一个 Star、PR 都是对我们最大的支持
- 项目介绍
- 使用指南
- 最佳实践
- 开发文档
- 学习资料