[英]logstash mutate to replace field value in output
我正在嘗試在我的logstash配置中將另一個IP 10.100.240.199替換為10.100.251.98,但我嘗試使用具有mutate功能的過濾器,但是無法獲取語法wrtie
Sep 25 15:50:57 10.100.251.98 mail_logs: Info: New SMTP DCID 13417989 interface 172.30.75.10 address 172.30.75.12 port 25
Sep 25 15:50:57 10.100.251.98 local_mail_logs: Info: New SMTP DCID 13417989 interface 172.30.75.10 address 172.30.75.12 port 25
Sep 25 15:51:04 10.100.251.98 cli_logs: Info: PID 35559: User smaduser login from 10.217.3.22 on 172.30.75.10
Sep 25 15:51:22 10.100.251.98 cli_logs: Info: PID 35596: User smaduser login from 10.217.3.22 on 172.30.75.10
這是我的代碼:
input { file { path => "/data/collected" } }
filter {
if [type] == "syslog" {
mutate {
replace => [ "@source_host", "10.100.251.99" ]
}
}
}
output {
syslog {
facility => "kernel"
host => "10.100.250.199"
port => 514
}
}
我注意到有關您的配置的一些信息。 首先,您沒有任何日志解析。 如果字段不存在,您將無法替換。 為此,可以在輸入塊或grok過濾 器中使用編解碼 器 。 我添加了一個簡單的grok過濾器。
您還檢查if [type] == "syslog"
。 您永遠不會設置類型,因此檢查將始終失敗。 如果要設置類型,則可以在輸入塊中input { file { path => "/data/collected" type => "syslog} }
這是我用於測試grok模式和IP替換的示例配置。
input { tcp { port => 5544 } }
filter {
grok { match => { "message" => "%{CISCOTIMESTAMP:log_time} %{IP:@source_host} %{DATA:log_type}: %{DATA:log_level}: %{GREEDYDATA:log_message}" } }
mutate {
replace => [ "@source_host", "10.100.251.199" ]
}
}
output {
stdout { codec => rubydebug }
}
輸出以下內容:
{
"message" => "Sep 25 15:50:57 10.100.251.98 mail_logs: Info: New SMTP DCID 13417989 interface 172.30.75.10 address 172.30.75.12 port 25",
"@version" => "1",
"@timestamp" => "2016-09-25T14:03:20.332Z",
"host" => "0:0:0:0:0:0:0:1",
"port" => 52175,
"log_time" => "Sep 25 15:50:57",
"@source_host" => "10.100.251.199",
"log_type" => "mail_logs",
"log_level" => "Info",
"log_message" => "New SMTP DCID 13417989 interface 172.30.75.10 address 172.30.75.12 port 25"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.