Auto-instrumentation
Auto-instrumentation 是 Alauda 版本的 OpenTelemetry v2 Operator 的一项功能,能够自动将 OpenTelemetry 仪表库注入到应用容器中。此方法无需手动对代码进行仪表化,大大减少了实现可观测性所需的工作量。
Auto-instrumentation 的工作原理
Operator 利用 Kubernetes 的 admission webhook 拦截 Pod 创建请求。当 Pod 被注解为自动仪表化时,Operator 会自动:
- 注入一个 init 容器,将仪表库复制到共享卷中
- 修改应用容器,使其在启动时加载仪表库
- 配置环境变量以控制仪表行为
- 设置遥测数据导出到配置的后端
该过程在 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
要为您的应用启用自动仪表化,您需要:
- 创建一个定义仪表配置的
Instrumentation自定义资源 - 在应用 Pod 或命名空间上添加相应的仪表注解
- 部署或重启应用以应用仪表化
Operator 会自动检测注解,并在 Pod 创建时注入所需的仪表组件。
NOTE
自动仪表化要求您的应用 Pod 具备足够的权限和资源来加载仪表库。请确保您的 Pod 安全策略和资源限制能够满足额外开销。
Auto-instrumentation 的优势
自动仪表化带来以下主要优势:
- 零代码变更 - 无需修改应用源代码
- 一致的仪表化 - 所有应用统一的遥测采集标准
- 简化部署 - 通过注解自动应用仪表化
- 便捷更新 - 通过修改 Instrumentation CR 更新仪表库
- 语言灵活性 - 支持多种编程语言和框架
利用自动仪表化,您可以快速实现对整个应用环境的全面可观测性,无需手动仪表化的复杂操作。