菜单
Grafana Cloud

Beyla 网络指标配置选项

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

YAML 示例

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:
    beyla_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 部分,Beyla 配置还需要一个用于导出网络指标的端点(在前面的示例中是 otel_metrics_export,但它也接受 Prometheus 端点)。

网络指标配置属性

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

  • network 启用 beyla_network_flow_bytes 指标:您的集群中两个端点之间的字节数
  • network_inter_zone 启用 beyla_network_inter_zone_bytes 指标:您的 Cloud 集群中不同可用区之间的字节数

注意

beyla_network_inter_zone_bytes 规范目前处于实验阶段,仅适用于 Kubernetes 集群。该规范并非最终版本,Beyla 的未来版本可能会引入破坏性变更。

YAML环境变量类型默认值
sourceBEYLA_NETWORK_SOURCEstringsocket_filter

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

可用选项有:tcsocket_filter

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

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

YAML环境变量类型默认值
cidrsBEYLA_NETWORK_CIDRS[]string(空)

CIDR 列表,用于将匹配 src.addressdst.address 的条目分别设置为 src.cidrdst.cidr 属性。

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

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

sh
BEYLA_NETWORK_CIDRS=10.0.0.0/8,192.168.0.0/16
YAML环境变量类型默认值
agent_ipBEYLA_NETWORK_AGENT_IPstring(未设置)

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

YAML环境变量类型默认值
agent_ip_ifaceBEYLA_NETWORK_AGENT_IP_IFACEstringexternal

指定 Beyla 应使用哪个接口来选择自己的 IP 地址,以设置 `beyla.ip` 属性的值。接受的值有:external(默认)、localname:<interface name>(例如 name:eth0)。

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

YAML环境变量类型默认值
agent_ip_typeBEYLA_NETWORK_AGENT_IP_TYPEstringany

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

YAML环境变量类型默认值
interfacesBEYLA_NETWORK_INTERFACES[]string(空)

收集流量的接口名称。如果为空,Beyla 将获取系统中除 excluded_interfaces(见下文)中列出的所有接口。如果条目用斜杠括起来(例如 /br-/),则按正则表达式匹配,否则按大小写敏感字符串匹配。

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

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

要从网络流追踪中排除的接口名称。默认值:lo(环回)。如果条目用斜杠括起来(例如 /br-/),则按正则表达式匹配,否则按大小写敏感字符串匹配。

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

sh
BEYLA_NETWORK_EXCLUDE_INTERFACES=lo,/^veth/
YAML环境变量类型默认值
protocolsBEYLA_NETWORK_PROTOCOLS[]string(空)

如果设置,Beyla 将丢弃所有报告的互联网协议不在此列表中的网络流。

接受的值定义在 Linux 标准知名 IP 协议 的枚举中,可以是:TCP, UDP, IP, ICMP, IGMP, IPIP, EGP, PUP, IDP, TP, DCCP, IPV6, RSVP, GRE, ESP, AH, MTP, BEETPH, ENCAP, PIM, COMP, L2TP, SCTP, UDPLITE, MPLS, ETHERNET, RAW

YAML环境变量类型默认值
exclude_protocolsBEYLA_NETWORK_EXCLUDE_PROTOCOLS[]string(空)

如果设置,Beyla 将丢弃所有报告的互联网协议在此列表中的网络流。

如果 `protocols` / `BEYLA_NETWORK_PROTOCOLS` 列表已经设置,则此属性将被忽略。

接受的值定义在 Linux 标准知名 IP 协议 的枚举中,可以是:TCP, UDP, IP, ICMP, IGMP, IPIP, EGP, PUP, IDP, TP, DCCP, IPV6, RSVP, GRE, ESP, AH, MTP, BEETPH, ENCAP, PIM, COMP, L2TP, SCTP, UDPLITE, MPLS, ETHERNET, RAW

YAML环境变量类型默认值
cache_max_flowsBEYLA_NETWORK_CACHE_MAX_FLOWSinteger5000

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

YAML环境变量类型默认值
cache_active_timeoutBEYLA_NETWORK_CACHE_ACTIVE_TIMEOUTduration5s

指定流量在会计缓存中保留的最大时长,然后刷新以供后续导出。

YAML环境变量类型默认值
directionBEYLA_NETWORK_DIRECTIONstringboth

允许根据流量在其捕获接口中的方向选择要追踪的流量。接受的值为 ingress(入站)、egress(出站)或 both(两者,默认)。

注意

在此上下文中,ingress(入站)或 egress(出站)与来自节点外部或集群外部的进出流量无关,而是与网络接口相关。这意味着同一个网络包可能在虚拟网络设备中被视为“入站”,而在其背后的物理网络接口中被视为“出站”。

YAML环境变量类型默认值
samplingBEYLA_NETWORK_SAMPLINGinteger0(禁用)

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

YAML环境变量类型默认值
print_flowsBEYLA_NETWORK_PRINT_FLOWSbooleanfalse

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