Установка Logstash в Unix/Linux

Установка Logstash в Unix/Linux

Logstash — это сервер с открытым исходным кодом, который обрабатывает данные из множества источников одновременно, преобразует их, а затем отправляет в «stash» (естественно, это Elasticsearch). Простыми словами, Logstash — это инструмент для нормализации, фильтрации и сбора логов.

Установка Logstash в Unix/Linux

Я расскажу как можно установить logstash на различные Unix/Linux ОС. А установка начнется с установки JAVA, т.к она неотъемная часть данной утилиты.

Если в вашей системе не установлена Java, используйте одну из следующих ссылок для ее установки:

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Установка Java на Debian/Ubuntu/Mint

Вот еще полезное чтиво:

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

PS: Logstash требует Java 8 и Java 9 не поддерживается.

А сейчас, переходим к установки логстеша. Возможно, я буду сокращать «LogStash» как «LS» или «ЛогСтеш» — «ЛС».

Установка Logstash в CentOS/Fedora/RHEL

Загружаем и устанавливаем публичный ключ подписи:

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Открываем (создаем) файл:

# vim /etc/yum.repos.d/logstash.repo

И прописываем:

[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Вы можете установить его с помощью команды:

# yum install logstash -y

Настройка и запуск утилиты будет немного ниже.

Установка Logstash в Debian/Ubuntu

Загружаем и устанавливаем публичный ключ подписи:

# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Возможно, вам придется установить пакет apt-transport-https на Debian перед установкой утилиты:

# apt-get install apt-transport-https -y

Добавляем репозиторий:

# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-5.x.list

Вы можете установить его с помощью команды:

# apt-get update && sudo apt-get install logstash

Настройка и запуск утилиты будет немного ниже.

Установка Logstash на другие Unix/Linux ОС

-=== СПОСОБ 1 — использовать docker==-

Не было нужды использовать логстеш в докере. Как появиться, так сразу же обновлю данную статью.

-=== СПОСОБ 2 — использовать готовый архив==-

Скачиваем с официального сайта архив с ЛС:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz

Распакуем архив:

# tar xfvz  logstash-*.tar.gz

Переносим папку:

# rm -f /usr/local/src/logstash-5.3.0.tar.gz && mv logstash-* /usr/local/logstash

Прописываем переменное окружение:

# vim ~/.bash_profile

У меня это:

export JAVA_HOME=/usr/java/jdk1.8.0_121/
export JRE_HOME=/usr/java/jdk1.8.0_121/jre

export LOGSTASH_HOME=/usr/local/logstash/

export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:/usr/bin:/usr/local/bin:$LOGSTASH_HOME/bin

Чтобы изменения применились, выполните:

# source ~/.bash_profile

Создаем конфиг:

# vim /usr/local/logstash/logstash-simple.conf

И прописываем:

input { stdin { } }
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}

Затем запустите logstash:

# bin/logstash -f logstash-simple.conf

Как-то так.

Настройка/Запуск Logstash в Unix/Linux

И так, установили ЛС и можно приступать к его настройке.

Настройка Logstash в Unix/Linux 

Рассмотрим готовый пример, у меня используется ОС —  CentOS 6/7 и я настрою LS на ней.

Прописываем переменное окружение:

# vim ~/.bash_profile

У меня это:

export JAVA_HOME=/usr/java/jdk1.8.0_121/
export JRE_HOME=/usr/java/jdk1.8.0_121/jre

export LOGSTASH_HOME=/usr/share/logstash/

export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:/usr/bin:/usr/local/bin:$LOGSTASH_HOME/bin

PS: Для того чтобы узнать где лежит ( куда выполнилась установка LS, используйте — whereis logstash команду)!

Чтобы изменения применились, выполните:

# . ~/.bash_profile

И так, основной конфиг я не трогал и он имеет следующую структуру:

# cat /etc/logstash/logstash.yml | grep -Ev "#" 

path.data: /var/lib/logstash
path.config: /etc/logstash/conf.d
path.logs: /var/log/logstash

Ничего сложного в понимании данных строк — НЕТ!

Все конфиги должны быть в /etc/logstash/conf.d.

Запуск Logstash в Unix/Linux

Перед началом запуска, проверяем что у нас используется «SysV init vs systemdedit»:

# ps -p 1| awk {'print $4'}| grep -Ev "CMD"

Запуск Logstash используя Systemd

Такие дистрибутивы, как Debian Jessie, Ubuntu 15.10+ и многие производные SUSE, используют systemd и команду systemctl для запуска и остановки служб. После установки пакета вы можете запустить Logstash с помощью:

# systemctl start logstash.service

Добавим службу в автозагрузку ОС:

# systemctl enable logstash.service

Настройте брандмауэр, чтобы Logstash мог получать логи от клиентов (TCP-порт 5044):

# firewall-cmd --add-port=5044/tcp
# firewall-cmd --add-port=5044/tcp --permanent

Запуск Logstash используя init/Upstart

Для систем, использующих «upstart», вы можете запустить Logstash с помощью:

# initctl start logstash

Автоматически созданный файл конфигурации для «upstart» систем — /etc/init/logstash.conf.

