2016-07-13 2 views
2

ローカルのELKスタック(macOs)で '古い'ログファイルを処理しようとしていますが、Logstashでファイルを読み取ることができません。Logstashで古いログを処理するには

{"eventid": "cowrie.direct-tcpip.data", "timestamp": "2016-07-10T03:00:17.713013Z", "format": "direct-tcp forward to %(dst_ip)s:%(dst_port)s with data %(data)s", "sensor": "sensor", "system": "says message", "src_ip": "8.8.8.8", "session": "session", "dst_port": 25, "dst_ip": "0.0.0.0", "message": "message'", "data": "data", "isError": 0} 

STDINに1行入力すると正常に動作します。すべてのスタックオーバーフローの質問を読んで、私はすべてを試してみました

input { 
     # this is the actual live log file to monitor 
     file { 
       path => "/Users/Auyer/ELK/ServerLogs/cowrie.json" 
       start_position => beginning 
       ignore_older => 0 
       sincedb_path => "/Users/Auyer/ELK/ServerLogs/cowrie.sincedb" 
       codec => json_lines 
       sincedb_write_interval => 15 
       discover_interval => 5 
     } 
     stdin{ 
     codec =>json_lines 
     type => "cowrie" 
     } 

} 

filter { 
    if [type] == "cowrie" { 

     json { 
      source => message 
     } 

     date { 
      match => [ "timestamp", "ISO8601" ] 
     } 

     if [src_ip] { 

      dns { 
       reverse => [ "src_host", "src_ip" ] 
       action => "append" 
      } 

      geoip { 
       source => "src_ip" 
       target => "geoip" 
       database => "/Users/Auyer/ELK/logstash-2.3.3/vendor/geoip/GeoLiteCity.dat" 
       add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] 
       add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] 
      } 

      geoip { 
       source => "src_ip" 
       database => "/Users/Auyer/ELK/logstash-2.3.3/vendor/geoip/GeoIPASNum.dat" 
      } 

      mutate { 
       convert => [ "[geoip][coordinates]", "float" ] 
      } 
     } 
    } 
} 

output { 
    if [type] == "cowrie" { 
     elasticsearch { 
      hosts => ["localhost:9200"] 
     } 
     file { 
      path => "/Users/Auyer/ELK/tmp/cowrie-logstash.log" 
      codec => json 
     } 
     stdout { 
      codec => rubydebug 
     } 
    } 
} 

(ただし、線の一部は、STDINとして貼り付けコピーを解除するにはあまりにも大きいです)、そして何も動いていないようにみえ。

他にも使用できる方法はありますか?

+0

これを試してください:logstashとelasticsearchを起動し、使用するログファイルを開き、ログ全体をコピーして同じファイルに貼り付けて保存します。これが機能しているかどうか教えてください。 – rresol

+0

@rresol私は動作しなかったものを試しました。私は古いファイルを移動し、古いファイルからすべてのものを貼り付ける新しいファイルを作成しました。 しかし、私はプログラムが同時に動いているのか、それとも後で彼らを反撃したのか分かりません。 –

+0

試してみてください。そして、logstashとelasticsearchが実行されていることを確認します。私は同様の問題を抱えていましたが、ファイルに新しいコンテンツを追加しているときにイベントとして放出されていたことがわかりました – rresol

答えて

0

はこれを試してみてください:

file { 
      path => "/Users/Auyer/ELK/ServerLogs/cowrie.json" 
      start_position => beginning 
      sincedb_path => "/dev/null" 
      codec => json_lines 
      type => "cowrie" 
    } 

数日前に私は同様の問題がありました。 sincedb_path/dev/nullに設定すると問題が解決しました。

+0

問題は、「タイプ」行が欠落していたことです –

関連する問題