2016-08-10 8 views
0

私はsyslogサーバとELKスタックを同じサーバに持っています。 syslogソースごとにディレクトリがあります。 Logstashでsyslogファイルを解析しようとしていますが、 "host"フィールドにsyslogソースのIPアドレスまたはホスト名を保存します。現時点では、Logstashの解析後に0.0.0.0のソースがあります。Logstash keep syslog host

マイlogstash.conf:あなたはそれを解析された後

input { 
    file { 
    path => ["path/to/file.log"] 
    start_position => "beginning" 
    type => "linux-syslog" 
    ignore_older => 0 
    } 
} 

filter { 
    if [type] == "linux-syslog" { 
    grok { 
     match => {"message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" } 
    } 
    } 
} 

output { 
    elasticsearch { 
    hosts => ["@IP_Elastic:Port_Elastic"] 
    } 
stdout { codec => rubydebug } 
} 
+0

あなたの質問は、syslogメッセージは、可能性例Syslogメッセージ – pandaadb

+0

にアップデートしてください: '1月12日午前6時30分00秒1.2.3.4 apache_server:1.2.3.4 - - [12 /月/ 2011:06:29:59 +0100] "GET /foo/bar.html HTTP/1.1" 301 96 " - " Mozilla/5.0(Windows; U; Windows NT 5.1; fr; rv:1.9.2.12)Gecko/20101026 Firefox/3.6.12(.NET CLR 3.5.30729) "PID 18904 Time Taken 0' 私はログのソースIPアドレスまたはログ内のホスト名を持っていませんが、各ソース、これらのディレクトリの名前を使ってLogstashの「ホスト」フィールドを設定したい – ted

答えて

0

あなたのIP変数を使用してホストを上書きすることができます。この例を考えてみましょう:

Pipeline main started 
{"ip":"1.2.3.4"} 
{ 
     "message" => "{\"ip\":\"1.2.3.4\"}", 
     "@version" => "1", 
    "@timestamp" => "2016-08-10T13:36:18.875Z", 
      "host" => "pandaadb", 
      "ip" => "1.2.3.4", 
     "@host" => "1.2.3.4" 
} 

私はIPを取得するためにJSONを解析しています。次に、IPフィールドをホストに書き込みます。

フィルタ:

filter { 
    # this parses the ip json 
    json { 
     source => "message" 
    } 

    mutate { 
     add_field => { "@host" => "%{ip}" } 
    } 
} 

どんなフィールドで%{IP}を置き換えるあなたのIPアドレスが含まれています。

乾杯、 アルトゥル