簡體   English   中英

Logstash (6.5.4) 為 elasticsearch 添加管道

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM