Установка Logstash и ELK-стека на Ubuntu 20.04
Установка ELK (Elasticsearch, Logstash, Kibana) и Filebeat на Ubuntu 20.04: шаги по установке Java, Elastic-репозитория, компонентов стека, базовая настройка Nginx для Kibana и безопасность. Последовательность: подготовка сервера → Elasticsearch → Kibana (+ nginx и базовая аутентификация) → Logstash → Filebeat → проверка в Kibana. Следуйте разделам ниже и запустите службы через systemctl.

ELK — сочетание трёх Open Source-продуктов: Elasticsearch, Logstash и Kibana. Это одна из самых распространённых платформ для управления логами. Elasticsearch — движок поиска и аналитики. Logstash — конвейер обработки логов: принимает события из разных источников, трансформирует их и отправляет в хранилище (обычно Elasticsearch). Kibana визуализирует данные, индексированные Logstash в Elasticsearch.
В этом руководстве показан пошаговый процесс установки Logstash на Ubuntu 20.04 и сопутствующих компонентов стека.
Основные предпосылки
- Сервер с Ubuntu 20.04.
- Конфигурированный root или пользователь с правами sudo.
- Доступ к интернету для загрузки пакетов и репозиториев.
Важно: если вы планируете хранить в логах персональные данные, согласуйте это с политиками конфиденциальности и GDPR (при необходимости анонимизируйте поля).
Быстрый план действий
- Установить Java (OpenJDK 11).
- Добавить репозиторий Elastic и установить Elasticsearch.
- Установить Kibana и настроить доступ через Nginx с базовой аутентификацией.
- Установить Logstash и конфигурации для beats → Logstash → Elasticsearch.
- Установить Filebeat, подключить его к Logstash, загрузить шаблоны и дашборды.
- Проверить данные в Kibana.
Установка зависимостей и Java
Logstash и Elasticsearch требуют JVM. Установим OpenJDK 11:
apt-get install openjdk-11-jdk -yПроверьте версию Java:
java -versionОжидаемый вывод (пример):
openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)Установим дополнительные утилиты:
apt-get install nginx curl gnupg2 wget -yУстановка и настройка Elasticsearch
Elasticsearch хранит логи и предоставляет быстрый поиск по ним. Добавьте официальный репозиторий Elastic:
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.listОбновите пакеты и установите Elasticsearch:
apt-get update -y
apt-get install elasticsearch -yОтредактируйте конфигурацию:
nano /etc/elasticsearch/elasticsearch.ymlНайдите и измените параметр network.host:
network.host: localhost Запустите и включите сервис:
systemctl start elasticsearch
systemctl enable elasticsearchПроверьте состояние (порт 9200):
curl -X GET "localhost:9200"Пример успешного ответа (сокращённо):
{
"name" : "ubuntu2004",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "7.8.0",
...
},
"tagline" : "You Know, for Search"
}Если вы разворачиваете прод-кластер, дополнительно настройте heap size в /etc/elasticsearch/jvm.options и параметры безопасности (TLS, users, управление доступом).
Установка и настройка Kibana
Kibana анализирует данные, хранящиеся в Elasticsearch.
apt-get install kibana -yЗапустите и включите Kibana:
systemctl start kibana
systemctl enable kibanaСоздайте административного пользователя для доступа через Nginx и сохраните в htpasswd.users:
echo "admin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.usersВас попросят ввести пароль:
Password:
Verifying - Password:
admin:$apr1$8d05.YO1$E0Q8QjfNxxxPtD.unmDs7/Создайте виртуальный хост Nginx для Kibana:
nano /etc/nginx/sites-available/kibanaДобавьте конфигурацию (замените server_name на ваш домен):
server {
listen 80;
server_name kibana.example.com;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}Включите сайт и перезапустите Nginx:
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
systemctl restart nginxОткройте в браузере http://kibana.example.com/status и войдите с созданными учётными данными.

После входа вы увидите статус Kibana:

