一、前提条件
请参考 增强版 OpenTelemetry Java 探针支持的 Java 版本和框架,确保 Java 版本和应用服务器在探针支持的范围内。对于自动埋点支持的依赖库和框架,在接入成功后即可完成数据上报,不需要修改代码。同时,腾讯云增强版 OpenTelemetry Java 探针遵循了 OpenTelemetry 协议标准,如果自动埋点不满足你的场景,或者需要增加业务层埋点,请使用 OpenTelemetry API 进行自定义埋点。
二、步骤1:安装 Operator
在 K8s 集群安装 Operator,推荐从 APM 控制台一键安装 Operator,详情请参考 安装 tencent-opentelemetry-operator。
三、步骤2:在工作负载添加 annotation
以容器服务 TKE 为例,通过如下步骤可以在工作负载中添加 annotation,对于通用 K8s 集群,请通过 kubectl 等工具添加 annotation:
1. 登录 容器服务 控制台。
2. 单击集群,进入对应的 TKE 集群。
3. 在工作负载中找到需要接入 APM 的应用,单击更多,单击编辑 yaml。
4. 在 Pod annotation 中添加如下内容,单击完成,即可完成接入。
cloud.tencent.com/inject-java: "true"cloud.tencent.com/otel-service-name: my-app # 应用名,多个使用相同应用名接入的进程,在APM中会表现为相同应用下的多个实例。# 应用名最长63个字符,只能包含小写字母、数字及分隔符("-"),且必须以小写字母开头,数字或小写字母结尾。
请注意,此内容需要添加到 spec.template.metadata.annotations 中,作用于 Pod 的 annotation,而不是工作负载的 annotation,可以参考如下代码片段。
apiVersion: apps/v1kind: Deploymentmetadata: labels: k8s-app: my-app name: my-app namespace: defaultspec: selector: matchLabels: k8s-app: my-app template: metadata: labels: k8s-app: my-app annotations: cloud.tencent.com/inject-java: "true" # 添加到此处 cloud.tencent.com/otel-service-name: my-app spec: containers: – image: my-app:0.1 name: my-app
四、额外配置项:针对 Java 版本低于8u252的存量应用
由于缺少对 ALPN 的原生支持,8u252 之前的 Java 版本不支持 HTTPS 接入点。从 APM 控制台一键安装的 Operator 默认使用 HTTPS 接入点,因此,对于 Java 版本低于 8u252 的存量应用,需要手动调整为 HTTP 接入点。
五、方式一:全局调整
全局调整通过修改 Operator 配置实现,对于整个集群都生效。请参考 必填字段,将 env.ENDPOINT 配置项设置为控制台获取的 HTTP 接入点。
六、方式二:工作负载级别调整
工作负载级别调整通过修改应用容器的环境变量实现,仅对当前接入的应用生效。请在应用容器的 YAML 配置添加如下环境变量:
containers: – name: my-service env: – name: OTEL_EXPORTER_OTLP_ENDPOINT value: "http://pl.ap-guangzhou.apm.tencentcs.com:4319" # 控制台获取的 HTTP 接入点
七、接入验证
对工作负载添加 annotation 后,基于不同的发布策略,触发应用 Pod 的重启。新启动的 Pod 会自动注入探针,并连接到 APM 服务端上报监控数据,上报的业务系统为 Operator 的默认业务系统。在有正常流量的情况下,应用性能监控 > 应用列表 中将展示接入的应用,单击应用名称/ID 进入应用详情页。
再选择实例分析,即可看到接入的应用实例。由于可观测数据的处理存在一定延时,如果接入后在控制台没有查询到应用或实例,请等待30秒左右。
八、自定义埋点
当自动埋点不满足你的场景或者需要增加业务层埋点时,请参考 自定义埋点,使用 OpenTelemetry API 添加自定义埋点。
九、更多接入配置项(可选)
在工作负载级别,可以添加更多的 annotation 对接入行为进行调整。
| 配置项 | 描述 |
| cloud.tencent.com/apm-token | 指定 APM 业务系统的 Token。若不添加此项配置项,则使用 Operator 的配置(对应 Operator 的 env.APM_TOKEN 字段)。 |
| cloud.tencent.com/java-instr-version | 指定 Java 探针版本。若不添加此项配置项,则使用 Operator 的配置(对应 Operator 的 env.JAVA_INSTR_VERSION 字段)。取值为 latest(默认)或具体版本号,具体的版本号列表请参考 探针(Agent)版本信息,非必要情况下不推荐填写此字段。 |
| cloud.tencent.com/container-names | 指定注入探针的 container。该配置项支持将探针注入到多个 container 中,只需在该配置项的值中填写多个 container 名并用英文逗号间隔开。若不添加此项配置项,则探针将默认注入到第一个 container 中。该配置项在 Operator 0.88及以上版本支持。 |