Как отправить 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 будет правильным.

Другие вопросы по тегам