Настройка ванильного prometheus-metrics-adapter — это достаточно трудоёмкий процесс и мы его несколько упростили, определив набор CRD с разным Scope.

С помощью Cluster-ресурса можно определить метрику глобально, а с помощью Namespaced-ресурса можно её локально переопределять. Формат у всех CR одинаковый.

Namespaced Custom resources

ServiceMetric

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

IngressMetric

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

PodMetric

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

DeploymentMetric

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

StatefulSetMetric

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

NamespaceMetric

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

DaemonSetMetric (недоступен пользователям)

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

Cluster Custom resources

ClusterServiceMetric (недоступен пользователям)

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

ClusterIngressMetric (недоступен пользователям)

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

ClusterPodMetric (недоступен пользователям)

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

ClusterDeploymentMetric (недоступен пользователям)

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

Пример

ClusterStatefulSetMetric (недоступен пользователям)

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).

Пример

ClusterDaemonSetMetric (недоступен пользователям)

  • .metadata.name — имя метрики, используется в HPA.
  • .spec.query — кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора label’ов (используйте группировку операторами sum() by(), max() by() и пр.). В запросе необходимо обязательно использовать ключи:
    • <<.LabelMatchers>> — заменится на набор label’ов {namespace="mynamespace",ingress="myingress"}. Можно добавить свои label’ы через запятую как в примере ниже.
    • <<.GroupBy>> — заменится на перечисление label’ов namespace,ingress для группировки (max() by(...), sum() by (...) и пр.).