hostprofi.ru
Подобрать хостинг
Термин·буква Л

Лог-сервер

краткое определение

Централизованная система сбора логов с нескольких серверов для единого поиска и анализа событий.

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

Как работает

Каждый сервер запускает агент-коллектор (Filebeat, Promtail, rsyslog, Fluentd), который читает лог-файлы и отправляет записи на центральный log-сервер. Коллектор добавляет метаданные: имя хоста, метку сервиса, временную метку. Log-сервер индексирует данные для быстрого поиска и хранит в сжатом виде.

Популярные стеки

ELK Stack: Elasticsearch (хранение и поиск) + Logstash (обработка) + Kibana (визуализация). Мощный, но ресурсоёмкий: минимум 4 GB RAM для Elasticsearch. Стандарт в больших командах.

Grafana Loki: хранит не индексированные данные, а только метки (labels). В 10 раз дешевле Elasticsearch по хранилищу. Интегрируется с Grafana — логи и метрики в одном дашборде. Подходит для начала.

Graylog: MongoDB + Elasticsearch, веб-интерфейс с возможностью алертинга по паттернам в логах. Промежуточное решение.

История

Централизованный syslog появился в 1980-х: демон syslogd принимал UDP-сообщения от сетевых устройств на порту 514. С ростом масштаба (сотни серверов) простой syslog не справлялся: нет сжатия, индексации, поиска. Elasticsearch (2010) от Shay Banon стал базой для первого ELK-стека. Grafana Loki (2018) предложил более экономичный подход, вдохновлённый Prometheus. В 2020-х log-серверы стали обязательным элементом SRE-практик.

Grafana Loki + Promtail

# promtail config.yml
server:
  http_listen_port: 9080
positions:
  filename: /tmp/positions.yaml
clients:
  - url: http://loki:3100/loki/api/v1/push
scrape_configs:
  - job_name: nginx
    static_configs:
      - targets: [localhost]
        labels:
          job: nginx
          host: web01
          __path__: /var/log/nginx/*.log

После настройки логи Nginx доступны в Grafana через LogQL-запросы: {job="nginx"} |= "error"

На что обращать внимание

Логи содержат персональные данные: IP-адреса, user-agent, пути запросов. Настройте retention-политику (удалять логи старше 90 дней) и маскирование чувствительных полей. На малых инфраструктурах (2-5 серверов) log-сервер избыточен — достаточно journalctl + syslog-форвардинга на один сервер. Log-сервер окупается при анализе инцидентов, когда нужно искать по логам 20+ хостов одновременно.

Retention и управление объёмом

Логи растут непрерывно — без retention-политики диск переполнится. Loki: retention_period: 744h (31 день) в конфиге. Elasticsearch ILM (Index Lifecycle Management): горячая фаза — 7 дней на SSD, тёплая — 30 дней на HDD, удаление через 90 дней. Logrotate для файловых логов: /var/log/nginx/*.log { daily rotate 30 compress missingok notifempty }.

Безопасность log-сервера

Log-сервер содержит историю всех действий в инфраструктуре — критически важный ресурс. Изолируйте его: доступ только с определённых IP через UFW, SSH только по ключу, write-once режим для хранилища (атакующий не сможет удалить улики). Для compliance (PCI DSS, ISO 27001) целостность логов подтверждается HMAC-подписью или хранением в неизменяемом S3.

Полезные LogQL-запросы

# Все ошибки Nginx за последний час
{job="nginx"} |= "error" | json

# Rate запросов 5xx
rate({job="nginx"} |~ "HTTP/[0-9.]+ 5[0-9][0-9]" [5m])

# Топ IP по числу запросов
topk(10, sum by (remote_addr) (count_over_time({job="nginx"}[1h])))

Другие термины