[英]Logstash (6.5.4) Adding pipeline for elasticsearch
日志格式jobID status data
。
假設我的日志按順序打印5hgsxyt3838 RUNNING data
5hgsxyt3838 RUNNING data
5hgsxyt3838 COMPLETE data
。 在這里,我希望我在 elasticsearch 的最終狀態是日志最后一行中的狀態。 但我觀察到,對於多個 jobID,我的最終狀態不是最后一行中的狀態,而是來自其他前一行的狀態。 可能是什么原因? 有沒有辦法使用管道解決這個問題(如果我的最終行狀態是 COMPLETE,任何其他之前的行不應該覆蓋它)或其他東西?
Output塊
output {
if [fields][target_index] == "import-export-logger" {
if [status] == "SCHEDULED" {
elasticsearch {
hosts => [ "localhost:9200" ]
index => "import-export-logger-%{index-name}"
document_id => "%{jobID}"
action => "create"
}
}
else {
elasticsearch {
hosts => [ "localhost:9200" ]
index => "import-export-logger-%{index-name}"
document_id => "%{jobID}"
action => "update"
doc_as_upsert => true
}
}
}
}
您只需要一名工人來運行您的管道。 如果您不這樣做,那么將創建與您可以使用的可用 CPU 數量一樣多的工作線程,在這種情況下,一些事件可能會被並發處理,並且前一行可能會在最后一行之后到達。
如果您在 pipeline.yml 中配置了pipeline.yml
,則需要在配置文件中進行設置:
pipeline.workers: 1
否則,如果您從命令行運行 Logstash,則只需添加-w
開關
bin/logstash -f logstash.conf -w 1
或等價地
bin/logstash -f logstash.conf --pipeline.workers 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.