2017-08-08 10 views
0

私は、syslogメッセージを中央のrsyslogサーバに送信する大規模なサーバ群を持っています。これらのサーバは、それらをlogstashに送信します。私が持っている問題は、送信サーバーが "localhost"または内部eth0 NICの10.0.0.0/8 IPアドレスとしてマシン名を送信していることです。これはrsyslogサーバーがログファイルを送信元IP上にあり、サーバのremote-server-1.2.3.4.logファイルにログを記録します。この問題は、rsyslogサーバーがlogstashに(*.* @logstashとともに)送信した後に、送信元IP情報を持たない場合に発生します。rsyslogで転送するときにフィールドを書き換えることはできますか?

ソースマシンのIPアドレスを含むようにrsyslogでソースマシン名/ IPを変更することができます。そのため、logstashは正しいソースIPに集約できますか?

これは、フィールドを書き換えることrsyslogのは不可能である

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 
}} 

おかげ

+0

./samplicate -d 5 -S -p 514 -s 10.3.1.183 10.3.1.183/1554 10.3.1.183/1555'''と '' 'samplate''を' '' –

答えて

0

私logstashの設定です。

しかし、メッセージが生成されるシステムのIPを簡単に取得できます。

すべてのメッセージにrsyslog gets、fromhost-ipのプロパティがあります。あなたはあなたのlogstash設定でそれを使うことができます。たぶん何かのような

match => { "message" => "%{SYSLOG-IP:syslog_fromhost-ip} %{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } 

ここでそれについての詳細を見つけ、http://www.rsyslog.com/doc/master/configuration/properties.html#message-properties

私はsyslogの内、またはトラフィックがループが発生didntの方法でのiptablesでこれを行うための方法を見つけるcouldntのため、私が使用し
関連する問題