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

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

  • Активировать сбор статистики
  • Получить статистику по сессиям
  • Получить статистику по запросам
  • Получить информацию о плане выполнения запроса
  1. Пошаговые инструкции
  2. Логи и мониторинг
  3. Диагностика производительности

Диагностика производительности в Managed Service for PostgreSQL

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

Managed Service for PostgreSQL предоставляет встроенный инструмент для диагностики производительности кластера СУБД. Этот инструмент помогает анализировать метрики производительности PostgreSQL для сессий и запросов.

О том, как выявить и устранить проблемы с производительностью кластера, см. в разделах Анализ производительности и оптимизация и Поиск проблем с производительностью кластера.

Активировать сбор статистикиАктивировать сбор статистики

Консоль управления
CLI
Terraform
REST API
gRPC API

Включите опцию Сбор статистики при создании кластера или изменении его настроек (по умолчанию опция отключена).

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

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

Чтобы включить сбор статистики, передайте параметр --performance-diagnostics в команде изменения кластера:

yc managed-postgresql cluster update <имя_или_идентификатор_кластера> \
    ...
    --performance-diagnostics enabled=true,`
                             `sessions-sampling-interval=<интервал_сбора_сессий>,`
                             `statements-sampling-interval=<интервал_сбора_запросов> \
    ...

Допустимые значения параметров:

  • sessions-sampling-interval — от 1 до 86400 секунд.
  • statements-sampling-interval — от 60 до 86400 секунд.
  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Чтобы настроить сбор статистики, добавьте в блок config блок performance_diagnostics:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      config {
        ...
        performance_diagnostics {
          enabled                      = <активация_сбора_статистики>
          sessions_sampling_interval   = <интервал_сбора_сессий>
          statements_sampling_interval = <интервала_сбора_запросов>
        }
        ...
      }
      ...
    }
    

    Где:

    • enabled — активация сбора статистики: true или false.
    • sessions_sampling_interval — интервал сбора сессий от 1 до 86400 секунд.
    • statements_sampling_interval — интервала сбора запросов от 60 до 86400 секунд.
  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for PostgreSQL:

    • создание, в том числе путем восстановления из резервной копии, — 30 минут;
    • изменение — 60 минут;
    • удаление — 15 минут.

    Операции, длящиеся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Чтобы включить сбор статистики при создании кластера:

    1. Воспользуйтесь методом Cluster.Create и добавьте параметр configSpec.performanceDiagnostics в команду cURL по созданию кластера:

      curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters' \
        --data '{
                  "configSpec": {
                    "performanceDiagnostics": {
                      "enabled": <активация_сбора_статистики:_true_или_false>,
                      "sessionsSamplingInterval": "<интервал_сбора_сессий>",
                      "statementsSamplingInterval": "<интервала_сбора_запросов>"
                    },
                    ...
                  },
                  ...
                }'
      

      Где configSpec.performanceDiagnostics — настройки сбора статистики:

      • enabled — активация сбора статистики.
      • sessionsSamplingInterval — интервал сбора сессий. Допустимые значения — от 1 до 86400 секунд.
      • statementsSamplingInterval — интервал сбора запросов. Допустимые значения — от 60 до 86400 секунд.
    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  3. Чтобы включить сбор статистики при изменении существующего кластера:

    1. Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL:

      Важно

      Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

      curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>' \
        --data '{
                  "updateMask": "configSpec.performanceDiagnostics",
                  "configSpec": {
                    "performanceDiagnostics": {
                      "enabled": <активация_сбора_статистики:_true_или_false>,
                      "sessionsSamplingInterval": "<интервал_сбора_сессий>",
                      "statementsSamplingInterval": "<интервала_сбора_запросов>"
                    }
                  }
                }'
      

      Где configSpec.performanceDiagnostics — настройки сбора статистики:

      • enabled — активация сбора статистики.
      • sessionsSamplingInterval — интервал сбора сессий. Допустимые значения — от 1 до 86400 секунд.
      • statementsSamplingInterval — интервал сбора запросов. Допустимые значения — от 60 до 86400 секунд.
    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

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

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

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

  3. Чтобы включить сбор статистики при создании кластера:

    1. Воспользуйтесь методом ClusterService.Create и добавьте параметр config_spec.performance_diagnostics в команду grpcurl по созданию кластера:

      grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "config_spec": {
                "performance_diagnostics": {
                  "enabled": <активация_сбора_статистики:_true_или_false>,
                  "sessions_sampling_interval": "<интервал_сбора_сессий>",
                  "statements_sampling_interval": "<интервала_сбора_запросов>"
                },
                ...
              },
              ...
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.postgresql.v1.ClusterService.Create
      

      Где config_spec.performance_diagnostics — настройки сбора статистики:

      • enabled — активация сбора статистики.
      • sessions_sampling_interval — интервал сбора сессий. Допустимые значения — от 1 до 86400 секунд.
      • statements_sampling_interval — интервал сбора запросов. Допустимые значения — от 60 до 86400 секунд.
    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  4. Чтобы включить сбор статистики при изменении существующего кластера:

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

      Важно

      Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре update_mask (в виде массива строк paths[]).

      Формат перечисления настроек
      "update_mask": {
          "paths": [
              "<настройка_1>",
              "<настройка_2>",
              ...
              "<настройка_N>"
          ]
      }
      
      grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "update_mask": {
                "paths": [
                  "config_spec.performance_diagnostics"
                ]
              },
              "config_spec": {
                "performance_diagnostics": {
                  "enabled": <активация_сбора_статистики:_true_или_false>,
                  "sessions_sampling_interval": "<интервал_сбора_сессий>",
                  "statements_sampling_interval": "<интервала_сбора_запросов>"
                }
              }
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.postgresql.v1.ClusterService.Update
      

      Где config_spec.performance_diagnostics — настройки сбора статистики:

      • enabled — активация сбора статистики.
      • sessions_sampling_interval — интервал сбора сессий. Допустимые значения — от 1 до 86400 секунд.
      • statements_sampling_interval — интервал сбора запросов. Допустимые значения — от 60 до 86400 секунд.
    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Получить статистику по сессиямПолучить статистику по сессиям

