kubernetes - 从external.api获取查询时的Prometheus Adapter Goroutine问题

标签 kubernetes monitoring grafana prometheus

我已经实现并向k8s环境注册了外部api,但是在获取指标时遇到了一些问题。

这是外部api指标的规则:

  - seriesQuery: 'http_requests_total{namespace!="",pod!=""}'
    resources:
      overrides:
        kubernetes_namespace: {resource: "namespace"}
        kubernetes_pod_name: {resource: "pod"}
    name:
      matches: "^(.*)_total"
      as: "${1}"

当检查kubernetes外部api指标时,资源值不是null,看起来不错,但是,
{
  "kind": "APIResourceList",
  "apiVersion": "v1",
  "groupVersion": "external.metrics.k8s.io/v1beta1",
  "resources": [
    {
      "name": "http_requests",
      "singularName": "",
      "namespaced": true,
      "kind": "ExternalMetricValueList",
      "verbs": [
        "get"
      ]
    }
  ]
}

完成所有这些操作后,当我想检查返回此错误的http_requests度量kubernetes的值时;
Error from server (InternalError): Internal error occurred: unable to fetch metrics
我已经从prometheus-adapter pod中检查了这个问题,这些是与此查询相关的错误日志;
E1005 01:21:26.387384       1 provider.go:47] unable to generate a query for the metric: empty query produced by metrics query template
I1005 01:21:26.387594       1 wrap.go:42] GET /apis/external.metrics.k8s.io/v1beta1/namespaces/default/http_requests: (504.956µs) 500
goroutine 1909 [running]:
github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/server/httplog.(*respLogger).recordStatus(0xc420374930, 0x1f4)
   /go/src/github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go:207 +0xd2
github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/server/httplog.(*respLogger).WriteHeader(0xc420374930, 0x1f4)
   /go/src/github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go:186 +0x35
github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/server/filters.(*baseTimeoutWriter).WriteHeader(0xc42105b2a0, 0x1f4)
   /go/src/github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/server/filters/timeout.go:192 +0xac
github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/endpoints/metrics.(*ResponseWriterDelegator).WriteHeader(0xc42107f920, 0x1f4)
   /go/src/github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go:307 +0x45
github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters.SerializeObject(0x1791e20, 0x10, 0x7f340078e6c8, 0xc4204ec580, 0x190fd20, 0xc420e8db88, 0xc421081600, 0x1f4, 0x18f9920, 0xc420039320)
   /go/src/github.com/directxman12/k8s-prometheus-adapter/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go:95 +0x8d

....
....
....


但是我已经解析了此错误消息:unable to generate a query for the metric: empty query produced by metrics query template
这个问题的原因是什么?

请帮忙

最佳答案

我认为您收到此错误:

unable to generate a query for the metric: empty query produced by metrics query template



因为您的API指标不包含metricsQuery值。

第二件事是我不确定为什么您在external.metrics中使用http_request。在这种情况下,您可以使用custom.metrics
提及的指标是最受欢迎的指标之一,因此您可以在线逐步找到许多教程,以了解如何实现这一目标。
例如this或此Github tutorial

关于kubernetes - 从external.api获取查询时的Prometheus Adapter Goroutine问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244659/

相关文章:

azure - 无法使用 Azure Kubernetes 服务 RBAC 管理员角色创建 Azure AKS 命名空间

dns - kubernetes集群中的DNS地址

kubernetes - 无法访问 kubernetes pod 的代理

java - jps 无法连接到远程 jstatd

linux - Monit 守护程序 - 连接到 monit 守护程序时出错

javascript - 在 Grafana 中交换 Graphite 返回的时间戳和值

elasticsearch - 当总数的百分比超过阈值时发出警报

kubernetes - 无法检查 ETCD 集群运行状况

elasticsearch - 按术语分组的堆叠 View 不适用于Grafana-Framework和Elasticsearch

linux - 解释一下 MRTG 如何测量传入数据的不同之处