Гид по технологиям

Установка Logstash и ELK-стека на Ubuntu 20.04

7 min read DevOps Обновлено 22 Nov 2025
Установка Logstash на Ubuntu 20.04
Установка Logstash на Ubuntu 20.04

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

Схема компонентов ELK: Elasticsearch, Logstash, Kibana

ELK — сочетание трёх Open Source-продуктов: Elasticsearch, Logstash и Kibana. Это одна из самых распространённых платформ для управления логами. Elasticsearch — движок поиска и аналитики. Logstash — конвейер обработки логов: принимает события из разных источников, трансформирует их и отправляет в хранилище (обычно Elasticsearch). Kibana визуализирует данные, индексированные Logstash в Elasticsearch.

В этом руководстве показан пошаговый процесс установки Logstash на Ubuntu 20.04 и сопутствующих компонентов стека.

Основные предпосылки

  • Сервер с Ubuntu 20.04.
  • Конфигурированный root или пользователь с правами sudo.
  • Доступ к интернету для загрузки пакетов и репозиториев.

Важно: если вы планируете хранить в логах персональные данные, согласуйте это с политиками конфиденциальности и GDPR (при необходимости анонимизируйте поля).

Быстрый план действий

  1. Установить Java (OpenJDK 11).
  2. Добавить репозиторий Elastic и установить Elasticsearch.
  3. Установить Kibana и настроить доступ через Nginx с базовой аутентификацией.
  4. Установить Logstash и конфигурации для beats → Logstash → Elasticsearch.
  5. Установить Filebeat, подключить его к Logstash, загрузить шаблоны и дашборды.
  6. Проверить данные в 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 с запросом логина и пароля

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

Страница статуса 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.

Панель Kibana с дашбордом 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)

  1. Проверка connectivity: curl -I http://kibana.example.com/status должен вернуть 200/302.
  2. Проверка Elasticsearch: curl localhost:9200/_cluster/health
  3. Тест отправки: на агенте можно отправить тестовый лог и убедиться, что он появился в индексе.

Распространённые ошибки и как их решать

  • 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 и аутентификацию.
  • Проверить, какие поля логов содержат персональные данные.

Краткая методология развертывания (микро-процедура)

  1. Подготовьте VM/контейнер с Ubuntu 20.04.
  2. Установите Java и необходимые утилиты.
  3. Разверните Elasticsearch, проверьте работоспособность.
  4. Установите Kibana и проксируйте через Nginx.
  5. Установите Logstash и протестируйте конфигурации.
  6. Деплойте Filebeat на источники, включите модули и загрузите шаблоны.
  7. Мониторьте и корректируйте 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) — кратко

  1. Если Elasticsearch упал — проверьте диск и OOM, перезапустите сервис.
  2. Если Logstash не обрабатывает данные — проверьте очереди и журналы pipeline.
  3. Если Kibana недоступна — перезапустите Nginx и Kibana, проверьте сертификаты.
  4. При утечке персональных данных — изолируйте систему, остановите запись, начните аудит и уведомите ответственных.

Совместимость и миграция

  • Данная инструкция ориентирована на 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), и я подготовлю конфигурации.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Firefox: перетаскивание не работает — что делать
Браузеры

Firefox: перетаскивание не работает — что делать

Как зарегистрироваться в ESPN+ без провайдера
Техническая поддержка

Как зарегистрироваться в ESPN+ без провайдера

Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем
Виртуализация

Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем

ESPN+ просит TV‑провайдера — что делать
Стриминг

ESPN+ просит TV‑провайдера — что делать

Ярлык Windows Tools в Windows 11: все способы
Windows

Ярлык Windows Tools в Windows 11: все способы

Комментирование строк в Vim — быстрые способы
Редакторы

Комментирование строк в Vim — быстрые способы