Prometheus統合
この機能は、Incredibuild のEnterprise Plan でのみ利用可能です。
Prometheusは、データの収集と可視化を支援する無償のオープンソースツールです。さらに視覚化ツールを提供する多くのツールとも統合されています。Incredibuildは、IncredibuildのデータをPrometheusに送信し、そのデータを収集 閲覧することでPrometheusと統合することができます。
Incredibuildを有効化すると、Prometheusが引き出すデータを数秒おきに自動的にエクスポートします。
注意: 統合を無効化したり、ポートを変更したりすると、すべてのメトリクスがリセットされます。
統合をを設定する
-
まだIncredibuildをインストールしていない場合は、Incredibuild環境内の任意のマシンにPrometheusをインストールします。
-
Coordinator Manager > 設定> 一般 で、Prometheusの統合を有効化する チェックボックスにチェックを入れます。このオプションが表示されない場合は、Enterprise レベルの Incredibuild ライセンスを使用しているか確認してください。
-
IncredibuildとPrometheus間の通信を管理するために使用するポートを入力します。このポートの両端を開いておく必要があります。
-
Prometheusが入っているマシン上のPrometheusのメインディレクトリで、prometheus.yml ファイルを開きます。
-
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"]
] -
起動していない場合は、Prometheusのサービスを起動します。詳細は、Prometheus ドキュメントを参照してください。
-
統合が構成されたか検証するために、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マシンの種類:クラウドか自社運用 |