Инструменты пользователя

Инструменты сайта


database-server-security

Это старая версия документа!


# MessageLog X-Road: настройка и обслуживание

## Что такое MessageLog

MessageLog - база данных PostgreSQL для хранения логов обмена сообщениями X-Road Security Server.

Содержит: - Метаданные запросов/ответов - Тела сообщений (опционально) - Подписи и временные метки

## Конфигурация в local.ini

Файл: `/etc/xroad/conf.d/local.ini`

### Рекомендуемые настройки для production

```ini [message-log] # Хранение в БД только 1 день keep-records-for=1

# Архивирование каждые 2 часа archive-interval=0 0/2 * 1/1 * ? *

# Очистка каждые 3 часа clean-interval=0 0/3 * 1/1 * ? *

# Отключить логирование тел сообщений message-body-logging=false

# Размеры пакетов для обработки clean-transaction-batch=10000 archive-transaction-batch=10000 ```

### Объяснение параметров

Параметр Значение Описание
———-———-———-
`keep-records-for` 1 Срок хранения в БД (дни). После этого записи архивируются в файлы
`archive-interval` `0 0/2 * 1/1 * ? *` Каждые 2 часа архивировать записи
`clean-interval` `0 0/3 * 1/1 * ? *` Каждые 3 часа очищать архивированные записи из БД
`message-body-logging` false Не сохранять тела сообщений (экономия места)
`clean-transaction-batch` 10000 Количество записей для пакетной очистки
`archive-transaction-batch` 10000 Количество записей для пакетного архивирования

## Cron-выражения

Формат: `секунды минуты часы день месяц день_недели`

Примеры: ``` 0 0/2 * 1/1 * ? * # Каждые 2 часа 0 0/3 * 1/1 * ? * # Каждые 3 часа 0 0 */6 * * ? # Каждые 6 часов 0 0 2 * * ? # Ежедневно в 2:00 ```

## Хранение архивов

Архивные файлы автоматически сохраняются в: ``` /var/lib/xroad/ ```

## Проверка работы

### Размер базы данных

```bash sudo -u postgres psql -c «SELECT pg_size_pretty(pg_database_size('messagelog'));» ```

### Количество записей

```bash sudo -u postgres psql -d messagelog -c «SELECT COUNT(*) FROM messagelog;» ```

### Перезапуск для применения настроек

```bash sudo systemctl restart xroad-proxy ```

## Устранение проблем

### База переполнена

```bash # Принудительная очистка старых записей sudo -u postgres psql -d messagelog -c « DELETE FROM messagelog WHERE request_in_ts < NOW() - INTERVAL '1 day';»

# VACUUM после удаления sudo -u postgres psql -d messagelog -c «VACUUM ANALYZE messagelog;»

# Перезапуск сервиса sudo systemctl restart xroad-proxy ```

## Итоговый пример конфигурации

```ini [proxy-ui]

[proxy] allow-get-wsdl-request = true client-http-port = 80 client-https-port = 443

[message-log] keep-records-for=1 archive-interval=0 0/2 * 1/1 * ? * clean-interval=0 0/3 * 1/1 * ? * message-body-logging=false clean-transaction-batch=10000 archive-transaction-batch=10000

[proxy-ui-api] wsdl-validator-command = /usr/share/xroad/wsdlvalidator/bin/wsdlvalidator_wrapper.sh strict-identifier-checks = false ```

— Автор: Даниил Горбенко

database-server-security.1770634657.txt.gz · Последние изменения: 2026/02/09 10:57 — infra