Prometheus 集成

此功能仅适用于 Incredibuild 的 Enterprise Plan

Prometheus 是一个免费的开源工具,可帮助收集和可视化数据。其集成了许多其他工具,还提供了额外的可视化工具。Incredibuild 通过允许您将 Incredibuild 数据发送到 Prometheus 来与 Prometheus 集成,从而收集和查看 Incredibuild 数据。

一旦启用,Incredibuild 会自动导出数据,这些数据 Prometheus 每隔几秒就可以提取。

注意:如果禁用集成或更改端口,所有指标将需要重置。

配置集成

  1. 如果您尚未安装 Prometheus,请在您的 Incredibuild 环境中的任何机器上安装 Prometheus。

  2. 在 Coordinator Manager > Settings > General 中,选中 Enable Prometheus Integration 复选框。如果您没有看到此选项,请确保您使用的是企业级 Incredibuild 许可证。

  3. 输入将用于管理 Incredibuild 与 Prometheus 之间通信的端口。此端口必须在两侧打开。

  4. 在装有 Prometheus 的机器上,在主 Prometheus 目录中打开 prometheus.yml 文件。

  5. 在包含 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"]  
          ]
  6. 如果没有启动,请启动 Prometheus 服务。有关详细信息,请参阅 Prometheus 文档

  7. 如需验证集成是否已配置,请打开 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 机器类型:云或本地