Назад | Перейти на главную страницу

Как отправить IP-адрес в 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"
  }
}

Вы можете использовать фильтр «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']
  }
}

В противном случае, если вам действительно нужно разрешить нестатические имена хостов клиентов, тогда @Дэн Гартвейтответ правильный.