2017-05-02 1 views
0

を設定していない私は、日付フィールドを解析し、ElasticSearchに送信regardgin奇妙な状況にして実行しました。私はフィールドを解析することができます。実際にはElasticSearchで作成されますが、常に文字列として終了します。 私は多くの異なる組み合わせを試しました。また、私は人々が示唆した多くの異なることを試みましたが、それでも私は失敗します。 Filebeatから来ElasticSearch - 私はELKスタックをしようと、これまでのところは良い:)</p> <p>いdate型

文字列:

[2017年4月26日9時40分33秒] security.DEBUG:セッション中にセキュリティトークンをストアド

は、これは私の設定です。 {"key": "securitysecured_area"} []

[2017-04-26 09:50:42] request.INFO:一致するルート "home_logged_in"。 {"コントローラー": "AppBundle \ Controller \ HomeLoggedInController :: showAction"、 "ロケール": "de"、 "ルート": "homelogged_in"}、 "request_uri": "https://qa.someserver.de/de/home"} []

logstash解析セクション:

if [@metadata][type] == "feprod" or [@metadata][type] == "feqa"{ 
grok { 
    match => { "message" => "%{TIMESTAMP_ISO8601:logdate}" } 
} 
date { 
#timezone => "Europe/Berlin" 
match => [ "logdate", "yyyy-MM-dd HH:mm:ss"] 
    } 
} 

は、ドキュメントによると、私の@timestampフィールドがLOGDATE値で上書きする必要があります。しかし、それは起こっていません。

ElasticSearchではlogdateフィールドが作成されており、その値は2017-04-26 09:40:33ですが、そのタイプは文字列であることがわかります。

私は常にゼロからインデックスを作成します。最初にインデックスを削除してから、logstashにそれを設定させます。

@timestampは、実際の日付で上書きされるか(インデックスされた日付ではない)、またはlogdateフィールドが日付タイプで作成される必要があります。どちらも良いです

答えて

1

[@metadata][type]を表示していない場所に明示的に追加していない限り、それは問題です。デフォルトでは設定されていませんが、入力の 'type =>'パラメータからデフォルトで[type]が設定されています。

あなたは、最小限の完全な例でこれを検証することができます。

input { 
    stdin { 
     type=>'feprod' 
    } 
} 
filter { 
    if [@metadata][type] == "feprod" or [@metadata][type] == "feqa"{ 
     grok { 
      match => { "message" => "%{TIMESTAMP_ISO8601:logdate}" } 
     } 
     date { 
      match => [ "logdate", "yyyy-MM-dd HH:mm:ss"] 
     } 
    } 
} 

output { 
    stdout { codec => "rubydebug" } 
} 

そして、それを実行している:

echo '[2017-04-26 09:40:33] security.DEBUG: Stored the security token in the session. {"key":"securitysecured_area"} []' | bin/logstash -f test.conf 

と出力取得:あなただけif [type] ==を使用する場合

{ 
    "@timestamp" => 2017-05-02T15:15:05.875Z, 
     "@version" => "1", 
      "host" => "xxxxxxxxx", 
     "message" => "[2017-04-26 09:40:33] security.DEBUG: Stored the security  token in the session. {\"key\":\"securitysecured_area\"} []", 
      "type" => "feprod", 
      "tags" => [] 
} 

を。 ..それは正常に動作します。

{ 
    "@timestamp" => 2017-04-26T14:40:33.000Z, 
     "logdate" => "2017-04-26 09:40:33", 
     "@version" => "1", 
      "host" => "xxxxxxxxx", 
     "message" => "[2017-04-26 09:40:33] security.DEBUG: Stored the security token in the session. {\"key\":\"securitysecured_area\"} []", 
      "type" => "feprod", 
      "tags" => [] 
} 
+0

[@metadata] [type]タイプがfilebeatで設定されているため、ログを保存するインデックスがわかります。説明をありがとう:) –

+0

このディスカッションによると:https://discuss.elastic.co/t/logstash-input-beat-not-receiving-metadata-field/40365/3ファイルビート@metadataフィールドはlogstashに来る – Alcanzar

+0

Filebeatで: - input_type:log パス:mylog。log document_type:feprod feprodをタイプとして出力します。これはLogstashでデータを格納するインデックスを決定するために使用します –

関連する問題

 関連する問題