ПР. Выгрузка метрик в формате 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. Вы снова будете мониторить сайт клиники «Доктор Айболит».

Подготовка

  1. Создайте API-ключ через консоль управления Yandex Cloud или CLI.
    Если вы создаете ключ в консоли управления, то перейдите в каталог, из которого будете выгружать метрики (например default). Затем перейдите на вкладку Сервисные аккаунты и выберите существующий аккаунт. Нажмите кнопку Создать новый ключ и выберите Создать API-ключ. В описании ключа можно указать, например, «для доступа к Prometheus». Сохраните секретную часть ключа в отдельный файл, например, prometheus-key.txt.
  2. Назначьте сервисному аккаунту роль monitoring.viewer на выбранный каталог.
  3. Создайте файл спецификации 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

  1. Если вы уже работаете с Prometheus, пропустите все шаги по установке — просто добавьте секцию scrape_configs из примера выше в спецификацию вашего сервера Prometheus и перезапустите сервер, а затем переходите к настройке Grafana.
  2. Для запуска сервера Prometheus используйте официальный Docker-образ prom/prometheus.
    Сначала загрузите образ. Для этого запустите Docker Desktop (в терминале выполните команду):
    docker pull prom/prometheus
     
  3. Чтобы на сервере сразу был ваш файл спецификации, создайте свой образ на основе prom/prometheus. Подготовьте Dockerfile с двумя командами:
     FROM prom/prometheus
     ADD prometheus.yml /etc/prometheus/ 
     
     
    Сохраните этот файл в тот же каталог, где находится prometheus.yml. Назовите его именем по умолчанию: Dockerfile.
  4. В терминале перейдите в каталог с Dockerfile. Создайте образ с вашей конфигурацией (используйте ваш идентификатор в Yandex Container Registry):
    docker build . -t cr.yandex/<идентификатор_реестра>/my-prometheus:latest -f Dockerfile
     
  5. Аутентифицируйтесь в Yandex Container Registry с помощью Docker Credential helper (чтобы Docker мог от вашего имени отправить образ в ваш реестр):
    yc container registry configure-docker
     
  6. Теперь отправьте образ в ваше хранилище в облаке:
    docker push cr.yandex/<идентификатор_реестра>/my-prometheus:latest
     
  7. Создайте виртуальную машину с помощью Container Optimized Image, вы уже делали это раньше в практической работе (в разделе Выбор образа загрузочного диска переключитесь на вкладку Container Solution и нажмите Настроить. Выберите из реестра созданный вами образ, остальные настройки оставьте по умолчанию и нажмите Применить).
    При создании виртуальной машины используйте ваш сервисный аккаунт. Задайте логин (например prom) и ssh-ключ.
    Назовите машину, например, for-prometheus.
  8. Проверьте статус сервера по адресу.
    http://<публичный IP-адрес ВМ с Prometheus>:9090/targets
     Через несколько минут после запуска статус процессов prometheus и yc-monitoring-export должен стать UP.
    image
  9. Подайте нагрузку на ваш сайт:
    while true; do wget -q -O- <адрес_сайта>; done
     
    Подождите несколько минут и проверьте, как поставляются метрики в Prometheus.
    В верхнем меню выберите пункт Graph. Нажмите на значок «Земли». Откроется меню с доступными метриками. Выберите метрику, которую вы хотите проверить, например, traffic и нажмите кнопку Execute.
    Переключитесь на вкладку Graph. Выберите текущее время, для наглядности уменьшите интервал запроса данных (например до 15 минут). Вскоре вы увидите график изменения выбранной метрики.
    image

Настройка Grafana

  1. Теперь посмотрим, как метрики визуализируются в системе Grafana.
    Если у вас еще нет аккаунта в Grafana, создайте его с помощью нескольких простых шагов, это бесплатно. Вам откроется интерфейс по адресу.
    https://<ваш_логин>.grafana.net/
Добавление источника данных
  1. Настройте Prometheus в качестве источника данных. На главной странице нажмите кнопку Connect data. Из предложенного списка выберите источник Prometheus data source и нажмите кнопку Create Prometheus data source.
image
  1. В следующем окне в поле URL введите endpoint сервера Prometheus. 
    http://<публичный IP-адрес ВМ с Prometheus>:9090
    Больше никакие настройки менять не нужно.
    Внизу нажмите кнопку Save & Test. Должна отобразиться надпись Data source is working.
Добавление дашборда
  1. Вернитесь на главную страницу (нажав на логотип в левом верхнем углу) и нажмите Create your first dashboard. Откроется окно настройки дашборда.
  2. В нижней части экрана на вкладке Query выберите источник данных — Prometheus.
  3. Выберите метрику, которую вы хотите отслеживать. Нажмите на поле Metrics, в открывшемся списке выберите метрику traffic.
    Сверху отобразится график выбранной метрики.
    image
  4. Вверху справа в поле Panel Title укажите название графика (например, «Трафик сайта»).
  5. Теперь сохраните настройки — в правом верхнем углу нажмите кнопку Save и укажите название дашборда (например, «Мой дашборд»).
image
Вы научились отслеживать метрики Yandex.Cloud не только средствами Yandex Monitoring, но и с помощью сторонних систем, в том числе широко используемых Prometheus и Grafana. Но метрики можно использовать не только для визуальной оценки состояния облака и его ресурсов. В следующих двух уроках мы посмотрим, как можно облегчить работу специалиста DevOps и автоматизировать мониторинг.