如何在Yaml文件中使用正则表达式进行Logstash翻译过滤器



我正在尝试使用Logstash Translate Filter来丰富bro正在生成的网络数据,并且我正在将这些数据吸收到我的ELK堆栈中。例如,以下是我如何手动丰富数据:

translate {
field => "id.orig_h"
destination => "src_comp_name"
dictionary => [
"192.168.1.1", "Home_Router",
"192.168.1.150", "My_Laptop",
"192.168.1.210", "My_Desktop"
]
}

虽然这是有效的,但它并不能满足我最终需要它的目的。因此,我试图将我的字典移到一个yaml文件中,并使用regex来匹配IP地址,为它们分配标记。所以我把我的翻译函数编辑成:

translate {
field => "id.orig_h"
destination => "src_comp_name"
dictionary_path => '/etc/logstash/config/compNames.yaml'
}

以下是我希望在yaml文件中做的大致内容:

'^192.168.1.[1-2]$': "Home_Routers"
'^192.168.1.1[0-9]{2}$': "Home_Laptops"
'^192.168.1.2[0-9]{2}$': "Home_Desktops"

这将导致192.168.1.1/2被标记为路由器,.100-199范围内的任何东西被标记为Home_Laptops,并且.200-255中的任何东西都被标记为"Home_Desktops"。我已经尝试了在Yaml文件中使用regex的多种方法,但我要么遇到之类的错误

"LogStash::Filters::Translate:在/etc/LogStash/config/compNames.yaml"*加载字典文件时无法将数组转换为哈希

或者logstash正在正确启动,但没有标记应该匹配的流量。

关于如何通过Logstash Translate Filter在yaml文件中实现正则表达式匹配以丰富数据,有什么指导吗?

将其添加到翻译函数中:

"exact" => true,
"regex" => true

最新更新