如何在 ELK 的字段中解析 IP

How to parse IP within fields in ELK

我正在尝试 automate/ease 审查 ELK(ElasticSearch、Logstash、Kibana)中的防火墙规则的程序。 我有一些从 CSV 中获取的数据,其结构如下:

Source;Destination;Service;Action;Comment
10.0.0.0/8 172.16.0.0/16 192.168.0.0/24 23.2.20.6;10.0.0.1 10.0.0.2 10.0.0.3;udp:53 
tcp:53;accept;No.10: ID: INC0000000001

我的objective是通过解析每个字段(对于子网and/or IP地址)在ELK中导入这些数据,如果可能的话,添加一个顺序字段(IP_Source1,IP_Destination2,etc) 包含每一个。

据您所知,这可能吗?怎么样?

感谢您提供的任何提示

您可以创建一个以文件形式输入的 logstash 配置。然后使用第一个 csv 过滤器。 CSV 过滤器应如下所示。

filter {
    csv {
        columns => ["source", "destination", "service", "action", "comment"]
        separator => ";"
    }
}

下一个过滤器需要 ruby 过滤器。

filter { 
    ruby { 
       code => "
          arr = event.get(source).split('')
          arr.each.with_index(1) do |a, index|
               event.set(ip_source+index, a)
          end
       "
    }
}

最终会输出到elasticsearch。

我没有测试代码。但我希望这能给你一些好的提示。