Консоль управления
gRPC API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Нажмите на имя нужного кластера и выберите вкладку Диагностика производительности → Сессии.

Для просмотра статистики по сессиям:

  1. Задайте интересующий временной интервал.
  2. (Опционально) Настройте фильтры.
  3. Выберите нужный срез данных.

Чтобы показать или скрыть отдельные категории, нажмите на имя категории в легенде графика.

Для просмотра истории запросов в рамках сессии:

  1. Задайте интересующий временной интервал.
  2. (Опционально) Настройте фильтры.
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/perf_diag_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "from_time": "<левая_граница_временного_диапазона>",
            "to_time": "<правая_граница_временного_диапазона>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.PerformanceDiagnosticsService.ListRawSessionStates
    

    Где:

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

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

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

Подробнее про отображаемые сведения см. в документации PostgreSQL.

Получить статистику по запросамПолучить статистику по запросам

Консоль управления
gRPC API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Нажмите на имя нужного кластера и выберите вкладку Диагностика производительности → Запросы.

Для просмотра статистики запросов за интервал:

  1. Выберите интересующий временной интервал.
  2. (Опционально) Настройте фильтры.

Чтобы получить сведения об относительном изменении статистических характеристик запросов:

  1. В поле Интервал 1 выберите временной интервал, статистика за который будет основой для расчетов.
  2. В поле Интервал 2 выберите временной интервал, статистика за который будет сравниваться со статистикой первого интервала.
  3. (Опционально) Настройте фильтры.

Например, пусть в первом интервале было выполнено 10 запросов SELECT * FROM cities, а во втором — 20. Тогда при сравнении статистических данных разница по метрике количество запросов (столбец Calls в таблице) будет равняться +100%.

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/perf_diag_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "from_time": "<левая_граница_временного_диапазона>",
            "to_time": "<правая_граница_временного_диапазона>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.PerformanceDiagnosticsService.ListRawStatements
    

    Где:

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

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

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

Подробнее про отображаемые сведения см. в документации расширений pg_stat_statements и pg_stat_kcache.

Получить информацию о плане выполнения запросаПолучить информацию о плане выполнения запроса

Модуль auto_explain позволяет логировать план выполнения медленных запросов автоматически, обходясь без команды EXPLAIN. Это полезно для отслеживания неоптимизированных запросов. Логирование выполняется в общий лог PostgreSQL.

Чтобы включить логирование запросов, измените настройки СУБД:

  1. В поле Shared preload libraries выберите значение auto_explain.

  2. Включите настройку Auto explain log analyze.

  3. Задайте настройки модуля auto_explain:

    Важно

    Установка значения 0 для настройки Auto explain log min duration или включение настройки Auto explain log timing могут существенно снизить производительность кластера.

    • Auto explain log buffers
    • Auto explain log min duration
    • Auto explain log nested statements
    • Auto explain log timing
    • Auto explain log triggers
    • Auto explain log verbose
    • Auto explain sample rate

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

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