Как отправить IP-адрес в logstash, используя входные данные как "файл"?
Я отправляю несколько журналов на центральный сервер logstash, используя другой logstash на клиенте в качестве отправителя. Тип ввода - "файл". Сообщения принимаются на сервере нормально, но это не отражает IP-адрес клиента. Вместо этого он отправляет имя хоста в поле "@source_host". Что я могу сделать, чтобы получить IP как поле? Может быть, фильтр?
Клиентский конф:
input {
file {
format => "plain"
path => "/var/log/app/test1.txt"
type => "start"
}
}
output {
redis {
host => "test.example.com"
data_type => "list"
key => "logstash"
}
}
2 ответа
Вы можете использовать фильтр 'dns' для обратного просмотра, а затем использовать его для установки поля. http://logstash.net/docs/1.2.2/filters/dns
Если IP-адрес клиента, который вы хотите, является статическим, то я бы предложил заменить содержимое @source_host, используя mutate
фильтр
Например:
filter {
mutate {
replace => ["@source_host","xx.xx.xx.xx"]
}
}
Если вы просто хотите получить IP-адрес в поле (а не в @source_host), вы можете добавить его в поле ввода:
input {
file {
format => "plain"
path => "/var/log/app/test1.txt"
type => "start"
add_field => ['source_ip','xx.xx.xx.xx']
}
}
В противном случае, если вам действительно нужно разрешить нестатические Dan Garthwaite хостов клиентов, то ответ @ Dan Garthwaite будет правильным.