OBI 网络指标配置选项

了解 OBI 网络指标可用的配置选项

网络指标在 OBI 配置 YAML 文件的 network 属性下配置,或者通过一组以 OTEL_EBPF_NETWORK_ 为前缀的环境变量进行配置。

YAML 示例

network:
  enable: true
  cidrs:
    - 10.10.0.0/24
    - 10.0.0.0/8
    - 10.30.0.0/16
attributes:
  kubernetes:
    enable: true
  select:
    obi_network_flow_bytes:
      include:
        - k8s.src.owner.name
        - k8s.src.namespace
        - k8s.dst.owner.name
        - k8s.dst.namespace
        - src.cidr
        - dst.cidr
otel_metrics_export:
  endpoint: https://:4318

除了 network YAML 部分之外,OBI 配置还需要一个用于导出网络指标的端点(在前例中是 otel_metrics_export,但它也接受一个 Prometheus 端点)。

网络指标配置属性

要启用网络指标,请在 otel_metrics_export)或 prometheus_export)配置属性中添加以下 features 之一:

  • network 启用 obi_network_flow_bytes 指标:集群中两个端点之间的字节数
  • network_inter_zone 启用 obi_network_inter_zone_bytes 指标:云集群中不同可用区域之间的字节数
YAML环境变量类型默认值
源代码OTEL_EBPF_NETWORK_SOURCE字符串socket_filter

指定用于获取 OBI 报告的网络事件的 Linux 内核功能。

可用选项包括:tcsocket_filter

tc 用作事件源时,OBI 使用 Linux Traffic Control 的入站和出站过滤器以直接操作模式捕获网络事件。此事件源模式假定没有其他 eBPF 程序以直接操作模式附加到同一个 Linux Traffic Control 接口。例如,Cilium Kubernetes CNI 使用相同的方法,因此如果您在 Kubernetes 集群中安装了 Cilium CNI,请将 OBI 配置为使用 socket_filter 模式捕获网络事件。

socket_filter 用作事件源时,OBI 安装 eBPF Linux 套接字过滤器来捕获网络事件。此模式不会与 Cilium CNI 或其他使用 Linux Traffic Control 出入站过滤器的 eBPF 程序冲突。

YAML环境变量类型默认值
cidrsOTEL_EBPF_NETWORK_CIDRS[]string(empty)

CIDRs 列表,将设置为 src.cidrdst.cidr 属性,其中条目分别匹配 src.addressdst.address

属性是源和目标 IP 地址的函数。如果 IP 地址不匹配任何此处定义的地址,则不会设置属性。如果 IP 地址匹配多个 CIDR 定义,则流将使用最窄的 CIDR 进行装饰。因此,您可以安全地添加一个 0.0.0.0/0 条目来对所有不匹配其他 CIDR 的流量进行分组。

如果通过环境变量设置此属性,则必须用逗号分隔每个条目,例如

OTEL_EBPF_NETWORK_CIDRS=10.0.0.0/8,192.168.0.0/16
YAML环境变量类型默认值
agent_ipOTEL_EBPF_NETWORK_AGENT_IP字符串(not set)

允许覆盖每个指标上报告的 obi.ip 属性。如果未设置,OBI 会自动从指定的网络接口检测其自身的 IP 地址(请参阅下一个属性)。

YAML环境变量类型默认值
agent_ip_ifaceOTEL_EBPF_NETWORK_AGENT_IP_IFACE字符串external

指定 OBI 应使用哪个接口来获取其自身的 IP 地址以设置 obi.ip 属性的值。接受的值为:external(默认)、localname:<interface name>(例如 name:eth0)。

如果设置了 agent_ip 配置属性,则此属性无效。

YAML环境变量类型默认值
agent_ip_typeOTEL_EBPF字符串any

