2016-11-16 4 views
3

はツイッター入力pluginフィルタと出力日付に基づいてlogstashの入力データをフィルタリングするにはどうすればいいですか?ここ

input { 
twitter { 
consumer_key => "lvvoeonCRBOHsLAoTPbion9sK" 
consumer_secret => "GNHOFzErJhuo0bNq38JUs7xea2BOktMiLa7tunoGwP0oFKCHrY" 
oauth_token => "704578110616936448-gfeSklNrITu7fHIZgjw3nwoZ1S0l0Jl" 
oauth_token_secret => "IHiyRJRN09jjdUTGrnesALw4DRle35WyX7pdnI3CtEnJ5" 
keywords => [ "afghanistan", "TOLOnews", "kabul", "police"] 
full_tweet => true 
} 
} 
filter { 
    date { 
     match => ["timestamp" , "MMM d YYY HH:mm:ss", "ISO8601"] 
    } 
} 
output { 
    stdout { codec => dots } 
    elasticsearch { 
     hosts => "10.20.1.123" 
     index => "twitter_news" 
     document_type => "tweets" 
    } 
} 

を含め、私のさえずり入力ツイート

"_source": { 
"created_at": "Wed Aug 10 06:42:48 +0000 2016", 
"id": 763264318242783200, 
"timestamp_ms": "1470811368891", 
"@version": "1", 
"@timestamp": "2016-08-10T06:42:48.000Z" 
} 

と私のlogstashの設定ファイルは、今日の日付が2016から11である、私はちょうど例えば新しいつぶやきを取得したいです-16、次にちょうど@timestamp= 2016-11-16ではない@timestamp= 2016-11-15または過去のつぶやきではないつぶやきを取得したいのですが、この設定では過去のつぶやきも取得できます。

+0

いくつかのサンプルログを表示してください。どのような結果が期待されますか? – Val

+0

私の入力データはtwitter、twitterストリームからのものですAPIは私に古いデータを送っています。私は@timestampsの名前でフィールドを持っています。そして、それを新しいデータを取得するために日付に基づいてフィルタリングしたいのです – jamal

+0

あなたは '入力? – Val

答えて

0

ここでのアイデアは、logstash configでルビコードを使用することです。 私は日付を比較するためにtimestamp_msを使用することを提案します。

    ここでタイムスタンプ を比較ルビー
  1. をミリ秒で、今日のタイムスタンプを追加

  2. を整数にtimestamp_msを変換する
  3. まず必要は例です:

    mutate { 
        convert => { 
         "timestamp_ms" => "integer" 
        } 
    } 
    ruby { 
        code => " 
         t = Time.now 
         today_ymd = t.strftime('%Y%m%d') 
         today_timestamp_ms = DateTime.parse(today_ymd).to_time.to_i*1000 
         event['@metadata']['today_timestamp_ms'] = today_timestamp_ms 
        " 
    } 
    
    
    if [timestamp_ms] < [@metadata][today_timestamp_ms] { 
    ## past days events 
        mutate { 
         add_field => { "test" => "past days events" } 
        } 
    } else { 
    # today events 
        mutate { 
         add_field => { "test" => "today events" } 
        } 
    
    } 
    
関連する問題