elasticsearch 从路径中提取字段并将其添加到新的已用事件,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 从路径中提取字段并将其添加到新的已用事件,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 从路径中提取字段并将其添加到新的已用事件

elasticsearch 从路径中提取字段并将其添加到新的已用事件,elasticsearch,logstash,elasticsearch,Logstash,我的文件存储如下: c:/…../agency/device/log.txt 我想提取代理和设备的字段,并将它们添加到日志中的每个事件中。 现在我使用grok过滤器来完成这项工作,它对日志中的所有事件都很有效,但我希望这些字段被添加到新创建的已用事件中,我一定对创建新事件感兴趣。 这是我的日志现在的样子: filter { grok { match => {path => "%{GREEDYDATA}/%{GREEDYDATA:agency}/ {GREEDY

我的文件存储如下: c:/…../agency/device/log.txt 我想提取代理和设备的字段,并将它们添加到日志中的每个事件中。 现在我使用grok过滤器来完成这项工作,它对日志中的所有事件都很有效,但我希望这些字段被添加到新创建的已用事件中,我一定对创建新事件感兴趣。 这是我的日志现在的样子:

filter
{
    grok {
        match => {path => "%{GREEDYDATA}/%{GREEDYDATA:agency}/ {GREEDYDATA:device}/%{GREEDYDATA}.txt"}
    }
    elapsed{
        start_tag => "a"
        end_tag => "b"
        unique_id_field => "host"
        timeout => 100000
        new_event_on_match => true
        add_tag => "ab"
        keep_start_event=>last
    }
}
有办法吗?
谢谢大家!

你的问题到底是什么?grok解析并不总是有效,或者您没有获得新的已用事件?一般来说,最好用更精确/特定的正则表达式替换GREEDYDATA,以提高效率并更好地匹配问题在于grok筛选器仅对具有路径的事件有效,这意味着仅对原始日志事件有效。在已用过滤器中创建的事件没有指向日志上事件的链接(因此,它们的日期也不同),因此它们没有路径。现在代理和设备只出现在路径中,只有具有路径的事件才能生成这些字段。我想创建一种全局变量来保存这些字段,这样我也可以将它们设置为新事件。您可以使用unique_id_字段来提供更精细的事务id(
host
太宽),然后您可以使用该id来过滤相关事件,并为路径添加一些过滤器/agg,以便对事件进行分组。您可以添加第二个agg,如top_hits,以显示不同的字段值好主意,谢谢!