Prometheus 适配器 - 无法从外部指标获取数据
Prometheus adapter - not able to get data from external metrics
我无法通过 运行 此命令获取项目:kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready" | jq
您可以在下面的输出项中看到一个空数组:
{
"kind": "ExternalMetricValueList",
"apiVersion": "external.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
},
"items": []
}
但是,我在 prometheus 端点中获得了正确的数据:
普罗米修斯 URL: http://:9090/api/v1/series?match%5B%5D=%7B__name__%3D~%22%5Erabbitmq_queue_ .%2A%22%7D&开始=1597255421.51
回应:
{
"status":"success",
"data":[
{
"__name__":"rabbitmq_queue_messages_ready",
"app":"prometheus-rabbitmq-exporter",
"durable":"true",
"instance":"10.2.0.73:9419",
"job":"kubernetes-pods",
"namespace":"default",
"pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
"pod_template_hash":"754c845847",
"queue":"test",
"release":"rabbitmq-exporter",
"vhost":"/"
},
{
"__name__":"rabbitmq_queue_messages_ready",
"app":"prometheus-rabbitmq-exporter",
"durable":"true",
"instance":"10.2.0.73:9419",
"job":"kubernetes-pods",
"namespace":"default",
"pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
"pod_template_hash":"754c845847",
"queue":"test1",
"release":"rabbitmq-exporter",
"vhost":"/"
}
]
}
我使用以下 helm 值安装了 stable/prometheus-adapter
:
rules:
default: false
external:
- seriesQuery: '{__name__=~"^rabbitmq_queue_.*"}'
resources:
#template: <<.Resource>>
overrides:
namespace:
resource: namespace
service:
resource: service
pod:
resource: pod
name:
matches: ""
as: "rabbitmq_queue_messages_ready"
metricsQuery: 'rate(<<.Series>>{<<.LabelMatchers>>}[1m])'
Helm 和 Kubernetes 版本:
客户端:&version.Version{SemVer:"v2.16.9", GitCommit:"8ad7037828e5a0fca1009dabe290130da6368e39", GitTreeState:"clean"}
服务器:&version.Version{SemVer:"v2.16.7", GitCommit:"5f2584fd3d35552c4af26036f0c464191287986b", GitTreeState:"clean"}
客户端版本:version.Info{主要:“1”,次要:“16”,GitVersion:“v1.16.1”,GitCommit:“d647ddbd755faf07169599a625faf302ffc34458”,GitTreeState:“clean”,BuildDate:“2019 -10-02T17:01:15Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
服务器版本:version.Info{主要:“1”,次要:“15”,GitVersion:“v1.15.11”,GitCommit:“ec831747a3a5896dbdf53f259eafea2a2595217c”,GitTreeState:“clean”,BuildDate:“2020-05-29T19: 56:10Z", GoVersion:"go1.12.17", 编译器:"gc", 平台:"linux/amd64"}
预期结果:
它应该从 Prometheus
获取指标
如何重现:
使用上述配置安装 stable/prometheus-rabbitmq-exporter
和 stable/prometheus-adapter
helm 图表。
我正在遵循此指南:https://nuvalence.io/building-a-k8s-autoscaler-with-custom-metrics/
首先要进一步解决您的问题,我会检查您的 prom-adapter 设置中的几项内容:
- 使用
"kubectl get --raw ..."
命令直接获取指标时,您是否在 Prometheus 适配器日志中看到任何错误?
- 您将
prometheus-adapter
安装到哪个命名空间? (问是因为我曾经在部署到另一个 ns 而不是 'kube-system' 时观察适配器日志中的 RBAC 相关错误)
- 能否请您粘贴最终 'prom-adapter'
/etc/adapter/config.yaml
配置的内容(来自 prom-adapter 的 Pod)
我正在使用适配器公开相同的外部 rabbitmq 指标,没有任何问题,请检查同一命令的输出:
{
"kind": "ExternalMetricValueList",
"apiVersion": "external.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
},
"items": [
{
"metricName": "rabbitmq_queue_messages_ready",
"metricLabels": {
"endpoint": "metrics",
"instance": "10.64.1.97:9419",
"job": "rabbitmq",
"namespace": "default",
"pod": "rabbitmq-0",
"service": "rabbitmq"
},
"timestamp": "2020-08-13T23:50:29Z",
"value": "174160m"
}
]
}
使用的prom-adapter版本:directxman12/k8s-prometheus-adapter-amd64:v0.6.0
//使用社区 wiki post 更清晰(代码片段格式等)
我无法通过 运行 此命令获取项目:kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready" | jq
您可以在下面的输出项中看到一个空数组:
{
"kind": "ExternalMetricValueList",
"apiVersion": "external.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
},
"items": []
}
但是,我在 prometheus 端点中获得了正确的数据:
普罗米修斯 URL: http://
{
"status":"success",
"data":[
{
"__name__":"rabbitmq_queue_messages_ready",
"app":"prometheus-rabbitmq-exporter",
"durable":"true",
"instance":"10.2.0.73:9419",
"job":"kubernetes-pods",
"namespace":"default",
"pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
"pod_template_hash":"754c845847",
"queue":"test",
"release":"rabbitmq-exporter",
"vhost":"/"
},
{
"__name__":"rabbitmq_queue_messages_ready",
"app":"prometheus-rabbitmq-exporter",
"durable":"true",
"instance":"10.2.0.73:9419",
"job":"kubernetes-pods",
"namespace":"default",
"pod_name":"rabbitmq-exporter-prometheus-rabbitmq-exporter-754c845847-gzlrq",
"pod_template_hash":"754c845847",
"queue":"test1",
"release":"rabbitmq-exporter",
"vhost":"/"
}
]
}
我使用以下 helm 值安装了 stable/prometheus-adapter
:
rules:
default: false
external:
- seriesQuery: '{__name__=~"^rabbitmq_queue_.*"}'
resources:
#template: <<.Resource>>
overrides:
namespace:
resource: namespace
service:
resource: service
pod:
resource: pod
name:
matches: ""
as: "rabbitmq_queue_messages_ready"
metricsQuery: 'rate(<<.Series>>{<<.LabelMatchers>>}[1m])'
Helm 和 Kubernetes 版本:
客户端:&version.Version{SemVer:"v2.16.9", GitCommit:"8ad7037828e5a0fca1009dabe290130da6368e39", GitTreeState:"clean"} 服务器:&version.Version{SemVer:"v2.16.7", GitCommit:"5f2584fd3d35552c4af26036f0c464191287986b", GitTreeState:"clean"}
客户端版本:version.Info{主要:“1”,次要:“16”,GitVersion:“v1.16.1”,GitCommit:“d647ddbd755faf07169599a625faf302ffc34458”,GitTreeState:“clean”,BuildDate:“2019 -10-02T17:01:15Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"} 服务器版本:version.Info{主要:“1”,次要:“15”,GitVersion:“v1.15.11”,GitCommit:“ec831747a3a5896dbdf53f259eafea2a2595217c”,GitTreeState:“clean”,BuildDate:“2020-05-29T19: 56:10Z", GoVersion:"go1.12.17", 编译器:"gc", 平台:"linux/amd64"}
预期结果: 它应该从 Prometheus
获取指标如何重现:
使用上述配置安装 stable/prometheus-rabbitmq-exporter
和 stable/prometheus-adapter
helm 图表。
我正在遵循此指南:https://nuvalence.io/building-a-k8s-autoscaler-with-custom-metrics/
首先要进一步解决您的问题,我会检查您的 prom-adapter 设置中的几项内容:
- 使用
"kubectl get --raw ..."
命令直接获取指标时,您是否在 Prometheus 适配器日志中看到任何错误? - 您将
prometheus-adapter
安装到哪个命名空间? (问是因为我曾经在部署到另一个 ns 而不是 'kube-system' 时观察适配器日志中的 RBAC 相关错误) - 能否请您粘贴最终 'prom-adapter'
/etc/adapter/config.yaml
配置的内容(来自 prom-adapter 的 Pod)
我正在使用适配器公开相同的外部 rabbitmq 指标,没有任何问题,请检查同一命令的输出:
{
"kind": "ExternalMetricValueList",
"apiVersion": "external.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/rabbitmq_queue_messages_ready"
},
"items": [
{
"metricName": "rabbitmq_queue_messages_ready",
"metricLabels": {
"endpoint": "metrics",
"instance": "10.64.1.97:9419",
"job": "rabbitmq",
"namespace": "default",
"pod": "rabbitmq-0",
"service": "rabbitmq"
},
"timestamp": "2020-08-13T23:50:29Z",
"value": "174160m"
}
]
}
使用的prom-adapter版本:directxman12/k8s-prometheus-adapter-amd64:v0.6.0
//使用社区 wiki post 更清晰(代码片段格式等)