如何配置通过Helm Charts安装的Prometheus抓取Vault指标
Vault Prometheus 指标抓取配置完整流程
第一步:确认Vault侧指标暴露配置生效
- 首先检查Vault的Helm values配置,除了开启injector的metrics外,还要开启Vault主服务的指标暴露能力,完整配置参考:
server: telemetry: # 开启Prometheus格式指标输出 prometheusRetentionTime: "24h" # 临时关闭Prometheus指标认证,排查完成后可按需开启 disablePrometheusAuth: true injector: metrics: enabled: true # injector指标默认暴露端口为8080
- 执行升级命令让Vault配置生效:
helm upgrade vault hashicorp/vault -f <你的vault-values文件路径> -n <Vault所在命名空间> - 验证指标暴露是否正常:在同集群同网络可达的Pod中执行以下命令,能正常返回指标文本即为配置生效
- 主Vault指标:
curl http://vault.<Vault所在命名空间>.svc:8200/v1/sys/metrics?format=prometheus - Injector指标:
curl http://vault-agent-injector-svc.<Vault所在命名空间>.svc:8080/metrics
- 主Vault指标:
第二步:注解方式配置自动抓取(适合开启了Service/Pod注解自动发现的Prometheus场景)
- 修改Vault的Helm values,给对应服务添加抓取注解:
server: service: annotations: prometheus.io/scrape: "true" prometheus.io/port: "8200" prometheus.io/path: "/v1/sys/metrics" prometheus.io/params_format: "prometheus" injector: service: annotations: prometheus.io/scrape: "true" prometheus.io/port: "8080" prometheus.io/path: "/metrics"
- 升级Vault release即可完成配置
注意:如果注解配置后仍然抓取失败,大概率是你的Prometheus自动发现组件不支持通过注解传递请求参数,直接使用下文的additionalScrapeConfigs方案即可。
第三步:additionalScrapeConfigs方式配置(兜底稳定方案)
- 修改Prometheus的Helm values,在additionalScrapeConfigs字段下添加如下抓取任务:
additionalScrapeConfigs: - job_name: 'vault-server' kubernetes_sd_configs: - role: service namespaces: names: - <替换为Vault所在的命名空间> relabel_configs: - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name] regex: vault action: keep - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_component] regex: server action: keep metrics_path: /v1/sys/metrics params: format: ['prometheus'] - job_name: 'vault-injector' kubernetes_sd_configs: - role: service namespaces: names: - <替换为Vault所在的命名空间> relabel_configs: - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name] regex: vault-agent-injector action: keep metrics_path: /metrics
- 执行升级命令让Prometheus配置生效:
helm upgrade prometheus prometheus-community/prometheus -f <你的prometheus-values文件路径> -n <Prometheus所在命名空间>
常见排障点
- 确认Prometheus绑定的ClusterRole有对应命名空间下service、endpoint、pod资源的get/list/watch权限,权限不足会导致无法发现抓取目标
- 确认集群网络策略没有阻断Prometheus到Vault命名空间8200、8080端口的访问
- 登录Prometheus Web UI打开
/targets页面,查看Vault对应抓取任务的报错信息,根据报错调整对应配置即可
内容的提问来源于stack exchange,提问作者jsmickey
相关产品推荐
相关产品推荐

