ネットワークメトリクス

OBI をポイントツーポイントのネットワークメトリクスの観察用に設定する

OpenTelemetry eBPF 計装は、異なるエンドポイント間のネットワークメトリクスを提供するように設定できます。 たとえば、物理ノード、コンテナ、Kubernetes Pod、サービスなどの間です。

はじめに

OBI ネットワークメトリクスの使用を開始するには、クイックスタートセットアップドキュメントを参照し、高度な設定については、設定ドキュメントを参照してください。

ネットワークメトリクス

OBI はバイトおよびパケットのフローメトリクスと、ゾーン間バイトメトリクスを提供します。

フローメトリクス: アプリケーションの観点から、異なるエンドポイント間で送受信されたバイト数をキャプチャします。

  • obi.network.flow.bytes(OpenTelemetry 経由でエクスポートする場合)
  • obi_network_flow_bytes_total(Prometheus エンドポイントでエクスポートする場合)
  • 有効にするには、OTEL_EBPF_METRICS_FEATURES 設定オプションに network オプションを追加します。

フローパケットメトリクス: エンドポイント間で送受信されたパケット数をカウントします。

  • obi.network.flow.packets(OpenTelemetry 経由でエクスポートする場合)
  • obi_network_flow_packets_total(Prometheus エンドポイントでエクスポートする場合)
  • 有効にするには、OTEL_EBPF_METRICS_FEATURESnetwork_flow_packets オプションを追加します。

ゾーン間メトリクス: アプリケーションの観点から、異なるアベイラビリティゾーン間で送受信されたバイト数をキャプチャします。

  • obi.network.inter.zone.bytes(OpenTelemetry 経由でエクスポートする場合)
  • obi_network_inter_zone_bytes_total(Prometheus エンドポイントでエクスポートする場合)
  • 有効にするには、OTEL_EBPF_METRICS_FEATURES 設定オプションに network_inter_zone オプションを追加します。

デフォルトでは、ネットワークフローバイトについて以下の属性のみが報告されます。 k8s.src.owner.namek8s.src.namespacek8s.dst.owner.namek8s.dst.namespacek8s.cluster.name です。

ゾーン間バイトメトリクスのデフォルト属性は、k8s.cluster.namesrc.zonedst.zone です。

メトリクス属性

ネットワークメトリクスには、以下の属性でラベルが付けられます。

属性説明
direction受信トラフィックは ingress、送信トラフィックは egress
dst.address宛先 IP アドレス(エグレスはリモート、イングレスはローカル)
dst.cidr宛先 CIDR(設定済みの場合)
dst.name宛先サービス名(サービスディスカバリーで解決)
dst.port宛先ポート(エグレスはリモート、イングレスはローカル)
dst.zone / dst_zone宛先クラウドアベイラビリティゾーンの名前
ifaceネットワークインターフェイス名
k8s.cluster.name / k8s_cluster_nameKubernetes クラスター名。OBI はノードラベル、OpenShift インフラストラクチャメタデータ、Google Cloud、Microsoft Azure、Amazon Web Services を確認します。検出を上書きするには、OTEL_EBPF_KUBE_CLUSTER_NAME を設定します。
k8s.dst.name / k8s_dst_name宛先 Pod 名
k8s.dst.namespace / k8s_dst_namespace宛先名前空間名
k8s.dst.node.ip / k8s_dst_node_ip宛先ノード IP アドレス
k8s.dst.node.name / k8s_dst_node_name宛先ノード名
k8s.dst.owner.name / k8s_dst_owner_name宛先ワークロードオーナー名
k8s.dst.owner.type / k8s_dst_owner_type宛先ワークロードオーナータイプ: replicasetdeploymentstatefulsetdaemonsetjobcronjobnode
k8s.dst.type / k8s_dst_type宛先ワークロードタイプ: podreplicasetdeploymentstatefulsetdaemonsetjobcronjobnode
k8s.src.name / k8s_src_name送信元 Pod 名
k8s.src.namespace / k8s_src_namespace送信元名前空間名
k8s.src.node.ip / k8s_src_node_ip送信元ノード IP アドレス
k8s.src.node.name / k8s_src_node_name送信元ノード名
k8s.src.owner.name / k8s_src_owner_name送信元ワークロードオーナー名
k8s.src.owner.type / k8s_src_owner_type送信元ワークロードオーナータイプ: replicasetdeploymentstatefulsetdaemonsetjobcronjobnode
k8s.src.type / k8s_src_type送信元ワークロードタイプ: podreplicasetdeploymentstatefulsetdaemonsetjobcronjobnode
network.protocol.name / network_protocol_nameネットワークプロトコル名(例: http または https
network.type / network_typeネットワークタイプ(例: ipv4 または ipv6
obi.ip / obi_ipメトリクスを出力した OBI インスタンスのローカル IP アドレス
service.name計装済みエンドポイントに関連付けられたローカルサービス名
service.namespace計装済みエンドポイントに関連付けられたローカルサービス名前空間
service.peer.name宛先エンドポイントに関連付けられたリモートピアサービス名
service.peer.namespace宛先エンドポイントに関連付けられたリモートピアサービス名前空間
src.address送信元 IP アドレス(エグレスはローカル、イングレスはリモート)
src.cidr送信元 CIDR(設定済みの場合)
src.name送信元サービス名(サービスディスカバリーで解決)
src.port送信元ポート(エグレスはローカル、イングレスはリモート)
src.zone / src_zone送信元クラウドアベイラビリティゾーンの名前
transportトランスポートプロトコル: tcpudp

メトリクスの削減

高カーディナリティ削減のために、ネットワークメトリクスは、メトリクスバックエンドへ送信されるメトリクス数を減らすようにプロセスレベルで事前集約されます。

デフォルトでは、すべてのメトリクスは以下の属性で集約されます。

  • direction
  • transport
  • src.address
  • dst.address
  • src.port
  • dst.port

OBI の設定で許可する属性を指定することで、その属性によってメトリクスを集約できます。

たとえば、ネットワークメトリクスをデフォルトの個別の Pod 名のかわりに、送信元と宛先の Kubernetes オーナーによって集約するには、以下の設定を使用します。

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"

前述の例では、個別の Pod 名のかわりに、送信元と宛先の Kubernetes オーナー名とタイプによって obi.network.flow.bytes の値を集約します。

CIDR ベースのメトリクス

OBI を設定して、CIDR 範囲によってメトリクスをさらに分類することもできます。 これは、クラウドプロバイダーの IP 範囲や内部/外部トラフィックなど、特定のネットワーク範囲へのトラフィックを追跡するのに役立ちます。

network 内の cidrs YAML サブセクション(または 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"

OBI ネットワークメトリクスのクイックスタート

OpenTelemetry eBPF 計装からネットワークメトリクスを生成するためのクイックスタートガイド

クラウドアベイラビリティゾーン間のトラフィックを測定する

異なるクラウドアベイラビリティゾーン間のネットワークトラフィックを測定する方法

OBI ネットワークメトリクスの設定オプション

OBI ネットワークメトリクスで利用可能な設定オプションについて学びます