15.2. Prometheus のフェデレーションエンドポイントを使用したメトリクスのクエリー

フェデレーションエンドポイントを使用して、クラスター外のネットワーク場所からプラットフォームおよびユーザー定義のメトリクスを収集できます。これを実行するには、OpenShift Container Platform ルートを使用してクラスターの Prometheus /federate エンドポイントにアクセスします。

警告

メトリクスデータの取得の遅延は、フェデレーションを使用すると発生します。この遅延は、収集されたメトリクスの精度とタイムラインに影響を与えます。

フェデレーションエンドポイントを使用すると、特にフェデレーションエンドポイントを使用して大量のメトリクスデータを取得する場合に、クラスターのパフォーマンスおよびスケーラビリティーを低下させることもできます。これらの問題を回避するには、以下の推奨事項に従ってください。

  • フェデレーションエンドポイントを介してすべてのメトリクスデータを取得しようとしないでください。制限された集約されたデータセットを取得する場合にのみクエリーします。たとえば、各要求で 1,000 未満のサンプルを取得すると、パフォーマンスが低下するリスクを最小限に抑えることができます。
  • フェデレーションエンドポイントを頻繁にクエリーしないようにします。クエリーを 30 秒ごとに最大 1 つに制限します。

クラスター外に大量のデータを転送する必要がある場合は、代わりにリモート書き込みを使用します。詳細は、リモート書き込みストレージの設定セクションを参照してください。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • OpenShift Container Platform ルートのホスト URL を取得している。
  • cluster-monitoring-view ロールを持つユーザーとして、または namespace リソースの get パーミッションを持つベアラートークンを取得している。

    注記

    ベアラートークン認証のみを使用してフェデレーションエンドポイントにアクセスできます。

手順

  1. ベアラートークンを取得します。

    $ token=`oc whoami -t`
  2. /federate ルートからメトリクスをクエリーします。以下の例では、メトリクスのクエリー up します。

    $ curl -G -s -k -H "Authorization: Bearer $token" \
        'https:/<federation_host>/federate' \ 1
        --data-urlencode 'match[]=up'
    1
    <federation_host> については、フェデレーションルートのホスト URL を置き換えます。

    出力例

    # TYPE up untyped
    up{apiserver="kube-apiserver",endpoint="https",instance="10.0.143.148:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035322214
    up{apiserver="kube-apiserver",endpoint="https",instance="10.0.148.166:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035338597
    up{apiserver="kube-apiserver",endpoint="https",instance="10.0.173.16:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035343834
    ...