Я отправляю несколько журналов на центральный сервер 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"
}
}
Вы можете использовать фильтр «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']
}
}
В противном случае, если вам действительно нужно разрешить нестатические имена хостов клиентов, тогда @Дэн Гартвейтответ правильный.