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

Установка и настройка Logstash на Ubuntu 18.04

• 4 min read • DevOps • Обновлено 26 Nov 2025
Logstash на Ubuntu 18.04 — установка и настройка
Logstash на Ubuntu 18.04 — установка и настройка

TL;DR

Этот гайд показывает, как установить и настроить Logstash на Ubuntu 18.04. Включает установку Java и Elasticsearch, конфигурацию input/filter/output и проверку работы.

Введение

Logstash — бесплатный и открытый инструмент для сбора, парсинга и хранения логов. Это одна из самых популярных платформ для анализа логов. Logstash имеет богатый набор плагинов и выразительный язык шаблонов, что упрощает преобразование потоков данных. Logstash часто используется в составе ELK-стека, но может работать автономно. С помощью input-плагинов Logstash может получать данные из любых источников, применять фильтры и отправлять результаты в разные хранилища через output-плагины.

Важно: в этом руководстве рассматривается установка на Ubuntu 18.04 и предполагается, что у вас есть права root или sudo.

Основные варианты использования

Primary intent: установка Logstash на Ubuntu 18.04 Related variants: конфигурация Logstash, интеграция с Elasticsearch, настройка beats, тестирование и отладка Logstash, отправка логов в Elasticsearch


Пререквизиты

  • Сервер с Ubuntu 18.04.
  • Настроен пароль root или учётная запись с sudo.
  • Доступ к интернету для загрузки пакетов.

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

  1. Обновить систему.
  2. Установить Java (OpenJDK 8 или 11).
  3. Добавить репозиторий Elastic и установить Elasticsearch и Logstash.
  4. Создать конфигурации input, filter и output для Logstash.
  5. Запустить и протестировать сервис.

Начало работы

Перед началом обновите систему до последних пакетов:

apt-get update -y  
apt-get upgrade -y

Перезагрузите систему, чтобы применить обновления.

Установка Java

Logstash требует Java 8 или Java 11. Установим OpenJDK 8:

apt-get install openjdk-8-jdk -y

Проверьте версию Java:

java -version

Ожидаемый вывод (пример):

openjdk version "1.8.0_162"
OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1-b12)
OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)

Примечание: при желании можно установить OpenJDK 11 вместо 8 — Logstash поддерживает оба варианта.

Установка Logstash и Elasticsearch

По умолчанию Elasticsearch отсутствует в стандартных репозиториях Ubuntu 18.04, поэтому добавим репозиторий Elastic.

Установите требуемый пакет для подключения по HTTPS:

apt-get install apt-transport-https -y

Добавьте GPG-ключ Elastic:

wget -qO - https://packages.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 и Logstash:

apt-get install elasticsearch logstash -y

Запустите и включите автозапуск сервисов:

systemctl start logstash  
systemctl enable logstash  
systemctl start elasticsearch  
systemctl enable elasticsearch

Проверка статуса Logstash:

systemctl status logstash

Ожидаемый фрагмент вывода (пример):

? logstash.service - logstash
   Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-11-20 10:13:22 UTC; 5s ago
 Main PID: 3790 (java)
    Tasks: 13 (limit: 1110)
   CGroup: /system.slice/logstash.service
           ??3790 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly 

Nov 20 10:13:22 ubuntu systemd[1]: Started logstash.

Elasticsearch по умолчанию слушает порт 9200. Проверить можно так:

netstat -ant | grep 9200

Пример вывода:

tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN     
tcp6       0      0 ::1:9200                :::*                    LISTEN  

Важно: если вы планируете доступ к Elasticsearch извне, откорректируйте настройки network.host в /etc/elasticsearch/elasticsearch.yml и примените безопасные настройки аутентификации.

Конфигурация Logstash

Конфигурация Logstash разделена на три секции: input, filter и output. Каждая секция решает свою задачу и использует соответствующие плагины.

Настройка input

Создайте файл для приёма данных от Beats на TCP-порту 5044:

nano /etc/logstash/conf.d/beats-input.conf

Добавьте:

input {
  beats {
    port => 5044
  }
}

Сохраните и закройте файл.

Настройка filter

Пример: собираем события SSH-аутентификации с Ubuntu через beats. Создайте файл фильтра:

nano /etc/logstash/conf.d/ssh-auth-filter.conf

