Prometheus 集成
此功能仅适用于 Incredibuild 的 Enterprise Plan。
Prometheus 是一个免费的开源工具,可帮助收集和可视化数据。其集成了许多其他工具,还提供了额外的可视化工具。Incredibuild 通过允许您将 Incredibuild 数据发送到 Prometheus 来与 Prometheus 集成,从而收集和查看 Incredibuild 数据。
一旦启用,Incredibuild 会自动导出数据,这些数据 Prometheus 每隔几秒就可以提取。
注意:如果禁用集成或更改端口,所有指标将需要重置。
配置集成
-
如果您尚未安装 Prometheus,请在您的 Incredibuild 环境中的任何机器上安装 Prometheus。
-
在 Coordinator Manager > Settings > General 中,选中 Enable Prometheus Integration 复选框。如果您没有看到此选项,请确保您使用的是企业级 Incredibuild 许可证。
-
输入将用于管理 Incredibuild 与 Prometheus 之间通信的端口。此端口必须在两侧打开。
-
在装有 Prometheus 的机器上,在主 Prometheus 目录中打开 prometheus.yml 文件。
-
在包含 job_name="prometheus" 的部分下方,添加以下代码。将 <IB Coordinator Machine IP or name> 和 <prometheus port> 替换为包含 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 Graphs 中的数据
您可以基于 Incredibuild 指标,利用查询在 Prometheus 中创建图形。这些查询假设 prometheus.yml 文件中定义的工作标签称为 "IB_coordinator"。
请注意,由于查询的计算方式,前几个构建的数据在 Prometheus 和 Grafana 中可能看起来有点异常。
每个 Build Group 每小时的构建数量
和位数 (build_group) (rate(incredibuild_builds_total{job="IB_coordinator"} [1h])) * 60 * 60
按构建状态(成功结束或失败结束)细分的每天构建数
和位数 (ended_successfully) (rate(incredibuild_builds_total{job="IB_coordinator"} [1d])) *24 * 60 * 60
按 Build Group 细分的每天失败构建数
和位数 (build_group) (rate(incredibuild_builds_total{job="IB_coordinator", ended_successfully="failure" }[1d])) * 60 * 60 * 24
按 Build Group 细分的每天成功构建数
和位数 (build_group) (rate(incredibuild_builds_total{job="IB_coordinator", ended_successfully="success" }[1d])) * 60 * 60 * 24
每小时的构建数量
sum(rate(incredibuild_builds_total{job="IB_coordinator"}[1h]) * 60 * 60)
每个 Build Group 当前繁忙的 Helper 内核
和位数 (build_group)(incredibuild_busy_helper_cores{job="IB_coordinator"})
每个 Build Group 池中的当前 Helper 内核
和位数 (build_group)(incredibuild_helper_cores_in_pool{job="IB_coordinator"})
当前许可的 Helper 内核
和位数 (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])))
每天的平均构建时间
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 集成,请参阅本文。创建 Data Source 时,请确保名称为 Prometheus(这是默认设置)。
您可以下载我们的示例 JSON 仪表板,并将其直接导入 Grafana,以查看有关并行构建数、Helper 内核、构建时间和每天构建数的数据。
如需将 JSON 仪表板导入 grafana,请参阅 Grafana 文档。
集成中包含的数据
数据 | 指标类型 | 指标名称 | 标签(详情见下表) | 备注 |
---|---|---|---|---|
完成构建总数 |
计数器 |
incredibuild_builds_total | coord_name, build_group, initiator_type, ended_successfully |
包括失败构建和成功完成的构建。 |
按 Initiator 细分的构建总数 |
计数器 |
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 |
|
当前启动构建的 Initiator 数量 |
测量 |
incredibuild_active_initiators | coord_name, build_group, initiator_type |
|
当前正在运行的构建数量 |
测量 |
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 秒。 |
当前在构建中提供帮助的 Helper Agents 数量 |
测量 |
incredibuild_agents_helping |
coord_name, build_group, helper_type |
不包括在同一台机器上辅助 Initiators 的辅助 Agents。 |
具有许可证的禁用 Helper 当前内核数 |
测量 |
incredibuild_disabled_helpers_with_license |
coord_name, build_group |
|
当前在线的 Agents 数量 |
测量 |
incredibuild_online_agents |
coord_name, build_group |
包括 Helper 和启动代理服务 |
当前离线的 Agents 数量 |
测量 |
incredibuild_offline_agents |
coord_name, build_group |
包括 Helper 和启动代理服务 |
没有任何许可证的 Agents 数量 |
测量 |
incredibuild_unlicensed_agents |
coord_name, build_group |
没有 Initiator 或 Helper 许可证的 Agents(在 UI 中称为本地) |
当前在线的 Helper Agents 数量 |
测量 |
incredibuild_online_helpers |
coord_name, build_group |
仅包括作为在线 Helper 启用并拥有许可证的 Helper。 |
当前在线的启动代理服务数量 |
测量 |
incredibuild_online_initiators |
coord_name, build_group |
|
当前整个网格中所需的 Helper 核心数 |
测量 |
incredibuild_needed_helpers |
coord_name, build_group |
只包括那些符合所有作为 Helper 要求的 Helper 核心(包括目前正在辅助的 Helper 核心和准备被指派 Helper 的核心) |
当前整个网格中可用的 Helper 数量 |
测量 |
incredibuild_available_helpers |
coord_name, build_group |
|
标签详情
标签名称 | 描述 |
---|---|
coord_name |
Coordinator 的 机器 ID。 |
build_group | Build Group 名称。 |
initiator_type | Initiator 机器类型:CI、开发人员或无。 |
ended_successfully | 如果构建成功完成,则为“Successful”;如果构建失败,则为“failure”。 |
distributed_to_helpers | True 表示某些任务已分配给 Helper Agents,如果未分配,则为 False。 |
helper_type | Helper 机器类型:云或本地 |