Ще один цікавий анонс з останнього 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 на проекті.
Зміст
Підключення метрик з vanilla Prometheus
Є Prometheus на голому EC2 інстансі, на якому відкрито порт 9090 – спочатку спробуємо тут, потім глянемо на VictoriaMetrcis в EKS.
Переходимо в CloudWatch Metrics, тепер маємо нову вкладку Multi source query:
Задаємо параметри.
Поля логін-пароль обов’язкові, тож навіть якщо 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 – виглядає це все дуже прикольно.