0

の変数はありません。が置換されます - なぜですか?logstashの変数は置き換えられません

古いバージョンのlogstash(1.5.4)では動作していましたが、2.3ではこれ以上使用できませんでした。 logstash.cfgにおける出力フィルタの

パート(dumps to s3):

output { 
    if [bucket] == "bucket1" { 
    s3 { 
     bucket => "bucket1" 
     access_key_id => "****" 
     secret_access_key => "****" 
     region => "ap-southeast-2" 
     prefix => "%{env}/%{year}/%{month}/%{day}/" 
     size_file => 50000000 #50mb 
     time_file => 1 
     codec => json_lines # save log as json line (no newlines) 
     temporary_directory => "/var/log/temp-logstash" 
     tags => ["bucket1"] 
    } 
    } 
    .. 
} 

例データセット(STDOUTから採取された)は:

{ 
    "random_person" => "Kenneth Cumming 2016-04-14 00:53:59.777647", 
     "@timestamp" => "2016-04-14T00:53:59.917Z", 
      "host" => "192.168.99.1", 
      "year" => "2016", 
      "month" => "04", 
       "day" => "14", 
       "env" => "dev", 
      "bucket" => "bucket1" 
} 

は、念のため、ここでのフィルタである:

filter { 
    mutate { 
    add_field => { 
     "request_uri" => "%{[headers][request_path]}" 
    } 
    } 
    grok { 
    break_on_match => false # default behaviour is to stop matching after first match, we don't want that 
    match => { "@timestamp" => "%{NOTSPACE:date}T%{NOTSPACE:time}Z"} # break timestamp field into date and time 
    match => { "date" => "%{INT:year}-%{INT:month}-%{INT:day}"} # break date into year month and day fields 
    match => { "request_uri" => "/%{WORD:env}/%{NOTSPACE:bucket}"} # break request uri into environment and bucket fields 
    } 
    mutate { 
     remove_field => ["request_uri", "headers", "@version", "date", "time"] 
    } 

} 
+0

「年」などを作成するために「日付」フィールドを使用しようとしていますが、「日付」フィールドは同じgrok {}スタンザ内に作成されます。私は別のgrok stanzasでそれを試みるか、またはあなたが本当に望むgrokパターンにこれら2つをマージします。 –

+0

%{env}についてはどうですか? – kev

答えて

0

このフィールドのバリエーションはknown issueですablesは 'prefix'には使用できません。

+0

nigoelがこの問題を公開し、2015年6月1日の修正を提供しました:-( – kev

関連する問題