我正在尝试使用名为“country”的额外字段来丰富我拥有的 JSON 文件(我知道可能已经有一些 OOTB 查找,但我正在尝试针对其他用例手动执行此操作。)。我是在翻译过滤器的帮助下完成此操作的:
input {
file {
path => "/Users/Downloads/logs/test1.json"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => "json"
}
}
filter {
translate {
field => "remote_addr"
dictionary_path => "/Users/Downloads/logs/ip_list.json"
refresh_interval => 3600
destination => "country"
fallback => "Unknown"
}
}
output {
stdout { codec => rubydebug }
}
test1.json 包含:
{"remote_addr": "7.7.7.7", "ioc":"false"}
并且 ip_list.json 包含:
{"ip": "7.7.7.7", "country":"sweden"}
但是,它总是默认返回“未知”,这是不应该的,因为该字段存在于字典路径中?
我尝试了不同的json文件,但结果是相同的。我希望它能在查找/翻译中找到国家/地区字段并将其添加到主 json 文件中。
标准输出包含:
{
"@timestamp" => 2023-12-10T13:20:00.384715Z,
"log" => {
"file" => {
"path" => "/Users/Downloads/logs/test1.json"
}
},
"country" => "Unknown",
"host" => {
"name" => "uxxx"
},
"ioc" => "false",
"event" => {
"original" => "{\"remote_addr\": \"7.7.7.7\", \"ioc\":\"false\"}"
},
"@version" => "1",
"remote_addr" => "7.7.7.7"
}
翻译过滤器在从字典创建的 JSON 哈希中查找源字段。 ip_list.json 应该包含
{"7.7.7.7": "sweden"}
过滤器不会在字典中搜索包含匹配值的键(即查看值是否有任何“ip”键与源字段匹配)。