Scrape Config
- Static Config:
-promscrape.config=scrape.yaml
- CRD
VMScrapeConfig
-> PrometheusScrapeConfig
VMServiceScrape
-> PrometheusServiceMonitor
VM Operator will transfer CRD to -promscrape.config=scrape.yaml
VM Operator
VictoriaMetrics Operator 在你创建了 VMServiceScrape
/ VMScrapeConfig
/ ServiceMonitor
等 CRD 后, 最终会在后台生成一个 promscrape.config
文件(或等效结构)并“注入”到 vmagent
中。
- 你创建了例如
VMServiceScrape
、ServiceMonitor
等资源; - Operator 监听到这些 CRD 的创建或修改事件;
- Operator 根据这些配置,生成一段符合 Prometheus
scrape_configs
格式的配置(底层就是 Prometheus 的格式); - Operator 将生成的配置以 Secret 或 ConfigMap 的形式挂载到
vmagent
的 Pod 中,路径一般为:
swift
/etc/prometheus/config_out/prometheus.env.yaml
vmagent
是通过-promscrape.config=/etc/prometheus/config_out/prometheus.env.yaml
参数启动的,它会读取这份配置并开始抓取。
Example
你可以在 Kubernetes 中执行以下命令看看 vmagent 的挂载情况:
bash
kubectl get pod -n monitoring -l app=vmagent -o jsonpath='{.items[0].spec.containers[0].args}'
输出可能类似:
bash
[
"-promscrape.config=/etc/prometheus/config_out/prometheus.env.yaml",
"-remoteWrite.url=http://vminsert:8480/insert/0"
]
再查看 ConfigMap 或 Secret:
bash
kubectl get configmap -n monitoring | grep vmagent
kubectl get secret -n monitoring | grep vmagent
你会看到类似:
bash
vmagent-vmagent-config ConfigMap
再看它内容:
bash
kubectl get configmap vmagent-vmagent-config -n monitoring -o yaml
里面就是 Operator 自动生成的 scrape_configs
。
scrape.yaml
calico
/ mysql
/ postgres
bash
apiVersion: v1
data:
scrape.yaml: |2
global:
scrape_interval: 10s
scrape_configs:
- honor_labels: false
job_name: calico-node
metrics_path: /metrics
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
regex: calico-felix-metrics
action: keep
- honor_labels: false
job_name: mysql-exporter
metrics_path: /metrics
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
regex: foobar-mysql-exporter
action: keep
- source_labels: [__meta_kubernetes_namespace]
regex: foobar
action: keep
- honor_labels: false
job_name: postgres-exporter
metrics_path: /metrics
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
regex: foobar-postgres-exporter
action: keep
- source_labels: [__meta_kubernetes_namespace]
regex: foobar
action: keep