Это старая версия документа!
# 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 ```
— Автор: Даниил Горбенко