J'ai une grande collection de serveurs qui envoient des messages syslog à un serveur rsyslog central, qui à son tour leur envoie un logstash. Le problème que j'ai est que les serveurs d'envoi envoient le nom de la machine en tant que "localhost" ou l'adresse IP 10.0.0.0/8 de leur eth0nic interne, ce qui n'est pas un gros problème car le serveur rsyslog scinde les fichiers journaux sur l'IP source, et il les enregistre dans leur fichier server-server-1.2.3.4.log du serveur. Le problème se produit lorsque le serveur rsyslog envoie (avec *.* @logstash
) à logstash puis n'a aucune des informations IP source.Est-il possible de réécrire les champs lors du transfert dans rsyslog?
Est-il possible que rsyslog modifie le nom/IP de la machine source afin qu'elle inclue l'adresse IP source, afin que logstash puisse agréger sur cette adresse IP source correcte?
Voici ma config logstash
input {
udp {
port => 514
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch {
hosts => "esearch1:443"
ssl => "true"
manage_template => false
}}
Merci de
Je ne pouvais pas trouver un moyen de le faire dans syslog ou avec iptables d'une manière qui na pas créer des boucles de circulation, donc je '' 'samplicate''' avec' '' ./samplicate -d 5 -S -p 514 -s 10.3.1.183 10.3.1.183/1554 10.3.1.183/1555''' –