Beyla 网络指标配置选项
网络指标配置在 Beyla 配置 YAML 文件中的 network
属性下,或通过一组以 BEYLA_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:
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 | 环境变量 | 类型 | 默认值 |
---|---|---|---|
source | BEYLA_NETWORK_SOURCE | string | socket_filter |
指定用于获取 Beyla 报告的网络事件的 Linux 内核功能。
可用选项有:tc
和 socket_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 | 环境变量 | 类型 | 默认值 |
---|---|---|---|
cidrs | BEYLA_NETWORK_CIDRS | []string | (空) |
CIDR 列表,用于将匹配 src.address
和 dst.address
的条目分别设置为 src.cidr
和 dst.cidr
属性。
该属性是源 IP 地址和目标 IP 地址的函数。如果一个 IP 地址不匹配此处列出的任何地址,则不会设置属性。如果一个 IP 地址匹配多个 CIDR 定义,则流会用最窄的 CIDR 进行装饰。因此,您可以安全地添加一个 0.0.0.0/0
条目,以便将所有不匹配其他任何 CIDR 的流量归为一组。
如果您通过环境变量设置此属性,每个条目必须用逗号分隔,例如
BEYLA_NETWORK_CIDRS=10.0.0.0/8,192.168.0.0/16
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
agent_ip | BEYLA_NETWORK_AGENT_IP | string | (未设置) |
允许覆盖每个指标上报告的 beyla.ip
属性。如果未设置,Beyla 会自动从指定的网络接口(参见下一个属性)检测自己的 IP 地址。
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
agent_ip_iface | BEYLA_NETWORK_AGENT_IP_IFACE | string | external |
指定 Beyla 应使用哪个接口来选择自己的 IP 地址,以设置 `beyla.ip` 属性的值。接受的值有:external
(默认)、local
或 name:<interface name>
(例如 name:eth0
)。
如果设置了 agent_ip
配置属性,此属性无效。
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
agent_ip_type | BEYLA_NETWORK_AGENT_IP_TYPE | string | any |
指定 Beyla 应在每个流的 `beyla.ip` 字段中报告哪种类型的 IP 地址(IPv4、IPv6 或两者)。接受的值有:any
(默认)、ipv4
、ipv6
。如果设置了 agent_ip
配置属性,此属性无效。
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
interfaces | BEYLA_NETWORK_INTERFACES | []string | (空) |
收集流量的接口名称。如果为空,Beyla 将获取系统中除 excluded_interfaces
(见下文)中列出的所有接口。如果条目用斜杠括起来(例如 /br-/
),则按正则表达式匹配,否则按大小写敏感字符串匹配。
如果您通过环境变量设置此属性,每个条目必须用逗号分隔,例如
BEYLA_NETWORK_INTERFACES=eth0,eth1,/^veth/
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
exclude_interfaces | BEYLA_NETWORK_EXCLUDE_INTERFACES | []string | lo |
要从网络流追踪中排除的接口名称。默认值:lo
(环回)。如果条目用斜杠括起来(例如 /br-/
),则按正则表达式匹配,否则按大小写敏感字符串匹配。
如果您通过环境变量设置此属性,每个条目必须用逗号分隔,例如
BEYLA_NETWORK_EXCLUDE_INTERFACES=lo,/^veth/
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
protocols | BEYLA_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_protocols | BEYLA_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_flows | BEYLA_NETWORK_CACHE_MAX_FLOWS | integer | 5000 |
指定在刷新以供后续导出之前,会计缓存中可以累积多少个流。默认值为 5000。如果您在 Beyla 日志中看到“received message larger than max”错误,请减小此值。
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
cache_active_timeout | BEYLA_NETWORK_CACHE_ACTIVE_TIMEOUT | duration | 5s |
指定流量在会计缓存中保留的最大时长,然后刷新以供后续导出。
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
direction | BEYLA_NETWORK_DIRECTION | string | both |
允许根据流量在其捕获接口中的方向选择要追踪的流量。接受的值为 ingress
(入站)、egress
(出站)或 both
(两者,默认)。
注意
在此上下文中,ingress(入站)或 egress(出站)与来自节点外部或集群外部的进出流量无关,而是与网络接口相关。这意味着同一个网络包可能在虚拟网络设备中被视为“入站”,而在其背后的物理网络接口中被视为“出站”。
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
sampling | BEYLA_NETWORK_SAMPLING | integer | 0 (禁用) |
应采样数据包并发送到目标收集器的速率。例如,如果设置为 100,则平均每 100 个数据包中会有一个发送到目标收集器。
YAML | 环境变量 | 类型 | 默认值 |
---|---|---|---|
print_flows | BEYLA_NETWORK_PRINT_FLOWS | boolean | false |
如果设置为 true
,Beyla 将每个网络流打印到标准输出。注意,这可能会产生大量输出。