OBI 组件配置说明

更新时间:
复制 MD 格式

OBI(OpenTelemetry eBPF Instrumentation)基于 eBPF 在内核层自动捕获应用的网络与协议流量,无需修改业务代码或注入 SDK,即可产出符合 OpenTelemetry 语义约定的指标(Metrics)与链路(Traces)。本文逐字段说明 OBI 示例配置中各模块的含义、取值与调优建议,适用于在阿里云 ACK(Kubernetes)环境中以无侵入方式实现可观测采集的场景。

适用范围

本配置默认运行在 Kubernetes(阿里云 ACK)环境,以 DaemonSet 形式在每个节点部署 OBI,依赖 eBPF 在节点内核层采集全节点 Pod 的流量。使用前请确认下列前提。

前提项

要求

说明

部署形态

DaemonSet(节点级)

每节点一个 OBI 实例,采集本节点全部工作负载

配置总览

本配置由六个顶层模块组成,分别控制"采什么指标、采哪些实例、给数据打什么标签、如何归并路由、在内核层解析哪些协议、以及如何导出链路"。

顶层模块

职责

关键效果

metrics

指标能力开关

开启应用、网络、TCP RTT 三类指标

discovery

采集对象发现与排除

排除 OBI 自身及 ARMS 组件所在命名空间

attributes

属性装饰与筛选

关联 K8s 元数据,链路保留 GenAI 属性

routes

HTTP 路由归并

控制 path 基数,防止指标维度爆炸

ebpf

内核层负载提取

解析 GenAI 与 JSON-RPC 应用层协议

指标能力开关(metrics)

metrics 模块通过 features 列表控制 OBI 开启哪些类型的指标采集。本示例开启了应用、网络、TCP RTT 三类指标。

配置项

含义与作用

本示例取值

可选值 / 默认

说明与调优建议

features: application

应用指标

启用

开启应用维度的指标采集

features: network

网络指标

启用

开启网络维度的指标采集

features: stats_tcp_rtt

TCP RTT 指标

启用

开启 TCP RTT 统计采集

采集对象发现与排除(discovery)

discovery 决定 OBI 对哪些进程或 Pod 插桩。本示例通过 exclude_instrument 按命名空间做排除,避免采集 OBI 自身及 ARMS 平台组件,减少无意义的自监控数据与资源开销。

配置项

含义与作用

本示例取值

可选值 / 默认

说明与调优建议

exclude_instrument[].k8s_namespace: obi-system

排除 OBI 自身所在命名空间

排除

防止 OBI 采集自己,避免自监控噪声

exclude_instrument[].k8s_namespace: ack-onepilot

排除 ARMS 应用监控 Operator 组件

排除

ack-onepilot 为 ARMS 探针管理组件,无需业务采集

exclude_instrument[].k8s_namespace: arms-prom

排除 ARMS Prometheus 相关组件

排除

平台采集组件,排除以减少自采集

排除列表可按实际情况扩展,例如加入 kube-system 或其他平台命名空间。若需仅采集特定业务命名空间,也可改用正向的 discovery.instrument 白名单方式。

属性装饰与筛选(attributes)

attributes 控制为采集到的指标与链路附加哪些属性,以及在链路中保留哪些属性。本示例开启 Kubernetes 元数据关联,并在链路中显式保留全部 GenAI 语义属性。

配置项

含义与作用

本示例取值

可选值 / 默认

说明与调优建议

kubernetes.enable

是否为数据关联 K8s 元数据(Pod、Namespace、工作负载、节点等)

true

ACK 环境建议开启,便于按 K8s 维度检索与下钻

select.traces.include: gen_ai.*

链路中包含的属性白名单,gen_ai.* 通配所有 GenAI 语义约定属性

保留全部 gen_ai.*

保证大模型调用的 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 等可变片段造成指标维度(基数)无限膨胀。基数失控会显著增加时序数据库成本并拖慢查询。

配置项

含义与作用

本示例取值

可选值 / 默认

说明与调优建议

routes.unmatched

未匹配到路由模板的 path 的处理策略

low-cardinality

low-cardinality / wildcard / path / heuristic

low-cardinality 会将未匹配 path 归并为低基数形式,防止维度爆炸;调试期可临时用 path 保留原始路径

routes.max_path_segment_cardinality

单个 path 片段允许的最大不同取值数,超过则该片段收敛为通配

500

正整数

