如何在不修改上游的情况下调整victoria-metrics-k8s-stack的Grafana查询?
无需修改上游Helm图表,为K8s栈组件查询添加全局过滤器的方案
问题原因
你之前在Grafana数据源配置中使用query_params添加参数的方式无效,是因为该配置仅为数据源的HTTP请求添加URL参数,而VictoriaMetrics(兼容Prometheus)不会将这类URL参数解析为PromQL的标签过滤条件。
可行解决方案
以下两种方案均无需修改上游Helm图表,仅需在自定义values.yaml中配置即可,不影响后续版本升级:
方案1:Grafana侧全局注入查询过滤
利用Grafana Prometheus数据源的queryPrefix参数,自动为所有查询添加标签过滤:
在你的Helm values.yaml中覆盖Grafana数据源配置:
grafana: datasources: datasources.yaml: |- apiVersion: 1 datasources: {{- if or .Values.vmsingle.enabled .Values.vmcluster.enabled }} - name: VictoriaMetrics type: prometheus url: {{ include "victoria-metrics-k8s-stack.vmSelectEndpoint" . }} access: proxy isDefault: true jsonData: queryPrefix: '{product_line="customer"} ' {{- end }}
该配置会让Grafana自动在每个PromQL查询前拼接标签过滤条件,等价于为所有指标加上product_line="customer"的过滤规则,无需修改任何仪表盘。
方案2:VictoriaMetrics侧强制全局过滤
通过VictoriaMetrics的启动参数,强制为所有查询添加指定标签过滤,该方案对所有客户端(不限于Grafana)生效:
- 单实例vmsingle配置:
vmsingle: extraArgs: search.additional.label: "product_line=customer"
- 集群版vmcluster配置:
vmcluster: vmselect: extraArgs: search.additional.label: "product_line=customer"
配置完成后,VictoriaMetrics会自动为所有传入的查询追加product_line="customer"的过滤条件,无需调整Grafana配置。
内容的提问来源于stack exchange,提问作者Prarthi
相关产品推荐
相关产品推荐

