使用 OpenTelemetry 为非容器化 Java 服务提供可追踪性
目录
Overview
本方案将指导您如何修改部署在虚拟机或物理机上的非容器化 Java 服务,以便在平台上查看其与容器化服务的调用链。请注意,本方案仅提供可追踪性功能,不支持查看日志。
Prerequisites
- 您的 Java 服务部署在虚拟机或物理机上,且需要可追踪性功能。
- 集群中已创建服务网格。
- 您可以访问 Kubernetes 集群的控制节点,并已安装
kubectl工具。
Steps
1. 下载并配置 OpenTelemetry Java Agent
首先,您需要将 OpenTelemetry Java Agent 的 jar 文件复制到创建服务网格的集群控制节点的 ./agent 目录下。
根据集群的运行时组件选择并执行相应脚本
-
Containerd 运行时组件
-
在控制节点安装
nerdctl工具。下载,解压包,赋予执行权限,并复制到/usr/local/bin目录: -
登录集群使用的镜像仓库,替换
<image_registry_address>为实际地址: -
运行以下脚本,将 Java Agent jar 文件从镜像复制到本地:
-
-
Docker 运行时组件
-
登录集群使用的镜像仓库:
-
运行以下脚本,将 Java Agent jar 文件从镜像复制到本地:
-
2. 分发 Java Agent 到 Java 服务节点
将步骤 1 中获得的 opentelemetry-javaagent-ext.jar 复制到所有运行 Java 服务的节点的 ./agent 目录下。
3. 设置环境变量
在所有 Java 服务节点上配置以下环境变量:
4. 修改 Java 服务启动脚本
在 Java 服务的启动脚本中添加以下参数:
5. 创建 ConfigMap
在需要启用可追踪性功能的命名空间中,创建 ConfigMap 用于存储非容器化 Java 服务的地址与名称映射。示例:
NOTE
host、port和serviceName必须对应非容器化服务的访问地址、端口和服务名称。serviceName必须与OTEL_RESOURCE_ATTRIBUTES环境变量中定义的service.name保持一致。
6. 重启 Java 服务
完成上述配置后,重启 Java 服务使配置生效。