Как настроить сбор логов с нескольких серверов в одну систему (например, ELK stack или Graylog)?
Централизованный сбор логов с нескольких серверов — ключевая задача для мониторинга инфраструктуры. Рассмотрим два популярных подхода: ELK Stack (Elasticsearch + Logstash + Kibana) и Graylog.
## ELK Stack
### 1. Установка компонентов
На центральном сервере установите:
— **Elasticsearch** — хранилище и поисковый движок для логов.
— **Logstash** — агрегатор и обработчик входящих данных.
— **Kibana** — веб-интерфейс для визуализации.
На каждом источнике логов установите **Filebeat** — лёгкий агент для отправки логов.
### 2. Настройка Filebeat на серверах-источниках
Отредактируйте `/etc/filebeat/filebeat.yml`:
yaml
filebeat.inputs:
— type: log
enabled: true
paths:
— /var/log/*.log
— /var/log/nginx/*.log
output.logstash:
hosts: [«central-server:5044»]
### 3. Настройка Logstash на центральном сервере
Создайте файл `/etc/logstash/conf.d/beats.conf`:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { «message» => «%{COMBINEDAPACHELOG}» }
}
date {
match => [ «timestamp», «dd/MMM/yyyy:HH:mm:ss Z» ]
}
}
output {
elasticsearch {
hosts => [«localhost:9200»]
index => «logs-%{+YYYY.MM.dd}»
}
}
### 4. Открытие портов и запуск
Откройте порт 5044 на центральном сервере. Запустите сервисы:
bash
systemctl enable —now elasticsearch logstash kibana
systemctl enable —now filebeat # на каждом источнике
—
## Graylog
### 1. Установка
Graylog требует MongoDB (для конфигурации) и Elasticsearch/OpenSearch (для хранения). Установите все три компонента на центральном сервере.
### 2. Настройка Input
В веб-интерфейсе Graylog (порт 9000) перейдите в **System → Inputs**, создайте новый Input типа **Beats** (порт 5044) или **Syslog UDP/TCP** (порт 514).
### 3. Настройка агентов на серверах
Для Filebeat измените `output` в конфиге:
yaml
output.logstash:
hosts: [«graylog-server:5044»]
Для syslog-совместимых систем добавьте в `/etc/rsyslog.conf`:
*.* @graylog-server:514
### 4. Настройка потоков и дашбордов
В интерфейсе Graylog создайте **Streams** для маршрутизации логов по источникам и **Dashboards** для визуализации.
—
## Общие рекомендации
— Используйте **TLS-шифрование** для передачи логов между агентами и центральным сервером.
— Настройте **теги** (fields) в Filebeat для идентификации источника: `fields: {server_name: web-01}`.
— Для высоконагруженных систем добавьте **Kafka** или **Redis** как буфер между агентами и Logstash/Graylog.
— Настройте **ротацию индексов** в Elasticsearch, чтобы не переполнять диск.
— Мониторьте состояние самих агентов через встроенные метрики Filebeat.
Выбор между ELK и Graylog зависит от задач: ELK гибче и мощнее, Graylog проще в настройке и имеет удобный встроенный интерфейс управления.
