Что такое ServiceMonitor в Kubernetes?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
ServiceMonitor — это ресурс в Kubernetes, используемый Prometheus Operator для обнаружения сервисов, которые должны быть подвергнуты мониторингу. Он определяет набор правил для выбора сервисов и указания endpoints внутри них, откуда Prometheus должен собирать метрики. ServiceMonitor не является встроенным объектом Kubernetes; он предоставляется Prometheus Operator как Custom Resource Definition (CRD).
Основные поля ServiceMonitor:
apiVersion:monitoring.coreos.com/v1kind:ServiceMonitormetadata:name: Имя ServiceMonitor.namespace: Пространство имен.labels/annotations: Для организации и метаинформации.
spec:selector: Определяет сервисы, которые будут выбраны ServiceMonitor'ом. Обычно используется по лейблам (matchLabels).namespaceSelector: Опционально, ограничивает поиск сервисов определенными пространствами имен. По умолчанию ищет в пространстве имен самого ServiceMonitor'а.endpoints: Список endpoints внутри выбранных сервисов, откуда Prometheus должен собирать метрики. Каждая запись endpoint может содержать:port: Имя порта сервиса.targetPort: Номер порта контейнера.path: Путь к endpoint метрик (по умолчанию/metrics).interval: Интервал сбора метрик.scrapeTimeout: Таймаут сбора метрик.scheme: Протокол (http/https).metricRelabelings: Правила для перезаписи меток метрик до сохранения.relabelings: Правила для перезаписи меток обнаружения сервиса до скрапинга.
Пример ServiceMonitor:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app-monitor
namespace: default
labels:
app: my-app
spec:
selector:
matchLabels:
app: my-app-service # Выбрать сервисы с лейблом app: my-app-service
endpoints:
- port: http-metrics # Имя порта в спецификации сервиса
path: /internal/metrics # Путь к метрикам
interval: 30s # Собирать каждые 30 секунд
Как это работает:
- Prometheus Operator постоянно отслеживает ресурсы ServiceMonitor и Services в Kubernetes.
- Он выбирает сервисы, которые соответствуют селектору в спецификации ServiceMonitor.
- Из выбранных сервисов он извлекает информацию об endpoint'ах, указанных в ServiceMonitor.
- На основе этой информации Prometheus Operator динамически генерирует конфигурацию для Prometheus сервера, добавляя цели для скрапинга.
- Prometheus сервер затем собирает метрики с этих целей.
Преимущества использования ServiceMonitor:
- Автоматизация: Автоматически обновляет конфигурацию Prometheus при добавлении, удалении или изменении сервисов.
- Децентрализация: Разработчики могут определять, какие метрики предоставляют их сервисы, непосредственно рядом с развертыванием сервиса.
- Стандартизация: Обеспечивает согласованный способ мониторинга приложений в кластере.
В отличие от PodMonitor, который собирает метрики напрямую с подов, ServiceMonitor собирает метрики через Kubernetes Service, что важно для сервисов, масштабированных до нескольких реплик и доступных через один IP и порт.