Настройка ванильного prometheus-metrics-adapter — трудоемкий процесс. Мы его упростили, определив набор CustomResourceDefinition с разной областью видимости (scope).
С помощью cluster-wide-ресурса можно определить метрику глобально, а с помощью namespaced-ресурса ее можно локально переопределять. Формат всех кастомных ресурсов — одинаковый.
Namespaced custom resources
ServiceMetric
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",service="myservice"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,serviceдля группировки (- max() by(...),- sum() by (...)и пр.).
 
IngressMetric
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",ingress="myingress"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,ingressдля группировки (- max() by(...),- sum() by (...)и пр.).
 
PodMetric
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",pod="mypod-xxxxx"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,podдля группировки (- max() by(...),- sum() by (...)и пр.).
 
DeploymentMetric
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",deployment="mydeployment"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,deploymentдля группировки (- max() by(...),- sum() by (...)и пр.).
 
StatefulSetMetric
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",statefulset="mystatefulset"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,statefulsetдля группировки (- max() by(...),- sum() by (...)и пр.).
 
NamespaceMetric
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespaceдля группировки (- max() by(...),- sum() by (...)и пр.).
 
DaemonSetMetric (недоступен пользователям)
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",daemonset="mydaemonset"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,daemonsetдля группировки (- max() by(...),- sum() by (...)и пр.).
 
Cluster custom resources
ClusterServiceMetric (недоступен пользователям)
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",service="myservice"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,serviceдля группировки (- max() by(...),- sum() by (...)и пр.).
 
ClusterIngressMetric (недоступен пользователям)
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",ingress="myingress"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,ingressдля группировки (- max() by(...),- sum() by (...)и пр.).
 
ClusterPodMetric (недоступен пользователям)
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",pod="mypod-xxxxx"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,podдля группировки (- max() by(...),- sum() by (...)и пр.).
 
ClusterDeploymentMetric (недоступен пользователям)
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",deployment="mydeployment"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,deploymentдля группировки (- max() by(...),- sum() by (...)и пр.).
 
ClusterStatefulSetMetric (недоступен пользователям)
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",statefulset="mystatefulset"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,statefulsetдля группировки (- max() by(...),- sum() by (...)и пр.).
 
ClusterDaemonSetMetric (недоступен пользователям)
- .metadata.name— имя метрики, используется в HPA.
- .spec.query— кастомный PromQL-запрос, который возвращает однозначное значение для вашего набора лейблов (используйте группировку операторами- sum() by(),- max() by()и пр.). В запросе необходимо обязательно использовать ключи:- <<.LabelMatchers>>— заменится на набор лейблов- {namespace="mynamespace",daemonset="mydaemonset"}. Можно добавить собственные лейблы через запятую (пример).
- <<.GroupBy>>— заменится на перечисление лейблов- namespace,daemonsetдля группировки (- max() by(...),- sum() by (...)и пр.).