ПР. Выгрузка метрик в формате Prometheus
Кратко:
- Метрики можно выгружать из Yandex Cloud Monitoring в сторонние приложения и сервисы, включая Prometheus.
- Prometheus - популярный инструмент для мониторинга приложений и сервисов, основанный на специализированной СУБД для анализа временных рядов.
- Prometheus и Yandex Cloud Monitoring решают схожие задачи - хранят значения разных метрик,
- Prometheus является стандартом для обмена метриками.
- Yandex Cloud Monitoring поддерживает выгрузку данных в формате Prometheus с использованием метода prometheusMetrics.
- Для визуализации данных Prometheus можно использовать сервис Grafana.
- В практической работе рекомендуется использовать версию Prometheus 2.X.X.
- Для выгрузки метрик в Prometheus необходимо создать API-ключ через консоль управления Yandex Cloud или CLI, назначить сервисному аккаунту роль monitoring.viewer на выбранный каталог и создать файл спецификации prometheus.yml.
- Запуск сервера Prometheus можно осуществить с помощью Docker-образа prom/prometheus.
Практическая работа. Выгрузка метрик в формате Prometheus
Как мы уже говорили раньше, метрики можно выгружать из Yandex Cloud Monitoring в сторонние приложения и сервисы. Пожалуй, чаще всего их выгружают для сервера Prometheus.
На сегодняшний день Prometheus — один из самых популярных инструментов для мониторинга приложений и сервисов. В основе его лежит специализированная СУБД для анализа временных рядов, которая обеспечивает высокое быстродействие. В отличие от большинства систем мониторинга, Prometheus не ждёт, пока сторонние приложения передадут ему свои метрики, а сам опрашивает подключенные к нему приложения и собирает нужные данные.
Prometheus и Yandex Cloud Monitoring решают схожие задачи — хранят значения разных метрик. Prometheus фактически является стандартом для обмена метриками. Поэтому даже используя сервисы Yandex Cloud, IT-администраторы часто хотят отслеживать их работу с помощью Prometheus. Чтобы не лишать специалистов привычных инструментов, Yandex Cloud Monitoring поддерживает выгрузку данных в формате Prometheus. Для этого используется метод prometheusMetrics.
Для визуализации данных, собираемых Prometheus, можно использовать сервис Grafana (в нем можно зарегистрироваться бесплатно на тестовый период). Вы можете установить Grafana на свой компьютер, а можете работать в облачной версии.
Посмотрим, как происходит выгрузка метрик в Prometheus и работа с ними в Grafana. Вы снова будете мониторить сайт клиники «Доктор Айболит».
💡 Для этой практической работы рекомендуется использовать версию Prometheus 2.X.X.
Подготовка
-
Создайте API-ключ через консоль управления Yandex Cloud или CLI.Если вы создаете ключ в консоли управления, то перейдите в каталог, из которого будете выгружать метрики (например
default). Затем перейдите на вкладку Сервисные аккаунты и выберите существующий аккаунт. Нажмите кнопку Создать новый ключ и выберите Создать API-ключ. В описании ключа можно указать, например, «для доступа к Prometheus». Сохраните секретную часть ключа в отдельный файл, например,prometheus-key.txt. -
Назначьте сервисному аккаунту роль
monitoring.viewerна выбранный каталог. -
Создайте файл спецификации
prometheus.yml(см. пример ниже, замените в нем значение параметраfolderIdна идентификатор каталога, а значение дляbearer_token— на ключ доступа из файлаprometheus-key.txt):global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). rule_files: scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'yc-monitoring-export' metrics_path: '/monitoring/v2/prometheusMetrics' params: folderId: - '<идентификатор_каталога>' service: - 'storage' bearer_token: '<секретная_часть_API-ключа>' static_configs: - targets: ['monitoring.api.cloud.yandex.net'] labels: folderId: '<идентификатор_каталога>' service: 'storage'
Запуск сервера Prometheus
-
Если вы уже работаете с Prometheus, пропустите все шаги по установке — просто добавьте секцию
scrape_configsиз примера выше в спецификацию вашего сервера Prometheus и перезапустите сервер, а затем переходите к настройке Grafana. -
Для запуска сервера Prometheus используйте официальный Docker-образ prom/prometheus.Сначала загрузите образ. Для этого запустите Docker Desktop (в терминале выполните команду):
docker pull prom/prometheus -
Чтобы на сервере сразу был ваш файл спецификации, создайте свой образ на основе
prom/prometheus. ПодготовьтеDockerfileс двумя командами:FROM prom/prometheus ADD prometheus.yml /etc/prometheus/Сохраните этот файл в тот же каталог, где находитсяprometheus.yml. Назовите его именем по умолчанию:Dockerfile. -
В терминале перейдите в каталог с
Dockerfile. Создайте образ с вашей конфигурацией (используйте ваш идентификатор в Yandex Container Registry):docker build . -t cr.yandex/<идентификатор_реестра>/my-prometheus:latest -f Dockerfile -
Аутентифицируйтесь в Yandex Container Registry с помощью Docker Credential helper (чтобы Docker мог от вашего имени отправить образ в ваш реестр):
yc container registry configure-docker -
Теперь отправьте образ в ваше хранилище в облаке:
docker push cr.yandex/<идентификатор_реестра>/my-prometheus:latest -
Создайте виртуальную машину с помощью Container Optimized Image, вы уже делали это раньше в практической работе (в разделе Выбор образа загрузочного диска переключитесь на вкладку Container Solution и нажмите Настроить. Выберите из реестра созданный вами образ, остальные настройки оставьте по умолчанию и нажмите Применить).При создании виртуальной машины используйте ваш сервисный аккаунт. Задайте логин (например
prom) и ssh-ключ.Назовите машину, например,for-prometheus. -
Проверьте статус сервера по адресу.
Через несколько минут после запуска статус процессовhttp://<публичный IP-адрес ВМ с Prometheus>:9090/targetsprometheusиyc-monitoring-exportдолжен статьUP.
-
Подайте нагрузку на ваш сайт:
while true; do wget -q -O- <адрес_сайта>; doneПодождите несколько минут и проверьте, как поставляются метрики в Prometheus.В верхнем меню выберите пункт Graph. Нажмите на значок «Земли». Откроется меню с доступными метриками. Выберите метрику, которую вы хотите проверить, например,trafficи нажмите кнопку Execute.Переключитесь на вкладку Graph. Выберите текущее время, для наглядности уменьшите интервал запроса данных (например до 15 минут). Вскоре вы увидите график изменения выбранной метрики.
Настройка Grafana
-
Теперь посмотрим, как метрики визуализируются в системе Grafana.Если у вас еще нет аккаунта в Grafana, создайте его с помощью нескольких простых шагов, это бесплатно. Вам откроется интерфейс по адресу.
https://<ваш_логин>.grafana.net/
Добавление источника данных
- Настройте Prometheus в качестве источника данных. На главной странице нажмите кнопку Connect data. Из предложенного списка выберите источник
Prometheus data sourceи нажмите кнопку Create Prometheus data source.