Добавьте:

filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}\s+%{IPORHOST:dst_host}\s+%{WORD:syslog_program}\[\d+\]:\s+(?\w+\s+password)\s+for\s+%{USER:auth_user}\s+from\s+%{SYSLOGHOST:src_host}.*" }
    add_field => { "activity" => "SSH Logins" }
    add_tag => "linux_auth"
    }
}

Сохраните и закройте файл.

Примечание: шаблоны grok чувствительны к формату логов. При необходимости адаптируйте выражение под ваши сообщения.

Настройка output

Создайте выходной конфиг, чтобы отправлять данные в Elasticsearch на localhost:

nano /etc/logstash/conf.d/elasticsearch-output.conf

Добавьте:

output {
   elasticsearch {
     hosts => ["localhost:9200"]
     manage_template => false
     index => "ssh_auth-%{+YYYY.MM}"
 }
  stdout { codec => rubydebug }
}

Сохраните файл и перезапустите Logstash, чтобы применить изменения:

systemctl restart logstash

Тестирование Logstash

Проверка конфигурации Logstash:

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Ожидаемый вывод (пример):

Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties
[2019-11-26T06:27:48,104][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/var/lib/logstash/queue"}
[2019-11-26T06:27:48,119][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/var/lib/logstash/dead_letter_queue"}
[2019-11-26T06:27:50,331][INFO ][org.reflections.Reflections] Reflections took 47 ms to scan 1 urls, producing 20 keys and 40 values 
Configuration OK
[2019-11-26T06:27:51,899][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

Если валидация прошла успешно, можно отправлять тестовые события на порт 5044 с помощью beats или tcp-клиента.

Отладка и типичные проблемы

  • Сервис не запускается: проверьте /var/log/logstash/logstash-plain.log и systemctl status для диагностического вывода.
  • Grok не совпадает: включите stdout { codec => rubydebug } и отправьте пример строки лога, чтобы отладить шаблон.
  • Elasticsearch недоступен: проверьте, что Elasticsearch работает и слушает 127.0.0.1:9200, а файервол не блокирует порт.
  • Нехватка памяти JVM: при большом потоке логов увеличьте Xms/Xmx в /etc/logstash/jvm.options.

Важно: после изменений конфигов всегда проверяйте конфигурацию через режим тестирования и перезапускайте сервис аккуратно.

Критерии приёмки

  • Logstash успешно запускается без ошибок в логах.
  • Конфигурация проходит проверку: Config Validation Result: OK.
  • События из Beats доходят до Logstash и индексируются в Elasticsearch (проверяется через запрос к индексу ssh_auth-YYYY.MM).
  • При включённом stdout видно ожидаемую структуру события.

Чеклист ролей (Sysadmin / DevOps)

  • Sysadmin:
    • Обновить систему и установить OpenJDK.
    • Убедиться в доступности портов и настройках файервола.
  • DevOps:
    • Сконфигурировать grok-фильтры и индексы.
    • Настроить шаблоны индексов и политики ILM для Elasticsearch.

Когда этот подход не подойдёт

  • Если ваши логи требуют очень строгой схемы и низкой задержки, рассмотрите специализированные решения обработки событий в реальном времени.
  • Для больших кластеров Elasticsearch и высоких нагрузок потребуется отдельное планирование ресурсов и отказоустойчивости.

Краткая методология внедрения

  1. Разверните PoC на одном сервере: Elasticsearch + Logstash.
  2. Настройте парсеры и проверьте соответствие ожидаемым данным.
  3. Настройте хранение индексов и политики управления жизненным циклом.
  4. Перенесите в продакшен с мониторингом использования ресурсов.

Резюме

Вы установили Logstash и Elasticsearch на Ubuntu 18.04, настроили input для beats, пример фильтра для SSH-аутентификации и output в Elasticsearch. Вы узнали команды для проверки статуса и тестирования конфигурации. Дальше рекомендуется адаптировать grok-шаблоны под свои форматы логов и настроить политику хранения индексов в Elasticsearch.

Важно: всегда тестируйте конфигурации в среде разработки перед развёртыванием в production.


Если нужно, могу подготовить готовые шаблоны grok для других типов логов (nginx, systemd, auth) или помочь с настройкой Filebeat/Metricbeat.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро