跳转到主要内容

指标列表

VAULT 的标签模型、14 条记录规则,以及监控面板使用的 OpenBao 原始指标。

本页区分 OpenBao 遥测接口的原始指标 与 vmalert 计算生成的记录指标。当前源码的 files/victoria/rules/vault.yml 定义了 14 条记录规则;记录指标由规则求值得到,不应在 /v1/sys/metrics 接口中查找。

原始指标会随 OpenBao 版本、成员角色与运行状态变化。下文列出的是 Vault Overview 面板与记录规则用到的原始指标,并不代表遥测接口的完整输出,完整列表请参考 OpenBao 遥测指标文档。


标签模型

所有 VAULT 指标都携带统一的标签:

标签含义示例
job抓取任务vault
cls集群名,即 vault_clustervault
ins实例名,即 <vault_cluster>-<vault_seq>vault-1
ip成员地址10.10.10.11
instance抓取地址10.10.10.11:8200

记录规则以 vault:ins:*(实例级)与 vault:cls:*(集群级)命名。


原始指标的特点

OpenBao 沿用了上游 Vault 的 vault_ 指标前缀,并通过 go-metrics 输出 Prometheus 格式的指标,有几点需要注意:

  • 计数器没有 _total 后缀,例如 vault_raft_apply、vault_token_creation;
  • Summary 的单位是毫秒,例如 vault_core_handle_request 的分位数与 _sum 都以毫秒计,记录规则在计算平均延迟时会除以 1000 换算为秒;
  • 部分计数器只有在首次发生后才会出现,例如审计失败计数器 vault_audit_log_request_failure,因此记录规则使用 increase_pure 从 0 开始计算增量;
  • Autopilot 与 follower 指标只由 leader 上报,并且在成员卸任 leader 后仍会被保留 24 小时(prometheus_retention_time)。因此记录规则只采信当前 active 成员上报的值,并把其中的 node_id / peer_id 标签映射回 ins;
  • 用量类指标(令牌数、KV 机密数、身份实体数)由 OpenBao 每 10 分钟计算一次(usage_gauge_period)。

当前记录规则

表达式保留源码语义,ins 与 cls 分别表示实例与集群聚合层级,实际保留的标签以 by 与向量匹配子句为准。

记录指标说明表达式
vault:ins:req_rps实例的非登录请求速率(次/秒)rate(vault_core_handle_request_count{job="vault"}[1m])
vault:ins:login_rps实例的登录请求速率(次/秒)rate(vault_core_handle_login_request_count{job="vault"}[1m])
vault:ins:req_rt_avg_5m实例 5 分钟平均请求延迟(秒)rate(vault_core_handle_request_sum{job="vault"}[5m]) / rate(vault_core_handle_request_count{job="vault"}[5m]) / 1000
vault:cls:req_rt_avg_5m集群 5 分钟平均请求延迟(秒),按请求量加权sum by (job,cls) (rate(vault_core_handle_request_sum{job="vault"}[5m])) / sum by (job,cls) (rate(vault_core_handle_request_count{job="vault"}[5m])) / 1000
vault:cls:unsealed集群中已解封的成员数sum by (job,cls) (vault_core_unsealed{job="vault"})
vault:cls:active集群中 active 成员数,正常应恰好为 1sum by (job,cls) (vault_core_active{job="vault"})
vault:cls:autopilot_healthyactive 成员视角的集群健康状态max by (job,cls) (vault_autopilot_healthy{job="vault"} and on(ins) (vault_core_active{job="vault"} == 1))
vault:cls:failure_toleranceactive 成员视角的集群容错数max by (job,cls) (vault_autopilot_failure_tolerance{job="vault"} and on(ins) (vault_core_active{job="vault"} == 1))
vault:ins:autopilot_healthyactive 成员视角的各成员健康状态max by (job,cls,ins) (label_replace(vault_autopilot_node_healthy{job="vault"} and on(ins) (vault_core_active{job="vault"} == 1), "ins", "$1", "node_id", "(.+)"))
vault:ins:raft_lagfollower 已应用索引落后 leader 的日志条数max by (job,cls,ins) (label_replace(vault_raft_storage_follower_applied_index_delta{job="vault"} and on(ins) (vault_core_active{job="vault"} == 1), "ins", "$1", "peer_id", "(.+)"))
vault:ins:raft_heartbeat_msfollower 距离上次心跳的时间(毫秒)max by (job,cls,ins) (label_replace(vault_raft_storage_follower_last_heartbeat_ms{job="vault"} and on(ins) (vault_core_active{job="vault"} == 1), "ins", "$1", "peer_id", "(.+)"))
vault:ins:audit_failure_5m实例 5 分钟内的审计写入失败次数sum by (job,cls,ins,ip,instance) (increase_pure({__name__=~"vault_audit_log_(request|response)_failure",job="vault"}[5m]))
vault:ins:backup_time实例最近一次成功快照的 Unix 时间戳max by (ip) (vault_backup_last_success_timestamp_seconds) + on(ip) group_right() vault_up * 0
vault:ins:backup_size实例最近一次成功快照的大小(字节)max by (ip) (vault_backup_size_bytes) + on(ip) group_right() vault_up * 0