-
В следующем окне в поле URL введите endpoint сервера Prometheus.
Больше никакие настройки менять не нужно.http://<публичный IP-адрес ВМ с Prometheus>:9090Внизу нажмите кнопку Save & Test. Должна отобразиться надпись Data source is working.
Добавление дашборда
-
Вернитесь на главную страницу (нажав на логотип в левом верхнем углу) и нажмите Create your first dashboard. Откроется окно настройки дашборда.
-
В нижней части экрана на вкладке Query выберите источник данных — Prometheus.
-
Выберите метрику, которую вы хотите отслеживать. Нажмите на поле Metrics, в открывшемся списке выберите метрику
traffic.Сверху отобразится график выбранной метрики.
-
Вверху справа в поле Panel Title укажите название графика (например, «Трафик сайта»).
-
Теперь сохраните настройки — в правом верхнем углу нажмите кнопку Save и укажите название дашборда (например, «Мой дашборд»).

Вы научились отслеживать метрики Yandex.Cloud не только средствами Yandex Monitoring, но и с помощью сторонних систем, в том числе широко используемых Prometheus и Grafana. Но метрики можно использовать не только для визуальной оценки состояния облака и его ресурсов. В следующих двух уроках мы посмотрим, как можно облегчить работу специалиста DevOps и автоматизировать мониторинг.