Logstash - obsługiwane dane wyjściowe
Logstash zapewnia wiele wtyczek do obsługi różnych magazynów danych lub wyszukiwarek. Zdarzenia wyjściowe dzienników mogą być wysyłane do pliku wyjściowego, standardowego wyjścia lub wyszukiwarki, takiej jak Elasticsearch. Istnieją trzy typy obsługiwanych danych wyjściowych w Logstash, którymi są:
- Wyjście standardowe
- Plik wyjściowy
- Wyjście zerowe
Omówmy teraz szczegółowo każdą z nich.
Standardowe wyjście (stdout)
Służy do generowania przefiltrowanych zdarzeń dziennika jako strumienia danych do interfejsu wiersza poleceń. Oto przykład generowania całkowitego czasu trwania transakcji bazy danych na standardowe wyjście.
logstash.conf
Ten plik konfiguracyjny zawiera wtyczkę wyjściową stdout, która zapisuje całkowity sql_duration na standardowe wyjście.
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 - Zainstaluj filtr kruszywa, jeśli nie został jeszcze zainstalowany.
>logstash-plugin install Logstash-filter-aggregate
Uruchom Logstash
Możemy uruchomić Logstash za pomocą następującego polecenia.
>logstash –f logsatsh.conf
Input.log
Poniższy blok kodu przedstawia dane dziennika wejściowego.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
stdout (będzie to wiersz poleceń w systemie Windows lub terminal w systemie UNIX)
To jest całkowity czas trwania_sql 320 + 200 = 520.
520
Plik wyjściowy
Logstash może również przechowywać zdarzenia dziennika filtrów w pliku wyjściowym. Skorzystamy z powyższego przykładu i zapiszemy wynik w pliku zamiast STDOUT.
logstash.conf
Ten plik konfiguracyjny Logstash bezpośrednio Logstash przechowuje całkowity sql_duration w wyjściowym pliku dziennika.
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}"}
}
}
}
Uruchom logstash
Możemy uruchomić Logstash za pomocą następującego polecenia.
>logstash –f logsatsh.conf
input.log
Poniższy blok kodu przedstawia dane dziennika wejściowego.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
output.log
Poniższy blok kodu przedstawia dane dziennika wyjściowego.
520
Wyjście zerowe
Jest to specjalna wtyczka wyjściowa, która służy do analizowania wydajności wtyczek wejściowych i filtrujących.