#prometheus-metrics #prometheus #github #release

app release-exporter

检索发布信息和导出相关指标

6 个版本 (破坏性)

0.5.0 2023年11月12日
0.4.0 2023年2月2日
0.3.1 2023年1月1日
0.2.0 2022年12月31日
0.1.0 2022年12月31日

#5 in #release

MIT/Apache

52KB
1.5K SLoC

release-exporter

检索发布信息和导出相关指标。

指标

目前仅支持单个核心指标 upgrades

upgrades

指标 upgrades 包含有关可用升级的信息。此信息在标签中表示。指标值本身将是 1

该指标使用 upgrade_pending_checks 配置密钥进行配置(请参阅下面的配置部分)。

以下标签始终存在

  • name:在 upgrade_pending_checks 配置中给出的名称。
  • status,其值可以是 unknownupgrades-availableup-to-date 之一:指示是否可用升级。

此外,还会添加 upgrades_pending_checks 配置的 current 字段中引用的发布提供者的所有标签。

release_exporter_build_info

提供 release-exporter 版本作为标签。

配置

配置必须以 YAML 格式。它使用两个主要密钥

  • providers(列表)来配置提供有关可用和使用的发布信息的发布提供者数量,
  • upgrade_pending_checks(列表)来配置要比较以确定可用升级的发布版本。

示例配置可以在 sample-conf.yml 中找到。

提供者

每个提供者必须至少有以下两个键

  • name(字符串):用于引用此配置提供者的唯一名称,
  • provider(枚举):用于获取发布版本的提供者类型。

每种提供者类型都有额外的必需和可选键。

提供者返回一组发布,其中每个发布都有不同的标签。

latest_github_release 提供者

从 GitHub 仓库检索最新版本。

接受以下配置键

  • repo(字符串):形式为 username/repo 的仓库。
  • version_regex(字符串,默认 ^v?(.*)$):从发布标签中提取版本号的正则表达式。使用 Rust 的正则表达式包的语法(语法)。
  • version_fmt(字符串,默认值 ${1}):从 version_regex 的捕获组中构建版本的表达式。
  • api_url(字符串,默认值:https://api.github.com):GitHub API 的 URL。
  • cache_seconds(非负整数,默认值 14400 = 4小时):在内存中缓存发布的持续时间,以避免遇到 GitHub 的速率限制。
Prometheus 提供商

从 Prometheus 指标标签检索版本。

  • query(字符串):用于检索具有版本信息的指标的 Prometheus 查询。它可能返回具有不同标签的多个版本。除 label 中指定的标签外,所有标签都将附加到发布上。
  • label(字符串,默认值:version):包含版本信息的标签。
  • version_regex(字符串,默认值 ^v?(.*)$):从版本信息中提取版本号的正则表达式。使用 Rust 的 regex crate 的语法。
  • version_fmt(字符串,默认值 ${1}):从 version_regex 的捕获组中构建版本的表达式。
  • api_url(字符串,默认值:https://127.0.0.1:9090/api):Prometheus API 的 URL。
  • cache_seconds(非负整数,默认值 0):在内存中缓存发布的持续时间。

升级待检查

配置发布版本之间的检查,以确定可用的升级。这些检查作为 upgrades 指标导出。每个项目接受以下配置键

  • name(字符串):检查的名称。将用于 upgrades 指标的 name 标签。
  • current(字符串,默认值:current_{name}_release):必须引用提供者名称。该提供者用于确定当前正在使用的版本。
  • latest(字符串,默认值:latest_{name}_release):必须引用提供者名称。该提供者用于确定最新可用的版本。

注意标签的处理

  • current 提供者获得的所有标签都将复制到输出指标中。
  • 将尝试将 current 提供的每个发布与 latest 提供的每个发布进行匹配。要考虑匹配,latest 发布的所有标签都必须存在,并且与 current 发布中的值相同。

用法

Usage: release-exporter [OPTIONS] --config.file <CONFIG>

Options:
      --config.file <CONFIG>
          Configuration file to load
      --http.timout <HTTP_TIMEOUT_SECONDS>
          Timeout for HTTP requests (seconds) [default: 10]
      --web.listen-address <LISTEN_ADDRESS>
          Address on which to expose metrics [default: localhost:31343]
  -h, --help
          Print help information
  -V, --version
          Print version information

依赖项

~18–33MB
~538K SLoC