LogStash 转换过滤器被忽略
LogStash translate filter ignored
我正在尝试添加一个简单的翻译过滤器来转换应用程序名称中的端口号:
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"
}
}
mutate 部分已正确完成,但完全忽略了 translate 过滤器。
在 [source][application] 中,我得到的是原始端口号,而不是应用程序名称,甚至 __NO_MATCH.
我做错了什么?类型有问题吗?
谢谢
如果要将 translate
过滤器的结果写入文档中已存在的字段,则需要设置 override => true
,如果不设置,过滤器将跳过翻译。 [documentation]
但在您的情况下,最好不要使用 mutate
过滤器来添加字段 source.application
,因为此字段会被翻译过滤器覆盖,所以不需要它。
只需使用翻译过滤器即可。
filter {
translate
{
field => "[source][port]"
destination => "[source][application]"
dictionary => {
"80" => "HTTP"
"443" => "SSL"
"5432" => "Postgresql"
}
fallback => "__NO_MATCH"
}
}
我正在尝试添加一个简单的翻译过滤器来转换应用程序名称中的端口号:
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"
}
}
mutate 部分已正确完成,但完全忽略了 translate 过滤器。 在 [source][application] 中,我得到的是原始端口号,而不是应用程序名称,甚至 __NO_MATCH.
我做错了什么?类型有问题吗?
谢谢
如果要将 translate
过滤器的结果写入文档中已存在的字段,则需要设置 override => true
,如果不设置,过滤器将跳过翻译。 [documentation]
但在您的情况下,最好不要使用 mutate
过滤器来添加字段 source.application
,因为此字段会被翻译过滤器覆盖,所以不需要它。
只需使用翻译过滤器即可。
filter {
translate
{
field => "[source][port]"
destination => "[source][application]"
dictionary => {
"80" => "HTTP"
"443" => "SSL"
"5432" => "Postgresql"
}
fallback => "__NO_MATCH"
}
}