Блог "Дети ОИТа"
/поиск

Транспортировка логов без потерь

Введение

Доставка журналов от источников к коллекторам — критичный участок. Выбор протокола и настройка очередей определяют, теряете ли вы события при всплесках и сбоях сети.

Протоколы и когда их выбирать

  • UDP: минимальные накладные расходы, но нет гарантий доставки. Подходит для низковажных метрик и изолированных сетей.
  • TCP: гарантии доставки в пределах соединения; при разрыве — буферизация на клиенте.
  • TLS поверх TCP: шифрование и проверка подлинности; защищает от перехвата и подмены.
  • RELP: прикладной уровень с явным подтверждением; лучший выбор для «не терять ни одного события».

Очереди на диске и надёжность

  • Включите очереди на диске на источнике: при недоступности коллектора события сохраняются локально и досылаются после восстановления.
  • Настройте лимиты очереди и политику вытеснения, чтобы не забить диск.
  • Для rsyslog: $ActionQueueType LinkedList, $ActionQueueFileName, $ActionResumeRetryCount -1, $ActionQueueSaveOnShutdown on.

Шифрование и проверка подлинности

  • Используйте TLS с проверкой сертификатов; закрепите CA и имена узлов.
  • Для внутренних сетей без TLS — как минимум подписывайте сообщения (напр. с помощью mmnormalize/ммjson), чтобы обнаружить подмену.

Мини-конфиг релея (rsyslog)

module(load="imtcp")
module(load="omrelp")

# Приём TCP
input(type="imtcp" port="514")

# Отправка в RELP с очередью на диске
action(
  type="omrelp"
  target="log-collector.internal:2514"
  tls="on"
  tls.caCert="/etc/ssl/certs/ca.pem"
  tls.myCert="/etc/ssl/certs/relay.pem"
  tls.myPrivKey="/etc/ssl/private/relay-key.pem"
  queue.type="LinkedList"
  queue.filename="q_relp"
  queue.size="100000"
  queue.dequeuebatchsize="4096"
  action.resumeRetryCount="-1"
  queue.saveonshutdown="on"
)

Чек-лист

  • Выберите протокол под требования к потере событий.
  • Включите дисковые очереди на источниках.
  • Включите TLS и проверку подлинности.
  • Мониторьте длину очереди и задержки доставки.
  • Тестируйте сценарии обрыва сети и перезапуска служб.