Digamos que você tenha 2 tipos muito diferentes de registros, como registros técnicos e comerciais, e deseja:
- logs técnicos brutos sejam roteados para um servidor graylog2 usando uma
gelf
saída, - Os logs de negócios json podem ser armazenados em um cluster elasticsearch usando a
elasticsearch_http
saída dedicada .
Eu sei que com, Syslog-NG
por exemplo, o arquivo de configuração permite definir várias entradas distintas que podem ser processadas separadamente antes de serem despachadas; o que Logstash
parece incapaz de fazer. Mesmo que uma instância possa ser iniciada com dois arquivos de configuração específicos, todos os logs tomam o mesmo canal e estão sendo aplicados nos mesmos processamentos ...
Devo executar tantas instâncias quanto tiver diferentes tipos de logs?
Respostas:
Não! Você só pode executar uma instância para lidar com diferentes tipos de registros.
No arquivo de configuração logstash, você pode especificar cada entrada com um tipo diferente . Então, no filtro, você pode usar if para diferentes processamentos, e também na saída, você pode usar a saída "if" para destinos diferentes.
Espero que isso possa ajudá-lo :)
fonte
type
atributo (com a mesmatype => "value"
sintaxe) nas definições de filtro e saída, o que deve reduzir um pouco a formatação extra dentro do arquivo de configuração. Exemplo: gist.github.com/fairchild/3030472 Por documentação: adicione um campo 'tipo' a todos os eventos tratados por esta entrada. Os tipos são usados principalmente para ativação do filtro. O tipo é armazenado como parte do próprio evento, portanto, você também pode usar o tipo para pesquisá-lo na interface da web.type => "value"
em uma saída, recebi a seguinte mensagem exibida: "Você está usando uma definição de configuração obsoleta" tipo "definida em stdout. As configurações obsoletas continuarão a funcionar, mas estão programadas para remoção do logstash no futuro. Você pode conseguir este mesmo comportamento com as novas condicionais, como:.if [type] == "sometype" { stdout { ... } }
" Retiro meu comentário anterior. :)type
atributo não se aplicará se já houver um campo de tipo da entrada. Este é um atributo especial que não sobrescreve e é documentado. Abri um tíquete no Elastic e eles me recomendaram usartags
ou emadd_field
vez detype
Usei tags para entrada de vários arquivos:
fonte
Acho que o logstash não pode ler mais de 2 arquivos na seção de entrada. tente o abaixo
fonte