kubernetes - Hpa 未获取现有自定义指标?

标签 kubernetes monitoring grafana prometheus autoscaling

我正在使用 mongodb-exporter 通过 prometheus 存储/查询指标。我已经设置了一个自定义指标服务器并为其存储值。

这是 prometheus-exportercustom-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 默认启用 heapstermetrics-server,但默认情况下不支持 custom.metrics。 您必须安装prometheus适配器stackdriver

Kubeadm

Kubeadm 开头不包含 heapstermetrics server。为了方便安装,您可以使用this YAML .

稍后您必须安装prometheus适配器

应用自定义指标

对于 MinikubeKubeadmGKE 也是如此。

应用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/

相关文章:

kubernetes - 有没有更好的方法来等待 Kubernetes 作业完成?

每个应用程序的 Kubernetes 集群?

amazon-web-services - 如何将不同的 vpc 实例(节点)添加到现有的 eks vpc(两个 vpc 不同)

mongodb - Mongodb Exporter不使用Docker和Prometheus显示指标

spring-boot - 如何使用 grafana 可视化 Prometheus 端点指标

logging - 使用一些指标导出器 + Prometheus + Grafana 监控日志文件

kubernetes - 在 Kubernetes 上的 Grafana 中设置 Prometheus 数据源时出错

python - 如何在Python SDK中没有配置文件的情况下连接到kubernetes集群?

Kubernetes (GKE) 的日志记录解决方案

C - 使用进程监视文件