Мониторинг и настройка сервера базы данных
После переноса локальных баз данных в Базу данных 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%, в зависимости от фактического объема доступной памяти. Очень низкая доступность памяти может привести к сбоям подключения и замедлению производительности из-за фрагментации памяти. Эту метрику следует отслеживать, чтобы определить, растет ли заполнение памяти со временем и масштабируйте сервер соответствующим образом.
Метрика процента операций ввода-вывода отслеживает объем действия диска, выполняемого сервером. В идеале это значение должно быть максимально низким. Операцией ввода-вывода на диске является медленная операция. Большое значение этой метрики в сочетании с высоким значением для процента памяти, может указывать на то, что сервер имеет недостаточно ресурсов для эффективного кэширования данных, а вместо этого требуется считывать и записывать данные в хранилище дисков. Степень активности ввода-вывода неизбежна, так как данные должны храниться на диске в какой-то момент, а журналы транзакций должны поддерживаться. В большинстве серверов баз данных эта запись выполняется отдельным процессом или потоком, который выполняется асинхронно.
Метрики Network In и Network Out показывают объем трафика, входящего и выходя из сервера через активные подключения. Ограничения этих цифр определяются пропускной способностью пути между клиентскими приложениями и сервером.
Метрики репликации
База данных Azure для PostgreSQL предоставляет метрики максимальной задержки между репликами, а также метрики реплики реплик, которые помогут определить, как актуальны все реплики. Эти метрики имеют смысл только в том случае, если вы настроили реплики только для чтения.
Метрика максимальной задержки между репликами показывает, сколько байтов является самой медленной репликой за главной. Эту метрику можно отслеживать только из главного объекта.
Метрика реплики показывает время в секундах, так как последняя транзакция была получена от главного и применена к реплике. Эта метрика имеет смысл только при просмотре на реплике.
База данных Azure для MySQL имеет задержку репликации в секундах метрики. Эта метрика, которую можно отслеживать только из реплики, показывает количество секунд, по которым реплика отстает от главного.
Создание диаграмм и оповещений для мониторинга производительности
Страница метрик сервера на портале Azure позволяет создавать диаграммы, отслеживающие значения метрик. Метрики собираются в течение одной минуты. Для каждой метрики указывается агрегат, определяющий, как сообщить об этой метрии.
- Средняя создает среднее значение для метрики за каждую минуту.
- Max показывает максимальное значение, достигнутое в течение каждой минуты
- Мин отображает наименьшее значение
- Сумм суммирует метрику
- счетчик показывает, сколько раз произошло событие, создающее метрику
Не все агрегаты обязательно имеют смысл для каждой метрики.
На приведенной ниже диаграмме приведены средние значения по минуте для метрик ЦП, процента памяти, операций ввода-вывода и метрики активных подключений. Вы увидите, что есть 101 активных подключений, работающих одновременно. Загрузка ЦП и памяти стабильна, а процент операций ввода-вывода составляет 0. В этом примере клиентские приложения выполняют рабочие нагрузки с интенсивным чтением и необходимые данные кэшируются в памяти.
Обратите внимание, что между метриками, которые фиксируются, и результаты, отображаемые на диаграмме, возникают задержки до пяти минут.
Если метрика указывает, что ресурс достигает критической точки, вы можете настроить оповещение, чтобы уведомить администратора. Приведенный ниже пример отправляет администратору сообщение электронной почты, если использование памяти превышает 90 процентов.
Настройка параметров сервера
Собственные серверы MySQL и PostgreSQL очень настраиваются, так как используют параметры конфигурации, хранящиеся в файлах параметров. Для PostgreSQL эти сведения хранятся в файле postgresql.conf. Для MySQL данные конфигурации хранятся в различных файлах my.cnf. В Базе данных Azure для MySQL или PostgreSQL нет прямого доступа к этим файлам. Вместо этого вы просматриваете и изменяете параметры сервера с помощью портала Azure или Azure CLI.
Просмотр и настройка параметров с помощью портала Azure
Параметры конфигурации сервера доступны на странице параметров сервера на портале Azure. Значения параметров можно изменить соответствующим образом для сервера. На рисунке ниже показана страница параметров сервера для Базы данных Azure для PostgreSQL. Соответствующая страница базы данных Azure для MySQL аналогична.
Не все параметры конфигурации сервера доступны, так как большая часть конфигурации сервера управляется Azure. Например, отсутствуют параметры, связанные с выделением памяти. Кроме того, База данных Azure для MySQL не поддерживает хранилище ISAM, поэтому параметры myisam нет.
Изменения параметров, помеченных как динамических, вступают в силу немедленно. Параметры, помеченные как статических, требуют перезапуска сервера. Это можно сделать на странице обзора сервера.
Просмотр и настройка параметров с помощью 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"
}
Важным элементом в выходных данных является поле значение, в котором показан текущий параметр параметра.
Используйте команду 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