我正在按照此演练(部分地,正在使用EKS。 https://itnext.io/horizontal-pod-autoscale-with-custom-metrics-8cb13e9d475
通过此http_requests_total指标,我设法扩大了一个部署范围。
现在,我正在尝试添加一个新指标。我有prometheus服务器,它已经刮擦了cloudwatch,并且我的许多队列都拥有aws_sqs_approximate_age_of_oldest_message_maximum
值。
以与上述教程类似的方式,我添加了指标的定义:
- seriesQuery: 'http_requests_total{kubernetes_namespace!="",kubernetes_pod_name!=""}'
resources:
overrides:
kubernetes_namespace: {resource: "namespace"}
kubernetes_pod_name: {resource: "pod"}
name:
matches: "^(.*)_total"
as: "${1}_per_second"
metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[2m])) by (<<.GroupBy>>)'
vs
- seriesQuery: 'aws_sqs_approximate_age_of_oldest_message_maximum{queue_name!=""}'
resources:
overrides:
kubernetes_namespace: {resource: "namespace"}
kubernetes_pod_name: {resource: "pod"}
metricsQuery: '<<.Series>>{<<.LabelMatchers>>}'
或底部版本的某个版本。但是,我永远也看不到它:
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 | jq
不管我尝试什么。
任何想法如何前进? 谢谢!
答案 0 :(得分:0)
如果您没有在/apis/custom.metrics.k8s.io/v1beta1
中看到该指标,则意味着Prometheus适配器找不到它。
Prometheus适配器通过将seriesQuery
字段的值用于对Prometheus的/api/v1/series
请求(以 relist间隔定义的频率定期执行)来发现指标。
尝试的事情:
如果对Prometheus发出以下请求,会得到什么?
http://<prometheus-ip>:9090/api/v1/series? match[]=aws_sqs_approximate_age_of_oldest_message_maximum{queue_name!=""}&start=<current-timestamp-sec>
如果将以下内容放入Prometheus UI的查询文本框中并按 Execute ,会得到什么?
aws_sqs_approximate_age_of_oldest_message_maximum{queue_name!=""}
如果在任何情况下都没有返回数据,那么您在Prometheus中没有符合您的seriesQuery
规范的任何时间序列。