Оглавление
Введение
Представьте себе: глубокой ночью сервер начинает «капризничать», пользователи сталкиваются с ошибками, а вы, системный администратор, пытаетесь найти причину по разрозненным журнальным записям. Логи — это дневник сервера, но читать его, когда страницы разбросаны по разным файлам и машинам, задача не из легких. ELK Stack приходит на помощь как верный детективный набор инструментов: он собирает все логи воедино, помогает проанализировать их и превратить хаос строк в понятные визуальные подсказки. Мы предлагаем пройти практический путь развёртывания ELK Stack на Ubuntu 22.04 для централизованного логирования и аналитики — шаг за шагом, с дружескими комментариями и реальными примерами.

Что такое ELK Stack и зачем он нужен?
ELK Stack (он же Elastic Stack) – это комбинация из нескольких мощных инструментов для централизованного сбора, хранения и анализа журналов (логов) сервера — от логирования Nginx до системных событий. Название «ELK» образовано от первых букв основных компонентов:
- Elasticsearch – поисковый и аналитический движок. Он как умная база данных для логов: хранит данные и позволяет мгновенно находить нужное по всем серверам.
- Logstash – конвейер для обработки и маршрутизации данных. Представьте его как фабрику, где сырой лог-файл превращается во что-то единообразное и полезное, прежде чем отправиться в хранилище.
- Kibana – веб-интерфейс для визуализации и анализа. Это ваша панель управления и «приборная доска»: визуализация логов с помощью красивых графиков, поиск по записям журналов и интерактивные дашборды на все случаи жизни.
- Filebeat – лёгкий агент-сборщик логов (из семейства Beats). Он бродит по вашему серверу (или серверам), «подслушивает» новые записи в лог-файлах (Nginx, системные журналы, SSH и другие) и отправляет их в Logstash или напрямую в Elasticsearch.

Подготовка сервера и окружения
Прежде чем устанавливать компоненты ELK, убедимся, что наш сервер готов к нагрузке:
- Аппаратные требования: Elasticsearch любит оперативную память. Рекомендуется хотя бы 4 ГБ RAM (больше — лучше) и несколько гигабайт дискового пространства.
- ОС и доступ: Используем Ubuntu 22.04. Нужны права
sudo. - Интернет-доступ: Elastic отсутствует в стандартных репозиториях Ubuntu. Чтобы загрузить пакеты, нужен интернет.
- Java: В новых версиях Elastic встроена OpenJDK, отдельная установка не требуется.
Дополнительно: синхронизация времени, проверка фаерволов и открытых портов (9200 — Elasticsearch, 5601 — Kibana, 5044 — Logstash Beats).
Установка Elasticsearch
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt install elasticsearch -y
Правка конфига:
sudo nano /etc/elasticsearch/elasticsearch.yml
Ключевые строки:
network.host: localhost
Запуск:
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
curl -X GET "http://localhost:9200"
Установка Kibana

Установка:
sudo apt install kibana -y
Проверка:
sudo systemctl start kibana
sudo systemctl enable kibana
Kibana будет доступна на http://localhost:5601.
Установка Logstash
sudo apt install logstash -y
Создаём input:
sudo nano /etc/logstash/conf.d/02-beats-input.conf
Содержимое:
input {
beats {
port => 5044
}
}
Создаём output:
sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf
Содержимое:
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "filebeat-%{+YYYY.MM.dd}"
}
}
Проверка:
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
sudo systemctl start logstash
sudo systemctl enable logstash
Установка Filebeat
sudo apt install filebeat -y
sudo nano /etc/filebeat/filebeat.yml
Активируем Logstash-вывод:
output.logstash:
hosts: ["localhost:5044"]
Включаем модули:
sudo filebeat modules enable system
sudo filebeat modules enable nginx
Загружаем шаблоны и дашборды:
sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
sudo filebeat setup --pipelines --modules system,nginx -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
sudo filebeat setup -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]' -E setup.kibana.host=localhost:5601
Запуск:
sudo systemctl start filebeat
sudo systemctl enable filebeat
Готовы перейти на современную серверную инфраструктуру?
В King Servers мы предлагаем серверы как на AMD EPYC, так и на Intel Xeon, с гибкими конфигурациями под любые задачи — от виртуализации и веб-хостинга до S3-хранилищ и кластеров хранения данных.
- S3-совместимое хранилище для резервных копий
- Панель управления, API, масштабируемость
- Поддержку 24/7 и помощь в выборе конфигурации
Результат регистрации
...
Создайте аккаунт
Быстрая регистрация для доступа к инфраструктуре
Проверка логирования
Переходим в Kibana → Discover → выбираем filebeat-*. Должны появиться логи:
- Nginx access и error
- systemd
- SSH (auth.log)
Альтернативно:
curl 'http://localhost:9200/filebeat-*/_count?pretty'

Быстрое развёртывание ELK Stack в Docker (альтернатива)
Пример docker-compose.yml:
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.9.0
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms1g -Xmx1g
ports:
- "9200:9200"
volumes:
- esdata:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:8.9.0
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
logstash:
image: docker.elastic.co/logstash/logstash:8.9.0
ports:
- "5044:5044"
volumes:
- ./pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
volumes:
esdata:
Пример простого logstash.conf:
input { beats { port => 5044 } }
output { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "docker-logs-%{+YYYY.MM.dd}" } }
Практические советы по логированию и визуализации
- Настройте
logrotateдля Nginx и системных журналов. - Используйте ILM для удаления старых индексов.
- Следите за RAM: Elasticsearch любит память.
- Не оставляйте Kibana и Elasticsearch открытыми наружу.
- Делайте дашборды: коды ответов Nginx, частота SSH-входов, системные ошибки.
- Добавляйте алерты — реагируйте раньше пользователя.
Заключение
Теперь у вас рабочая связка ELK Stack, собирающая и анализирующая логи в удобном виде. Развивайте её, подключайте новые сервисы, стройте визуализации и управляйте инфраструктурой уверенно и прозрачно. ELK станет вашим постоянным помощником в поиске проблем, оптимизации сервисов и мониторинге серверов.