簡體   English   中英

Logstash - 匹配文件名

[英]Logstash - match filename

我有兩台服務器。 第一個托管彈性堆棧。 兩台服務器都有一個文件 /var/log/commands.log,它以相同的方式配置,並與 filebeat 一起發送到 logstash。

使用 grok,我嘗試使用以下語句將數據解析為自定義字段:

if [log][file][path] == "/var/log/commands.log" {
grok{
match => { "message" => "*some grok stuff*"
}
}
}

問題是,即使在兩台服務器上文件都是 /var/log/commands.log 並且它們的配置相同 - 它也會跳過 if 語句,就好像它是錯誤的一樣。 我注意到,如果我在本地發送日志(沒有 filebeat - 只需執行 input{file{input => "/var/log/commands.log}} )它適用於本地 "/var/log/commands.log " 托管logstash的那台機器上的文件。

作為參考,這是 logstash 的 full.conf 文件: https://pastebin.com/1QbnAG7G

這是 elastic 看到文件路徑的方式: https://i.imgur.com/5h9HXf2.png

有誰為什么跳過“if”語句? 如何使其按名稱過濾。 提前謝謝!

因此,看起來您在 pastebin 代碼中使用了=~ 如果是這種情況,您將匹配一個正則表達式。 那是你的意思嗎?

如果您打算使用正則表達式,那么您可能想要這樣的東西: if [log][file][path] =~ /\/var\/log\/commands\.log/

示例: https://regex101.com/r/nqGg9G/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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