Серверные журналы описывают работу самого процесса Stronghold: запуск, распечатывание, выборы лидера Raft, ошибки плагинов и подключений. Они не заменяют журналы аудита, в которых фиксируются запросы клиентов.
Уровни логирования
Уровень задаётся параметром log_level в конфигурационном файле или переменной окружения VAULT_LOG_LEVEL. Оба способа описаны в разделе «Настройка». Поддерживаемые значения в порядке возрастания подробности:
| Уровень | Когда использовать |
|---|---|
error | Только ошибки |
warn | Ошибки и предупреждения |
info | Значение по умолчанию. Штатная работа, в том числе в production |
debug | Диагностика проблем, кратковременно |
trace | Детальная диагностика, кратковременно. Создаёт большой объём записей |
В DP параметр log_level в конфигурации модуля не задан, поэтому используется уровень по умолчанию (info). Чтобы временно повысить его, используйте эндпоинт /sys/loggers.
Не оставляйте уровни debug и trace включёнными надолго: они увеличивают объём журналов и нагрузку на диск.
Формат журналов
Параметр log_format принимает значения standard (по умолчанию) и json. Для отправки журналов в систему централизованного логирования используйте формат json:
log_level = "info"
log_format = "json"Пример записи в формате JSON:
{"@level":"info","@message":"attempting to join possible raft leader node","@module":"core","@timestamp":"2025-10-20T10:54:02.578963Z","leader_addr":"https://stronghold-0.stronghold-internal:8300"}В DP в конфигурации модуля зашито значение log_format = "json".
Чтобы писать журналы в файл, задайте параметр log_file и параметры ротации log_rotate_duration, log_rotate_bytes, log_rotate_max_files.
Просмотр журналов
- Stronghold в Linux
- Stronghold в DP
При запуске через systemd-unit stronghold.service журналы попадают в journald:
journalctl -u stronghold.service -fЖурналы за определённый период:
journalctl -u stronghold.service --since "1 hour ago"Stronghold работает в неймспейсе d8-stronghold. Чтобы получить список подов, выполните команду:
d8 k -n d8-stronghold get pods -o wideВ поде stronghold-N есть контейнер stronghold, sidecar kube-rbac-proxy (метрики) и, если задан параметр модуля plugins, init-контейнер plugin-fetcher, который загружает плагины. Основной контейнер указывается через -c:
d8 k -n d8-stronghold logs stronghold-0 -c stronghold -fЖурналы предыдущего экземпляра контейнера после перезапуска:
d8 k -n d8-stronghold logs stronghold-0 -c stronghold --previousЧтобы получить журналы активного узла (например, при диагностике ошибок автоматических снимков), используйте сервис stronghold-active:
d8 k -n d8-stronghold logs svc/stronghold-active -c strongholdИзменение уровня логирования
Через конфигурационный файл
Измените значение
log_levelв конфигурационном файле.Отправьте процессу сигнал
SIGHUP:systemctl reload strongholdКоманда использует
ExecReload=/bin/kill -HUP $MAINPIDиз systemd-unit. При полученииSIGHUPуровень логирования обновляется, флаги CLI и переменные окружения игнорируются. Не все подсистемы (например, плагины) поддерживают динамическое изменение уровня.
Через API без перезапуска
Эндпоинт /sys/loggers меняет уровень логирования на работающем узле. Запрос применяется к узлу, на который он отправлен.
Повысить уровень для всех подсистем:
curl --header "X-Vault-Token: ${STRONGHOLD_TOKEN}" --request POST --data '{"level": "debug"}' "${STRONGHOLD_ADDR}/v1/sys/loggers"Повысить уровень для одной подсистемы (например, core):
curl --header "X-Vault-Token: ${STRONGHOLD_TOKEN}" --request POST --data '{"level": "trace"}' "${STRONGHOLD_ADDR}/v1/sys/loggers/core"Вернуть уровень из конфигурации:
curl --header "X-Vault-Token: ${STRONGHOLD_TOKEN}" --request DELETE "${STRONGHOLD_ADDR}/v1/sys/loggers"Имена подсистем совпадают с именами логгеров в строках журнала (например, core, expiration, raft, audit). Актуальный список для узла возвращает GET /v1/sys/loggers.
Потоковый просмотр журналов
Команда d8 stronghold monitor подключается к эндпоинту /sys/monitor и выводит журналы узла в реальном времени с заданным уровнем, не меняя конфигурацию:
d8 stronghold monitor -log-level=debug