Журналы в Базе данных Azure для PostgreSQL. Отдельный сервер

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

База данных Azure для PostgreSQL — одиночный сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для PostgreSQL — гибкий сервер. Дополнительные сведения о миграции на База данных Azure для PostgreSQL — гибкий сервер см. в статье "Что происходит с одним сервером База данных Azure для PostgreSQL?".

База данных Azure для PostgreSQL позволяет настраивать стандартные журналы Postgres и получать к ним доступ. Они позволяют выявлять и устранять ошибки, связанные с конфигурацией или неоптимальной производительностью. Можно настроить регистрацию в журнале следующей информации и доступ к ней: ошибки, сведения о запросах, записи автоматической очистки, соединения и контрольные точки. (Доступ к журналам транзакций отсутствует.)

Ведение журнала аудита возможно с использованием расширения PostgreSQL, pgaudit. Дополнительные сведения см. в статье Основные понятия аудита.

Настройка журнала

Чтобы настроить ведение стандартного журнала Postgres на своем сервере, нужно задать некоторые параметры. На каждом сервере базы данных Azure для PostgreSQL по умолчанию включены log_checkpoints и log_connections. Чтобы ведение журнала соответствовало вашим требования, можно изменить дополнительные параметры.

База данных Azure для PostgreSQL. Параметры ведения журнала

Дополнительные сведения о параметрах журнала Postgres см. в разделах документации по Postgres о том, когда и что можно записывать в журналы. В Базе данных Azure для PostgreSQL доступно большинство параметров ведения журнала Postgres, но не все.

Дополнительные сведения о настройке параметров в Базе данных Azure для PostgreSQL см. в документации портала или в документации CLI.

Примечание.

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

Доступ к файлам журналов.

По умолчанию форматом журнала в Базе данных Azure для PostgreSQL является .log. Пример строки из этого журнала выглядит следующим образом:

2019-10-14 17:00:03 UTC-5d773cc3.3c-LOG: connection received: host=101.0.0.6 port=34331 pid=16216

База данных Azure для PostgreSQL предоставляет место для кратковременного хранения файлов журнала. Новый файл начинается через каждый 1 час или каждые 100 МБ, в зависимости от того, что происходит первым. Журналы добавляются к текущему файлу по мере их выдачи из Postgres.

Интервал для этого кратковременного хранения журналов можно задать с помощью параметра log_retention_period. Значению по умолчанию соответствует три дня, а максимальному значению семь. В кратковременном хранилище может содержаться до 1 ГБ файлов журнала. По достижении 1 ГБ старые файлы, независимо от срока хранения, будут удалены, чтобы освободить место для новых журналов.

Для долговременного хранения и анализа журналов можно скачать файлы журнала и переместить их в стороннюю службу. Файлы можно загрузить, используя портал Azure или Azure CLI. Либо можно настроить параметры диагностики Azure Monitor для автоматической выдачи журналов (в формате JSON) в места долговременного хранения. Дополнительные сведения об этом параметре см. в разделе ниже.

Создание файлов журнала можно отключить, установив для параметра logging_collector значение OFF. При использовании параметров диагностики Azure Monitor, рекомендуется отключить создание LOG-файла. Такая конфигурация снизит влияние дополнительного ведения журнала на производительность.

Примечание.

Перезапустите сервер, чтобы применить это изменение.

Журналы ресурсов

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

Внимание

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

Настройка параметров диагностики

Активировать параметры диагностики для сервера PostgreSQL можно с помощью портала Azure, интерфейса командной строки, REST API или PowerShell. Необходимо выбрать категорию журналов PostgreSQLLogs. (Существуют и другие журналы, которые можно настроить при использовании хранилища запросов.)

Чтобы включить журналы ресурсов, используя портал Azure, сделайте следующее.

  1. Находясь на портале, в меню навигации своего сервера PostgreSQL выберите Параметры диагностики.
  2. Выберите Добавить параметр диагностики.
  3. Назовите этот параметр.
  4. Выберите предпочтительную конечную точку (учетная запись хранения, концентратор событий, аналитика журналов).
  5. Выберите тип журнала PostgreSQL Server Logs.
  6. Сохраните вашу настройку.

Включение журналов ресурсов с помощью PowerShell, интерфейса командной строки или REST API описано в статье Параметры диагностики.

Доступ к журналам ресурсов

Способ доступа к журналам зависит от выбранной конечной точки. Сведения о службе хранилища Azure см. в разделе об учетной записи хранения журналов. Сведения о Центрах событий см. в статье о потоковой передаче журналов Azure.

Журналы Azure Monitor отправляются в выбранную рабочую область. Журналы Postgres используют режим сбора данных AzureDiagnostics, поэтому их можно запрашивать из таблицы AzureDiagnostics. Поля в таблице описаны ниже. Дополнительные сведения о запросах и оповещениях см. в обзоре Запросы журналов Azure Monitor.

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

Поиск всех журналов PostgreSQL для конкретного сервера за последний день

AzureDiagnostics
| where LogicalServerName_s == "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d) 

Поиск всех попыток соединения, не относящихся к localhost

AzureDiagnostics
| where Message contains "connection received" and Message !contains "host=127.0.0.1"
| where Category == "PostgreSQLLogs" and TimeGenerated > ago(6h)

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

Формат журнала

В следующей таблице описаны поля для типа PostgreSQLLogs. Порядок появления выбранных полей зависит от выбранной конечной точки вывода.

Поле Description
TenantId Идентификатор клиента
SourceSystem Azure
TimeGenerated [UTC] Метка времени, когда журнал был записан в формате UTC
Тип Тип журнала Всегда AzureDiagnostics
SubscriptionId Идентификатор GUID для подписки, принадлежащей серверу
ResourceGroup Имя группы ресурсов, принадлежащей серверу
ResourceProvider Имя поставщика ресурсов. Всегда MICROSOFT.DBFORPOSTGRESQL
ResourceType Servers
ResourceId Универсальный код ресурса (URI)
Ресурс Имя сервера
Категория PostgreSQLLogs
OperationName LogEvent
errorLevel Уровень ведения журнала, например: LOG, ERROR, NOTICE
Сообщение Первичное сообщение журнала
Домен Версия сервера, например: postgres 10
Подробности Второстепенное сообщение журнала (если применимо)
ColumnName Имя столбца (если применимо)
Имя схемы Имя схемы (если применимо)
DatatypeName Имя типа данных (если применимо)
LogicalServerName Имя сервера
_ResourceId Универсальный код ресурса (URI)
Префикс Префикс строки журнала

Следующие шаги