12.5. FlowMetric API を使用したカスタムメトリクスの設定
特定の監視ニーズを満たすために、フローログフィールドをラベルとしてマッピングしてカスタム Prometheus メトリクスを作成するように FlowMetric API を設定します。
手順
-
Web コンソールで、Ecosystem
Installed Operators に移動します。 - NetObserv Operator の Provided APIs 見出しで、FlowMetric を選択します。
- Project: ドロップダウンリストで、Network Observability Operator インスタンスのプロジェクトを選択します。
- Create FlowMetric をクリックします。
-
FlowMetricリソースを設定します。カスタムメトリクスの設定例を参照してください。
検証
-
Pod が更新されたら、Observe
Metrics に移動します。 -
Expression フィールドにメトリクス名を入力して、対応する結果を表示します。
topk(5, sum(rate(netobserv_cluster_external_ingress_bytes_total{DstK8S_Namespace="my-namespace"}[2m])) by (DstK8S_HostName, DstK8S_OwnerName, DstK8S_OwnerType))などの式を入力することもできます。
12.5.1. カスタムメトリクスの設定例 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのメトリクスではカバーされない、外部トラフィック量やレイテンシーの急増など、特定のネットワーク動作を監視するには、FlowMetric カスタムリソース (CR) を使用します。これらの例は、ネットワークフローから特定の Prometheus メトリクスを生成するために必要な設定を示しています。
12.5.1.1. クラスター外部ソースからの受信バイトを追跡 リンクのコピーリンクがクリップボードにコピーされました!
外部ネットワークからクラスターに流入するデータ量を測定するには、以下の FlowMetric 設定を使用します。このメトリクスは、潜在的な帯域幅の問題や予期せぬ外部データ転送コストを特定するのに役立ちます。
apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
name: flowmetric-cluster-external-ingress-traffic
namespace: netobserv
spec:
metricName: cluster_external_ingress_bytes_total
type: Counter
valueField: Bytes
direction: Ingress
labels: [DstK8S_HostName,DstK8S_Namespace,DstK8S_OwnerName,DstK8S_OwnerType]
filters:
- field: SrcSubnetLabel
matchType: Absence
ここでは、以下のようになります。
metadata.namespace-
FlowMetricリソースが作成される名前空間を指定します。これは、FlowCollectorリソースのspec.namespaceフィールドで定義されている名前空間と一致する必要があります。デフォルトではnetobservです。 仕様メトリクス名-
Prometheus メトリクスの名前を指定します。OpenShift Container Platform の Web コンソールでは、
netobserv-<metricName> というプレフィックス付きで表示されます。 spec.type-
メトリクスの種類を指定します。
カウンター型は、バイト数やパケット数をカウントするのに便利です。 仕様方向- キャプチャーするトラフィックの方向を指定します。指定しない場合は、Ingress と Egress の両方がキャプチャーされ、重複したカウントが発生する可能性があります。
spec.labels-
メトリクスの外観、異なるエンティティー間の関係、およびメトリクスのカーディナリティーを定義するラベルを指定します。たとえば、
SrcK8S_Nameはカーディナリティーが高いメトリクスです。 仕様フィルター-
記載された基準に基づいて結果を絞り込むための基準を指定します。この例では、
SrcSubnetLabelが存在しないフローのみを照合することによって、クラスターの外部トラフィックのみを選択します。これは、サブネットラベル機能が有効になっていることを前提としています (spec.processor.subnetLabels経由)。これはデフォルトで有効になっています。
12.5.1.2. クラスター外部入力トラフィックの RTT 遅延を監視する リンクのコピーリンクがクリップボードにコピーされました!
外部接続のパフォーマンスを分析し、高遅延パスを特定するには、以下の FlowMetric 設定を使用してください。このメトリクスは、標準的な Prometheus のレイテンシーダッシュボードに合わせるため、ナノ秒を秒に変換します。
apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
name: flowmetric-cluster-external-ingress-rtt
namespace: netobserv
spec:
metricName: cluster_external_ingress_rtt_seconds
type: Histogram
valueField: TimeFlowRttNs
direction: Ingress
labels: [DstK8S_HostName,DstK8S_Namespace,DstK8S_OwnerName,DstK8S_OwnerType]
filters:
- field: SrcSubnetLabel
matchType: Absence
- field: TimeFlowRttNs
matchType: Presence
divider: "1000000000"
buckets: [".001", ".005", ".01", ".02", ".03", ".04", ".05", ".075", ".1", ".25", "1"]
ここでは、以下のようになります。
metadata.namespace-
FlowMetricリソースが作成される名前空間を指定します。これは、FlowCollectorリソースのspec.namespaceフィールドで定義されている名前空間と一致する必要があります。デフォルトではnetobservです。 spec.type-
メトリクスの種類を指定します。
ヒストグラム型は、TimeFlowRttNsなどのレイテンシー値に便利です。 仕様区切り線- メトリクスを分割するために使用する値を指定します。フローでは往復時間 (RTT) がナノ秒単位で提供されるため、1,000,000,000 を除数として秒に変換してください。これは Prometheus ガイドラインの標準です。
仕様バケット- RTT 精度のためのカスタムバケットを指定します。最適な精度範囲は 5ms から 250ms です。