Auto-instrumentation

Auto-instrumentation 是 Alauda 版本的 OpenTelemetry v2 Operator 的一项功能,能够自动将 OpenTelemetry 仪表库注入到应用容器中。此方法无需手动对代码进行仪表化,大大减少了实现可观测性所需的工作量。

Auto-instrumentation 的工作原理

Operator 利用 Kubernetes 的 admission webhook 拦截 Pod 创建请求。当 Pod 被注解为自动仪表化时,Operator 会自动:

  1. 注入一个 init 容器,将仪表库复制到共享卷中
  2. 修改应用容器,使其在启动时加载仪表库
  3. 配置环境变量以控制仪表行为
  4. 设置遥测数据导出到配置的后端

该过程在 Pod 部署时透明完成,无需更改应用代码或容器镜像。

支持的语言

Alauda 版本的 OpenTelemetry v2 Operator 支持以下编程语言和运行时的自动仪表化:

  • Apache HTTP Server - 对 Apache Web 服务器的自动仪表化
  • .NET - 支持 .NET 应用和服务
  • Go - 对 Go 应用的仪表化
  • Java - 对 Java 应用的全面支持,包括 JVM 仪表化
  • Node.js - 对 Node.js 应用的自动仪表化
  • Python - 支持 Python 应用

每种语言都有特定的配置选项和要求,详见各语言专属章节。

启用 Auto-instrumentation

要为您的应用启用自动仪表化,您需要:

  1. 创建一个定义仪表配置的 Instrumentation 自定义资源
  2. 在应用 Pod 或命名空间上添加相应的仪表注解
  3. 部署或重启应用以应用仪表化

Operator 会自动检测注解,并在 Pod 创建时注入所需的仪表组件。

NOTE

自动仪表化要求您的应用 Pod 具备足够的权限和资源来加载仪表库。请确保您的 Pod 安全策略和资源限制能够满足额外开销。

Auto-instrumentation 的优势

自动仪表化带来以下主要优势:

  • 零代码变更 - 无需修改应用源代码
  • 一致的仪表化 - 所有应用统一的遥测采集标准
  • 简化部署 - 通过注解自动应用仪表化
  • 便捷更新 - 通过修改 Instrumentation CR 更新仪表库
  • 语言灵活性 - 支持多种编程语言和框架

利用自动仪表化,您可以快速实现对整个应用环境的全面可观测性,无需手动仪表化的复杂操作。