Logstash является частью Elastic Stack наряду с Beats, Elasticsearch и Kibana. Logstash — это конвейер обработки данных на стороне сервера, который одновременно принимает данные из множества источников, преобразует их, а затем отправляет в ваш любимый «тайник». (Наш Elasticsearch, естественно.). Logstash имеет более 200 плагинов, и вы также можете легко написать свои собственные.
Для получения дополнительной информации см. https://www.elastic.co/products/logstash.
Вы можете найти документацию и руководства по началу работы с Logstash на сайте elastic.co.
Информацию о создании документации см. в README на странице https://github.com/elastic/docs.
Вы можете загрузить официально выпущенные двоичные файлы Logstash, а также пакеты debian/rpm для поддерживаемых платформ со страницы загрузок.
Плагины Logstash размещаются в отдельных репозиториях в организации github logstash-plugins. Каждый плагин представляет собой автономный драгоценный камень Ruby, который публикуется на RubyGems.org.
Logstash известен своей расширяемостью. Для Logstash существуют сотни плагинов, и вы можете очень легко написать свой собственный! Дополнительную информацию о разработке и тестировании этих плагинов можно найти в разделе «Работа с плагинами».
Пожалуйста, открывайте новые задачи и запросы на включение плагинов в собственный репозиторий.
Например, если вам нужно сообщить о проблеме/улучшении результатов Elasticsearch, сделайте это здесь.
Ядро Logstash продолжит существовать в этом репозитории, и все связанные с ним проблемы и запросы на включение можно будет отправлять сюда.
JAVA_HOME
путь к каталогу установки JDK. Например, set JAVA_HOME=<JDK_PATH>
rake
и bundler
используя gem install rake
и gem install bundler
соответственно.Если вы предпочитаете использовать rvm (менеджер версий Ruby) для управления версиями Ruby на вашем компьютере, следуйте этим указаниям. В папке Logstash:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
c url -sSL https://get.rvm.io | bash -s stable --ruby= $( cat .ruby-version )
Прежде чем продолжить, проверьте свою версию Ruby:
$ ruby -v
Печатная версия должна быть такой же, как в файле .ruby-version
.
Проект Logstash включает исходный код для всех Logstash, включая функции и функции X-Pack, лицензированные Elastic; чтобы запустить Logstash из исходного кода, используя только код, лицензированный OSS, экспортируйте переменную среды OSS
со значением true
:
export OSS=true
export LOGSTASH_SOURCE=1
export LOGSTASH_PATH=/YOUR/LOGSTASH/DIRECTORY
gradle
(рекомендуется) 1./gradlew installDevelopmentGems
./gradlew installDefaultGems
Чтобы проверить свою среду, выполните следующую команду, чтобы запустить Logstash и отправить первое событие:
bin/logstash -e ' input { stdin { } } output { stdout {} } '
Это должно запустить Logstash с вводом stdin, ожидающим ввода события.
hello world
2016-11-11T01:22:14.405+0000 0.0.0.0 hello world
Дополнительно: капельная пусковая установка
Drip — это инструмент, который решает проблему медленного запуска JVM при разработке Logstash. Сценарий капель предназначен для замены команды Java. Мы рекомендуем использовать капельницу во время разработки, в частности для запуска тестов. При использовании капельного ввода первый вызов команды не будет быстрее, но последующие команды будут быстрыми.
Чтобы указать logstash использовать капельницу, установите переменную среды JAVACMD=`which drip`
.
Пример (но перед первым запуском rspec ознакомьтесь с разделом «Тестирование» ниже):
JAVACMD=`which drip` bin/rspec
Предостережения
Дрип не работает со STDIN. Вы не можете использовать капельницу для запуска конфигураций, использующих плагин stdin.
Чтобы создать справочник Logstash (только контент с открытым исходным кодом) на вашем локальном компьютере, клонируйте следующие репозитории:
logstash — содержит основную документацию об основных функциях.
logstash-docs — содержит сгенерированную документацию плагина.
docs — содержит файлы сборки документов.
Убедитесь, что в logstash
и logstash-docs
извлечена одна и та же ветка. Проверьте master
в репозитории docs
.
Запустите сценарий сборки документа из репозитория docs
. Например:
./build_docs.pl --doc ../logstash/docs/index.asciidoc --chunk=1 -open
Большинство модульных тестов в Logstash написаны с использованием rspec для частей Ruby. Для частей Java мы используем junit. Для тестирования вы можете использовать тестовые задачи rake
и команду bin/rspec
, инструкции см. ниже:
1. Для запуска основных тестов вы можете использовать задачу Gradle:
./gradlew test
или используйте инструмент rspec
для запуска всех тестов или запуска определенного теста:
bin/rspec
bin/rspec spec/foo/bar_spec.rb
Обратите внимание, что перед первым запуском команды rspec
вам необходимо настроить тестовые зависимости RSpec, выполнив:
./gradlew bootstrap
2- Чтобы запустить подмножество тестов, охватывающих только кодовую базу Java, выполните:
./gradlew javaTests
3- Чтобы выполнить полный набор тестов, включая запуск интеграционных тестов:
./gradlew check
4- Чтобы выполнить один тестовый запуск Ruby:
SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests
5- Чтобы выполнить одну спецификацию для интеграционного теста, запустите:
./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb
Иногда вы можете обнаружить, что изменение фрагмента кода Logstash приводит к зависанию теста. Их может быть сложно отладить.
Если вы установите LS_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
вы можете подключиться к работающему Logstash с помощью отладчика IDE, что может стать отличным способом обнаружения проблемы.
Чтобы запустить тесты всех установленных на данный момент плагинов:
rake test:plugins
Вы можете установить набор плагинов по умолчанию, включенный в пакет logstash:
rake test:install-default
Обратите внимание: если плагин установлен с помощью менеджера плагинов bin/logstash-plugin install ...
не забудьте также установить зависимости разработки плагинов, используя следующую команду после установки плагина:
bin/logstash-plugin install --development
Построенные артефакты будут помещены в каталог LS_HOME/build
и создадут каталог, если он еще не существует.
Вы можете создать пакет моментальных снимков Logstash в виде архива или zip-файла.
./gradlew assembleTarDistribution
./gradlew assembleZipDistribution
Артефакты только для OSS аналогичным образом могут быть созданы с помощью собственных задач gradle:
./gradlew assembleOssTarDistribution
./gradlew assembleOssZipDistribution
Вы также можете собрать .rpm и .deb, но для этого потребуется инструмент fpm.
rake artifact:rpm
rake artifact:deb
и:
rake artifact:rpm_oss
rake artifact:deb_oss
Если вы хотите, чтобы при сборке использовался пользовательский JRuby, вы можете сделать это, задав путь к исходному корню пользовательского дистрибутива JRuby через свойство Gradle custom.jruby.path
.
Например
./gradlew clean test -Pcustom.jruby.path= " /path/to/jruby "
Приветствуется любой вклад: идеи, исправления, документация, отчеты об ошибках, жалобы и даже то, что вы нарисовали на салфетке.
Программирование не является обязательным навыком. Что бы вы ни видели об открытом исходном коде, о сопровождающих или членах сообщества, говорящих «отправляйте патчи или умрите» — вы не увидите этого здесь.
Гораздо важнее, чтобы вы могли внести свой вклад.
Дополнительную информацию о вкладе см. в файле CONTRIBUTING.
gradle
вы также можете использовать bundle
:Установить зависимости разработки
bundle config set --local path vendor/bundle bundle install
Загрузите среду:
rake bootstrap
Затем вы можете использовать bin/logstash
для запуска Logstash, но плагины не установлены. Чтобы установить плагины по умолчанию, вы можете запустить:
rake plugin:install-default
При этом будут установлены более 80 плагинов по умолчанию, что позволит Logstash подключаться к нескольким источникам данных, выполнять преобразования и отправлять результаты в Elasticsearch и другие места назначения.