Prometheus Adapter пустые метрические элементы - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь автоматически масштабировать развертывание Kubernetes с HPA, используя пользовательские метрики Prometheus с адаптером Prometheus . Эти пользовательские метрики публикуются в Prometheus через другое развертывание в другом пространстве имен, которое каждую минуту запрашивает REST API для определенной метрики, а затем публикует значение этой метрики в Prometheus. Оттуда адаптер должен иметь возможность запрашивать у Prometheus указанную метрику с некоторыми дополнительными метками в качестве критериев запроса и публиковать эту метрику с новым именем. Оттуда HPA должен быть в состоянии подобрать этот показатель и масштабировать в зависимости от его значения.

Вот метки для моего развертывания, на которых адаптер предположительно основывает свое соответствие:

Labels:             app.kubernetes.io/instance=event-subscription-dev-dev
                    app.kubernetes.io/managed-by=Tiller-dev
                    app.kubernetes.io/name=event-subscription-dev
                    deployment-name=event-subscription-webhook-worker-dev
                    helm.sh/chart=event-subscription-0.1.0-dev

Вот значения диаграммы / правила адаптера Prometheus Helm:

logLevel: 1
metricsRelistInterval: 5s
prometheus:
  url: 'http://<prometheus-url>'
rules:
  custom:
    - seriesQuery: '{__name__="event_subscription_current_message_lag"}'
      name: 
        matches: "(.*)"
        as: '${1}_webhooks'
      resources: 
        overrides:
          namespace: {resource: "namespace"}
          pod: {resource: "pod"}
      metricsQuery: 'sum(event_subscription_current_message_lag{queue="webhooks", container_name!="POD"})'
    - seriesQuery: '{__name__="event_subscription_current_message_lag"}'
      name: 
        matches: "(.*)"
        as: '${1}_webhook_retries'
      resources: 
        overrides:
          namespace: {resource: "namespace"}
          pod: {resource: "pod"}
      metricsQuery: 'sum(event_subscription_current_message_lag{queue="webhook_retries", container_name!="POD"})'

И вот часть metrics моей спецификации HPA:

 metrics:
  - type: Pods
    pods:
      metric:
        name: event_subscription_current_message_lag_webhooks
      target:
        type: AverageValue
        averageValue: 10
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 85

Проблема, с которой я здесь сталкиваюсь, не в том, что адаптер запрашивает метрику, а затем публикует новую метрику, а скорее в том, чтоновая метрика не имеет значения, связанного с ней, как исходная метрика.

Например, если я запускаю kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 I , делаю , вижу мои event_subscription_current_message_lag_webhooks и event_subscription_current_message_lag_webhook_retries метрики, но они не имеют никакого значения, как исходная метрика event_subscription_current_message_lag.

Вот вывод от kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/event-subscription/pods/*/event_subscription_current_message_lag"

{
  "kind": "MetricValueList",
  "apiVersion": "custom.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/custom.metrics.k8s.io/v1beta1/namespaces/event-subscription/pods/%2A/event_subscription_current_message_lag"
  },
  "items": [
    {
      "describedObject": {
        "kind": "Pod",
        "namespace": "event-subscription",
        "name": "activemq-message-lag-retrieval-7bfc46b948-jr8kp",
        "apiVersion": "/v1"
      },
      "metricName": "event_subscription_current_message_lag",
      "timestamp": "2019-11-08T22:09:53Z",
      "value": "1"
    }
  ]
}

А вот вывод для event_subscription_current_message_lag_webhooks и event_subscription_current_message_lag_webhook_retries:

{
  "kind": "MetricValueList",
  "apiVersion": "custom.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/custom.metrics.k8s.io/v1beta1/namespaces/event-subscription/pods/%2A/event_subscription_current_message_lag_webhooks"
  },
  "items": []
}

...

{
  "kind": "MetricValueList",
  "apiVersion": "custom.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/custom.metrics.k8s.io/v1beta1/namespaces/event-subscription/pods/%2A/event_subscription_current_message_lag_webhook_retries"
  },
  "items": []
}

Я не совсем понимаю, какПохоже, что адаптер может найти мою исходную метрику, запросить ее, опубликовать новую метрику, но без значения я бы ожидал, что в данном случае это 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...