Настройка Prometheus#
В Kubernetes Prometheus получает конфигурацию сбора метрик не из файла prometheus.yml, а из ресурсов Kubernetes.
Prometheus Operator обрабатывает следующие ресурсы и передает Prometheus сведения о целях сбора данных:
ServiceMonitor – описание сервисов, метрики которых необходимо получать;
Probe – описание проверок доступности через
blackbox_exporter.blackbox_exporter– экспортер Prometheus, который выполняет сетевые проверки HTTP, HTTPS и TCP и публикует результат в виде метрик.
Для доступа к метрикам Automation Controller требуется токен доступа. Администратор сохраняет токен в Kubernetes Secret, а ресурсы мониторинга используют его при обращении к API контроллера. После создания ресурсов Prometheus Operator автоматически обнаруживает их и добавляет соответствующие цели в конфигурацию Prometheus.
Метрики и проверки доступности являются разными источниками данных и решают разные задачи мониторинга:
Если компонент публикует метрики в формате Prometheus, используйте ресурс
ServiceMonitor. Prometheus периодически получает числовые показатели работы компонента, например количество заданий, загрузку ресурсов или размер очередей.Если компонент не публикует собственные метрики или требуется контролировать доступность точки доступа API, используйте ресурс
Probe.blackbox_exporterвыполняет сетевую проверку указанного адреса и сохраняет результат проверки в виде метрик Prometheus.
Для этой схемы мониторинга используйте следующие ресурсы:
Automation Controller публикует метрики Prometheus и подключается через
ServiceMonitor;Private Automation Hub публикует метрики Prometheus и подключается через
ServiceMonitor;Gateway контролируйте через
Probe, поскольку основная задача состоит в проверке доступности API;Event-Driven Automation контролируйте через
Probe, поскольку он не предоставляет собственные метрики Prometheus.
Создание токена доступа#
Для получения метрик Automation Controller Prometheus использует токен доступа с привилегиями на чтение.
Создайте токен запросом к Gateway:
curl -sk -X POST "https://<gateway_address>/api/gateway/v1/tokens/" \
-H "Content-Type: application/json" \
-u "<username>:<password>" \
-d '{"description":"prometheus-monitoring","scope":"read"}'
Здесь:
<gateway_address> – IP-адрес или FQDN Gateway;
<username> – название учетной записи Astra Automation с ролью Системный администратор или Аудитор;
<password> – пароль учетной записи.
Сохраните значение поля token из ответа.
Полученный токен потребуется при создании секрета.
Создание секрета с токеном#
Kubernetes Secret хранит токен доступа к метрикам Automation Controller.
Секрет должен находиться в том же пространстве имен, что и ресурс ServiceMonitor, который на него ссылается.
В примерах ниже и секрет, и ServiceMonitor находятся в пространстве имен monitoring.
Если платформа Astra Automation установлена не в пространстве имен astra-automation, замените это значение в полях namespaceSelector.matchNames и в командах kubectl -n astra-automation далее на этой странице.
Для создания секрета выполните следующие действия:
Создайте файл
controller-token-secret.yaml:--- apiVersion: v1 kind: Secret metadata: name: aa-controller-token namespace: monitoring type: Opaque stringData: token: "<token>"
Здесь <token> – токен, созданный ранее.
Создайте секрет:
kubectl apply -f controller-token-secret.yaml
Проверьте создание секрета:
kubectl -n monitoring get secret aa-controller-token
Определение точки доступа к метрикам Automation Controller#
Перед созданием ServiceMonitor проверьте, через какой сервис доступна точка доступа метрик Automation Controller.
В разных вариантах установки путь может быть доступен через сервис Gateway, сервис Automation Controller или ресурс входящего доступа.
Используйте следующий порядок:
Определите сервисы и их порты:
kubectl -n astra-automation get svc --show-labels kubectl -n astra-automation describe svc <service_name>
Здесь <service_name> – название сервиса, через который проверяется доступ к метрикам.
Проверьте путь
/api/controller/v2/metrics/через выбранный сервис:kubectl -n astra-automation port-forward svc/<service_name> 8443:<service_port>
В другом терминале выполните запрос:
curl -sk \ -H "Authorization: Bearer <token>" \ https://127.0.0.1:8443/api/controller/v2/metrics/ | head
Здесь:
<service_port> – номер порта сервиса;
<token> – токен доступа с правами чтения;
127.0.0.1:8443– локальный адрес, открытый командойkubectl port-forward.
При проверке выбранного сервиса через
kubectl port-forwardне заменяйте127.0.0.1:8443на адрес Gateway.Если команда возвращает строки метрик Prometheus, используйте этот сервис в
ServiceMonitor. Если сервис возвращает404или перенаправляет запрос иначе, проверьте путь через Gateway или ресурс входящего доступа. У прямого сервиса Automation Controller также доступен путь/api/v2/metrics/– базовый путь API контроллера, однако для единообразия с доступом через Gateway используйте вServiceMonitorпуть/api/controller/v2/metrics/.
Настройка ServiceMonitor#
Ресурс ServiceMonitor описывает сервис Kubernetes, метрики которого Prometheus должен получать.
Prometheus Operator автоматически обнаруживает такие ресурсы и создает необходимые цели мониторинга.
Automation Controller#
Для сбора метрик Automation Controller укажите в ресурсе ServiceMonitor стандартный путь:
/api/controller/v2/metrics/
Prometheus Operator использует этот путь при создании цели мониторинга для сервиса Automation Controller.
Для настройки сбора метрик выполните следующие действия:
Определите название сервиса Automation Controller и его метки:
kubectl -n astra-automation get svc --show-labels
Создайте файл
controller-servicemonitor.yaml:--- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: aa-controller namespace: monitoring labels: release: kube-prometheus-stack spec: namespaceSelector: matchNames: - astra-automation selector: matchLabels: <controller_service_label_key>: <controller_service_label_value> endpoints: - port: <https_port_name> path: /api/controller/v2/metrics/ interval: 30s scrapeTimeout: 10s scheme: https tlsConfig: insecureSkipVerify: true authorization: type: Bearer credentials: name: aa-controller-token key: token relabelings: - targetLabel: platform replacement: astra_automation - targetLabel: component replacement: controller
Здесь:
<controller_service_label_key> – ключ метки сервиса Automation Controller;
<controller_service_label_value> – значение метки сервиса Automation Controller;
<https_port_name> – название порта HTTPS в сервисе Automation Controller или Gateway.
Prometheus Operator поддерживает поле
authorizationначиная с версии 0.50.0. Только если в кластере используется более старая версия оператора, используйте вместо него устаревшее полеbearerTokenSecretс тем же секретом.Создайте ресурс:
kubectl apply -f controller-servicemonitor.yaml
Private Automation Hub#
Для сбора метрик Private Automation Hub укажите в ресурсе ServiceMonitor стандартный путь:
/metrics
Prometheus Operator использует этот путь при создании цели мониторинга для сервиса Private Automation Hub.
Для настройки сбора метрик выполните следующие действия:
Определите название сервиса и метки Private Automation Hub:
kubectl -n astra-automation get svc --show-labels
Создайте файл
hub-servicemonitor.yaml:--- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: aa-hub namespace: monitoring labels: release: kube-prometheus-stack spec: namespaceSelector: matchNames: - astra-automation selector: matchLabels: <hub_service_label_key>: <hub_service_label_value> endpoints: - port: <https_port_name> path: /metrics interval: 30s scrapeTimeout: 10s scheme: https tlsConfig: insecureSkipVerify: true relabelings: - targetLabel: platform replacement: astra_automation - targetLabel: component replacement: hub
Здесь:
<hub_service_label_key> – ключ метки сервиса Private Automation Hub;
<hub_service_label_value> – значение метки сервиса Private Automation Hub;
<https_port_name> – название порта HTTPS в сервисе Private Automation Hub.
Создайте ресурс:
kubectl apply -f hub-servicemonitor.yaml
Настройка Probe#
Ресурс Probe описывает проверку доступности сервиса через blackbox_exporter.
Prometheus получает не сами метрики приложения, а результат проверки доступности.
Gateway#
Для контроля доступности Gateway используйте проверку HTTP через blackbox_exporter.
Такая проверка показывает, что точка доступа отвечает по сети и возвращает успешный статус HTTP.
Для проверки используйте точку доступа Gateway /api/gateway/v1/ping/: она отвечает кодом 200 без аутентификации и показывает доступность самого Gateway.
Агрегированный статус Gateway по адресу /api/gateway/v1/status/ требует токен доступа.
Стандартный ресурс Probe не подходит для проверки значения поля status в ответе JSON.
Также не добавляйте токен Gateway в сам Probe: параметры авторизации ресурса Probe относятся к запросу Prometheus к blackbox_exporter и не являются безопасным способом передать заголовок в проверяемый HTTP target.
Если нужно контролировать именно агрегированный статус Gateway, используйте отдельный экспортер синтетических проверок или другой инструмент.
Такой инструмент должен передавать заголовок Authorization к Gateway и преобразовывать результат проверки в метрику Prometheus.
Для базовой проверки доступности Gateway выполните следующие действия:
Создайте файл
gateway-probe.yaml:--- apiVersion: monitoring.coreos.com/v1 kind: Probe metadata: name: aa-gateway namespace: monitoring spec: interval: 30s scrapeTimeout: 10s module: http_2xx prober: url: prometheus-blackbox-exporter.monitoring.svc.cluster.local:9115 targets: staticConfig: static: - https://<gateway_address>/api/gateway/v1/ping/
Здесь <gateway_address> – адрес Gateway.
Создайте ресурс:
kubectl apply -f gateway-probe.yaml
Event-Driven Automation#
Event-Driven Automation не предоставляет собственные метрики Prometheus. Для контроля работоспособности используйте проверку доступности через Gateway API.
Для настройки проверки доступности выполните следующие действия:
Создайте файл
eda-probe.yaml:--- apiVersion: monitoring.coreos.com/v1 kind: Probe metadata: name: aa-eda namespace: monitoring spec: interval: 30s scrapeTimeout: 10s module: http_2xx prober: url: prometheus-blackbox-exporter.monitoring.svc.cluster.local:9115 targets: staticConfig: static: - https://<gateway_address>/api/eda/v1/status/
Здесь <gateway_address> – адрес Gateway.
Создайте ресурс:
kubectl apply -f eda-probe.yaml
Проверка настройки#
Проверка ServiceMonitor#
После создания ServiceMonitor убедитесь, что Kubernetes зарегистрировал ресурсы.
Для проверки выполните следующие действия:
Получите список ServiceMonitor:
kubectl -n monitoring get servicemonitor
Убедитесь, что в выводе присутствуют следующие ресурсы:
aa-controller;aa-hub.
Просмотрите подробную информацию о ServiceMonitor:
kubectl -n monitoring describe servicemonitor aa-controller
Проверка Probe#
После создания Probe убедитесь, что Kubernetes зарегистрировал ресурсы.
Для проверки выполните следующие действия:
Получите список Probe:
kubectl -n monitoring get probe
Убедитесь, что в выводе присутствуют следующие ресурсы:
aa-gateway;aa-eda.
Просмотрите подробную информацию о Probe:
kubectl -n monitoring describe probe aa-gateway
Проверка целей в Prometheus#
После создания ServiceMonitor и Probe убедитесь, что Prometheus обнаружил новые цели мониторинга.
Для проверки выполните следующие действия:
Получите название Prometheus pod:
kubectl -n monitoring get pod \ -l app.kubernetes.io/name=prometheus
Настройте локальную переадресацию порта:
kubectl -n monitoring port-forward <prometheus_pod> 9090:9090
Здесь <prometheus_pod> – название Prometheus pod из вывода предыдущей команды.
Откройте графическую консоль Prometheus, располагающуюся по адресу
http://localhost:9090.Перейдите в раздел .
Убедитесь, что цели, созданные через
ServiceMonitorиProbe, находятся в состоянииUP.