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

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

ネットワークメトリクスは、OBI 設定 YAML ファイルnetwork プロパティ、または OTEL_EBPF_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:
    obi_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: http://localhost:4318

network YAML セクションに加えて、OBI の設定にはネットワークメトリクスをエクスポートするためのエンドポイントが必要です(前述の例では otel_metrics_export ですが、Prometheus エンドポイント も受け付けます)。

ネットワークメトリクスの設定プロパティ

ネットワークメトリクスを有効化するには、第一階層の メトリクスセクションfeatures に次のいずれかを追加します。

  • networkobi_network_flow_bytes メトリクスを有効化します。これは、クラスター内の 2 つのエンドポイント間のバイト数です
  • network_inter_zoneobi_network_inter_zone_bytes メトリクスを有効化します。これは、クラウドクラスター内の異なるアベイラビリティゾーン間のバイト数です
YAML環境変数デフォルト
sourceOTEL_EBPF_NETWORK_SOURCEstringsocket_filter

OBI が報告するネットワークイベントのソースとして使用する Linux カーネル機能を指定します。

利用可能なオプションは tcsocket_filter です。

tc をイベントソースとして使用すると、OBI は Linux Traffic Control の ingress および egress フィルターを direct action モードで使用してネットワークイベントをキャプチャします。 このイベントソースモードは、direct action モードで同じ Linux Traffic Control インターフェイスにアタッチする他の eBPF プログラムが存在しないことを前提としています。 たとえば、Cilium Kubernetes CNI は同じアプローチを使用するため、Kubernetes クラスターに Cilium CNI がインストールされている場合は、socket_filter モードでネットワークイベントをキャプチャするように OBI を設定してください。

socket_filter をイベントソースとして使用すると、OBI はネットワークイベントをキャプチャするために eBPF Linux ソケットフィルターをインストールします。 このモードは、Linux Traffic Control の egress および ingress フィルターを使用する Cilium CNI やその他の eBPF プログラムと競合しません。

YAML環境変数デフォルト
cidrsOTEL_EBPF_NETWORK_CIDRSCIDR 文字列のリスト(空)

src.addressdst.address にマッチするエントリで src.cidr および dst.cidr 属性として設定する CIDR のリスト。

属性は送信元と送信先の IP アドレスの関数です。 IP アドレスがここのどのアドレスにもマッチしない場合、属性は設定されません。 IP アドレスが複数の CIDR 定義にマッチする場合、フローは最も狭い CIDR で装飾されます。 結果として、他のどの CIDR にもマッチしないすべてのトラフィックをグループ化するために、安全に 0.0.0.0/0 エントリを追加できます。

YAML では、各エントリは単純な CIDR 文字列、または cidrname フィールドを持つオブジェクトのいずれかにできます。 環境変数 OTEL_EBPF_NETWORK_CIDRS は CIDR 文字列のカンマ区切りリストのみを受け付けます。 たとえば次のとおりです。

network:
  cidrs:
    - cidr: 10.0.0.0/8
      name: cluster-internal
    - 192.168.0.0/16
OTEL_EBPF_NETWORK_CIDRS=10.0.0.0/8,192.168.0.0/16
YAML環境変数デフォルト
agent_ipOTEL_EBPF_NETWORK_AGENT_IPstring(未設定)

各メトリクスで報告される obi.ip 属性を上書きできます。 設定されていない場合、OBI は指定されたネットワークインターフェイス(次のプロパティを参照)から自身の IP アドレスを自動的に検出します。

YAML環境変数デフォルト
agent_ip_ifaceOTEL_EBPF_NETWORK_AGENT_IP_IFACEstringexternal

obi.ip 属性の値を設定するために、OBI が自身の IP アドレスを選択するために使用するインターフェイスを指定します。 受け付ける値は external(デフォルト)、local、または name:<interface name>(例: name:eth0)です。

agent_ip 設定プロパティが設定されている場合、このプロパティは効果がありません。

YAML環境変数デフォルト
agent_ip_typeOTEL_EBPFstringany

各フローの obi.ip フィールドに OBI が報告する IP アドレスの種類(IPv4、IPv6、またはその両方)を指定します。 受け付ける値は any(デフォルト)、ipv4ipv6 です。 agent_ip 設定プロパティが設定されている場合、このプロパティは効果がありません。

YAML環境変数デフォルト
interfacesOTEL_EBPF_NETWORK_INTERFACES[]string(空)

