Logstash faz parte do Elastic Stack junto com Beats, Elasticsearch e Kibana. Logstash é um pipeline de processamento de dados do lado do servidor que ingere dados de uma infinidade de fontes simultaneamente, transforma-os e depois os envia para seu "esconderijo" favorito. (O nosso é Elasticsearch, naturalmente.). Logstash tem mais de 200 plug-ins e você também pode escrever os seus próprios com muita facilidade.
Para obter mais informações, consulte https://www.elastic.co/products/logstash
Você pode encontrar a documentação e os guias de primeiros passos do Logstash no site elastic.co
Para obter informações sobre como criar a documentação, consulte o README em https://github.com/elastic/docs
Você pode baixar binários Logstash lançados oficialmente, bem como pacotes debian/rpm para as plataformas suportadas, na página de downloads.
Os plug-ins do Logstash são hospedados em repositórios separados na organização logstash-plugins do github. Cada plugin é uma gem Ruby independente que é publicada em RubyGems.org.
Logstash é conhecido por sua extensibilidade. Existem centenas de plugins para Logstash e você pode escrever o seu próprio facilmente! Para obter mais informações sobre como desenvolver e testar esses plug-ins, consulte a seção trabalhando com plug-ins.
Abra novos problemas e receba solicitações de plug-ins em seu próprio repositório
Por exemplo, se você precisar relatar um problema/melhoria na saída do Elasticsearch, faça-o aqui.
O núcleo do Logstash continuará a existir neste repositório e todos os problemas relacionados e solicitações pull podem ser enviados aqui.
JAVA_HOME
como o caminho para o diretório de instalação do JDK. Por exemplo, set JAVA_HOME=<JDK_PATH>
rake
e bundler
usando gem install rake
e gem install bundler
respectivamente.Se você preferir usar o rvm (gerenciador de versões Ruby) para gerenciar versões Ruby em sua máquina, siga estas instruções. Na pasta Logstash:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
c url -sSL https://get.rvm.io | bash -s stable --ruby= $( cat .ruby-version )
Antes de prosseguir, verifique sua versão Ruby:
$ ruby -v
A versão impressa deve ser a mesma do arquivo .ruby-version
.
O projeto Logstash inclui o código-fonte de todo o Logstash, incluindo os recursos e funções do Elastic-Licensed X-Pack; para executar o Logstash a partir da origem usando apenas o código licenciado pelo OSS, exporte a variável de ambiente OSS
com um valor true
:
export OSS=true
export LOGSTASH_SOURCE=1
export LOGSTASH_PATH=/YOUR/LOGSTASH/DIRECTORY
gradle
(recomendado) 1./gradlew installDevelopmentGems
./gradlew installDefaultGems
Para verificar seu ambiente, execute o seguinte para iniciar o Logstash e enviar seu primeiro evento:
bin/logstash -e ' input { stdin { } } output { stdout {} } '
Isso deve iniciar o Logstash com entrada stdin aguardando você inserir um evento
hello world
2016-11-11T01:22:14.405+0000 0.0.0.0 hello world
Avançado: lançador de gotejamento
Drip é uma ferramenta que resolve o problema de inicialização lenta da JVM durante o desenvolvimento do Logstash. O script de gotejamento pretende ser um substituto imediato para o comando java. Recomendamos o uso de gotejamento durante o desenvolvimento, principalmente para execução de testes. Usando o gotejamento, a primeira invocação de um comando não será mais rápida, mas os comandos subsequentes serão rápidos.
Para dizer ao logstash para usar o gotejamento, defina a variável de ambiente JAVACMD=`which drip`
.
Exemplo (mas consulte a seção Testes abaixo antes de executar o rspec pela primeira vez):
JAVACMD=`which drip` bin/rspec
Advertências
O gotejamento não funciona com STDIN. Você não pode usar o gotejamento para executar configurações que usam o plugin stdin.
Para criar a referência do Logstash (somente conteúdo de código aberto) em sua máquina local, clone os seguintes repositórios:
logstash - contém documentos principais sobre os principais recursos
logstash-docs - contém documentos de plugins gerados
docs - contém arquivos de compilação de documentos
Certifique-se de ter verificado o mesmo branch em logstash
e logstash-docs
. Confira master
no repositório docs
.
Execute o script de criação de documentos no repositório docs
. Por exemplo:
./build_docs.pl --doc ../logstash/docs/index.asciidoc --chunk=1 -open
A maioria dos testes unitários no Logstash são escritos usando rspec para as partes Ruby. Para as partes Java, usamos junit. Para testar você pode usar as tarefas test rake
e o comando bin/rspec
, veja as instruções abaixo:
1- Para executar os testes principais você pode usar a tarefa Gradle:
./gradlew test
ou use a ferramenta rspec
para executar todos os testes ou executar um teste específico:
bin/rspec
bin/rspec spec/foo/bar_spec.rb
Observe que antes de executar o comando rspec
pela primeira vez você precisa configurar as dependências de teste do RSpec executando:
./gradlew bootstrap
2- Para executar o subconjunto de testes que cobrem apenas a base de código Java, execute:
./gradlew javaTests
3- Para executar o conjunto de testes completo incluindo a execução dos testes de integração:
./gradlew check
4- Para executar um único teste Ruby:
SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests
5- Para executar especificação única para teste de integração, execute:
./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb
Às vezes, você pode descobrir que uma alteração em um trecho do código do Logstash faz com que um teste seja interrompido. Isso pode ser difícil de depurar.
Se você definir LS_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
você pode se conectar a um Logstash em execução com seu depurador de IDEs, o que pode ser uma ótima maneira de encontrar o problema.
Para executar os testes de todos os plugins instalados atualmente:
rake test:plugins
Você pode instalar o conjunto padrão de plug-ins incluído no pacote logstash:
rake test:install-default
Observe que se um plugin for instalado usando o gerenciador de plugins bin/logstash-plugin install ...
não se esqueça de instalar também as dependências de desenvolvimento dos plugins usando o seguinte comando após a instalação do plugin:
bin/logstash-plugin install --development
Os artefatos construídos serão colocados no diretório LS_HOME/build
e criarão o diretório se ele ainda não estiver presente.
Você pode construir um pacote de instantâneos do Logstash como arquivo tarball ou zip
./gradlew assembleTarDistribution
./gradlew assembleZipDistribution
Da mesma forma, artefatos somente OSS podem ser construídos com suas próprias tarefas gradle:
./gradlew assembleOssTarDistribution
./gradlew assembleOssZipDistribution
Você também pode construir .rpm e .deb, mas a ferramenta fpm é necessária.
rake artifact:rpm
rake artifact:deb
e:
rake artifact:rpm_oss
rake artifact:deb_oss
Se você deseja que a compilação use um JRuby personalizado, você pode fazer isso definindo um caminho para a raiz de origem de uma distribuição JRuby personalizada por meio da propriedade custom.jruby.path
Gradle.
Por exemplo
./gradlew clean test -Pcustom.jruby.path= " /path/to/jruby "
Todas as contribuições são bem-vindas: ideias, patches, documentação, relatórios de bugs, reclamações e até algo que você desenhou em um guardanapo.
Programar não é uma habilidade obrigatória. Tudo o que você viu sobre código aberto e mantenedores ou membros da comunidade dizendo "envie patches ou morra" - você não verá isso aqui.
É mais importante que você seja capaz de contribuir.
Para obter mais informações sobre como contribuir, consulte o arquivo CONTRIBUTING.
gradle
você também pode usar bundle
:Instale dependências de desenvolvimento
bundle config set --local path vendor/bundle bundle install
Inicialize o ambiente:
rake bootstrap
Você pode então usar bin/logstash
para iniciar o Logstash, mas não há plug-ins instalados. Para instalar plug-ins padrão, você pode executar:
rake plugin:install-default
Isso instalará mais de 80 plug-ins padrão que tornam o Logstash pronto para se conectar a várias fontes de dados, realizar transformações e enviar os resultados para o Elasticsearch e outros destinos.