Настройте брандмауэр, чтобы Logstash мог получать логи от клиентов (TCP-порт 5044).

Запуск Logstash используя SysV

Для систем, использующих SysV, для систем, использующих»

# /etc/init.d/logstash start

Автоматически созданный файл конфигурации для систем SysV — /etc/init.d/logstash.

Настройте брандмауэр, чтобы Logstash мог получать логи от клиентов (TCP-порт 5044).

Установка плагинов для LogStash

Проверяем какие плагины имеются:

# logstash-plugin list

Для установки плагина, используйте:

# logstash-plugin install logstash-filter-metrics

Для обновления:

# logstash-plugin update logstash-filter-metrics

Чтобы удалить:

# logstash-plugin uninstall logstash-filter-metrics

Работа с Logstash в Unix/Linux

Сначала давайте проверим вашу установку Logstash, запустив самый простой конвейер Logstash.

Конвейер Logstash имеет два обязательных элемента: вход и выход и один необязательный элемент — фильтр. Плагины ввода используют данные из источника, плагины фильтров изменяют данные, как вы указали, а выходные плагины записывают данные в пункт назначения.

работа Logstash pipeline

Чтобы проверить установку Logstash, запустите самый простой конвейер Logstash. Например:

# /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

Или (если прописали переменное окружение):

# logstash -e 'input { stdin { } } output { stdout {} }'

Можно прописать что-то и LS отдаст (выход CTR +C).

Как работает LogStash?

Конвейер обработки событий Logstash имеет три этапа: inputs (входы) → filters (фильтры) → outputs (выходы). Входы генерируют события, фильтры изменяют их, а выходы отправляют их в другое место. Входы и выходы поддерживают кодеки, которые позволяют кодировать или декодировать данные при входе или выходе из конвейера без использования отдельного фильтра.

Inputs

Вы используете inputs для получения данных в Logstash. Некоторые из наиболее часто используемых inputs:

  • file — Читает файл, подобно команде «tail -F».
  • syslog — Прослушивает порт 514 для сообщений syslog и анализирует данные (в соответствии с форматом RFC3164)
  • redis — Считывает данные с redis-сервера, используя как redis-каналы, так и redis-списки. Redis часто используется в качестве «брокера» (broker) в централизованной установке Logstash, которая ставит в очередь события Logstash от удаленных Logstash «отправителей» (shippers).
  • beats — Обрабатывает события, отправленные с Filebeat.

Дополнительные сведения о доступных inputs см. в разделе «Input Plugins».

Filters

Фильтры (Filters) являются промежуточными устройствами обработки данных в конвейере Logstash. Вы можете комбинировать фильтры с условными выражениями для выполнения действия над событиями, если оно соответствует определенным критериям. Некоторые полезные фильтры:

  • grok — Парсит и структурирует произвольный текст. Grok в настоящее время является лучшим средством для анализа неструктурированных данных логов во что-то структурированное и запрашиваемое. Благодаря 120 шаблонам, которые встроены в Logstash, вы сможете найти все для ваших потребностей!
  • mutate — Выполняет общие преобразования в полях событий. Вы можете переименовывать, удалять, заменять и изменять поля в ваших событиях.
  • drop — Удаляет событие полностью, например, debug events.
  • clone — Создает копию события, возможно добавление или удаление полей.
  • geoip — Добавляет информацию о географическом расположении IP-адресов (также показывает потрясающие графики в Kibana!)

Дополнительные сведения о доступных фильтрах см. в разделе «Модули фильтра»(Filter Plugins).

Outputs

Outputs (Выходы) являются заключительной фазой конвейера Logstash. Событие может проходить через несколько выходов, но как только вся обработка вывода завершена, событие завершило свое выполнение. Некоторые часто используемые результатов включают:

  • elasticsearch — Отправляет данные о событиях в Elasticsearch. Если вы планируете сохранять данные в эффективном, удобном и легко запрашиваемом формате, то Elasticsearch поможет вам.
  • file — Записает данные события в файл на диске.
  • graphite — Отправляет данные о событиях в графит (популярный инструмент с открытым исходным кодом для хранения и графического отображения метрик.
  • statsd — Отправляет данные о событиях в statsd сервис, который «слушает статистику, например счетчики и таймеры, отправляет по UDP и отправляет агрегаты в одну или несколько подключаемых внутренних служб». Если вы уже используете statsd, это может пригодиться вам!

Дополнительные сведения о доступных outputs см. в разделе плагины вывода (Output Plugins).

Codecs

Кодеки (Codecs) — это в основном потоковые фильтры, которые могут работать как часть входа (input) или выхода (output). Codecs позволяют вам легко отделить передачу ваших сообщений от процесса сериализации. Популярные кодеки включают в себя json, msgpack и plain (text):

  • json — Кодирует или декодирует данные в формате JSON.
  • multiline — Объединяет многострочные текстовые события, такие как java exception и stacktrace, в одно событие.

Дополнительные сведения о доступных кодеках см. в разделе плагины кодеков (Codec Plugins).

А на этом, у меня все! Статья «Установка Logstash в Unix/Linux » завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.