Skip to content

SCT Agent 注入javaagent

andrew shan edited this page Jul 22, 2024 · 12 revisions

简介

Spring-Cloud-Tencent的javaagent支持针对容器部署的应用以及虚拟机部署的应用进行注入。

容器化注入

容器化场景下,用户只需要往对应的deployment中打入对应的标签,即可完成javaagent的自动注入。

安装polaris-controller

用户需要首先在自己的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

往SpringCloud应用打标签指定注入javaagent

注解名称 注解描述
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

image

修改 JavaAgent 的默认配置

可以通过添加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\"}"

虚拟机注入

下载javaagent

获取最新的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的参数。

Clone this wiki locally