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 출력

이것은 입력 및 필터 플러그인의 성능을 분석하는 데 사용되는 특수 출력 플러그인입니다.