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

Централизованный сбор: архитектура, ретрансляторы и HA

Введение

Централизованный сбор логов повышает наблюдаемость и упрощает расследование. Ключевые вопросы — отказоустойчивость, масштабирование и контроль задержек.

Базовые топологии

  • Прямая отправка на коллектор — просто, но точка отказа одна.
  • Ретранслятор(ы) у кластеров/ЦОД — буферизация, нормализация, HA.
  • Несколько коллекторов + балансировщик — горизонтальное масштабирование.
  • Холодный оффлоад (S3/HDFS) — долгосрочное хранение и поиск через внешние движки.

Ретранслятор: задачи и настройки

  • Приём: TCP/TLS (и RELP при критичных требованиях).
  • Очереди на диске: тип LinkedList, сохранение при выключении, retry=-1.
  • Нормализация: единая временная зона (UTC), MSGID, STRUCTURED-DATA.
  • Маршрутизация: по facility/severity/тегам в разные индексы/топики.

Балансировка и HA

  • L4-балансировщик с TCP/TLS passthrough или TLS-терминация с реальным IP в заголовке.
  • Health-check по порту/рукопожатию; исключать «холодные» узлы.
  • Держать минимум 2 коллектора и 2 ретранслятора; реплицировать очереди при возможности.

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

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

input(type="imtcp" port="514")

# В RELP с очередью на диске
action(
  type="omrelp"
  target="collector-a.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_a"
  queue.size="200000"
  action.resumeRetryCount="-1"
  queue.saveonshutdown="on"
)

# Фолбэк на второй коллектор
action(
  type="omrelp"
  target="collector-b.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_b"
  queue.size="200000"
  action.resumeRetryCount="-1"
  queue.saveonshutdown="on"
)

Чек-лист

  • Включите дисковые очереди на всех источниках и релеях.
  • Используйте TLS/RELP для критичных потоков.
  • Настройте HA: ≥2 коллектора, ≥2 релея, health-check’и.
  • Мониторьте длину очередей, задержки доставки и ошибки TLS.
  • Планируйте оффлоад и retention на уровне хранилища.