测量跨可用区流量

如何测量不同 Cloud 可用区域之间的网络流量

Cloud 可用区域之间的流量可能会产生额外费用。OBI 能够通过两种方式来测量它:一种是为常规网络指标添加 src.zonedst.zone 属性,另一种是提供单独的 obi.network.inter.zone.bytes (OTel) / obi_network_inter_zone_bytes_total (Prometheus) 指标。

为常规网络指标添加 src.zonedst.zone 属性

源和目标可用区域属性在 OBI 中默认是禁用的。要启用它,请在 OBI YAML 配置中将其显式添加到包含的网络属性列表中。

attributes:
  select:
    obi_network_flow_bytes:
      include:
        - k8s.src.owner.name
        - k8s.src.namespace
        - k8s.dst.owner.name
        - k8s.dst.namespace
        - k8s.cluster.name
        - src.zone
        - dst.zone

此配置使每个 obi_network_flow_bytes_total 指标在具有不同 src_zonedst_zone 属性时,都能显示区域间流量。

如果您需要对区域间流量测量进行更高粒度的分析(例如,源/目标 Pod 或节点),添加区域属性会影响指标的基数,即使是同一可用区域内的流量。

使用 obi.network.inter.zone 指标

为区域间流量使用单独的指标可以降低收集此数据时对指标基数的影响,因为 src.zonedst.zone 属性不会添加到常规网络指标中。

要启用 obi.network.inter.zone 指标,请将 network_inter_zone 选项添加到 OTEL_EBPF_METRICS_FEATURES 配置选项或其等效的 YAML 选项中。例如,如果 OBI 配置为通过 OpenTelemetry 导出指标

metrics:
  features:
    - network
    - network_inter_zone

用于测量区域间流量的 PromQL 查询

假设 networknetwork_inter_zone 指标系列都已启用,您可以使用以下 PromQL 查询来测量区域间流量:

总体区域间流量吞吐量

sum(rate(obi_network_inter_zone_bytes_total[$__rate_interval]))

按源和目标区域汇总的区域间流量吞吐量

sum(rate(obi_network_inter_zone_bytes_total[$__rate_interval])) by(src_zone,dst_zone)

总体同一区域流量吞吐量

sum(rate(obi_network_flow_bytes_total[$__rate_interval]))
  - sum(rate(obi_network_inter_zone_bytes_total[$__rate_interval]))

区域间流量占总流量的百分比

100 * sum(rate(obi_network_inter_zone_bytes_total[$__rate_interval]))
  / sum(rate(obi_network_flow_bytes_total[$__rate_interval]))