Настройка ванильного 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 (...)и пр.).