我有一个K8S集群,它还通过virtlet管理VM。这个K8S集群使用prometheus和prometheus适配器以及自定义度量服务器运行K8S v1.13.2。我为libvirtd编写了一个自定义度量导出程序,它引入了VM度量,并将prometheus配置为为那些VM度量而刮除该导出程序--这是工作和工作良好的。
接下来我需要做的是让prometheus适配器将这些指标推入K8S中。我所做的一切都不起作用。有趣的是,我可以在prometheus中看到度量,但我无法将它们呈现给自定义度量API。
在普罗米修斯中可见的示例度量:
libvirt_cpu_stats_cpu_time_nanosecs{app="prometheus-lex",domain="virtlet-c91822c8-5e82-beta-deflect",instance="192.168.2.32:9177",job="kubernetes-pods",kubernetes_namespace="default",kubernetes_pod_name="prometheus-lex-866694b884-9z8v6",name="prometheus-lex",pod_template_hash="866694b884"}此度量的Prometheus适配器配置:
- seriesQuery: 'libvirt_cpu_stats_cpu_time_nanosecs{job="kubernetes-pods", app="prometheus-lex"}'
seriesFilters: []
resource:
overrides:
kubernetes_pod_name:
resource: pod
kubernetes_namespace:
resource: namespace
name:
matches: libvirt_cpu_stats_cpu_time_nanosecs
as: libvirt_cpu_stats_cpu_time_rate
metricsQuery: rate(libvirt_cpu_stats_cpu_time_nanosecs{job="kubernetes-pods", app="prometheus-lex", <<.LabelMatchers>>}[5m])当我查询自定义度量API时,我没有看到我想要的是什么:
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1|grep libvirt
returns nothing此外,我可以看到prometheus -适配器能够从prometheus查询该系列。所以我知道适配器的那一边正在工作。我只是想弄清楚为什么它没有将它们呈现给定制的度量服务器。
从普罗米修斯适配器
I0220 19:12:58.442937 1 api.go:74] GET http://prometheus-server.default.svc.cluster.local:80/api/v1/series?match%5B%5D=libvirt_cpu_stats_cpu_time_nanosecs%7Bkubernetes_namespace%21%3D%22%22%2Ckubernetes_pod_name%21%3D%22%22%7D&start=1550689948.392 200 OK知道我在这里错过了什么吗?
最新情况:
我也尝试了下面的新配置,但它仍然无法工作。
- seriesQuery: 'libvirt_cpu_stats_cpu_time_nanosecs{kubernetes_namespace!="",kubernetes_pod_name!=""}'
seriesFilters: []
resource:
overrides:
kubernetes_namespace: {resource: "namespace"}
kubernetes_pod_name: {resource: "pod"}
name:
matches: 'libvirt_cpu_stats_cpu_time_nanosecs'
as: 'libvirt_cpu_stats_cpu_time_rate'
metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[2m])) by (<<.GroupBy>>)'发布于 2019-07-10 06:31:14
这实际上取决于您如何安装Prometheus适配器。如果您通过舵机安装并使用YAML作为对规则的配置。您需要遵循这个自述https://github.com/helm/charts/blob/master/stable/prometheus-adapter/README.md并声明如下规则
rules:
custom:
- seriesQuery: '{__name__=~"^some_metric_count$"}'
resources:
template: <<.Resource>>
name:
matches: ""
as: "my_custom_metric"
metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)注意自定义关键字。如果您错过了它,这个数字将无法通过自定义度量标准获得。
https://stackoverflow.com/questions/54775680
复制相似问题