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
52KB
1.5K SLoC
release-exporter
检索发布信息和导出相关指标。
指标
目前仅支持单个核心指标 upgrades
。
upgrades
指标 upgrades
包含有关可用升级的信息。此信息在标签中表示。指标值本身将是 1
。
该指标使用 upgrade_pending_checks
配置密钥进行配置(请参阅下面的配置部分)。
以下标签始终存在
name
:在upgrade_pending_checks
配置中给出的名称。status
,其值可以是unknown
、upgrades-available
或up-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