值越大保留细节越多、基数越高;ID 类高变化片段建议维持较小阈值

协议解析(ebpf)

ebpf.payload_extraction 控制 OBI 是否在内核层提取 HTTP 负载并解析应用层协议内容。开启后 OBI 可从明文 HTTP 报文中还原大模型调用、MCP 调用等语义信息,这是 GenAI 无侵入可观测的基础。

配置项

含义与作用

本示例取值

可选值 / 默认

说明与调优建议

http.jsonrpc.enabled

是否解析基于 HTTP 的 JSON-RPC 2.0 协议

true

true / false

MCP 等基于 JSON-RPC,开启后可还原方法名与调用语义

http.genai.*

各 GenAI 供应商 / 调用类型的解析开关

见下表

按供应商逐项开关

仅需开启实际使用的供应商,减少无关解析开销

buffer_sizes.http

HTTP 负载提取的内核缓冲区大小(字节)

262144(256 KB)

正整数(字节)

大模型请求/响应体较大,需足够缓冲以避免负载被截断;过大则增加内存占用

GenAI 供应商解析开关

http.genai 下逐项控制对不同大模型供应商与调用类型的负载解析。本示例开启的项如下,可仅保留实际链路中调用的供应商。

配置项

解析目标

本示例取值

说明

genai.openai_compatible.enabled

OpenAI 兼容接口

true

覆盖 vLLM、DashScope 兼容模式、本地 Ollama 的 OpenAI 兼容端点等

genai.openai.enabled

OpenAI 原生 API

true

解析 OpenAI 官方接口调用

genai.anthropic.enabled

Anthropic Claude API

true

解析 Claude 系列模型调用

genai.retrieval.enabled

检索类调用(Retrieval / RAG 检索)

true

还原向量检索 / RAG 检索环节

genai.mcp.enabled

MCP(Model Context Protocol)调用

true

基于 JSON-RPC,配合 jsonrpc.enabled 使用

genai.qwen.enabled

通义千问 DashScope 原生 API

true

解析 Qwen 系列模型调用

genai.embedding.enabled

Embedding 向量化调用

true

还原文本向量化环节

genai.gemini.enabled

Google Gemini API

true

解析 Gemini 系列模型调用

genai.rerank.enabled

Rerank 重排序调用

true

还原检索结果重排环节

自定义网关(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: vllm

host 为必填字段,portprovider 可选。

启用的插桩类型

instrumentations 列表决定 OBI 对哪些协议 / 中间件生成链路。本示例启用的类型如下。

插桩类型

覆盖对象

本示例取值

http

HTTP / HTTPS 调用

启用

grpc

gRPC 调用

启用

sql

SQL 数据库访问

启用

redis

Redis 访问

启用

kafka

Kafka 消息

启用

mqtt

MQTT 消息

启用

mongo

MongoDB 访问

启用

couchbase

Couchbase 访问

启用

memcached

Memcached 访问

启用

genai

大模型(GenAI)调用

启用

完整配置附录

以下为本文说明的完整配置,可直接复制使用。请在正式启用前,结合实际的命名空间、供应商与流量规模,对排除列表、GenAI 开关及导出参数做相应裁剪。

完整配置 YAML

metrics:
  features:
    - application
    - network
    - stats_tcp_rtt
discovery:
  exclude_instrument:
    - k8s_namespace: obi-system
    - k8s_namespace: ack-onepilot
    - k8s_namespace: arms-prom
attributes:
  kubernetes:
    enable: true
  select:
    traces:
      include:
        - "gen_ai.*"
routes:
  unmatched: low-cardinality
  max_path_segment_cardinality: 500
ebpf:
  payload_extraction:
    http:
      jsonrpc:
        enabled: true
      genai:
        openai_compatible:
          enabled: true
        openai:
          enabled: true
        anthropic:
          enabled: true
        retrieval:
          enabled: true
        mcp:
          enabled: true
        qwen:
          enabled: true
        embedding:
          enabled: true
        gemini:
          enabled: true
        rerank:
          enabled: true
  buffer_sizes:
    http: 262144
otel_traces_export:
  batch_timeout: 10s
  batch_max_size: 512
  queue_size: 4096
  backoff_initial_interval: 5s
  backoff_max_interval: 15s
  backoff_max_elapsed_time: 2m
  instrumentations:
    - http
    - grpc
    - sql
    - redis
    - kafka
    - mqtt
    - mongo
    - couchbase
    - memcached
    - genai