Federation - Prometheusドキュメント

このページはPrometheus公式ドキュメント和訳+αの一部です。

Prometheusサーバーは、federationによって、他のPrometheusサーバーから時系列データを選択的に取得することが出来る。

ユースケース

fedeationには様々なユースケースがある。 スケーラブルなPrometheusの監視の配置を達成するため、または、あるサービスのPrometheusから他のPrometheusに関連のあるメトリクスをpullするために使うのが一般的である。

階層的なfederation

階層的なfederationによって、Prometheusは、何十のデータセンターと何百万のノードから成る環境にスケールすることが出来る。 このユースケースでは、federationの繋ぎ方は木構造のようになる。高レベルのPrometheusサーバーほど、下位のより多くのサーバーから集約された時系列データを収集する。

例えば、ある配置は、インスタンスレベルの詳細なデータを集めるデータセンターごとのたくさんのPrometheusサーバーと、ジョブレベルの集約されたデータのみをそれらのPrometheusから収集・保存するグローバルなPrometheusサーバーから構成されるだろう。これによって、集約された大局的な見方も、局所的な詳細な見方も出来るようになる。

サービス間のfederation

サービス間のfederationでは、あるサービスのPrometheusサーバーが、他のサービスのPrometheusサーバーから選択したデータを収集するように設定され、一つのサービスの中で両方のデータに対するアラートとクエリが可能になる。

例えば、複数のサービスを実行中のクラスタスケジューラーは、そのクラスタ内のサービスインスタンスのリソース使用量(メモリやCPU利用量)の情報をexposeしているだろう。 他方で、そのクラスタで実行中のサービスはアプリケーション特有のサービスのメトリクスのみをexposeしているだろう。 多くの場合、これらの二つのメトリクスは別々のPrometheusサーバーが取得している。 federationを使うと、サービスのメトリクスを持っているPrometheusサーバーは、その特定のサービスに関するクラスタリソース使用量をクラスタのPrometheusサーバーから取得し、両方のメトリクスがそのサーバーで利用できるようになる。

federationの設定

どのPrometheusサーバでも、エンドポイント/federateによってそのサーバーのその時点の時系列の値を取得できる。 時系列データを選択するためにURLパラメーターで少なくとも一つのmatch[]が指定されていなければならない。 それぞれのmatch[]の引数は、up{job="api-server"}のようなinstance vector selectorを指定しなければいけない。 もし、複数のmatch[]パラメーターが与えられると、マッチした時系列全ての和集合が選択される。

あるサーバーから他のサーバーにメトリクスをfederateするためには、受け取り側のPrometheusサーバーが提供側のPrometheusサーバーのエンドポイント/federateをscrapeするようにすると同時に、取得したラベルを上書きしないようにhonor_labelsを有効にし、必要なmatch[]パラメーターを渡すように設定すること。 例えば、以下のscrape_configは、ラベルがjob="prometheus"またはメトリック名がjob:で始まる時系列データをsource-prometheus-{1,2,3}:9090から取得する。

- job_name: 'federate'
  scrape_interval: 15s

  honor_labels: true
  metrics_path: '/federate'

  params:
    'match[]':
      - '{job="prometheus"}'
      - '{__name__=~"job:.*"}'

  static_configs:
    - targets:
      - 'source-prometheus-1:9090'
      - 'source-prometheus-2:9090'
      - 'source-prometheus-3:9090'

関連ドキュメント

参考リンク

おすすめ書籍

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

和訳活動の支援

Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。

PayPayによる支援用QRコード
上のQRコードからPayPayによる支援