在一个时间窗口内没有任何请求时,平均延迟的计算结果为 0/0 = NaN,会被丢弃,表现为没有数据。

此外,vault_up 来自 INFRA 的 共享存活记录规则(up{job="vault"}),不包含在上面的模块规则数量中。它反映的是抓取是否成功,不代表成员已解封或能够正常提供服务。


常用原始指标

状态与请求

指标类型说明
vault_core_unsealedGauge成员是否已解封,1 为已解封
vault_core_activeGauge成员是否为 active,1 为 active
vault_core_handle_requestSummary(毫秒)非登录请求的处理耗时,包含分位数、_sum 与 _count
vault_core_handle_login_requestSummary(毫秒)登录请求的处理耗时
vault_ha_rpc_client_forward_count / _errorsSummary / Counterstandby 向 active 转发请求的次数与错误
vault_ha_rpc_client_echo_count / _errorsSummary / Counterstandby 与 active 之间心跳的次数与错误

Raft 与 Autopilot

指标类型说明
vault_raft_storage_stats_commit_indexGauge成员的 Raft 提交索引
vault_raft_storage_stats_applied_indexGauge成员的 Raft 已应用索引
vault_raft_storage_stats_fsm_pendingGauge等待应用到状态机的日志数量
vault_raft_storage_follower_applied_index_deltaGaugefollower 落后 leader 的日志条数,仅由 leader 上报,带 peer_id 标签
vault_raft_storage_follower_last_heartbeat_msGaugefollower 距上次心跳的毫秒数,仅由 leader 上报,带 peer_id 标签
vault_raft_state_leaderCounter成员成为 leader 的次数,用于观察选举
vault_raft_peersGaugeRaft 成员数
vault_raft_applyCounter写入 Raft 日志的次数
vault_raft_commitTimeSummary(毫秒)Raft 日志提交耗时
vault_raft_leader_lastContactSummary(毫秒)leader 与 follower 上次联系距今的时间
vault_raft_storage_bolt_page_bytes_allocatedGaugeBoltDB 已分配的页面字节数
vault_raft_storage_bolt_freelist_used_bytesGaugeBoltDB 空闲列表占用的字节数
vault_autopilot_healthyGauge集群是否健康,仅由 leader 上报
vault_autopilot_failure_toleranceGauge集群容错数,仅由 leader 上报
vault_autopilot_node_healthyGauge各成员是否健康,仅由 leader 上报,带 node_id 标签

机密、令牌与审计

指标类型说明
vault_expire_num_leasesGauge当前租约数量
vault_expire_renew_count / vault_expire_revoke_countSummary租约续期与吊销的次数
vault_token_countGauge令牌数量(用量指标)
vault_token_creationCounter令牌创建次数
vault_secret_kv_countGaugeKV 机密数量(用量指标)
vault_identity_num_entitiesGauge身份实体数量
vault_audit_log_request_count / vault_audit_log_response_countSummary审计设备记录请求与响应的次数
vault_audit_log_request_failure / vault_audit_log_response_failureCounter审计写入失败次数,首次失败后才会出现

运行时

指标类型说明
vault_runtime_num_goroutinesGaugeGoroutine 数量
vault_runtime_alloc_bytes / vault_runtime_sys_bytesGauge堆上已分配内存,以及向操作系统申请的内存
vault_runtime_heap_objectsGauge堆对象数量
vault_runtime_total_gc_pause_ns / vault_runtime_total_gc_runsGauge累计 GC 暂停时间与 GC 次数

快照备份(来自 node_exporter 的 textfile 采集器,job 为 node 的抓取任务)

指标类型说明
vault_backup_last_success_timestamp_secondsGauge本机最近一次成功快照的 Unix 时间戳
vault_backup_size_bytesGauge本机最近一次成功快照的大小(字节)

这两个指标由 vault-backup 脚本在快照成功后写入 /var/lib/node_exporter/textfile/vault.prom,只在成功时更新。移除成员时,该文件会一并删除。

这个页面对您有帮助吗?

表格阅读