如何在不丢失数据的情况下为现有kube-prometheus-stack添加additionalScrapeConfigs?
无需Helm升级即可更新kube-prometheus-stack配置的方法
方法一:直接修改Prometheus的ConfigMap
- 定位Prometheus对应的ConfigMap:
kubectl get configmaps -n monitoring | grep prometheus # 通常名称类似 prometheus-prometheus-kube-prometheus-stack-prometheus- 编辑该ConfigMap:
kubectl edit configmap <configmap-name> -n monitoring- 添加blackbox-exporter的抓取规则:
如果原配置中已有additionalScrapeConfigs字段,直接在该数组内追加配置;如果没有,在scrape_configs节点末尾加入以下内容(根据你的服务地址调整):
- job_name: 'blackbox-exporter' metrics_path: /probe params: module: [http_2xx] static_configs: - targets: - http://example.com - https://your-service.com relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: prometheus-blackbox-exporter.monitoring.svc.cluster.local:9115- 添加blackbox-exporter的抓取规则:
- 重启Prometheus Pod使配置生效:
kubectl rollout restart statefulset prometheus-prometheus-kube-prometheus-stack-prometheus -n monitoring- 注意:这种方式修改的配置会被后续
helm upgrade覆盖,建议同步把该配置添加到你的custom-values.yaml中,避免升级时丢失。
方法二:使用Prometheus Operator的AdditionalScrapeConfig CRD
kube-prometheus-stack基于Prometheus Operator,支持通过AdditionalScrapeConfig自定义资源扩展抓取配置,无需直接修改ConfigMap:
- 创建
additional-scrape-configs.yaml文件:
apiVersion: monitoring.coreos.com/v1alpha1 kind: AdditionalScrapeConfig metadata: name: blackbox-scrape-config namespace: monitoring spec: scrapeConfigs: - job_name: 'blackbox-exporter' metrics_path: /probe params: module: [http_2xx] static_configs: - targets: - http://example.com - https://your-service.com relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: prometheus-blackbox-exporter.monitoring.svc.cluster.local:9115- 创建
- 应用该自定义资源:
kubectl apply -f additional-scrape-configs.yaml- 验证配置生效:
访问Prometheus UI的/config页面,确认新增的抓取规则已加载。Prometheus Operator会自动重载配置,无需手动重启Pod。
- 验证配置生效:
补充说明
其实正常执行helm upgrade并不会清除你的现有数据和自定义配置:
- 监控数据存储在PVC中,Helm升级不会删除PVC;
- Grafana的用户、仪表盘、数据源默认存在PVC内的sqlite数据库中,只要Chart的
grafana.persistence.enabled为true,升级不会丢失这些内容; - 若担心配置冲突,可先执行预览命令查看变更:
确认无破坏性变更后再执行升级。helm diff upgrade prometheus prometheus-community/kube-prometheus-stack -n monitoring -f new_values.yaml
内容的提问来源于stack exchange,提问作者hvas01
相关产品推荐
相关产品推荐

