Você pode usar o filtro 'dns' para fazer uma pesquisa inversa e usá-lo para definir o campo. link
Estou enviando alguns logs para logstash no servidor central usando outro logstash no cliente como remetente. O tipo de entrada é "arquivo". As mensagens são recebidas no servidor, mas não refletem o endereço IP do cliente. Ele envia o nome do host no campo "@source_host". Existe alguma coisa que eu possa fazer para obter o IP como um campo? Talvez um filtro?
Conf do cliente:
input {
file {
format => "plain"
path => "/var/log/app/test1.txt"
type => "start"
}
}
output {
redis {
host => "test.example.com"
data_type => "list"
key => "logstash"
}
}
Você pode usar o filtro 'dns' para fazer uma pesquisa inversa e usá-lo para definir o campo. link
Se o IP do cliente que você deseja é estático, sugiro substituir o conteúdo @source_host usando o mutate
filter
Por exemplo :
filter {
mutate {
replace => ["@source_host","xx.xx.xx.xx"]
}
}
Se você quisesse apenas o IP em um campo (em vez de usar @source_host), poderia adicioná-lo à sua entrada:
input {
file {
format => "plain"
path => "/var/log/app/test1.txt"
type => "start"
add_field => ['source_ip','xx.xx.xx.xx']
}
}
Caso contrário, se você realmente precisar resolver nomes de host de clientes não-estáticos, então @ Dan Garthwaite A resposta é a correta.
Tags logstash