Мониторинг и настройка сервера баз данных

Завершено

После переноса локальных баз данных компании в Базу данных Azure для MySQL или PostgreSQL по-прежнему требуется какой-то способ мониторинга их производительности.

Как разработчик базы данных, вы использовали средства для работы с базами данных и локальный мониторинг виртуальных машин. Теперь, когда ваши базы данных работают в Azure, можно использовать единое средство на портале для мониторинга различных баз данных.

В этом модуле вы узнаете, как с помощью Azure Monitor можно отслеживать работоспособность баз данных, которые входят в зону вашей ответственности. Вы узнаете, как в случае обнаружения проблем изменить конфигурацию баз данных, чтобы устранить эти проблемы.

Использование Azure Monitor для наблюдения за работоспособностью баз данных

Используйте Azure Monitor для наблюдения за использованием ресурсов в Базе данных Azure для MySQL или PostgreSQL. На странице Метрики портала Azure для сервера можно создавать диаграммы, которые помогут увидеть изменения в производительности и обнаружить аномалии.

Метрики для Базы данных Azure для MySQL или PostgreSQL

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

  • Метрики хранения
  • Метрики подключения
  • Метрики, показывающие использование ресурсов при обработке данных
  • Метрики репликации

Метрики хранения

Метрики хранилища показывают общий размер баз данных на сервере (Использование хранилища) и текущий объем дискового пространства на сервере (Ограничение хранилища). В активно используемой системе вы, скорее всего, обнаружите, что метрика Использование хранилища со временем будет увеличиваться. Если для сервера настроено автоматическое увеличение хранилища, метрика Ограничение хранилища будет время от времени увеличиваться, когда объем свободного места будет уменьшаться. Дополнительный объем добавляется в хранилище каждый раз, когда объем свободного места становится меньше 5 % текущего занятого объема. С помощью метрики Процентный состав хранилища можно посмотреть соотношение объема используемого пространства к объему свободного пространства на сервере.

Если на сервере регулярно затрачивается время на увеличение хранилища, рекомендуется вручную выделить дополнительное пространство. Для этого на портале Azure откройте страницу Ценовая категория для своего сервера и воспользуйтесь ползунком Хранилище. Помните, что вы платите за объем хранилища, поэтому не устанавливайте для него слишком высокое значение.

Метрика Использование хранилища резервных копий показывает, сколько места занимают ваши резервные копии. Эта метрика важна для оценки затрат. Вы не платите за хранилище резервных копий, если его объем меньше размера дискового пространства, выделенного для сервера (и указанного в соответствующей ценовой категории). При превышении этого объема будет взиматься плата за хранилище резервных копий.

Метрики подключения

Метрика Активные подключения показывает, сколько одновременных подключений в настоящее время поддерживает сервер. Это значение может не совпадать с количеством одновременно работающих пользователей в зависимости от того, было ли настроено объединение подключений в пул. В настоящее время в Базе данных Azure для MySQL или PostgreSQL отсутствует возможность объединять подключения в пул, однако для реализации этой возможности вы можете использовать прокси-службу, например PgBouncer* (для PostgreSQL). Дополнительные сведения см. в статье с рекомендациями по повышению производительности при использовании Базы данных Azure для PostgreSQL путем организации пулов подключений.

Метрика Подключения со сбоем показывает, как часто пользователи вводили неверные учетные данные. Большое количество таких событий за короткий период времени может указывать на атаку методом подбора паролей.

Метрики, показывающие использование ресурсов при обработке данных

Эти метрики помогают следить за тем, как сервер отрабатывает рабочую нагрузку.

Метрика Процент загрузки ЦП показывает, насколько сильно загружен центральный процессор. Высокая загрузка ЦП не является проблемой, если только этот показатель не увеличился со временем. Если загрузка ЦП выше 90 % и продолжает расти, это говорит о том, что ваша система приближается к пределу своей вычислительной мощности. Следует рассмотреть возможность масштабирования системы до ценовой категории, включающей в себя дополнительные ресурсы.

Метрика Процент использования памяти показывает потребление памяти. База данных Azure для MySQL/PostgreSQL использует память для кэширования данных и запуска процессов, инициируемых каждым клиентским запросом. Высокое потребление памяти не является проблемой, пока оно не становится слишком высоким (как правило, больше 95 %) в зависимости от реального объема доступной памяти. Очень малый объем доступной памяти может приводить к сбоям подключений и снижению производительности из-за фрагментации памяти. Эту метрику следует отслеживать, чтобы определить, растет ли потребление памяти с течением времени, и в зависимости от результата масштабировать сервер соответствующим образом.

Метрика Процент ввода-вывода данных показывает интенсивность дисковых операций, выполняемых сервером. В идеале это значение должно быть как можно более низким. Дисковые операции ввода-вывода — это довольно медленные операции. Высокое значение для этой метрики в сочетании с высоким значением метрики Процент использования памяти может указывать на то, что у сервера недостаточно ресурсов для эффективного кэширования данных и он должен обращаться к дисковому накопителю при выполнении операций чтения и записи данных. Определенная активность операций ввода-вывода, безусловно, будет иметь место, так как данные в определенные моменты времени должны сохраняться на диск и должны вестись журналы транзакций. На большинстве серверов баз данных эти операции записи выполняются в отдельном процессе или отдельном, асинхронно выполняющемся потоке.