Совет: в проде используйте TLS для доступа к Kibana (терминируйте TLS на Nginx или используйте proxy) и ограничьте доступ по IP.
Установка и настройка Logstash
Logstash обрабатывает события и маршрутизует их в Elasticsearch.
apt-get install logstash -yСоздайте конфигурацию для приёма данных от beats:
nano /etc/logstash/conf.d/02-beats-input.confДобавьте:
input {
beats {
port => 5044
}
}Создайте выход в Elasticsearch:
nano /etc/logstash/conf.d/30-elasticsearch-output.confДобавьте:
output {
if [@metadata][pipeline] {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
pipeline => "%{[@metadata][pipeline]}"
}
} else {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
}Проверьте конфигурацию Logstash:
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -tОжидаемый вывод:
Config Validation Result: OK. Exiting LogstashЗапустите и включите Logstash:
systemctl start logstash
systemctl enable logstashЕсли Logstash не стартует, смотрите журналы:
journalctl -u logstash -b --no-pager
/var/log/logstash/logstash-plain.logУстановка и настройка Filebeat
Filebeat собирает логи на хостах и отправляет их в Logstash.
apt-get install filebeat -yОткройте конфигурацию Filebeat:
nano /etc/filebeat/filebeat.ymlОтключите вывод в Elasticsearch (если вы используете Logstash) и включите вывод в Logstash, заменив или раскомментировав соответствующие блоки:
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]и раскомментируйте:
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]Включите модуль system:
filebeat modules enable systemЗагрузите ingest pipeline для модуля system:
filebeat setup --pipelines --modules systemЗагрузите шаблон индекса в Elasticsearch (временно напрямую в Elasticsearch, чтобы подготовить шаблоны):
filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'Для установки Kibana-дашбордов временно отключите Logstash-вывод и включите Elasticsearch-вывод:
filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601Ожидаемый вывод включает сообщения о загруженных дашбордах и ingest pipeline.
Запустите и включите Filebeat:
systemctl start filebeat
systemctl enable filebeatДоступ к Kibana и проверка данных
Откройте http://kibana.example.com. На левой панели выберите Discover и шаблон индекса filebeat-* чтобы увидеть данные Filebeat.


