Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for MongoDB
  • Начало работы
    • Все инструкции
      • Просмотр логов кластера
      • Диагностика производительности
      • Инструменты для анализа производительности
      • Мониторинг состояния кластера и хостов
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Встроенные утилиты диагностики
  • Профилировщик
  • Выполняемые в данный момент запросы
  • Логи
  1. Пошаговые инструкции
  2. Логи и мониторинг
  3. Инструменты для анализа производительности

Инструменты для анализа производительности

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Встроенные утилиты диагностики
    • Профилировщик
    • Выполняемые в данный момент запросы
  • Логи

Встроенные утилиты диагностикиВстроенные утилиты диагностики

В MongoDB есть утилиты получения данных о производительности:

  • mongostat — собирает статистику утилизации ресурсов CPU и памяти процессами MongoDB,
  • mongotop — собирает статистику чтения/записи данных по каждой коллекции.

При вызове этих утилит используйте строку подключения с логином и паролем пользователя с ролью mdbMonitor, например:

mongostat 5 --uri="mongodb://{<имя_пользователя_с_ролью_mdbMonitor>}:{<пароль>}@{<хост>}:27018/?authSource=admin"
mongotop 5 --uri="mongodb://{<имя_пользователя_с_ролью_mdbMonitor>}:{<пароль>}@{<хост>}:27018/?authSource=admin"

Здесь обе утилиты выводят набор данных о производительности с интервалом опроса (polling interval) в 5 секунд.

Подробнее об использовании утилит monostat и mongotop см. в документации MongoDB.

ПрофилировщикПрофилировщик

В MongoDB есть встроенный профилировщик. Он собирает данные о запросах. Затем на основе этих данных формируется стратегия оптимизации запросов. Работой профилировщика управляют настройки MongoDB, которые вы можете задать при создании кластера или изменении настроек СУБД:

  • operationProfiling.mode;
  • operationProfiling.slowOpThreshold.

Важно

Использование значения all для настройки operationProfiling.mode и близкого к 0 значения для настройки operationProfiling.slowOpThreshold значительно снижает производительность кластера.

Чтобы просмотреть данные, собранные профилировщиком, обратитесь к коллекции system.profile в каждой БД. Коллекции профилировщика доступны для чтения пользователю с ролью mdbMonitor. По умолчанию данные дублируются в логах.

Подробнее о настройке профилировщика и о том, как интерпретировать его результаты, читайте в документации MongoDB.

Выполняемые в данный момент запросыВыполняемые в данный момент запросы

Чтобы посмотреть не относящиеся к текущему пользователю запросы, от имени пользователя с ролью mdbMonitor выполните запрос db.currentOp():

db.currentOp()

Чтобы посмотреть запросы текущего пользователя, выполните запрос db.currentOp() со значением true для настройки ownOps:

db.currentOp({ "$ownOps": true })

ЛогиЛоги

Наиболее подробная информация о работе MongoDB содержится в логах.

Консоль управления
CLI
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
  2. Нажмите на имя нужного кластера и выберите вкладку Логи.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы посмотреть логи Managed Service for MongoDB:

  1. Посмотрите описание команды CLI для просмотра логов:

    yc managed-mongodb cluster list-logs --help
    
  2. Для получения всех логов кластера выполните команду:

    yc managed-mongodb cluster list-logs --id <идентификатор_кластера>
    

    Идентификатор кластера можно получить со списком кластеров в каталоге.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.ListLogs и выполните запрос, например, с помощью cURL:

    curl \
        --request GET \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>:logs' \
        --url-query serviceType=<тип_сервиса> \
        --url-query columnFilter=<список_колонок> \
        --url-query fromTime=<левая_граница_временного_диапазона> \
        --url-query toTime=<правая_граница_временного_диапазона>
    

    Где:

    • serviceType — тип сервиса, логи которого нужно получить:

      • MONGOD — лог операций MongoDB.
      • AUDIT — лог аудита.
    • columnFilter — список колонок для вывода информации:

      • hostname — имя хоста.
      • component — тип компонента, который попадет в лог. Например, HTTP-Session.
      • message — сообщение, которое выводит компонент.
      • query_id — идентификатор запроса.
      • severity — уровень логирования, например, Debug.
      • thread — идентификатор потока, участвующего в обработке запросов.

      В одном параметре columnFilter можно указать только одну колонку. Если необходимо отфильтровать логи по нескольким колонкам, передайте перечень нужных колонок в нескольких параметрах.

      • fromTime — левая граница временного диапазона в формате RFC-3339. Пример: 2006-01-02T15:04:05Z.
      • toTime — правая граница временного диапазона, формат аналогичен fromTime.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.ListLogs и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "service_type": "<тип_сервиса>",
            "column_filter": [
              "<колонка_1>", "<колонка_2>", ..., "<колонка_N>"
            ],
            "from_time": "<левая_граница_временного_диапазона>",
            "to_time": "<правая_граница_временного_диапазона>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.mongodb.v1.ClusterService.ListLogs
    

    Где:

    • service_type — тип сервиса, логи которого нужно получить:

      • MONGOD — лог операций MongoDB.
      • AUDIT — лог аудита.
    • column_filter — список колонок для вывода информации:

      • hostname — имя хоста.
      • component — тип компонента, который попадет в лог. Например, HTTP-Session.
      • message — сообщение, которое выводит компонент.
      • query_id — идентификатор запроса.
      • severity — уровень логирования, например, Debug.
      • thread — идентификатор потока, участвующего в обработке запросов.

      В параметре column_filter можно указать несколько колонок, если нужно отфильтровать логи по нескольким колонкам.

      • from_time — левая граница временного диапазона в формате RFC-3339. Пример: 2006-01-02T15:04:05Z.
      • to_time — правая граница временного диапазона, формат аналогичен from_time.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

Предыдущая
Диагностика производительности
Следующая
Мониторинг состояния кластера и хостов
Проект Яндекса
© 2025 ООО «Яндекс.Облако»