- Logstash 輸入階段
- Logstash - 收集日誌
- Logstash - 支援的輸入
- Logstash 解析和轉換
- Logstash - 日誌解析
- Logstash - 過濾器
- Logstash - 日誌轉換
- Logstash 輸出階段
- Logstash - 輸出階段
- Logstash - 支援的輸出
- Logstash 高階主題
- Logstash - 外掛
- Logstash - 監控API
- Logstash - 安全性和監控
- Logstash 有用資源
- Logstash - 快速指南
- Logstash - 有用資源
- Logstash - 討論
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
空輸出
這是一個特殊的輸出外掛,用於分析輸入和過濾器外掛的效能。
廣告