logstash6配置語法中的條件判斷

2021-09-29 12:40:25 字數 2293 閱讀 3564

詳情可見官方文件-conditionals。

有時您只想在特定條件下過濾或輸出事件。為此,您可以使用條件(conditional)。比如在elk系統中想要新增乙個type型別的關鍵字來根據不同的條件賦值,最後好做統計。

logstash中的條件檢視和行為與程式語言中的條件相同。

條件語支援if,else if和else語句並且可以巢狀。

條件語法如下:

if expression  else if expression  else
比較操作:

相等: ==, !=, <, >, <=, >=

正則: =~(匹配正則), !~(不匹配正則)

包含: in(包含), not in(不包含)

布林操作:

and(與), or(或), nand(非與), xor(非或)

一元運算子:

表示式可能很長且很複雜。表示式可以包含其他表示式,您可以使用!來取反表示式,並且可以使用括號(…)對它們進行分組。

! (取反)

() (復合表示式), !() (對復合表示式結果取反)

例項如若action的值是login,則通過mutate filter刪除secret欄位:

filter 

}}

若是需要通過正則匹配(即,當if的表示式為正則時),匹配成功後新增自定義字段:

filter }}

}

在乙個條件裡指定多個表示式:

output 

}}

在in條件,可以比較字段值:

filter 

} if [foo] in "foo"

} if "hello" in [greeting]

} if [foo] in ["hello", "world", "foo"]

} if [missing] in [alsomissing]

} if !("foo" in ["hello", "world"])

}}

not in示例:

output 

}}

@metadata field

在logstash1.5版本開始,有乙個特殊的字段,叫做@metadata。@metadata包含的內容不會作為事件的一部分輸出。

input  }

filter }

mutate }

mutate }

}output

}}

輸出結果

$ bin/logstash -f ../test.conf

pipeline main started

asdf

"asdf"變成message欄位內容。條件與@metadata內嵌的test欄位內容判斷成功,但是輸出並沒有展示@metadata欄位和其內容。

不過,如果指定了metadata => true,rubydebug codec允許顯示@metadata欄位的內容。

stdout  }
輸出結果

$ bin/logstash -f ../test.conf

pipeline main started

asdf

, "@version" => "1",

"host" => "windcoder.com",

"show" => "this data will be in the output",

"message" => "asdf"

}

現在就可以見到@metadata欄位及其子欄位內容。

只有rubydebug codec允許顯示@metadata欄位的內容。

只要您需要臨時欄位但不希望它在最終輸出中,就可以使用@metadata欄位。

最常見的情景是filter的時間字段,需要一臨時的時間戳。如:

input  }

filter " ] }

date

}output

}

輸出結果

$ bin/logstash -f ../test.conf

pipeline main started

02/mar/2014:15:36:43 +0100

Logstash學習 配置語法

logstash 用 來定義區域。區域內可以包括外掛程式區域定義,你可以在乙個區域定義多個外掛程式,外掛程式區域內則可以定義鍵值對設定。logstash支援少量的資料值型別 注意 地域1.2.0的版本雜湊語法跟陣列一樣。欄位是 logstash event 物件的屬性。事件就像乙個雜湊一樣,所以可以...

Logstash配置語法及相關命令

輸入外掛程式 input 過濾外掛程式 filter 輸出外掛程式 output array users lists path var log messages var log log uris boolean ssl enable true bytes my bytes 1113 1113 byt...

logstash 中配置GeoIP解析地理資訊

logstash中配置的geoip的資料庫解析ip了,這裡是用了開源的ip資料來源,用來分析客戶端的ip歸屬地。官網在這裡 maxmind wget tar zxvf geolite2 city.tar.gz cp geolite2 city.mmdb data logstash data logs...