Prometheus 适配器自定义指标 HPA

met*_*ale 6 metrics kubernetes prometheus amazon-eks

我正在遵循此演练(部分使用 EKS。https: //itnext.io/horizo ​​ntal-pod-autoscale-with-custom-metrics-8cb13e9d475

我设法使用此 http_requests_total 指标扩大一个部署。

现在,我正在尝试添加一个新指标。我有普罗米修斯服务器,它已经抓取了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>>)'
Run Code Online (Sandbox Code Playgroud)

  - 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>>}'
Run Code Online (Sandbox Code Playgroud)

或者底部版本的某种版本。但是,我永远看不到它: kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 | jq

无论我尝试什么。

有什么想法如何继续前进吗?谢谢!

wei*_*eld 7

如果您没有看到其中的指标,/apis/custom.metrics.k8s.io/v1beta1则意味着 Prometheus 适配器无法发现它。

seriesQueryPrometheus 适配器通过使用向 Prometheus 发出请求的字段值来发现指标(按照重新列出间隔/api/v1/series定义的频率定期执行)。

值得尝试的事情:

  • 如果你向 Prometheus 发出以下请求,你会得到什么?

    http://<prometheus-ip>:9090/api/v1/series? match[]=aws_sqs_approximate_age_of_oldest_message_maximum{queue_name!=""}&start=<current-timestamp-sec>
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果将以下内容放入 Prometheus UI 的查询文本框中并按Execute ,您会得到什么?

    aws_sqs_approximate_age_of_oldest_message_maximum{queue_name!=""}
    
    Run Code Online (Sandbox Code Playgroud)

如果在这两种情况下都没有返回数据,那么 Prometheus 中没有任何符合您的seriesQuery规范的时间序列。