Если в Discover нет данных:
- Убедитесь, что Filebeat запущен на источниках и отправляет данные.
- Проверьте соединение к Logstash (порт 5044).
- Проверьте индексы в Elasticsearch: curl localhost:9200/_cat/indices?v
Критерии приёмки
- Elasticsearch отвечает на запросы на localhost:9200.
- Kibana доступна через HTTP(S) и требует базовой аутентификации.
- Logstash слушает порт 5044 и проходит проверку конфигурации.
- Filebeat отправляет события, и они видны в Kibana (индекс filebeat-*).
Проверки и тесты (Test cases)
- Проверка connectivity: curl -I http://kibana.example.com/status должен вернуть 200/302.
- Проверка Elasticsearch: curl localhost:9200/_cluster/health
- Тест отправки: на агенте можно отправить тестовый лог и убедиться, что он появился в индексе.
Распространённые ошибки и как их решать
- Logstash не стартует: проверьте синтаксис конфигураций, запустив logstash –path.settings /etc/logstash -t.
- Filebeat не отправляет данные: проверьте output.logstash.hosts и сетевые правила (ufw/iptables).
- Kibana показывает пустые дашборды: убедитесь, что Filebeat загрузил шаблоны и индексы созданы.
Important: если используете firewall (UFW), откройте порты или настройте проброс через Nginx.
Альтернативные подходы и когда ELK не подходит
- Вместо Logstash можно использовать lightweight-пайпелайны: Filebeat ingest pipelines или Fluentd, если ресурсы ограничены.
- Для долгосрочного хранения и снижения затрат рассмотрите Loki (Grafana Loki) + Promtail для логов, если ваша аналитика ориентирована на метки.
- Большой кластер Elasticsearch требует отдельного проектирования: HA, shard-replica планирование, мониторинг и резервное копирование.
Безопасность и жёсткие настройки
- В проде всегда включайте TLS для межкомпонентного трафика (beats → Logstash, Logstash → Elasticsearch, Kibana → browser).
- Настройте аутентификацию и роли (X-Pack Security в Elastic Stack).
- Ограничьте доступ к Kibana по IP и используйте строгие пароли.
- Не храните пароли и секреты в репозиториях; используйте vault-решения.
Роли и чеклисты
Администратор (sysadmin):
- Проверить установку Java и версию.
- Настроить репозитории Elastic.
- Запустить и мониторить systemctl службы.
DevOps-инженер:
- Настроить конфигурации Logstash и Filebeat.
- Подготовить pipelines и index templates.
- Настроить CI для конфигураций и тесты на стейдж-инстансах.
Инженер безопасности:
- Настроить TLS и аутентификацию.
- Проверить, какие поля логов содержат персональные данные.
Краткая методология развертывания (микро-процедура)
- Подготовьте VM/контейнер с Ubuntu 20.04.
- Установите Java и необходимые утилиты.
- Разверните Elasticsearch, проверьте работоспособность.
- Установите Kibana и проксируйте через Nginx.
- Установите Logstash и протестируйте конфигурации.
- Деплойте Filebeat на источники, включите модули и загрузите шаблоны.
- Мониторьте и корректируйте pipeline.
Полезные настройки и подсказки (cheat sheet)
- Файлы конфигурации:
- /etc/elasticsearch/elasticsearch.yml
- /etc/kibana/kibana.yml
- /etc/logstash/conf.d/*.conf
- /etc/filebeat/filebeat.yml
- Логи:
- /var/log/elasticsearch/
- /var/log/logstash/
- /var/log/kibana/
- journalctl -u
Факт-бокс: ключевые порты и файлы
- Elasticsearch: 9200 (HTTP), 9300 (transport)
- Kibana: 5601
- Logstash Beats input: 5044
- Конфигурации Elasticsearch: /etc/elasticsearch/
- Конфигурации Logstash: /etc/logstash/
Пример аварийного плана (runbook) — кратко
- Если Elasticsearch упал — проверьте диск и OOM, перезапустите сервис.
- Если Logstash не обрабатывает данные — проверьте очереди и журналы pipeline.
- Если Kibana недоступна — перезапустите Nginx и Kibana, проверьте сертификаты.
- При утечке персональных данных — изолируйте систему, остановите запись, начните аудит и уведомите ответственных.
Совместимость и миграция
- Данная инструкция ориентирована на Elastic 7.x и Ubuntu 20.04.
- При обновлении до Elastic 8.x обратите внимание на изменения безопасности и удаление некоторых опций (например, ML setup флаг).
Краткий глоссарий (1 строка каждый)
- Elasticsearch — поисковый движок и хранилище логов.
- Logstash — процессор и маршрутизатор логов.
- Kibana — визуализационная панель для данных Elasticsearch.
- Filebeat — агент для отправки логов в Logstash/Elasticsearch.
Часто задаваемые вопросы
Как проверить, что Filebeat действительно отправляет логи?
Проверьте статус службы filebeat и журналы, а затем убедитесь, что появился индекс filebeat-* в Elasticsearch.
Можно ли заменить Logstash на ingest pipelines?
Да. Если у вас простая трансформация — можно использовать ingest pipelines в Elasticsearch или Filebeat processors.
Как защитить данные при передаче?
Настройте TLS между компонентами и используйте аутентификацию Elastic или прокси с BasicAuth.
Заключение
Поздравляем — вы установили и настроили базовый ELK-стек с Logstash и Filebeat на Ubuntu 20.04. Теперь вы можете централизовать сбор системных логов и визуализировать их в Kibana. Для продакшена рекомендуется дополнительно настроить TLS, роли доступа, мониторинг и резервное копирование.
Если нужны примеры специфичных фильтров Logstash, шаблонов индексов или готовые pipelines — напишите, какие типы логов вы планируете собирать (syslog, nginx, application), и я подготовлю конфигурации.
Похожие материалы
Firefox: перетаскивание не работает — что делать
Как зарегистрироваться в ESPN+ без провайдера
Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем
ESPN+ просит TV‑провайдера — что делать
Ярлык Windows Tools в Windows 11: все способы