从Prometheus迁移后,如何配置VMAgent采集K8s外的node_exporter?
配置VMAgent采集Kubernetes集群外的node_exporter目标(基于file_sd_config)
VMAgent完全兼容Prometheus的file_sd_config语法,你可以通过以下步骤实现集群外目标的采集:
1. 创建存储目标列表的ConfigMap
先把集群外node_exporter目标整理成标准file_sd格式文件,用ConfigMap挂载到VMAgent容器中:
apiVersion: v1 kind: ConfigMap metadata: name: vmagent-external-targets namespace: monitoring # 替换为你的victoria-metrics-stack安装命名空间 data: external-targets.yml: |- - targets: - "192.168.1.10:9100" # 集群外node_exporter地址1 - "192.168.1.11:9100" # 集群外node_exporter地址2 labels: job: "external-node-exporter" env: "prod"
执行命令创建ConfigMap:
kubectl apply -f external-targets-configmap.yml
2. 修改VMAgent配置(通过Helm Values)
如果你用Helm安装victoria-metrics-k8s-stack,直接修改values.yaml配置,挂载ConfigMap并添加对应scrape job:
vmagent: # 挂载ConfigMap到容器内路径 extraVolumes: - name: external-targets configMap: name: vmagent-external-targets extraVolumeMounts: - name: external-targets mountPath: /etc/vmagent/external-targets readOnly: true # 添加自定义scrape job extraScrapeConfigs: - job_name: "external-node-exporter" scrape_interval: 15s file_sd_configs: - files: - "/etc/vmagent/external-targets/external-targets.yml" # 可选:添加relabel规则,和Prometheus配置逻辑一致 relabel_configs: - source_labels: [__address__] target_label: instance
执行Helm升级命令生效:
helm upgrade victoria-metrics-stack victoriametrics/victoria-metrics-k8s-stack -n monitoring -f values.yaml
3. 验证配置
访问VMAgent的UI(默认路径/targets),检查external-node-exporter job下的目标是否正常上线。若状态异常,查看VMAgent日志排查:
kubectl logs -n monitoring deploy/victoria-metrics-stack-vmagent -f
注意事项
- 确保Kubernetes集群能连通集群外node_exporter地址(检查网络、防火墙规则)
- 修改ConfigMap内的
external-targets.yml后,执行kubectl apply即可,VMAgent会自动刷新目标列表,无需重启容器 - 若需多分组目标,可在ConfigMap中添加多个yml文件,scrape job的
file_sd_configs.files用通配符匹配(比如/etc/vmagent/external-targets/*.yml)
内容的提问来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

