测量跨可用区流量
如何测量不同云可用区之间的网络流量
OpenTelemetry eBPF 仪器可以配置为提供不同端点之间的网络指标。例如,在物理节点、容器、Kubernetes Pod、服务等之间。
要开始使用 OBI 网络指标,请参考 快速入门设置文档,对于高级配置,请参考 配置文档。
OBI 提供两种网络指标系列
流指标:从应用程序的角度捕获不同端点之间发送和接收的字节数。
obi.network.flow.bytes,如果通过 OpenTelemetry 导出。obi_network_flow_bytes_total,如果通过 Prometheus 端点导出。network 选项添加到 OTEL_EBPF_METRICS_FEATURES 配置选项。跨区域指标:从应用程序的角度捕获不同可用区之间发送和接收的字节数。
obi.network.inter.zone.bytes,如果通过 OpenTelemetry 导出。obi_network_inter_zone_bytes_total,如果通过 Prometheus 端点导出。network 选项添加到 OTEL_EBPF_METRICS_FEATURES 配置选项。网络指标用以下属性标记
| 属性 | 描述 |
|---|---|
obi.ip / obi_ip | 发出指标的 OBI 实例的本地 IP 地址 |
direction | ingress 表示传入流量,egress 表示传出流量 |
iface | 网络接口名称 |
src.address | 源 IP 地址(出口时为本地,入口时为远程) |
src.port | 源端口(出口时为本地,入口时为远程) |
src.cidr | 源 CIDR(如果已配置) |
dst.address | 目标 IP 地址(出口时为远程,入口时为本地) |
dst.port | 目标端口(出口时为远程,入口时为本地) |
dst.cidr | 目标 CIDR(如果已配置) |
transport | 传输协议:tcp,udp |
k8s.src.namespace / k8s_src_namespace | 源命名空间名称 |
k8s.src.name / k8s_src_name | 源 Pod 名称 |
k8s.src.type / k8s_src_type | 源工作负载类型:pod、replicaset、deployment、statefulset、daemonset、job、cronjob、node |
k8s.src.owner.name / k8s_src_owner_name | 源工作负载所有者名称 |
k8s.src.owner.type / k8s_src_owner_type | 源工作负载所有者类型:replicaset、deployment、statefulset、daemonset、job、cronjob、node |
k8s.src.node.ip / k8s_src_node_ip | 源节点 IP 地址 |
k8s.src.node.name / k8s_src_node_name | 源节点名称 |
k8s.dst.namespace / k8s_dst_namespace | 目标命名空间名称 |
k8s.dst.name / k8s_dst_name | 目标 Pod 名称 |
k8s.dst.type / k8s_dst_type | 目标工作负载类型:pod、replicaset、deployment、statefulset、daemonset、job、cronjob、node |
k8s.dst.owner.name / k8s_dst_owner_name | 目标工作负载所有者名称 |
k8s.dst.owner.type / k8s_dst_owner_type | 目标工作负载所有者类型:replicaset、deployment、statefulset、daemonset、job、cronjob、node |
k8s.dst.node.ip / k8s_dst_node_ip | 目标节点 IP 地址 |
k8s.dst.node.name / k8s_dst_node_name | 目标节点名称 |
k8s.cluster.name / k8s_cluster_name | Kubernetes 集群的名称。OBI 可以自动检测到 Google Cloud、Microsoft Azure 和 Amazon Web Services。对于其他提供商,请设置 OTEL_EBPF_KUBE_CLUSTER_NAME 属性 |
对于高基数归约,网络指标在进程级别进行预聚合,以减少发送到指标后端的指标数量。
默认情况下,所有指标都按以下属性进行聚合
directiontransportsrc.addressdst.addresssrc.portdst.port您可以在 OBI 配置中指定允许的属性,以按这些属性聚合指标。
例如,要按源和目标 Kubernetes 所有者(而不是默认的单个 Pod 名称)聚合网络指标,您可以使用以下配置
network:
allowed_attributes:
- k8s.src.owner.name
- k8s.dst.owner.name
- k8s.src.owner.type
- k8s.dst.owner.type
然后,等效的 Prometheus 指标将是
obi_network_flow_bytes:
k8s_src_owner_name="frontend"
k8s_src_owner_type="deployment"
k8s_dst_owner_name="backend"
k8s_dst_owner_type="deployment"
上一个示例将按源和目标 Kubernetes 所有者名称和类型聚合 obi.network.flow.bytes 值,而不是单独的 Pod 名称。
您可以配置 OBI 以按 CIDR 范围分解指标。这对于跟踪到特定网络范围的流量非常有用,例如云提供商 IP 范围,或内部/外部流量。
cidrs YAML 子部分中的 network(或 OTEL_EBPF_NETWORK_CIDRS 环境变量)接受 CIDR 范围列表及其名称。例如
network:
cidrs:
- cidr: 10.0.0.0/8
name: 'cluster-internal'
- cidr: 192.168.0.0/16
name: 'private'
- cidr: 172.16.0.0/12
name: 'container-internal'
然后,等效的 Prometheus 指标将是
obi_network_flow_bytes:
src_cidr="cluster-internal"
dst_cidr="private"
如何测量不同云可用区之间的网络流量
使用 OpenTelemetry eBPF 仪器生成网络指标的快速入门指南
了解 OBI 网络指标的可用配置选项