Я использую процессор 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