Prometheus适配器自定义指标HPA

时间:2019-03-05 16:54:25

标签: kubernetes metrics prometheus eks

我正在按照此演练(部分地,正在使用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

不管我尝试什么。

任何想法如何前进? 谢谢!

1 个答案:

答案 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规范的任何时间序列。