Пользовательские метрики Kubernetes недоступны на уровне обслуживания

#kubernetes #prometheus #amazon-eks #aws-fargate #hpa

#kubernetes #prometheus #amazon-eks #aws-fargate #hpa

Вопрос:

Я установил сервер и адаптер Prometheus в кластере Kubernetes для сбора метрик из объектов Kubernetes.

Сервер и адаптер Prometheus установлены с использованием Helm charts, и они работают нормально. Теперь развернуто приложение Spring boot, которое обслуживает показатели в конечной точке / actuator / prometheus.

добавлена аннотация ниже в файле развертывания:

 annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "8080"
        prometheus.io/path: "/actuator/prometheus"    
  

Теперь я мог видеть пользовательские метрики на уровне pod:
введите описание изображения здесь

Когда я пытаюсь просмотреть метрики на уровне обслуживания, выдается ошибка:

Ошибка сервера (не найдена): серверу не удалось найти метрику redis_queue_box_provider_size для службы

образцы метрик, собранные на сервере prometheus: введите описание изображения здесь

Есть ли какая-либо конфигурация, которую я должен выполнить для сбора метрик на уровне обслуживания?

Комментарии:

1. Насколько я проверил здесь , Some services are designed to expose Prometheus metrics from the ground-up (the Kubernetes kubelet, Traefik web proxy, Istio microservice mesh, etc). Some other services are not natively integrated, but can be easily adapted using an exporter. в приведенной выше ссылке есть пример с redis, и есть экспортер redis на github . Не могли бы вы попробовать с этим и сообщить мне, если это сработает?

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

3. Да, я думал, что это было повторное развертывание из-за названия. Как упоминалось в prometheus values , prometheus.io/scrape : очищать только те службы, которые имеют значение true , у вас есть это в вашем развертывании, но добавили ли вы это в аннотации службы?

4. такое же поведение, даже я добавляю на уровне обслуживания

5. Чего вы хотите достичь? Связанная часть конфигурации от Jakub инструктирует Prometheus обращаться ко всем конечным точкам, которые принадлежат службе. Это почти не отличается от обнаружения на основе модулей, за исключением того, как собираются IP-адреса модулей — в конечном итоге вы получите одну цель для каждого модуля. Возможно обнаружение на основе сервиса, что означает, что для каждой службы требуется один целевой объект с IP-адресом ClusterIP службы с балансировкой нагрузки. Однако такая конфигурация не предусмотрена в таблице управления, вы должны вручную добавить ее в конфигурационный файл Prometheus (вы должны использовать ‘role: service’)