Адаптер Prometheus Проблема с Goroutine при получении запроса от external.api - PullRequest
0 голосов
/ 05 октября 2019

Я реализовал и зарегистрировал внешний API в среде K8S, но у меня есть некоторые проблемы при получении метрик.

Это правило для метрик внешнего API:

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

При проверке метрики внешнего API kubernetes значения ресурсов не равны нулю, что выглядит нормально, но

{
  "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

В чем причина этой проблемы?

Помогите пожалуйста

1 Ответ

0 голосов
/ 16 октября 2019

Я думаю, что вы получаете эту ошибку:

не удалось сгенерировать запрос для метрики: пустой запрос, созданный шаблоном запроса метрик

из-за вашей метрики APIне содержат metricsQuery значение.

Во-вторых, я не уверен, почему вы используете external.metrics в http_request. В этом сценарии вы можете использовать custom.metrics. Упомянутые метрики являются одними из самых популярных, поэтому вы можете найти множество онлайн-пошаговых инструкций, как этого добиться. Например этот или этот учебник Github .

...