Logstash - saídas suportadas
O Logstash fornece vários plug-ins para oferecer suporte a vários armazenamentos de dados ou mecanismos de pesquisa. Os eventos de saída dos logs podem ser enviados para um arquivo de saída, saída padrão ou um mecanismo de busca como o Elasticsearch. Existem três tipos de saídas com suporte no Logstash, que são -
- Saída Padrão
- Saída de arquivo
- Saída Nula
Vamos agora discutir cada um deles em detalhes.
Saída padrão (stdout)
Ele é usado para gerar os eventos de log filtrados como um fluxo de dados para a interface da linha de comandos. Aqui está um exemplo de como gerar a duração total de uma transação de banco de dados para stdout.
logstash.conf
Este arquivo de configuração contém um plugin de saída stdout para gravar o sql_duration total em uma saída padrão.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid}
- %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?"
]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
}
output {
if [logger] == "TRANSACTION_END" {
stdout {
codec => line{format => "%{sql_duration}"}
}
}
}
Note - Instale o filtro agregado, se ainda não estiver instalado.
>logstash-plugin install Logstash-filter-aggregate
Executar Logstash
Podemos executar o Logstash usando o seguinte comando.
>logstash –f logsatsh.conf
Input.log
O bloco de código a seguir mostra os dados de registro de entrada.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
stdout (será prompt de comando no Windows ou terminal no UNIX)
Este é o sql_duration total 320 + 200 = 520.
520
Saída de arquivo
O Logstash também pode armazenar os eventos de log do filtro em um arquivo de saída. Usaremos o exemplo mencionado acima e armazenaremos a saída em um arquivo em vez de STDOUT.
logstash.conf
Este arquivo de configuração do Logstash direciona o Logstash a armazenar o sql_duration total em um arquivo de log de saída.
input {
file {
path => "C:/tpwork/logstash/bin/log/input1.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} -
%{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?"
]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
}
output {
if [logger] == "TRANSACTION_END" {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
codec => line{format => "%{sql_duration}"}
}
}
}
Executar logstash
Podemos executar o Logstash usando o seguinte comando.
>logstash –f logsatsh.conf
input.log
O bloco de código a seguir mostra os dados de registro de entrada.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
output.log
O bloco de código a seguir mostra os dados do log de saída.
520
Saída Nula
Este é um plugin de saída especial, que é usado para analisar o desempenho de plugins de entrada e filtro.