指定 OBI 应在每个流的 obi.ip 字段中报告的 IP 地址类型(IPv4 或 IPv6 或两者)。接受的值为:any(默认)、ipv4ipv6。如果设置了 agent_ip 配置属性,则此属性无效。

YAML环境变量类型默认值
interfacesOTEL_EBPF_NETWORK_INTERFACES[]string(empty)

从中收集流的接口名称。如果为空,OBI 将获取系统中的所有接口,但不包括 excluded_interfaces(见下文)中列出的接口。如果条目被斜杠包围(例如 /br-/),则将其作为正则表达式匹配,否则将其作为区分大小写的字符串匹配。

如果通过环境变量设置此属性,则必须用逗号分隔每个条目,例如

OTEL_EBPF_NETWORK_INTERFACES=eth0,eth1,/^veth/
YAML环境变量类型默认值
exclude_interfacesOTEL_EBPF_NETWORK_EXCLUDE_INTERFACES[]stringlo

要从网络流跟踪中排除的接口名称。默认值:lo(环回)。如果条目被斜杠包围(例如 /br-/),则将其作为正则表达式匹配,否则将其作为区分大小写的字符串匹配。

如果通过环境变量设置此属性,则必须用逗号分隔每个条目,例如

OTEL_BPF_NETWORK_EXCLUDE_INTERFACES=lo,/^veth/
YAML环境变量类型默认值
protocolsOTEL_EBPF_NETWORK_PROTOCOLS[]string(empty)

如果设置,OBI 将丢弃报告的 Internet 协议不在此列表中的任何网络流。

接受的值在 Linux 的 标准 IP 协议枚举中定义,可以是:TCPUDPIPICMPIGMPIPIPEGPPUPIDPTPDCCPIPV6RSVPGREESPAHMTPBEETPHENCAPPIMCOMPL2TPSCTPUDPLITEMPLSETHERNETRAW

YAML环境变量类型默认值
exclude_protocolsOTEL_EBPF_NETWORK_EXCLUDE_PROTOCOLS[]string(empty)

如果设置,OBI 将丢弃报告的 Internet 协议在此列表中的任何网络流。

如果已设置 protocols/OTEL_EBPF_NETWORK_PROTOCOLS 列表,则忽略此属性。

接受的值在 Linux 的 标准 IP 协议枚举中定义,可以是:TCPUDPIPICMPIGMPIPIPEGPPUPIDPTPDCCPIPV6RSVPGREESPAHMTPBEETPHENCAPPIMCOMPL2TPSCTPUDPLITEMPLSETHERNETRAW

YAML环境变量类型默认值
cache_max_flowsOTEL_EBPF_NETWORK_CACHE_MAX_FLOWSinteger5000

指定在刷新以供后续导出之前,可以累积多少个流在计数缓存中。默认值为 5000。如果看到 OBI 日志中的“received message larger than max”错误,请减少此值。

YAML环境变量类型默认值
cache_active_timeoutOTEL_EBPF_NETWORK_CACHE_ACTIVE_TIMEOUTduration5s

指定流在刷新以供后续导出之前在计数缓存中保留的最长时间。

YAML环境变量类型默认值
directionOTEL_EBPF_NETWORK_DIRECTION字符串both

允许根据流在捕获它们的接口上的方向来选择要跟踪的流。接受的值为 ingressegressboth(默认)。

YAML环境变量类型默认值
samplingOTEL_EBPF_NETWORK_SAMPLINGinteger0 (disabled)

应采样并发送到目标收集器的数据包的速率。例如,如果设置为 100,平均而言,每 100 个数据包中有一个会发送到目标收集器。

YAML环境变量类型默认值
print_flowsOTEL_EBPF_NETWORK_PRINT_FLOWS布尔值false

如果设置为 true,OBI 会将每个网络流打印到标准输出。注意,这可能会产生大量输出。


最后修改于 2025 年 8 月 11 日:迁移 beyla 文档以支持 OBI (#7399) (c6df1ca9)