Prometheus exporter for pgBackRest。
指标基于pgbackrest info --output json命令的结果收集。默认情况下,会为该命令返回的所有备份集(stanza)收集指标。你可以指定需要收集指标的备份集。需在安装了pgBackRest的主机上或Docker容器内运行exporter。
如需可视化收集的指标,可使用现成的仪表盘pgBackRest Exporter Dashboard或自行创建。
| 指标 | 描述 | 标签 | 补充说明 |
|---|---|---|---|
pgbackrest_stanza_backup_compete_bytes | 进行中备份的已完成大小 | stanza | |
pgbackrest_stanza_backup_total_bytes | 进行中备份的总大小 | stanza | |
pgbackrest_stanza_lock_status | 当前备份集锁定状态 | stanza | 取值说明:0 - 无备份集活动操作,1 - 备份集正在运行以下命令之一:backup、expire或stanza-*。 |
pgbackrest_stanza_status | 当前备份集状态 | stanza | 取值说明:0 - 正常,1 - 备份集路径不存在,2 - 无有效备份,3 - 备份集数据缺失,4 - 仓库间不一致,5 - 仓库间数据库不匹配,6 - 请求的备份不存在,99 - 其他。 |
| 指标 | 描述 | 标签 | 补充说明 |
|---|---|---|---|
pgbackrest_repo_status | 当前仓库状态 | cipher, repo_key, stanza | 取值说明:0 - 正常,1 - 备份集路径不存在,2 - 无有效备份,3 - 备份集数据缺失,4 - 仓库间不一致,5 - 仓库间数据库不匹配,6 - 请求的备份不存在,99 - 其他 |
| 指标 | 描述 | 标签 | 补充说明 |
|---|---|---|---|
pgbackrest_backup_annotations | 备份中的注释数量 | backup_name, backup_type, database_id, block_incr, repo_key, stanza | |
pgbackrest_backup_databases | 备份中的数据库数量 | backup_name, backup_type, block_incr, database_id, repo_key, stanza | |
pgbackrest_backup_references | 引用其他备份的数量(备份引用列表) | backup_name, backup_type, block_incr, database_id, ref_backup, repo_key, stanza | |
pgbackrest_backup_duration_seconds | 备份持续时间(秒) | backup_name, backup_type, block_incr, database_id, repo_key, stanza, start_time, stop_time | |
pgbackrest_backup_error_status | 备份错误状态 | backup_name, backup_type, block_incr, database_id, repo_key, stanza | 取值说明:0 - 备份无页面校验和错误,1 - 备份包含一个或多个页面校验和错误。需手动运行命令(如pgbackrest info --stanza stanza --set backup_name --repo repo_key)查看错误列表。 |
pgbackrest_backup_info | 备份信息 | backrest_ver, backup_name, backup_type, block_incr, database_id, lsn_start, lsn_stop, pg_version, prior, repo_key, stanza, wal_start, wal_stop | 取值说明:1 - 备份信息存在。 |
pgbackrest_backup_delta_bytes | 实际需备份的数据库数据量 | backup_name, backup_type, block_incr, database_id, repo_key, stanza | |
pgbackrest_backup_size_bytes | 数据库的完整未压缩大小 | backup_name, backup_type, block_incr, database_id, repo_key, stanza | |
pgbackrest_backup_repo_delta_bytes | 备份中压缩文件的大小 | backup_name, backup_type, block_incr, database_id, repo_key, stanza | |
pgbackrest_backup_repo_size_bytes | 从备份恢复数据库所需的完整压缩文件大小 | backup_name, backup_type, block_incr, database_id, repo_key, stanza | |
pgbackrest_backup_repo_delta_map_bytes | 块增量差异映射的大小 | backup_name, backup_type, block_incr, database_id, repo_key, stanza | |
pgbackrest_backup_repo_size_map_bytes | 块增量映射的大小 | backup_name, backup_type, block_incr, database_id, repo_key, stanza |
| 指标 | 描述 | 标签 | 补充说明 |
|---|---|---|---|
pgbackrest_backup_since_last_completion_seconds | 距离最近一次完整、差异或增量备份完成的秒数 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_annotations | 最近一次完整、差异或增量备份中的注释数量 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_databases | 最近一次完整、差异或增量备份中的数据库数量 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_references | 最近一次完整、差异或增量备份引用其他备份的数量 | backup_type, block_incr, ref_backup, stanza | |
pgbackrest_backup_last_duration_seconds | 最近一次完整、差异或增量备份的持续时间(秒) | backup_type, block_incr, stanza | |
pgbackrest_backup_last_error_status | 最近一次完整、差异或增量备份的错误状态 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_delta_bytes | 最近一次完整、差异或增量备份中实际需备份的数据库数据量 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_size_bytes | 最近一次完整、差异或增量备份中数据库的完整未压缩大小 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_repo_delta_bytes | 最近一次完整、差异或增量备份中压缩文件的大小 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_repo_size_bytes | 从最近一次完整、差异或增量备份恢复数据库所需的完整压缩文件大小 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_repo_size_map_bytes | 最近一次完整、差异或增量备份中块增量映射的大小 | backup_type, block_incr, stanza | |
pgbackrest_backup_last_repo_delta_map_bytes | 最近一次完整、差异或增量备份中块增量差异映射的大小 | backup_type, block_incr, stanza |
| 指标 | 描述 | 标签 | 补充说明 |
|---|---|---|---|
pgbackrest_wal_archive_status | 当前WAL归档状态 | database_id, pg_version, repo_key, stanza, wal_max, wal_min | 取值说明:0 - WALMin或WALMax为空,无有效WAL归档信息,1 - WALMin和WALMax均非空,有有效WAL归档信息。 |
| 指标 | 描述 | 标签 | 补充说明 |
|---|---|---|---|
pgbackrest_exporter_build_info | pgBackRest Exporter构建信息 | branch, goarch, goos, goversion, revision, tags, version | |
pgbackrest_exporter_status | pgBackRest Exporter数据获取状态 | stanza | 取值说明:0 - 从pgBackRest获取信息时出错,1 - 成功从pgBackRest获取信息。 |
对于差异备份(backup_type="diff")的pgbackrest_*_last_*指标,应用以下逻辑:
对于增量备份(backup_type="incr")的pgbackrest_*_last_*指标,应用以下逻辑:
对于pgbackrest_exporter_status指标,应用以下逻辑:
stanza标签值为all-stanzas;若pgbackrest_stanza_lock_status指标为1,表示备份集正在运行以下命令之一:backup、expire或stanza-*,极有可能是backup/expire。
对于pgBackRest >= v2.48,可判断是否有备份正在运行:
pgbackrest_stanza_backup_compete_bytes和pgbackrest_stanza_backup_total_bytes指标非0且pgbackrest_stanza_lock_status指标为1,则有备份正在运行;0且pgbackrest_stanza_lock_status指标为1,则备份集正在运行expire或stanza-*命令,极有可能是expire。收集的指标数量可能因pgBackRest版本而异。不同版本下,部分指标可能无法收集或标签值无意义:
pgBackRest < v2.48
以下指标恒为0:
pgbackrest_stanza_backup_compete_bytes,pgbackrest_stanza_backup_total_bytes。pgBackRest >= v2.45
pgbackrest_backup_repo_size_bytes指标对于块增量备份的值为0。
pgBackRest < v2.44
以下指标恒为0:
pgbackrest_backup_repo_size_map_bytes,pgbackrest_backup_repo_delta_map_bytes。pgbackrest_backup_*指标的block_incr标签值为"n"。
pgBackRest < v2.41
以下指标恒为0:
pgbackrest_backup_databases,pgbackrest_backup_last_databases,pgbackrest_backup_annotations,pgbackrest_backup_last_annotations。pgBackRest < v2.38
pgbackrest_backup_info指标的lsn_start和lsn_stop标签值为"-"。
pgBackRest < v2.36
以下指标恒为0:
pgbackrest_backup_error_status。pgBackRest < v2.32
以下指标恒为0:
pgbackrest_repo_status。所有指标的repo_key标签值为"0"。
bashgit clone [***] cd pgbackrest_exporter make build ./pgbackrest_exporter <flags>
可用配置参数:
bash./pgbackrest_exporter --help usage: pgbackrest_exporter [<flags>] Flags: -h, --[no-]help 显示上下文相关帮助(也可尝试 --help-long 和 --help-man)。 --web.telemetry-path="/metrics" 暴露指标的路径。 --web.listen-address=:9854 ... 暴露指标和Web界面的地址。可重复指定多个地址。示例:`:9100` 或 `[::1]:9100`(HTTP),`vsock://:9100`(vsock) --web.config.file="" 启用TLS或认证的配置文件路径。详见: [***] --collect.interval=600 指标收集间隔(秒)。 --backrest.config="" pgBackRest配置文件的完整路径。 --backrest.config-include-path="" 额外pgBackRest配置文件的完整路径。 --backrest.stanza-include="" ... 指定收集指标的备份集。可多次指定。 --backrest.stanza-exclude="" ... 指定排除收集指标的备份集。可多次指定。 --backrest.backup-type="" 指定收集指标的备份类型。可选值:[full, incr, diff]。 --[no-]backrest.database-count 暴露备份中的数据库数量。 --backrest.database-parallel-processes=1 收集数据库信息的并行进程数。 --[no-]backrest.database-count-latest 暴露最近备份中的数据库数量。 --[no-]backrest.reference-count 暴露引用其他备份的数量(备份引用列表)。 --[no-]backrest.verbose-wal 为WAL指标暴露额外标签。 --log.level=info 仅记录指定级别及以上的日志。可选值:[debug, info, warn, error] --log.format=logfmt 日志输出格式。可选值:[logfmt, json] --[no-]version 显示应用版本。
可通过--backrest.config和--backrest.config-include-path参数指定pgBackRest的自定义配置文件和额外配置路径,需提供完整路径。例如:--backrest.config=/tmp/pgbackrest.conf和/或--backrest.config-include-path=/tmp/pgbackrest/conf.d。
通过--backrest.stanza-include参数指定收集指标的备份集,可多次指定。例如:--backrest.stanza-include=demo1 --backrest.stanza-include=demo2,此时仅为demo1和demo2备份集收集指标。
通过--backrest.stanza-exclude参数指定排除收集指标的备份集,可多次指定。例如:--backrest.stanza-exclude=demo1 --backrest.stanza-exclude=demo2,此时不为demo1和demo2备份集收集指标。若同一备份集同时指定包含和排除,则排除优先。例如:--backrest.stanza-include=demo1 --backrest.stanza-exclude=demo1,此时不为demo1备份集收集指标。
指定--backrest.verbose-wal参数后,WALMin和WALMax将作为指标标签添加,这会在每次WAL归档时创建新的时间序列。
指定--log.level=debug参数后,指标的取值和标签信息将打印到日志中。
--web.config.file参数可指定TLS和/或基本认证的配置文件路径,TLS配置和基本认证说明详见exporter-toolkit/web。
通过--backrest.backup-type参数指定收集指标的备份类型,有效值为full、incr或diff。例如:--backrest.backup-type=full,此时仅为完整备份收集指标。该参数适用于pgBackRest >= v2.38。当值为incr或diff时,所有pgbackrest_backup_last_*指标将不收集;当值为full时,指标将如同最近备份为完整备份(即差异和增量备份的指标取值与完整备份相同)。对于早期pgBackRest版本,会出现类似option 'type' not valid for command 'info'的错误。
指定--backrest.database-count参数后,将收集备份中的数据库数量信息。该参数适用于pgBackRest >= v2.41。对于早期版本,会出现类似option 'set' is currently only valid for text output的错误。对于大量备份集和备份,可能需要更多时间收集指标,每个备份集需执行pgBackRest命令获取数据。
--backrest.database-parallel-processes参数可增加收集数据库信息的并行进程数,仅在指定--backrest.database-count时有效。
默认pgBackRest版本为2.55.1,可通过参数指定其他版本。基础镜像使用[docker-pgbackrest]([***]
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429