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

Решите вопрос до инструмента

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

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

Читайте три поля, которые на него отвечают

Обычный вывод состояния WireGuard содержит интерфейс, открытый ключ, конечную точку, последнее рукопожатие и счётчики передачи. Для присутствия нужны открытый ключ и последнее рукопожатие; при необходимости добавьте счётчики байтов, чтобы видеть движение. Конечная точка для присутствия не нужна и является первым полем, которое следует отбросить, потому что она указывает, откуда подключается устройство. Страница руководства описывает каждое поле, которое печатает инструмент, и достаточно коротка, чтобы прочитать её один раз:

wg show
wg show wg0 latest-handshakes

Читайте эти числа как возраст, а не как логические значения. Рукопожатие актуально только относительно собственного интервала обновления ключей протокола, а счётчик, который не сдвинулся, может означать простаивающий узел, а не сломанный. Держите оба в одном представлении, чтобы возраст и движение читались вместе.

Выберите интервал, который сможете защитить

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

Для OpenVPN функция состояния пишет файл с заданным интервалом. В конфигурации сервера это выглядит так status /var/log/openvpn-status.log 60, где число в конце — секунды между перезаписями, а файл заменяется, а не дополняется. Эта деталь важна: заменённый файл не имеет истории, тогда как сборщик, который дописывает, её создаёт.

Убедитесь, что сборщик тоже соблюдает интервал. Инструмент, который снимает отсчёт каждую секунду и хранит одну строку в минуту, всё равно читает каждую секунду.

Держите метки стабильными, а сопоставление ограниченным

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

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

Опишите, что вы собираете, а что нет

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

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

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