- Logstash 輸入階段
- Logstash - 收集日誌
- Logstash - 支援的輸入
- Logstash 解析和轉換
- Logstash - 解析日誌
- Logstash - 過濾器
- Logstash - 轉換日誌
- Logstash 輸出階段
- Logstash - 輸出階段
- Logstash - 支援的輸出
- Logstash 高階主題
- Logstash - 外掛
- Logstash - 監控 API
- Logstash - 安全性和監控
- Logstash 有用資源
- Logstash - 快速指南
- Logstash - 有用資源
- Logstash - 討論
Logstash - 輸出階段
輸出是 Logstash 管道中的最後一個階段,它將過濾器從輸入日誌中過濾後的資料傳送到指定的目的地。Logstash 提供多個輸出外掛,可以將過濾後的日誌事件儲存到各種不同的儲存和搜尋引擎中。
儲存日誌
Logstash 可以將過濾後的日誌儲存在檔案、Elasticsearch 引擎、stdout、AWS CloudWatch等中。網路協議(如TCP、UDP、Websocket)也可以在 Logstash 中用於將日誌事件傳輸到遠端儲存系統。
在 ELK Stack 中,使用者使用 Elasticsearch 引擎來儲存日誌事件。這裡,在下面的示例中,我們將為本地 Elasticsearch 引擎生成日誌事件。
安裝 Elasticsearch 輸出外掛
我們可以使用以下命令安裝 Elasticsearch 輸出外掛。
>logstash-plugin install Logstash-output-elasticsearch
logstash.conf
此配置檔案包含一個 Elasticsearch 外掛,該外掛將輸出事件儲存在本地安裝的 Elasticsearch 中。
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
}
}
mutate {
add_field => {"user" => "tutorialspoint.com"}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
Input.log
以下程式碼塊顯示了輸入日誌資料。
INFO - 48566 - TRANSACTION_START - start INFO - 48566 - SQL - transaction1 - 320 INFO - 48566 - SQL - transaction1 - 200 INFO - 48566 - TRANSACTION_END - end
啟動本地主機上的 Elasticsearch
要在本地主機上啟動 Elasticsearch,您應該使用以下命令。
C:\elasticsearch\bin> elasticsearch
Elasticsearch 準備就緒後,您可以在瀏覽器中鍵入以下 URL 進行檢查。
https://:9200/
響應
以下程式碼塊顯示了本地主機上 Elasticsearch 的響應。
{
"name" : "Doctor Dorcas",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.1",
"build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
"build_timestamp" : "2015-12-15T13:05:55Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
注意 - 有關 Elasticsearch 的更多資訊,您可以點選以下連結。
https://tutorialspoint.tw/elasticsearch/index.html
現在,使用上面提到的 Logstash.conf 執行 Logstash
>Logstash –f Logstash.conf
在將上面提到的文字貼上到輸出日誌中後,該文字將由 Logstash 儲存在 Elasticsearch 中。您可以透過在瀏覽器中鍵入以下 URL 檢查儲存的資料。
https://:9200/logstash-2017.01.01/_search?pretty
響應
它是儲存在索引 Logstash-2017.01.01 中的 JSON 格式資料。
{
"took" : 20,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 10,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOs",
"_score" : 1.0,
"_source":{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.140Z","loglevel":"INFO",
"logger":"SQL","@version":"1","host":"wcnlab-PC",
"label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
},
{
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOt",
"_score" : 1.0,
"_source":{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.145Z","loglevel":"INFO",
"logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC",
"label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
}
}
}