Compare languages | The prometheus-metrics-adapter module: Custom resources

  • .metadata.name — the name of the metric (used in HPA).
  • .spec.query — a custom PromQL query that returns a unique value for your label set (you can use sum() by(), max() by(), etc., operators for grouping). The following keys must be used in the request:
  • <<.LabelMatchers>> — will be replaced with a set of {namespace="mynamespace"###PLACEHOLDER###} labels. You can add your own comma-separated labels list (as in the example).
  • <<.GroupBy>> — will be replaced with namespace###PLACEHOLDER2### labels for grouping (max() by(...), sum() by (...), etc.).

Setting up a vanilla prometheus-metrics-adapter is a time-consuming process. Happily, we have somewhat simplified it by defining a set of CustomResourceDefinitions with different scopes.

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

You can globally define a metric using the cluster-wide resource, while the namespaced resource allows you to redefine it locally. All custom resources have the same format.

Настройка ванильного prometheus-metrics-adapter — трудоемкий процесс. Мы его упростили, определив набор CustomResourceDefinition с разной областью видимости (scope).

Namespaced custom resources

С помощью cluster-wide-ресурса можно определить метрику глобально, а с помощью namespaced-ресурса ее можно локально переопределять. Формат всех кастомных ресурсов — одинаковый.

ServiceMetric

Namespaced custom resources

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,service=”myservice”’ replace: ‘###PLACEHOLDER2###’, ‘,service’ }}

ServiceMetric

IngressMetric

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,service=”myservice”’ replace: ‘###PLACEHOLDER2###’, ‘,service’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,ingress=”myingress”’ replace: ‘###PLACEHOLDER2###’, ‘,ingress’ }}

IngressMetric

PodMetric

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,ingress=”myingress”’ replace: ‘###PLACEHOLDER2###’, ‘,ingress’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,pod=”mypod-xxxxx”’ replace: ‘###PLACEHOLDER2###’, ‘,pod’ }}

PodMetric

DeploymentMetric

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,pod=”mypod-xxxxx”’ replace: ‘###PLACEHOLDER2###’, ‘,pod’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,deployment=”mydeployment”’ replace: ‘###PLACEHOLDER2###’, ‘,deployment’ }}

DeploymentMetric

StatefulSetMetric

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,deployment=”mydeployment”’ replace: ‘###PLACEHOLDER2###’, ‘,deployment’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,statefulset=”mystatefulset”’ replace: ‘###PLACEHOLDER2###’, ‘,statefulset’ }}

StatefulSetMetric

NamespaceMetric

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,statefulset=”mystatefulset”’ replace: ‘###PLACEHOLDER2###’, ‘,statefulset’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘’ replace: ‘###PLACEHOLDER2###’, ‘’ }}

NamespaceMetric

DaemonSetMetric (not available to users)

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘’ replace: ‘###PLACEHOLDER2###’, ‘’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,daemonset=”mydaemonset”’ replace: ‘###PLACEHOLDER2###’, ‘,daemonset’ }}

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

Cluster custom resources

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,daemonset=”mydaemonset”’ replace: ‘###PLACEHOLDER2###’, ‘,daemonset’ }}

ClusterServiceMetric (not available to users)

Cluster custom resources

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,service=”myservice”’ replace: ‘###PLACEHOLDER2###’, ‘,service’ }}

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

ClusterIngressMetric (not available to users)

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,service=”myservice”’ replace: ‘###PLACEHOLDER2###’, ‘,service’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,ingress=”myingress”’ replace: ‘###PLACEHOLDER2###’, ‘,ingress’ }}

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

ClusterPodMetric (not available to users)

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,ingress=”myingress”’ replace: ‘###PLACEHOLDER2###’, ‘,ingress’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,pod=”mypod-xxxxx”’ replace: ‘###PLACEHOLDER2###’, ‘,pod’ }}

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

ClusterDeploymentMetric (not available to users)

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,pod=”mypod-xxxxx”’ replace: ‘###PLACEHOLDER2###’, ‘,pod’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,deployment=”mydeployment”’ replace: ‘###PLACEHOLDER2###’, ‘,deployment’ }}

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

ClusterStatefulSetMetric (not available to users)

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,deployment=”mydeployment”’ replace: ‘###PLACEHOLDER2###’, ‘,deployment’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,statefulset=”mystatefulset”’ replace: ‘###PLACEHOLDER2###’, ‘,statefulset’ }}

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

ClusterDaemonSetMetric (not available to users)

{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,statefulset=”mystatefulset”’ replace: ‘###PLACEHOLDER2###’, ‘,statefulset’ }}
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,daemonset=”mydaemonset”’ replace: ‘###PLACEHOLDER2###’, ‘,daemonset’ }}

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

 
{{ cr_spec replace: ‘###PLACEHOLDER###’, ‘,daemonset=”mydaemonset”’ replace: ‘###PLACEHOLDER2###’, ‘,daemonset’ }}