OBI(OpenTelemetry eBPF Instrumentation)基于 eBPF 在内核层自动捕获应用的网络与协议流量,无需修改业务代码或注入 SDK,即可产出符合 OpenTelemetry 语义约定的指标(Metrics)与链路(Traces)。本文逐字段说明 OBI 示例配置中各模块的含义、取值与调优建议,适用于在阿里云 ACK(Kubernetes)环境中以无侵入方式实现可观测采集的场景。
适用范围
本配置默认运行在 Kubernetes(阿里云 ACK)环境,以 DaemonSet 形式在每个节点部署 OBI,依赖 eBPF 在节点内核层采集全节点 Pod 的流量。使用前请确认下列前提。
前提项 | 要求 | 说明 |
部署形态 | DaemonSet(节点级) | 每节点一个 OBI 实例,采集本节点全部工作负载 |
配置总览
本配置由六个顶层模块组成,分别控制"采什么指标、采哪些实例、给数据打什么标签、如何归并路由、在内核层解析哪些协议、以及如何导出链路"。
顶层模块 | 职责 | 关键效果 |
| 指标能力开关 | 开启应用、网络、TCP RTT 三类指标 |
| 采集对象发现与排除 | 排除 OBI 自身及 ARMS 组件所在命名空间 |
| 属性装饰与筛选 | 关联 K8s 元数据,链路保留 GenAI 属性 |
| HTTP 路由归并 | 控制 path 基数,防止指标维度爆炸 |
| 内核层负载提取 | 解析 GenAI 与 JSON-RPC 应用层协议 |
指标能力开关(metrics)
metrics 模块通过 features 列表控制 OBI 开启哪些类型的指标采集。本示例开启了应用、网络、TCP RTT 三类指标。
配置项 | 含义与作用 | 本示例取值 | 可选值 / 默认 | 说明与调优建议 |
| 应用指标 | 启用 | — | 开启应用维度的指标采集 |
| 网络指标 | 启用 | — | 开启网络维度的指标采集 |
| TCP RTT 指标 | 启用 | — | 开启 TCP RTT 统计采集 |
采集对象发现与排除(discovery)
discovery 决定 OBI 对哪些进程或 Pod 插桩。本示例通过 exclude_instrument 按命名空间做排除,避免采集 OBI 自身及 ARMS 平台组件,减少无意义的自监控数据与资源开销。
配置项 | 含义与作用 | 本示例取值 | 可选值 / 默认 | 说明与调优建议 |
| 排除 OBI 自身所在命名空间 | 排除 | — | 防止 OBI 采集自己,避免自监控噪声 |
| 排除 ARMS 应用监控 Operator 组件 | 排除 | — | ack-onepilot 为 ARMS 探针管理组件,无需业务采集 |
| 排除 ARMS Prometheus 相关组件 | 排除 | — | 平台采集组件,排除以减少自采集 |
排除列表可按实际情况扩展,例如加入 kube-system 或其他平台命名空间。若需仅采集特定业务命名空间,也可改用正向的 discovery.instrument 白名单方式。
属性装饰与筛选(attributes)
attributes 控制为采集到的指标与链路附加哪些属性,以及在链路中保留哪些属性。本示例开启 Kubernetes 元数据关联,并在链路中显式保留全部 GenAI 语义属性。
配置项 | 含义与作用 | 本示例取值 | 可选值 / 默认 | 说明与调优建议 |
| 是否为数据关联 K8s 元数据(Pod、Namespace、工作负载、节点等) |
| — | ACK 环境建议开启,便于按 K8s 维度检索与下钻 |
| 链路中包含的属性白名单, | 保留全部 | — | 保证大模型调用的 provider、model、token、operation、tool 等属性完整落到链路 |
gen_ai.* 属性遵循 OpenTelemetry GenAI 语义约定,包含如 gen_ai.system(供应商)、gen_ai.request.model(模型名)、gen_ai.operation.name(操作类型,如 chat / embeddings)、gen_ai.tool.name(工具调用名)等。保留这些属性是实现大模型链路可观测的关键。
路由归并(routes)
routes 用于将 HTTP 请求 path 归并为路由模板,避免因 path 中包含 ID、UUID 等可变片段造成指标维度(基数)无限膨胀。基数失控会显著增加时序数据库成本并拖慢查询。
配置项 | 含义与作用 | 本示例取值 | 可选值 / 默认 | 说明与调优建议 |
| 未匹配到路由模板的 path 的处理策略 |
|
|
|
| 单个 path 片段允许的最大不同取值数,超过则该片段收敛为通配 |
| 正整数 | 值越大保留细节越多、基数越高;ID 类高变化片段建议维持较小阈值 |
协议解析(ebpf)
ebpf.payload_extraction 控制 OBI 是否在内核层提取 HTTP 负载并解析应用层协议内容。开启后 OBI 可从明文 HTTP 报文中还原大模型调用、MCP 调用等语义信息,这是 GenAI 无侵入可观测的基础。
配置项 | 含义与作用 | 本示例取值 | 可选值 / 默认 | 说明与调优建议 |
| 是否解析基于 HTTP 的 JSON-RPC 2.0 协议 |
|
| MCP 等基于 JSON-RPC,开启后可还原方法名与调用语义 |
| 各 GenAI 供应商 / 调用类型的解析开关 | 见下表 | 按供应商逐项开关 | 仅需开启实际使用的供应商,减少无关解析开销 |
| HTTP 负载提取的内核缓冲区大小(字节) |
| 正整数(字节) | 大模型请求/响应体较大,需足够缓冲以避免负载被截断;过大则增加内存占用 |
GenAI 供应商解析开关
http.genai 下逐项控制对不同大模型供应商与调用类型的负载解析。本示例开启的项如下,可仅保留实际链路中调用的供应商。
配置项 | 解析目标 | 本示例取值 | 说明 |
| OpenAI 兼容接口 |
| 覆盖 vLLM、DashScope 兼容模式、本地 Ollama 的 OpenAI 兼容端点等 |
| OpenAI 原生 API |
| 解析 OpenAI 官方接口调用 |
| Anthropic Claude API |
| 解析 Claude 系列模型调用 |
| 检索类调用(Retrieval / RAG 检索) |
| 还原向量检索 / RAG 检索环节 |
| MCP(Model Context Protocol)调用 |
| 基于 JSON-RPC,配合 |
| 通义千问 DashScope 原生 API |
| 解析 Qwen 系列模型调用 |
| Embedding 向量化调用 |
| 还原文本向量化环节 |
| Google Gemini API |
| 解析 Gemini 系列模型调用 |
| Rerank 重排序调用 |
| 还原检索结果重排环节 |
自定义网关(gateways)
若通过自建网关(如 LiteLLM、vLLM 等)代理大模型调用,可在 openai_compatible 下增加 gateways 列表,声明网关的主机与端口。OBI 会将命中列表的流量按对应网关识别并解析,从而在非官方域名的 OpenAI 兼容端点上也能正确产出 GenAI 语义信息。
genai:
openai_compatible:
enabled: true
gateways:
- host: litellm.example.com
provider: litellm
- host: localhost
port: 8080
provider: vllmhost 为必填字段,port 和 provider 可选。
启用的插桩类型
instrumentations 列表决定 OBI 对哪些协议 / 中间件生成链路。本示例启用的类型如下。
插桩类型 | 覆盖对象 | 本示例取值 |
| HTTP / HTTPS 调用 | 启用 |
| gRPC 调用 | 启用 |
| SQL 数据库访问 | 启用 |
| Redis 访问 | 启用 |
| Kafka 消息 | 启用 |
| MQTT 消息 | 启用 |
| MongoDB 访问 | 启用 |
| Couchbase 访问 | 启用 |
| Memcached 访问 | 启用 |
| 大模型(GenAI)调用 | 启用 |
完整配置附录
以下为本文说明的完整配置,可直接复制使用。请在正式启用前,结合实际的命名空间、供应商与流量规模,对排除列表、GenAI 开关及导出参数做相应裁剪。