Prometheus統合

この機能は、Incredibuild のEnterprise Plan でのみ利用可能です。

Prometheusは、データの収集と可視化を支援する無償のオープンソースツールです。さらに視覚化ツールを提供する多くのツールとも統合されています。Incredibuildは、IncredibuildのデータをPrometheusに送信し、そのデータを収集 閲覧することでPrometheusと統合することができます。

Incredibuildを有効化すると、Prometheusが引き出すデータを数秒おきに自動的にエクスポートします。

注意: 統合を無効化したり、ポートを変更したりすると、すべてのメトリクスがリセットされます。

統合をを設定する

  1. まだIncredibuildをインストールしていない場合は、Incredibuild環境内の任意のマシンにPrometheusをインストールします。

  2. Coordinator Manager > 設定> 一般 で、Prometheusの統合を有効化する チェックボックスにチェックを入れます。このオプションが表示されない場合は、Enterprise レベルの Incredibuild ライセンスを使用しているか確認してください。

  3. IncredibuildとPrometheus間の通信を管理するために使用するポートを入力します。このポートの両端を開いておく必要があります。

  4. Prometheusが入っているマシン上のPrometheusのメインディレクトリで、prometheus.yml ファイルを開きます。

  5. job_name="prometheus" を含むセクションの下に、次のコードを追加します。<IB Coordinator マシンIP もしくはマシン名>と<prometheus ポート>は、Incredibuild Coordinatorが入っているマシンのホスト名と、上記で定義したポートに置き換えてください。Prometheusと同じマシンであれば、代わりに 「localhost 」を使うことができます。

    Backup Coordinator がある場合は、Primary Coordinatorがダウンした場合のデータ継続性を確保するために、ここでそのマシンを指定することもできます。

    コピー
         - job_name: "IB_coordinator"
           static_configs:
             - targets: ["<Incredibuild Coordinator Machine IP or name>:<prometheus port>"]
                 

    コマンドの例:

    コピー
    # my global config
    global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: "prometheus"

        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
     
        static_configs:
          - targets: ["localhost:9090"]
      - job_name: "incredibuild"
     

        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.

        static_configs:
          - targets: ["localhost:9096"]  
          ]
  6. 起動していない場合は、Prometheusのサービスを起動します。詳細は、Prometheus ドキュメントを参照してください。

  7. 統合が構成されたか検証するために、Prometheusを開いて検索結果にIncredibuildのメトリクスが存在するか確認します。

統合は構成されましたが、データはビルドが実行されるまで送信されません。クエリの計算方法によっては、PrometheusとGrafanaでは最初の数件のビルドにあるデータが、少し異常に見える可能性があることに留意してください。

Prometheus グラフでデータを表示する

IncredibuildのメトリクスをもとにPrometheusでグラフを作成するために、クエリを使用することができます。これらのクエリは、prometheus.ymlファイルで定義されたジョブラベルが「IB_coordinator」という名前であるという事を想定しています。

クエリの計算方法によっては、PrometheusとGrafanaでは最初の数件のビルドにあるデータが、少し異常に見える可能性があることに留意してください。

時間とBuild Groupに対するビルド数

sum by (build_group) (rate(incredibuild_builds_total{job="IB_coordinator"} [1h])) * 60 * 60

「正常に終了したかどうか」という ビルドステータス別に分類された1日あたりのビルド数

sum by (ended_successfully) (rate(incredibuild_builds_total{job="IB_coordinator"} [1d])) *24 * 60 * 60

Build Group別で分類された失敗した 1日あたりのビルド数

sum by (build_group) (rate(incredibuild_builds_total{job="IB_coordinator", ended_successfully="failure" }[1d])) * 60 * 60 * 24

Build Group別で分類された成功した 1日あたりのビルド数

sum by (build_group) (rate(incredibuild_builds_total{job="IB_coordinator", ended_successfully="success" }[1d])) * 60 * 60 * 24

1時間あたりのビルド数

sum(rate(incredibuild_builds_total{job="IB_coordinator"}[1h]) * 60 * 60)

ビジー状態であるBuild Groupごとの稼働中Helperコア

sum by (build_group)(incredibuild_busy_helper_cores{job="IB_coordinator"})

Build Group別にプールされている稼働中Helperコア

sum by (build_group)(incredibuild_helper_cores_in_pool{job="IB_coordinator"})

稼働中のライセンスHelperコア

sum by (coord_name)(incredibuild_core_licenses{job="IB_coordinator"})

Build Groupごとに分類されたビルド期間のヒストグラム

histogram_quantile(0.5, sum by(le, build_group) (rate(incredibuild_builds_seconds_histogram_bucket{job="IB_coordinator"}[1d])))

1日あたりの平均ビルド時間

rate (incredibuild_builds_seconds_histogram_sum{job="IB_coordinator"}[1d]) / rate(incredibuild_builds_seconds_histogram_count{job="IB_coordinator"}[1d])

