AWS: CloudWatch – Multi source query: збираємо метрики із зовнішнього Prometheus

Автор |  13/12/2023
 

Ще один цікавий анонс з останнього re:Invent – це те, що в CloudWatch додали можливість збирати метрики із зовнішніх ресурсів (див. дуже цікавий доклад AWS re:Invent 2023 – Cloud operations for today, tomorrow, and beyond (COP227)).

Тобто тепер ми можемо створювати графіки та/або алерти не тільки з дефолтних метрик самого CloudWatch – але й за допомогою конекторів для CloudWatch підключити збір метрик з Amazon Managed Service for Prometheus, звичайного Prometheus, Amazon OpenSearch Service, Amazon RDS для MySQL та PostgreSQL, CSV файлів з S3 бакетів і навіть з Microsoft Azure Monitor.

Виглядає це прям дуже круто, бо тепер можна буду переосмислили взагалі всю свою концепцію побудови моніторингу и observability на проекті.

Є Prometheus на голому EC2 інстансі, на якому відкрито порт 9090 – спочатку спробуємо тут, потім глянемо на VictoriaMetrcis в EKS.

Переходимо в CloudWatch Metrics, тепер маємо нову вкладку Multi source query:

Вибираємо Prometheus:

Задаємо параметри.

Поля логін-пароль обов’язкові, тож навіть якщо Prometheues не потребує аутентифікації – задаємо тут якісь значення.

Нижче можна налаштувати параметри мережі. Наприклад, якщо Prometheus доступний тільки всередені VPC – то тут можемо вибрати VPC і сабнети:

Клілкаємо Create data source – в CloudWatch запустить створення CloudFormation стеку, в якому створить Lambda-функції, які власне і будуть збирати дані з нашого дата-сорсу:

Повертаємось до CloudWatch, де тепер маємо новий дата-сорс:

І можемо з нього отримати метрики:

VictoriaMetrics, EKS та VPC

Зараз маємо VictoriaMetrics в Kubernetes, див. VictoriaMetrics: створення Kubernetes monitoring stack з власним Helm-чартом.

Щоб CloudWatch міг збирати метрики – нам треба відкрити доступ до VMSingle.

Тут маємо два варіанти – або звичайний Ingress/ALB, див. values.yaml, або через VMAuth з аутентифікацією, див. VictoriaMetrics: VMAuth – проксі, аутентифиікація та авторизація.

І при додаванні data source в CloudWatch єдина відмінність від звичайного Prometheus – це URI:

  • у Prometheues ми ходимо на URI hostname:9090/api/v1/labels
  • у VicrotiaMetrcis з VMSingle – через hostname:8429/prometheus/api/v1/labels

Тож в data source додаємо як https://vmsingle.ops.example.co/prometheus/.

Редагування і видалення data source

Не побачив, де і як можна змінити якісь параметри або видалити дата-сорс з панелі самого CloudWatch.

Схоже що поки що видаляється дата-сорс тільки через CloudFormation – видалення стеку, а змінити якісь параметри можна тільки в самій Lambda-функції.

Наприклад, щоб відредагувати Prometheus URL – він задається в змінних оточення функції:

Але anyway – виглядає це все дуже прикольно.