我正在使用 mongodb-exporter
通过 prometheus
存储/查询指标。我已经设置了一个自定义指标服务器并为其存储值。
这是 prometheus-exporter
和 custom-metric-server
兼容的证据。
查询:
kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/monitoring/pods/*/mongodb_mongod_wiredtiger_cache_bytes"
结果:
{"kind":"MetricValueList","apiVersion":"custom.metrics.k8s.io/v1beta1","metadata":{"selfLink":"/apis/custom.metrics.k8s.io/v1beta1/namespaces/monitoring/pods/%2A/mongodb_mongod_wiredtiger_cache_bytes"},"items":[{"describedObject":{"kind":"Pod","namespace":"monitoring","name":"mongo-exporter-2-prometheus-mongodb-exporter-68f95fd65d-dvptr","apiVersion":"/v1"},"metricName":"mongodb_mongod_wiredtiger_cache_bytes","timestamp":"TTTTT","value":"0"}]}
就我而言,当我从 mongo 导出器为此自定义指标创建 hpa 时,hpa 会向我返回此错误:
failed to get mongodb_mongod_wiredtiger_cache_bytes utilization: unable to get metrics for resource mongodb_mongod_wiredtiger_cache_bytes: no metrics returned from resource metrics API
我的案件的主要问题是什么?我已经检查了所有配置,流程看起来不错,但我的错误在哪里。
帮助
谢谢:)
最佳答案
在评论中您写道您已启用external.metrics
,但是在原始问题中您遇到了custom.metrics
问题
简而言之:
metrics
仅支持基本指标,例如 CPU 或内存。custom.metrics
允许您将基本指标扩展到所有 Kubernetes 对象(http_requests、pod 数量等)。external.metrics
允许收集非 Kubernetes 对象的指标:
External metrics allow you to autoscale your cluster based on any metric available in your monitoring system. Just provide a metric block with a name and selector, as above, and use the External metric type instead of Object
更详细的说明请查看this doc .
Minikube
要验证是否启用了 custom.metrics
,您需要执行下面的命令并检查是否可以看到任何 metrics-server...
pod。
$ kubectl get pods -n kube-system
...
metrics-server-587f876775-9qrtc 1/1 Running 4 5d1h
第二种方法是检查 minikube
是否启用了 metrics-server
通过
$ minikube addons list
...
- metrics-server: enabled
如果禁用,只需执行
$ sudo minikube addons enable metrics-server
✅ metrics-server was successfully enabled
GKE
目前,GKE 默认启用 heapster
和 metrics-server
,但默认情况下不支持 custom.metrics
。
您必须安装prometheus适配器
或stackdriver
。
Kubeadm
Kubeadm 开头不包含 heapster
或 metrics server
。为了方便安装,您可以使用this YAML .
稍后您必须安装prometheus适配器
。
应用自定义指标
对于 Minikube
、Kubeadm
、GKE
也是如此。
应用custom.metrics
的最简单方法是安装prometheus adapter通过Helm
。
安装helm后您将能够看到注释:
NOTES:
my-release-prometheus-adapter has been deployed.
In a few minutes you should be able to list metrics using the following command(s):
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1
作为附加信息,您可以使用 jq
获得更加用户友好的输出。
kubectl get --raw/apis/custom.metrics.k8s.io/v1beta1 | jq 。
关于kubernetes - Hpa 未获取现有自定义指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151513/