Hpa 没有获取现有的自定义指标?
Posted
技术标签:
【中文标题】Hpa 没有获取现有的自定义指标?【英文标题】:Hpa not fetching existing custom metric? 【发布时间】:2020-01-28 18:45:24 【问题描述】:我使用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
我的案件的主要问题是什么?我检查了所有配置,流程看起来不错,但我的错误在哪里。
帮助
谢谢:)
【问题讨论】:
你能提供你的部署 YAML 吗? 为应用程序或其他与prometheus或metric server相关的组件部署yaml? YAMLS:1. mongodb-exporter,2. prometheus-exporter,3. HPA。您是否使用一些教程创建了这一切?您能否提供部署所有内容的步骤。 嗨@PjoterS 我已经通过启用外部指标api服务器处理了问题 如果您找到了解决方案,请写下您所做的作为答案并接受它。对于可能有类似问题的人来说,它会更加明显。 【参考方案1】:您在 cmets 中写道您已启用 external.metrics
,但在原始问题中您遇到了 custom.metrics
的问题
简而言之:
metrics
仅支持 CPU 或内存等基本指标。
custom.metrics
允许您将基本指标扩展到所有 Kubernetes 对象(http_requests、pod 数量等)。
external.metrics
允许收集不是 Kubernetes 对象的指标:
外部指标允许您根据任何 监控系统中可用的指标。只需提供一个指标 如上所述,带有名称和选择器的块,并使用外部指标 键入而不是 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 adapter
或stackdriver
。
Kubeadm
Kubeadm 开头不包含heapster
或metrics server
。为了方便安装,可以使用this YAML。
稍后你必须安装prometheus adapter
。
应用 custom.metrics
Minikube
、Kubeadm
、GKE
也一样。
申请custom.metrics
的最简单方法是通过Helm
安装prometheus adapter。
helm 安装后你会看到 note:
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 .
【讨论】:
以上是关于Hpa 没有获取现有的自定义指标?的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes AWS Cloudwatch 适配器未获取 EKS HPA 自动缩放的自定义指标值
使用 Prometheus 适配器的 Horizontal Pod Autoscaler (HPA) 自定义指标(单位是如何定义的?)