Grafanaダッシュボードでデータを表示する

Prometheusは、データをダッシュボードで表示する目的でGrafanaと統合が可能です。IncredibuildとPrometheusをGrafanaと統合させるには、こちらの記事をご覧ください。データソースを作成する際、名前がPrometheus(デフォルト)であることを確認してください。

同時ビルド数、Helperコア、ビルド時間、1日あたりのビルド数に関するデータを表示するために、サンプルJSONダッシュボード をダウンロードし、Grafanaに直接インポートすることができます。

JSONダッシュボードをGrafanaにインポートするには、Grafanaドキュメント を参照してください。

統合に含まれるデータ

データ メトリックスタイプ メトリックス名 ラベル(詳細は下表のとおり) 備考
完成したビルドの総数

カウンター

incredibuild_builds_total coord_name, build_group, initiator_type, ended_successfully

これには、正常に完了したビルドだけでなく、失敗したビルドも含まれます。

イニシエータ別に分類したビルドの総数

カウンター

incredibuild_builds_per_initiator_total initiator_name, ended_successfully

 

成功した全ビルドの合計実行時間(秒)

カウンター

incredibuild_successful_builds_seconds_total coord_name, build_group, initiator_type, distributed_to_helpers

 

実行済みタスクの総数

カウンター

incredibuild_tasks_total coord_name, build_group, initiator_type, distributed_to_helpers

 

Helperに分配されたタスクの総数

カウンター

incredibuild_distributed_tasks_total coord_name, build_group, initiator_type

 

現在、ビルドを開始しているイニシエータの数

ゲージ

incredibuild_active_initiators coord_name, build_group, initiator_type

 

Incredibuild で現在実行中のビルド数

ゲージ

incredibuild_running_builds

coord_name, build_group, initiator_type

 

現在ビジー状態になっているHelperコアの数

ゲージ

incredibuild_busy_helper_cores

coord_name, build_group, helper_type

 

お客様のアカウントにあるHelperコアのライセンス数

ゲージ

incredibuild_core_licenses

coord_name

固定式と変動式の両方を含みます

現在、固定ライセンスまたはフローティングライセンスが割り当てられているHelperコアの数

ゲージ

incredibuild_helper_cores_in_pool

coord_name, build_group

 

現在オンラインになっているHelperコアの数

ゲージ

incredibuild_helper_cores_online

coord_name, build_group

Helperとして有効化してオンラインであり、ライセンスがあるHelperのみ含まれます。

ヒストグラムに分類された成功したビルドの総数

ヒストグラム

incredibuild_builds_seconds_histogram

coord_name, build, build_group

0~1秒、最長10秒まで、最長60秒まで、最長30060~300まで、301~600、601~1200、1201~1800に分類されます。

現在、ビルドを援助している ヘルパーエージェントの数

ゲージ

incredibuild_agents_helping

coord_name, build_group, helper_type

同一マシン上でイニシエータを支援する ヘルパーエージェントは含まれません。

ライセンスを含む無効化された現在のHelperコア数

ゲージ

incredibuild_disabled_helpers_with_license

coord_name, build_group

 

現在オンラインになっているエージェントの数

ゲージ

incredibuild_online_agents

coord_name, build_group

ヘルパーエージェント、イニシエータエージェントを含みます

現在オフラインになっているエージェント数

ゲージ

incredibuild_offline_agents

coord_name, build_group

ヘルパーエージェント、イニシエータエージェントを含みます

ライセンスがないエージェント数

ゲージ

incredibuild_unlicensed_agents

coord_name, build_group

イニシエータまたはHelperライセンスがないエージェント(UIではローカルと呼ばれます)

現在オンラインになっている ヘルパーエージェントの数

ゲージ

incredibuild_online_helpers

coord_name, build_group

Helperとして有効化してオンラインであり、ライセンスがあるHelperのみ含まれます。

現在オンラインになっているイニシエータエージェントの数

ゲージ

incredibuild_online_initiators

coord_name, build_group

 

グリッド全体で現在必要とされているヘルパーコアの数

ゲージ

incredibuild_needed_helpers

coord_name, build_group

ヘルパーとして活動するためのすべての要件を満たすヘルパーコアのみを含む(現在ヘルパーとして活動しているヘルパーコアと、ヘルパーとして活動する準備が整っているヘルパーコアの両方を含む)

グリッド全体で現在利用可能なヘルパーの数

ゲージ

incredibuild_available_helpers

coord_name, build_group

 

ラベルの詳細

ラベル名 説明

coord_name

コーディネーターのマシンID。

build_group Build Groups名。
initiator_type イニシエータマシンのタイプ:「CI」、「developer」、または「none」。
ended_successfully ビルドが正常に終了した場合は「Successful」、失敗した場合は「failure」となります。
distributed_to_helpers いくつかのタスクが ヘルパーエージェントに分配された場合は「true」、分配されなかった場合は「false」。
helper_type Helperマシンの種類:クラウドか自社運用