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

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

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

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

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

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

Azure Database for PostgreSQL - Logging parameters

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

Дополнительные сведения о настройке параметров в Базе данных Azure для PostgreSQL см. в статье Настройка параметров сервера на портале Azure или Настройка параметров конфигурации сервера с помощью Azure 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. Выберите предпочитаемую конечную точку (учетную запись хранения, центр событий, службу Log Analytics).
  5. Выберите тип журнала PostgreSQLLogs.
  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)

В приведенном выше запросе отобразятся результаты за последние 6 часов для любого журнала сервера Postgres в этой рабочей области.

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

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

Поле Описание
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 Имя столбца (если применимо)
SchemaName Имя схемы (если применимо)
DatatypeName Имя типа данных (если применимо)
LogicalServerName Имя сервера
_ResourceId Универсальный код ресурса (URI)
Prefix Префикс строки журнала

Дальнейшие действия