Метрики Вход сети и Выход сети показывают объем трафика, соответственно, поступающего в сервер и выходящего из сервера через активные соединения. Эти показатели ограничиваются пропускной способностью канала связи между клиентскими приложениями и сервером.

Метрики репликации

У Базы данных Azure для PostgreSQL имеются метрики Максимальная задержка между репликами и Задержка реплики, которые помогают определить, насколько актуальны те или иные реплики. Эти метрики имеют смысл только в том случае, если были настроены реплики только для чтения.

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

Метрика Задержка реплики показывает время (в секундах), которое прошло с момента получения транзакции с главного экземпляра и применения этой транзакции к реплике. Эта метрика имеет смысл только при ее просмотре на реплике.

База данных Azure для MySQL также имеет метрику Задержка репликации в секундах. Эта метрика, которую можно отслеживать только из реплики, показывает разницу во времени (в секундах) между данной репликой и главным экземпляром.

Создание диаграмм и оповещений при мониторинге производительности

На странице Метрики портала Azure для сервера можно создавать диаграммы, которые будут показывать значения метрик. Метрики собираются каждую минуту. Для каждой метрики указывается статистическая схема, которая определяет, каким образом отображается данная метрика.

  • Среднее значение показывает среднее значение метрики в каждую минуту.
  • Максимум показывает максимальное значение, достигнутое в течение каждой минуты.
  • Минимум показывает минимальное значение метрики.
  • Сумма показывает сумму значений метрики.
  • Количество показывает, сколько раз произошло событие, генерирующее метрику.

Не все статистические схемы всегда являются значимыми для метрик.

В примере диаграммы ниже показываются средние поминутные значения таких метрик, как процент загрузки ЦП, процент использования памяти, процент ввода-вывода данных и число активных подключений. Видно, что имеется 101 активное одновременное подключение. Метрики использования ЦП и памяти имеют стабильные значения, а процент ввода-вывода данных равен 0. В этом примере клиентские приложения выполняют рабочие нагрузки с интенсивными операциями чтения данных, а необходимые данные кэшируются в памяти.

Image of the chart showing the values captured for the CPU percent, Memory percent, IO percent, and Active connections metrics

Обратите внимание, что задержка между регистрацией метрик и отображением результатов на диаграмме составляет до пяти минут.

В случае, когда метрика показывает, что соответствующий ресурс достиг критической точки, администратору может быть отправлено настроенное вами оповещение. В приведенном ниже примере администратору отправляется сообщение в случае, если процент использования памяти превышает 90.

Image of the alerts page, showing a new alert that sends an email if memory utilization exceeds 90%

Настройка параметров сервера

Собственные серверы на базе MySQL и PostgreSQL поддерживают гибкую настройку конфигурации, так как параметры конфигурации этих типов серверов хранятся в файлах параметров. Для PostgreSQL эти данные конфигурации хранятся в файле postgresql.conf. Для MySQL данные конфигурации хранятся в различных файлах my.cnf. В Базе данных Azure для MySQL/PostgreSQL у вас нет прямого доступа к этим файлам. Вместо этого параметры сервера можно просматривать и изменять на портале Azure или с помощью интерфейса командной строки Azure (Azure CLI).

Просмотр и установка параметров с помощью портала Azure

Параметры конфигурации сервера доступны на странице Параметры сервера портала Azure. Вы можете изменить значения этих параметров в соответствии с требованиями вашего сервера. На рисунке ниже показана страница параметров сервера для Базы данных Azure для PostgreSQL. Соответствующая страница Базы данных Azure для MySQL имеет аналогичный вид.

Image of the Server parameters page for Azure Database for PostgreSQL

Доступны не все параметры конфигурации сервера, так как управление большей частью этой конфигурации осуществляет служба Azure. Например, недоступны параметры, контролирующие выделение памяти. Кроме того, База данных Azure для MySQL не поддерживает хранилища на базе ISAM, поэтому параметры myisam отсутствуют.

Изменение параметров, помеченных как динамические, вступает в силу немедленно. Изменение параметров, помеченных как статические, требует перезапуска сервера. Это можно сделать на странице Обзор вашего сервера.

Image of the Overview page for Azure Database for PostgreSQL. The Restart button is highlighted

Просмотр и установка параметров с помощью Azure CLI

Просматривать и изменять параметры можно программно с помощью команд az mysql/postgres server configuration. Просмотреть настройки всех параметров конфигурации можно с помощью команды az mysql/postgres server configuration list, а отдельного параметра — с помощью команды az mysql/postgres server configuration show [parameter-name]. В следующем фрагменте кода приведен пример для Базы данных Azure для PostgreSQL.

az postgres server configuration show \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age

Результат должен выглядеть примерно так.

{
  "allowedValues": "0-1000000",
  "dataType": "Integer",
  "defaultValue": "0",
  "description": "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any.",
  "id": "**********************",
  "name": "vacuum_defer_cleanup_age",
  "resourceGroup": "northwindrg",
  "source": "system-default",
  "type": "Microsoft.DBforPostgreSQL/servers/configurations",
  "value": "0"
}

Важный элемент в отображаемых результатах — поле value, которое показывает текущее значение параметра.

Чтобы изменить значение параметра конфигурации, используйте командуaz mysql/postgres server configuration set следующим образом.

az postgres server configuration set \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age \
    --value 5

Если необходимо перезапустить сервер после изменения статического параметра, выполните команду az mysql/postgres server restart.

az postgres server restart \
    --resource-group northwindrg \
    --name northwind101