Здесь показаны различия между двумя версиями данной страницы.
| Следующая версия | Предыдущая версия | ||
|
database-server-security [2026/02/09 10:57] infra создано |
database-server-security [2026/02/09 11:02] (текущий) infra |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | # MessageLog X-Road: настройка и обслуживание | + | ====== MessageLog X-Road: настройка и обслуживание ====== |
| - | + | ||
| - | ## Что такое MessageLog | + | |
| MessageLog - база данных PostgreSQL для хранения логов обмена сообщениями X-Road Security Server. | MessageLog - база данных PostgreSQL для хранения логов обмена сообщениями X-Road Security Server. | ||
| **Содержит:** | **Содержит:** | ||
| - | - Метаданные запросов/ответов | + | * Метаданные запросов/ответов |
| - | - Тела сообщений (опционально) | + | * Тела сообщений (опционально) |
| - | - Подписи и временные метки | + | * Подписи и временные метки |
| - | ## Конфигурация в local.ini | + | ==== Конфигурация ==== |
| - | Файл: `/etc/xroad/conf.d/local.ini` | + | Файл: /etc/xroad/conf.d/local.ini |
| - | ### Рекомендуемые настройки для production | + | === Рекомендуемые настройки === |
| - | ```ini | + | <code> |
| [message-log] | [message-log] | ||
| - | # Хранение в БД только 1 день | ||
| keep-records-for=1 | keep-records-for=1 | ||
| - | |||
| - | # Архивирование каждые 2 часа | ||
| archive-interval=0 0/2 * 1/1 * ? * | archive-interval=0 0/2 * 1/1 * ? * | ||
| - | |||
| - | # Очистка каждые 3 часа | ||
| clean-interval=0 0/3 * 1/1 * ? * | clean-interval=0 0/3 * 1/1 * ? * | ||
| - | |||
| - | # Отключить логирование тел сообщений | ||
| message-body-logging=false | message-body-logging=false | ||
| - | |||
| - | # Размеры пакетов для обработки | ||
| clean-transaction-batch=10000 | clean-transaction-batch=10000 | ||
| archive-transaction-batch=10000 | archive-transaction-batch=10000 | ||
| - | ``` | + | </code> |
| - | ### Объяснение параметров | + | === Параметры === |
| - | | Параметр | Значение | Описание | | + | ^ Параметр ^ Значение ^ Описание ^ |
| - | |----------|----------|----------| | + | | keep-records-for | 1 | Срок хранения в БД (дни) | |
| - | | `keep-records-for` | 1 | Срок хранения в БД (дни). После этого записи архивируются в файлы | | + | | archive-interval | 0 0/2 * 1/1 * ? * | Каждые 2 часа архивировать | |
| - | | `archive-interval` | `0 0/2 * 1/1 * ? *` | Каждые 2 часа архивировать записи | | + | | clean-interval | 0 0/3 * 1/1 * ? * | Каждые 3 часа очищать БД | |
| - | | `clean-interval` | `0 0/3 * 1/1 * ? *` | Каждые 3 часа очищать архивированные записи из БД | | + | | message-body-logging | false | Не сохранять тела сообщений | |
| - | | `message-body-logging` | false | Не сохранять тела сообщений (экономия места) | | + | | clean-transaction-batch | 10000 | Размер пакета очистки | |
| - | | `clean-transaction-batch` | 10000 | Количество записей для пакетной очистки | | + | | archive-transaction-batch | 10000 | Размер пакета архивирования | |
| - | | `archive-transaction-batch` | 10000 | Количество записей для пакетного архивирования | | + | |
| - | ## Cron-выражения | + | === Cron-выражения === |
| - | Формат: `секунды минуты часы день месяц день_недели` | + | Формат: секунды минуты часы день месяц день_недели |
| **Примеры:** | **Примеры:** | ||
| - | ``` | + | * 0 0/2 * 1/1 * ? * — Каждые 2 часа |
| - | 0 0/2 * 1/1 * ? * # Каждые 2 часа | + | * 0 0/3 * 1/1 * ? * — Каждые 3 часа |
| - | 0 0/3 * 1/1 * ? * # Каждые 3 часа | + | * 0 0 */6 * * ? — Каждые 6 часов |
| - | 0 0 */6 * * ? # Каждые 6 часов | + | * 0 0 2 * * ? — Ежедневно в 2:00 |
| - | 0 0 2 * * ? # Ежедневно в 2:00 | + | |
| - | ``` | + | |
| - | ## Хранение архивов | + | <note important>Архивные файлы автоматически сохраняются в директории /var/lib/xroad/</note> |
| - | Архивные файлы автоматически сохраняются в: | + | ==== Проверка работы ==== |
| - | ``` | + | |
| - | /var/lib/xroad/ | + | |
| - | ``` | + | |
| - | ## Проверка работы | + | Размер базы данных: |
| - | + | <code> | |
| - | ### Размер базы данных | + | |
| - | + | ||
| - | ```bash | + | |
| sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('messagelog'));" | sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('messagelog'));" | ||
| - | ``` | + | </code> |
| - | ### Количество записей | + | Количество записей: |
| - | + | <code> | |
| - | ```bash | + | |
| sudo -u postgres psql -d messagelog -c "SELECT COUNT(*) FROM messagelog;" | sudo -u postgres psql -d messagelog -c "SELECT COUNT(*) FROM messagelog;" | ||
| - | ``` | + | </code> |
| - | + | ||
| - | ### Перезапуск для применения настроек | + | |
| - | ```bash | + | Применение настроек: |
| + | <code> | ||
| sudo systemctl restart xroad-proxy | sudo systemctl restart xroad-proxy | ||
| - | ``` | + | </code> |
| - | ## Устранение проблем | + | ==== Устранение проблем ==== |
| - | ### База переполнена | + | При переполнении БД: |
| - | ```bash | + | <code> |
| - | # Принудительная очистка старых записей | + | # Очистка старых записей |
| - | sudo -u postgres psql -d messagelog -c " | + | sudo -u postgres psql -d messagelog -c "DELETE FROM messagelog WHERE request_in_ts < NOW() - INTERVAL '1 day';" |
| - | DELETE FROM messagelog | + | |
| - | WHERE request_in_ts < NOW() - INTERVAL '1 day';" | + | |
| - | # VACUUM после удаления | + | # VACUUM |
| sudo -u postgres psql -d messagelog -c "VACUUM ANALYZE messagelog;" | sudo -u postgres psql -d messagelog -c "VACUUM ANALYZE messagelog;" | ||
| - | # Перезапуск сервиса | + | # Перезапуск |
| sudo systemctl restart xroad-proxy | sudo systemctl restart xroad-proxy | ||
| - | ``` | + | </code> |
| - | ## Итоговый пример конфигурации | + | ==== Полный пример конфигурации ==== |
| - | ```ini | + | <code> |
| [proxy-ui] | [proxy-ui] | ||
| Строка 123: | Строка 99: | ||
| wsdl-validator-command = /usr/share/xroad/wsdlvalidator/bin/wsdlvalidator_wrapper.sh | wsdl-validator-command = /usr/share/xroad/wsdlvalidator/bin/wsdlvalidator_wrapper.sh | ||
| strict-identifier-checks = false | strict-identifier-checks = false | ||
| - | ``` | + | </code> |
| + | |||
| + | ---- | ||
| - | --- | + | Автор Даниил Горбенко |
| - | Автор: Даниил Горбенко | + | |