フローを収集するインターフェイス名です。 空の場合、OBI は excluded_interfaces(後述)にリストされているものを除く、システム内のすべてのインターフェイスを取得します。 エントリがスラッシュで囲まれている場合(例: /br-/)は正規表現としてマッチし、そうでなければ大文字小文字を区別する文字列としてマッチします。

このプロパティを環境変数で設定する場合、各エントリはカンマで区切る必要があります。 たとえば次のとおりです。

OTEL_EBPF_NETWORK_INTERFACES=eth0,eth1,/^veth/
YAML環境変数デフォルト
exclude_interfacesOTEL_EBPF_NETWORK_EXCLUDE_INTERFACES[]stringlo

ネットワークフローのトレースから除外するインターフェイス名です。 デフォルト: lo(ループバック)。 エントリがスラッシュで囲まれている場合(例: /br-/)は正規表現としてマッチし、そうでなければ大文字小文字を区別する文字列としてマッチします。

このプロパティを環境変数で設定する場合、各エントリはカンマで区切る必要があります。 たとえば次のとおりです。

OTEL_BPF_NETWORK_EXCLUDE_INTERFACES=lo,/^veth/
YAML環境変数デフォルト
protocolsOTEL_EBPF_NETWORK_PROTOCOLS[]string(空)

設定すると、OBI は報告されるインターネットプロトコルがこのリストにないネットワークフローをすべてドロップします。

受け付ける値は Linux の Standard well-defined IP protocols の列挙で定義されており、TCPUDPIPICMPIGMPIPIPEGPPUPIDPTPDCCPIPV6RSVPGREESPAHMTPBEETPHENCAPPIMCOMPL2TPSCTPUDPLITEMPLSETHERNETRAW です。

YAML環境変数デフォルト
exclude_protocolsOTEL_EBPF_NETWORK_EXCLUDE_PROTOCOLS[]string(空)

設定すると、OBI は報告されるインターネットプロトコルがこのリストにあるネットワークフローをすべてドロップします。

protocols / OTEL_EBPF_NETWORK_PROTOCOLS リストがすでに設定されている場合、このプロパティは無視されます。

受け付ける値は Linux の Standard well-defined IP protocols の列挙で定義されており、TCPUDPIPICMPIGMPIPIPEGPPUPIDPTPDCCPIPV6RSVPGREESPAHMTPBEETPHENCAPPIMCOMPL2TPSCTPUDPLITEMPLSETHERNETRAW です。

YAML環境変数デフォルト
cache_max_flowsOTEL_EBPF_NETWORK_CACHE_MAX_FLOWSinteger5000

その後のエクスポートのためにフラッシュされる前に、アカウンティングキャッシュに蓄積できるフロー数を指定します。 デフォルト値は 5000 です。 OBI のログに “received message larger than max” エラーが表示される場合は、値を小さくしてください。

YAML環境変数デフォルト
cache_active_timeoutOTEL_EBPF_NETWORK_CACHE_ACTIVE_TIMEOUTduration5s

その後のエクスポートのためにフラッシュされる前に、フローがアカウンティングキャッシュに保持される最大期間を指定します。

YAML環境変数デフォルト
directionOTEL_EBPF_NETWORK_DIRECTIONstringboth

フローがキャプチャされるインターフェイスでの方向に応じて、どのフローをトレースするかを選択できます。 受け付ける値は ingressegressboth(デフォルト)です。

YAML環境変数デフォルト
samplingOTEL_EBPF_NETWORK_SAMPLINGinteger0(無効)

ターゲットコレクターにパケットをサンプリングして送信するレートです。 たとえば、100 に設定すると、平均して 100 パケットのうち 1 つがターゲットコレクターに送信されます。

YAML環境変数デフォルト
print_flowsOTEL_EBPF_NETWORK_PRINT_FLOWSbooleanfalse

true に設定すると、OBI は各ネットワークフローを標準出力に出力します。 これは大量の出力を生成する可能性があることに注意してください。

YAML環境変数デフォルト
guess_portsOTEL_EBPF_NETWORK_GUESS_PORTSstringdisable

フローのメタデータから起点を判別できない場合に、OBI が序数のヒューリスティクスに基づいてクライアントとサーバーのポートを推測しようとするかを指定します。 これは、ポートだけがサービスを識別するのに役立つかもしれない未知のサービスへの接続を追跡するのに便利です。

受け付ける値は disable(デフォルト)、ordinal です。

序数のヒューリスティクスに基づくポート推測を再度有効にするには、次のようにします。

network:
  guess_ports: ordinal

または環境変数で次のようにします。

OTEL_EBPF_NETWORK_GUESS_PORTS=ordinal