Проект журнала отвечает на три вопроса: какой процесс создал запись, где эта запись оказывается и сколько она живёт. OpenVPN может писать в файл, передавать сообщения системному логгеру или оставлять их тому, что перехватит менеджер служб, и это не три копии одного потока. Каждый выбор меняет, кто владеет ротацией, какой пользователь может прочитать результат и что происходит при запуске. Решите эти вопросы до инцидента, потому что после него вы унаследуете то, что настроено.

Что демон на самом деле делает с директивой

Директивы не абстракции; каждая решает, куда процесс пишет свои сообщения. log /path открывает этот файл, log-append /path открывает его для дописывания, а syslog передаёт сообщения локальному системному логгеру через свой сокет. Без любой из них вывод идёт на стандартный вывод, и менеджер служб решает, что будет дальше. Прочитайте действующий юнит и профиль вместе, прежде чем заключить, что демон игнорирует вашу конфигурацию.

Последний случай типичен для пакетной установки, и он объясняет, почему два администратора расходятся во мнении о месте журнала. Один читает журнал юнита, другой файл, который демон никогда не писал.

Проверяйте работающую конфигурацию, а не файл на диске. Перекрытие юнита типа drop-in или файл окружения могут изменить действующую директиву, не затрагивая профиль, который вы читаете.

log обрезает, log-append нет

log обрезает существующий файл, когда директива вступает в силу, поэтому перезапуск стирает доказательства до него. log-append сохраняет то, что есть, и дописывает. Ни один вариант ничего не ротирует, и ни один сам не открывает файл заново позже, поэтому ротация требует сотрудничества.

Если ротация переименует файл, пока демон продолжает писать в старый дескриптор, новый файл останется пустым, а расход диска продолжит расти в переименованном. Пошлите процессу сигнал открыть заново или ротируйте стратегией копируй-и-обрезай и примите окно копирования.

Каталог, владелец и права — часть проекта. Демон может после запуска работать как непривилегированный пользователь, а каталог, созданный root при установке, тогда может быть незаписываемым. Подготовьте его через пакетирование или процесс развёртывания, вместо того чтобы исправлять права во время инцидента.

Менеджер служб держит вторую копию

systemd по умолчанию перехватывает стандартный вывод и стандартную ошибку, поэтому юнит без явного перенаправления уже имеет журнал. Добавление файловой директивы даёт два потока с разным хранением, разными читателями и разными метками времени.

Это не автоматически неправильно, но должно быть решением. Оставьте запись о запуске в журнале, потому что сбои до появления настроенного файла больше нигде не видны. Затем сделайте файл авторитетным для событий в установившемся режиме и скажите это в runbook. Два авторитетных потока означают два ответа на каждый вопрос.

Подтвердите выбор тестом, который намеренно падает. Запустите демон с нечитаемым сертификатом и проверьте, какой поток фиксирует ошибку.

Подробность — не то же самое, что пригодная для использования деталь

Более высокий уровень verb добавляет больше строк, а после определённой границы строк, которые никто не читает. Уровень 3 — разумный установившийся режим для большинства развёртываний, тогда как уровень 4 и выше подходит для ограниченного расследования с известным вопросом. Подавление повторов снижает шум, но не должно скрывать, как часто событие повторяется. Установите уровень, который можете выдержать, и поднимайте его только для названного расследования с концом.

Сохраняйте идентичность инстанса и метки времени в записи. Повторное подключение выглядит точно как первое, когда файл дополняется месяцами, а имени инстанса нет.

Следите, что ещё попадает в этот файл. Перенаправленный вывод может содержать текст вызванных скриптов, а вспомогательная программа, печатающая своё окружение, кладёт учётные данные и пути к ключам в читаемый журнал. Относитесь к доступу к журналу как к решению безопасности, даже когда сам демон ничего чувствительного не печатает.

Ротация, хранение и сигналы, которые перезагружают

Определите срок хранения вместе с владельцем диска и установите его до того, как том решит за вас. Сигнал перезагрузки не является командой обслуживания журнала: неверный сигнал перезапускает туннель и отключает каждого пользователя. Запишите процедуру повторного открытия рядом с правилом ротации, чтобы они не разошлись.

Результатом должна быть служба, которую оператор может описать: один авторитетный поток, каждое событие размещено в жизненном цикле и запись, доступная без сбора каждого файла с секретами на хосте. Это описание — приёмочный тест проекта, и проверить его перед следующим инцидентом дёшево.

Похожие статьи