Экспортируйте пользовательские показатели kubernetes с помощью Prometheus для всех пространств имен

#kubernetes #prometheus #metrics #prometheus-operator

#kubernetes #prometheus #показатели #prometheus-operator

Вопрос:

У меня есть кластер k8s, если prometheus-operator (мониторинг пространства имен) и prometheus-adapter установлены с использованием диаграмм helm. Я могу извлекать метрики из другого пространства имен (скажем, rabbitmq) с помощью prometheus-operator, а prometheus-adapter может получать пользовательские метрики:

 kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/rabbitmq/services/rabbitmq-server/rabbitmq_queue_messages" | jq .
{
  "kind": "MetricValueList",
  "apiVersion": "custom.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/custom.metrics.k8s.io/v1beta1/namespaces/rabbitmq/services/rabbitmq-server/rabbitmq_queue_messages"
  },
  "items": [
    {
      "describedObject": {
        "kind": "Service",
        "namespace": "rabbitmq",
        "name": "rabbitmq-server",
        "apiVersion": "/v1"
      },
      "metricName": "rabbitmq_queue_messages",
      "timestamp": "2020-08-20T12:15:39Z",
      "value": "0",
      "selector": null
    }
  ]
}
  

Вот моя конфигурация prometheus-adapter:

 prometheus:
  url: http://pmt-server-prometheus-oper-prometheus.monitoring.svc
  port: 9090

rbac:
  create: true

serviceAccount:
  create: true

service:
  port: 443

logLevel: 6
rules:
  custom:

  - seriesQuery: 'rabbitmq_queue_messages{namespace!="",service!=""}'
    resources:
      overrides:
        namespace: {resource: "namespace"}
        service: {resource: "service"}
    metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>,queue="task_queue"}) by (<<.GroupBy>>)
  

Проблема в том, что эти метрики являются ограниченными пространствами имен, поэтому я могу использовать эту метрику только внутри того же пространства имен rabbitmq. Есть ли способ экспортировать эти показатели во все пространства имен, чтобы я мог масштабировать развертывания в других пространствах имен (например, пространство имен по умолчанию)? Другими словами, сделайте метрики не привязанными к пространству имен?

Комментарии:

1. Вы нашли решение для этого?

2. Я думаю, что я сталкиваюсь с той же проблемой, у меня есть мой rabbitmq в пространстве имен rabbitmq, prometheus и адаптер в пространстве имен monitoring, а HPA, prometheus-rule и my-deployment в пространстве имен my-app. Затем HPA «не может извлекать показатели из пользовательского API metrics», но если я установлю rabbit в пространство имен my-app, все заработает. Есть решение для этого? @niclaszll