Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Monitoring
  • Начало работы
    • Все инструкции
      • Обзор метрик
      • Поставка системных метрик Linux
      • Поставка метрик пользовательских приложений
      • Поставка метрик HAProxy и других сторонних приложений
      • Поставка метрик с хостов вне Yandex Cloud
      • Запись пользовательских метрик через API
      • Получение списка метрик
      • Выгрузка метрик
      • Экспорт метрик в формате Prometheus
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • История изменений
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Работа с метриками
  3. Поставка метрик пользовательских приложений

Поставка метрик пользовательских приложений

Статья создана
Yandex Cloud
Улучшена
monshq
Обновлена 21 июля 2025 г.

Yandex Unified Agent собирает метрики в формате Prometheus и конвертирует их в формат Yandex Monitoring. При помощи Unified Agent вы сможете собирать метрики любых приложений, которые предоставляют метрики в формате Prometheus.

Для поставки в Yandex Monitoring метрик пользовательских приложений используется вход metrics_pull, который периодически опрашивает приложение по HTTP, ожидая получить метрики в формате Prometheus.

Для примера рассмотрим поставку метрик тестового приложения на Python. Тестовое приложение и Unified Agent могут быть запущены как на разных виртуальных машинах, так и на одной. Если ВМ разные, используемые ими группы безопасности должны разрешать входящий и исходящий трафик на порт 8000 по протоколу TCP.

Пример поставки метрик пользовательского приложенияПример поставки метрик пользовательского приложения

Описанная методика может также применяться для поставки метрик любых пользовательских приложений, использующих клиентские библиотеки Prometheus.

  1. Настройте сервисный аккаунт, от имени которого будут записываться метрики в Yandex Monitoring.

    1. Создайте сервисный аккаунт в каталоге, куда будут записываться метрики и назначьте ему роль monitoring.editor.

    2. Привяжите сервисный аккаунт к виртуальной машине, на которой будет установлен Unified Agent.

  2. Запустите тестовое Python-приложение, предоставляющее метрики в формате Prometheus.

    1. Установите Python-библиотеку prometheus_client, выполнив следующие команды:

      sudo apt install python3-pip
      pip3 install prometheus_client
      
    2. Создайте тестовое Python-приложение, записав в файл example.py следующий код:

      example.py:

      from prometheus_client import start_http_server, Summary
      import random
      import time
      
      # Создайте метрику для отслеживания количества запросов и времени их выполнения.
      REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')
      
      # Декорируйте функцию обработки запроса метрикой.
      @REQUEST_TIME.time()
      def process_request(t):
          """A dummy function that takes some time."""
          time.sleep(t)
      
      if __name__ == '__main__':
          # Запустите HTTP-сервер, чтобы приложение предоставило метрики.
          start_http_server(8000)
          # Сгенерируйте случайные запросы.
          while True:
              process_request(random.random())
      
    3. Запустите тестовое Python-приложение, выполнив следующую команду:

      python3 example.py
      

      Для успешной поставки метрик в Unified Agent тестовое приложение должно оставаться запущенным: не прерывайте его.

    4. Убедитесь, что приложение предоставляет метрики, выполнив команду с указанием публичного IP-адреса вашей ВМ с запущенным приложением:

      curl http://<публичный_адрес_ВМ>:8000
      

      Результат:

      # HELP python_gc_objects_collected_total Objects collected during gc
      # TYPE python_gc_objects_collected_total counter
      python_gc_objects_collected_total{generation="0"} 362.0
      python_gc_objects_collected_total{generation="1"} 0.0
      python_gc_objects_collected_total{generation="2"} 0.0
      # HELP python_gc_objects_uncollectable_total Uncollectable object found during GC
      # TYPE python_gc_objects_uncollectable_total counter
      
  3. Установите и настройте Yandex Unified Agent:

    1. При необходимости установите Docker:

      sudo apt-get install docker.io
      
    2. Создайте в домашнем каталоге файл config.yml.

      config.yml:

       status:
         port: "16241"
      
       storages:
         - name: main
           plugin: fs
           config:
             directory: /var/lib/yandex/unified_agent/main
             max_partition_size: 100mb
             max_segment_size: 10mb
      
       channels:
         - name: cloud_monitoring
           channel:
             pipe:
               - storage_ref:
                   name: main
             output:
               plugin: yc_metrics
               config:
                 folder_id: "<идентификатор_каталога>"
                 iam:
                   cloud_meta: {}
      
       routes:
         - input:
             plugin: metrics_pull
             config:
               url: http://<публичный_адрес_ВМ>:8000/metrics
               format:
                 prometheus: {}
               namespace: app
           channel:
             channel_ref:
               name: cloud_monitoring
      
         - input:
             plugin: agent_metrics
             config:
               namespace: ua
           channel:
             pipe:
               - filter:
                   plugin: filter_metrics
                   config:
                     match: "{scope=health}"
             channel_ref:
               name: cloud_monitoring
      

      Где:

      • folder_id — идентификатор каталога, в который будут записываться метрики.
      • url — публичный адрес ВМ с тестовым приложением, предоставляющим метрики.
    3. Установите Unified Agent, выполнив в домашнем каталоге следующую команду:

      docker run \
      -p 16241:16241 -it --detach --uts=host \
      --name=ua \
      -v /proc:/ua_proc \
      -v $(pwd)/config.yml:/etc/yandex/unified_agent/conf.d/config.yml \
      -e PROC_DIRECTORY=/ua_proc \
      -e FOLDER_ID=<идентификатор_каталога> \
      cr.yandexcloud.kz/yc/unified-agent
      

      Где FOLDER_ID — идентификатор каталога, в который будут записываться метрики.

      Другие способы установки агента описаны в разделе Установка и обновление Yandex Unified Agent.

  4. Убедитесь, что метрики поступают в Yandex Monitoring:

    1. На главной странице сервиса Yandex Monitoring перейдите в раздел Метрики.

    2. В строке запроса выберите:

    • каталог, в который собираются метрики;
    • значение метки Custom Metrics;
    • имя метрики, начинающееся с префикса app.

Что дальшеЧто дальше

  • Изучите концепции Unified Agent
  • Узнайте подробнее о конфигурировании Unified Agent
  • Ознакомьтесь с рекомендациями по эксплуатации Unified Agent

Была ли статья полезна?

Предыдущая
Поставка системных метрик Linux
Следующая
Поставка метрик HAProxy и других сторонних приложений
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»