Logstash - 支援的輸出



Logstash 提供多個外掛來支援各種資料儲存或搜尋引擎。日誌的輸出事件可以傳送到輸出檔案、標準輸出或 Elasticsearch 等搜尋引擎。Logstash 支援三種類型的輸出,它們是:

  • 標準輸出
  • 檔案輸出
  • 空輸出

現在讓我們詳細討論每一個。

標準輸出 (stdout)

它用於將過濾後的日誌事件作為資料流生成到命令列介面。以下是如何將資料庫事務的總持續時間生成到 stdout 的示例。

logstash.conf

此配置檔案包含一個 stdout 輸出外掛,用於將總 sql_duration 寫入標準輸出。

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}"}
      }
   }
}

注意 - 如果尚未安裝,請安裝 aggregate 過濾器。

>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

空輸出

這是一個特殊的輸出外掛,用於分析輸入和過濾器外掛的效能。

廣告
© . All rights reserved.