Logstash-지원되는 출력
Logstash는 다양한 데이터 저장소 또는 검색 엔진을 지원하기 위해 여러 플러그인을 제공합니다. 로그의 출력 이벤트는 출력 파일, 표준 출력 또는 Elasticsearch와 같은 검색 엔진으로 보낼 수 있습니다. Logstash에는 세 가지 유형의 지원 출력이 있습니다.
- 표준 출력
- 파일 출력
- Null 출력
이제 각각에 대해 자세히 논의하겠습니다.
표준 출력 (stdout)
필터링 된 로그 이벤트를 명령 줄 인터페이스에 대한 데이터 스트림으로 생성하는 데 사용됩니다. 다음은 stdout에 대한 데이터베이스 트랜잭션의 총 기간을 생성하는 예입니다.
logstash.conf
이 구성 파일에는 총 sql_duration을 표준 출력에 쓰는 stdout 출력 플러그인이 포함되어 있습니다.
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 − 아직 설치되지 않은 경우 골재 필터를 설치하십시오.
>logstash-plugin install Logstash-filter-aggregate
Logstash 실행
다음 명령을 사용하여 Logstash를 실행할 수 있습니다.
>logstash –f logsatsh.conf
Input.log
다음 코드 블록은 입력 로그 데이터를 보여줍니다.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
stdout (Windows에서는 명령 프롬프트, UNIX에서는 터미널)
이것은 총 sql_duration 320 + 200 = 520입니다.
520
파일 출력
Logstash는 필터 로그 이벤트를 출력 파일에 저장할 수도 있습니다. 위에서 언급 한 예제를 사용하고 출력을 STDOUT 대신 파일에 저장합니다.
logstash.conf
이 Logstash 구성 파일은 Logstash에 총 sql_duration을 출력 로그 파일에 저장하도록 지시합니다.
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}"}
}
}
}
logstash 실행
다음 명령을 사용하여 Logstash를 실행할 수 있습니다.
>logstash –f logsatsh.conf
input.log
다음 코드 블록은 입력 로그 데이터를 보여줍니다.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
output.log
다음 코드 블록은 출력 로그 데이터를 보여줍니다.
520
Null 출력
이것은 입력 및 필터 플러그인의 성능을 분석하는 데 사용되는 특수 출력 플러그인입니다.