已忽略LogStash转换筛选器
我正在尝试添加一个简单的转换筛选器,以转换应用程序名称中的端口号:已忽略LogStash转换筛选器,logstash,Logstash,我正在尝试添加一个简单的转换筛选器,以转换应用程序名称中的端口号: filter { mutate { add_field => { "[source][application]" => "%{[source][port]}" } } translate { field => "[source][port]" destin
filter {
mutate
{
add_field => { "[source][application]" => "%{[source][port]}" }
}
translate
{
field => "[source][port]"
destination => "[source][application]"
dictionary => {
"80" => "HTTP"
"443" => "SSL"
"5432" => "Postgresql"
}
fallback => "__NO_MATCH"
}
}
变异部分正确完成,但完全忽略了平移过滤器。
在[source][application]中,我得到的是原始端口号,而不是应用程序名,甚至没有匹配项
我做错了什么?是否存在类型问题
谢谢如果要将
翻译
过滤器的结果写入文档中已存在的字段,则需要设置覆盖=>真
,如果不设置,过滤器将跳过翻译。[]
但在您的情况下,最好不要使用mutate
过滤器来添加字段source.application
,因为此字段将被translate过滤器覆盖,因此不需要它
只要使用translate过滤器,它就会工作
filter {
translate
{
field => "[source][port]"
destination => "[source][application]"
dictionary => {
"80" => "HTTP"
"443" => "SSL"
"5432" => "Postgresql"
}
fallback => "__NO_MATCH"
}
}
如果要将
translate
过滤器的结果写入文档中已存在的字段,则需要设置override=>true
,如果未设置,过滤器将跳过翻译。[]
但在您的情况下,最好不要使用mutate
过滤器来添加字段source.application
,因为此字段将被translate过滤器覆盖,因此不需要它
只要使用translate过滤器,它就会工作
filter {
translate
{
field => "[source][port]"
destination => "[source][application]"
dictionary => {
"80" => "HTTP"
"443" => "SSL"
"5432" => "Postgresql"
}
fallback => "__NO_MATCH"
}
}
您是否尝试过不使用目的地?它将创建一个字段转换,如果是这种情况,json中子字段的目标可能不起作用?删除目标参数我得到了正确的值,但作为_source的直接子级,您是否尝试过不使用目标?它将创建一个字段转换,如果是这种情况,json中子字段的目标可能不起作用?删除目标参数我得到了正确的值,但作为_source的直接子项