Как передать массив filebeat [host] [ip] плагину фильтра CIDR logstash? - PullRequest
0 голосов
/ 11 марта 2019

Я использую процессор filebeat add_host_metadata для обогащения событий массивом локальных IP-адресов для хоста, но я не могу передать это плагину фильтра CIDR logstash, потому что он видит его как строку, а не как массивстроки.

Filebeat добавить метаданные хоста: https://www.elastic.co/guide/en/beats/filebeat/master/add-host-metadata.html

Плагин фильтра CIDR Logstash: https://www.elastic.co/guide/en/logstash/current/plugins-filters-cidr.html

КОНФИГУРАЦИЯ FILEBEAT

processors:
- add_host_metadata:
    netinfo.enabled: true

Filebeat передает следующее logstash

"host": {
      "ip": [
        "fe80::xxxx:xxxx:xxxx:xxx",
        "10.x.x.x",
        "fe80::xxxx:xxxx:xxxx:xxx",
        "10.x.x.x"
      ],
      "name": "HOSTNAME"
    },

Я хочу передать массив [host] [ip] плагину фильтра CIDR logstash ниже.КОНФИГУРАЦИЯ LOGSTASH

input {
  beats { 
    port => 5044
  }
}
filter {
    cidr {
      add_field => { "[corp][environment]" => "prod.corp.com" }
      address => "%{[host][ip]}"
      network => [ "10.x.0.0/16" ]
    }
}

Однако, когда я это делаю, я получаю следующую ошибку, потому что массив не передается в виде массива:

[WARN ][logstash.filters.cidr    ] Invalid IP address, skipping {:address=>"%{[host][ip]}", :event=>#<LogStash::Event:0x61279c17>}

Он работает, если я передаю каждыйиндивидуально, но это очень грязно, так как я не знаю, сколько значений есть для каждого устройства:

input {
  beats { 
    port => 5044
  }
}
cidr {
  add_field => { "[corp][environment]" => "prod.corp.com" }
  address => ["%{[host][ip][0]}", "%{[host][ip][1]}","%{[host][ip][2]}","%{[host][ip][3]}","%{[host][ip][4]}"]
  network => [ "10.x.0.0/16" ]
}

}

Это работает, но грязно

[DEBUG][logstash.filters.cidr    ] Checking IP inclusion {:address=>#<IPAddr: IPv6:fe80:0000:0000:0000:xxxx:xxxx:xxxx:xxxx/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>, :network=>#<IPAddr: IPv4:10.x.x.0/255.255.0.0>}
[DEBUG][logstash.filters.cidr    ] Checking IP inclusion {:address=>#<IPAddr: IPv4:10.x.x.x/255.255.255.255>, :network=>#<IPAddr: IPv4:10.x.0.0/255.255.0.0>}
[DEBUG][logstash.filters.cidr    ] Checking IP inclusion {:address=>#<IPAddr: IPv6:fe80:0000:0000:0000:xxxx:xxxx:xxxx:xxxx/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>, :network=>#<IPAddr: IPv4:10.x.x.0/255.255.0.0>}
[DEBUG][logstash.filters.cidr    ] Checking IP inclusion {:address=>#<IPAddr: IPv4:10.x.x.x/255.255.255.255>, :network=>#<IPAddr: IPv4:10.x.0.0/255.255.0.0>}
[WARN ][logstash.filters.cidr    ] Invalid IP address, skipping {:address=>"%{[host][ip][4]}", :event=>#<LogStash::Event:0x78d60b5f>}

Это общая проблема logstash или это ошибка с плагином фильтра CIDR?

Спасибо!

Peter

...