Мой вопрос касается передачи массива IP-адресов или одного IP-адреса в плагин GeoIP. В моем сценарии я могу получить IP-адрес или список IP-адресов для x_forwareded, как указано ниже:
Возможные значения x_forwarded_for: «ip_address» или «ip_address1, ip_address2, ip_address3 ..»
В настоящее время я пытаюсь использовать индекс массива внутри плагина фильтра geoip, как указано ниже:
<filter nginx.access>
@type geoip
backend_library geoip2_c
# Set key name for the client ip address values
geoip_lookup_keys $"{x_forwarded_for.first}"
# Specify key name for the country_code values
<record>
city ${city.names.en["x_forwarded_for.first"]}
latitude ${location.latitude["x_forwarded_for.first]"]}
longitude ${location.longitude["x_forwarded_for.first"]}
country_code ${country.iso_code["x_forwarded_for.first"]}
country_name ${country.names.en["x_forwarded_for.first"]}
region_code ${subdivisions.0.iso_code["x_forwarded_for.first"]}
region_name ${subdivisions.0.names.en["x_forwarded_for.first"]}
</record>
</filter>
Я пытался заменить x_forwarded_for.first на x_forwarded_for [0], но ничего не работает. Я получаю следующую ошибку в журнале ошибок td-agent:
2020-07-13 17:03:14 +0000 [warn]: #0 dump an error event: error_class=RuntimeError error="failed to expand `x_forwarded_for.first` : error = undefined local variable or method `x_forwarded_for' for #
Не могли бы вы предложить возможное решение.
Обратите внимание: конечная цель - получить сведения о местоположении geoip с помощью первый IP-адрес массива или IP-адрес в случае только одного IP-адреса из x_forwarded_for.