我試圖使用突變篩選器與拆分方法來提取由json篩選器檢索到的字段的一部分。但我沒有找到如何利用分裂的結果。 這裏是我的邏輯配置(只有簡單的JSON部分效果很好):Logstash - 使用突變與拆分
filter {
if [type] == "phperrors" {
json {
source => "message"
target => "phperror_log"
remove_field => "message"
add_tag => [ "php", "error" ]
}
mutate {
split => ["[phperror_log][server]", "."]
#if [phperror_log][server][1] {
add_field => [ "pop", "%{[phperror_log][server][1]}" ]
#}
}
}
}
正如我所說的JSON部分運作良好,並在phperror_log.server字段存在(和值是一樣的東西node01.ny或node01.par或node02)。
但我想要的是創建一個新的字段,如果拆分創建了2個字段的數組,我想我沒有用我的[phperror_log] [server] [1]做正確的事情。
您有任何線索,建議或最佳實踐來解決這種用例嗎?
在此先感謝
編輯:我用的conf應該與拆分工作編輯......但是,如果是不正常
根據從一些提示和建議有一個很好的conf最後編輯阿蘭:
filter {
if [type] == "phperrors" {
json {
source => "message"
target => "phperror_log"
remove_field => "message"
add_tag => [ "php", "error" ]
}
if [phperror_log][server] =~ /\./ {
mutate {
split => ["[phperror_log][server]", "."]
add_field => [ "pop", "%{[phperror_log][server][1]}" ]
add_field => [ "errorhost", "%{[phperror_log][server][0]}" ]
}
} else {
mutate {
add_field => [ "pop", "not defined" ]
add_field => [ "errorhost", "%{[phperror_log][server]}" ]
}
}
mutate {
remove_field => [ "[phperror_log][server]" ]
}
}
}
非常感謝,你的解釋非常清楚。我會盡快嘗試 – Labynocle 2014-10-31 08:33:39
不錯,我會在第一篇文章發佈我的最後一個配置文件,它很好用,謝謝你Alain的提示 – Labynocle 2014-10-31 09:09:22