8.6. FlowMetric API を使用したカスタムグラフの設定
OpenShift Container Platform Web コンソールでダッシュボードのグラフを生成できます。グラフは、FlowMetric リソースの charts セクションを定義することで、管理者の Dashboard メニューで表示できます。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs 見出しで、FlowMetric を選択します。
- Project: ドロップダウンリストで、Network Observability Operator インスタンスのプロジェクトを選択します。
- Create FlowMetric をクリックします。
-
次のサンプル設定と同じように
FlowMetricリソースを設定します。
例8.3 クラスターの外部ソースから受信した Ingress バイト数を追跡するためのチャート
apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
name: flowmetric-cluster-external-ingress-traffic
namespace: netobserv
# ...
charts:
- dashboardName: Main
title: External ingress traffic
unit: Bps
type: SingleStat
queries:
- promQL: "sum(rate($METRIC[2m]))"
legend: ""
- dashboardName: Main
sectionName: External
title: Top external ingress traffic per workload
unit: Bps
type: StackArea
queries:
- promQL: "sum(rate($METRIC{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace, DstK8S_OwnerName)"
legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
# ...
- 1
FlowMetricリソースは、FlowCollectorspec.namespaceで定義された namespace (デフォルトではnetobserv) に作成する必要があります。
検証
-
Pod が更新されたら、Observe
Dashboards に移動します。 NetObserv / Main ダッシュボードを検索します。NetObserv / Main ダッシュボードの下、または必要に応じて作成したダッシュボード名の下にある次の 2 つのパネルを確認します。
- すべてのディメンションにわたりグローバルな外部 Ingress レートを合計したテキスト形式の単一の統計
- 上記と同じメトリクスを示す、宛先ワークロードごとの時系列グラフ
クエリー言語の詳細は、Prometheus のドキュメント を参照してください。
例8.4 クラスター外部 Ingress トラフィックの RTT 遅延のグラフ
apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
name: flowmetric-cluster-external-ingress-traffic
namespace: netobserv
# ...
charts:
- dashboardName: Main
title: External ingress TCP latency
unit: seconds
type: SingleStat
queries:
- promQL: "histogram_quantile(0.99, sum(rate($METRIC_bucket[2m])) by (le)) > 0"
legend: "p99"
- dashboardName: Main
sectionName: External
title: "Top external ingress sRTT per workload, p50 (ms)"
unit: seconds
type: Line
queries:
- promQL: "histogram_quantile(0.5, sum(rate($METRIC_bucket{DstK8S_Namespace!=\"\"}[2m])) by (le,DstK8S_Namespace,DstK8S_OwnerName))*1000 > 0"
legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
- dashboardName: Main
sectionName: External
title: "Top external ingress sRTT per workload, p99 (ms)"
unit: seconds
type: Line
queries:
- promQL: "histogram_quantile(0.99, sum(rate($METRIC_bucket{DstK8S_Namespace!=\"\"}[2m])) by (le,DstK8S_Namespace,DstK8S_OwnerName))*1000 > 0"
legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
# ...
この例では、histogram_quantile 関数を使用して p50 と p99 を表示します。
ヒストグラムを作成するときに自動的に生成されるメトリクス $METRIC_sum をメトリクス $METRIC_count で割ることで、ヒストグラムの平均を表示できます。前述の例では、これを実行するための Prometheus クエリーは次のとおりです。
promQL: "(sum(rate($METRIC_sum{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace,DstK8S_OwnerName) / sum(rate($METRIC_count{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace,DstK8S_OwnerName))*1000"
検証
-
Pod が更新されたら、Observe
Dashboards に移動します。 - NetObserv / Main ダッシュボードを検索します。NetObserv / Main ダッシュボードの下、または必要に応じて作成したダッシュボード名の下にある新しいパネルを表示します。
クエリー言語の詳細は、Prometheus のドキュメント を参照してください。