4

次の設定があります。RabbitMQ に JSON メッセージを送信する Java ツールがあります。それらは次のようになります。

{
"a": 0,
"b": 1,
"c": 2
}

ここで、Logstash を使用して RabbitMQ キューを読み取り、それらを Elasticsearch に保存して、Kibana でデータを分析できるようにします。Elasticsearch に保存されている JSON は次のようになります。

{
"a": 0,
"b": 1,
"c": 2,
"@version": "1",
"@timestamp": "2014-01-22T19:05:19.136Z"
}

@timestamp フィールドは、私がやっていることには何の役にも立たないと思います。cURL を使用して同じ JSON を Elasticsearch に保存すると、@version フィールドのみが存在し、@timestamp フィールドは存在しません。@timestamp を保存しないように Logstash を設定する方法はありますか?

4

2 に答える 2

1

@接頭辞が付いたフィールドは、Logstash によって内部的に使用されます。それらを削除すると、エラーが発生する傾向があります。

たとえば、Logstash 1.3.3 で次の構成ファイルを試しました。

input { 
    generator {
        type => "timestrip"
        message => "This is a test message."
        count => 1
    }
}

filter {
    mutate {
        remove_field => ["@timestamp"]
    }
}

output {
    elasticsearch_http {
        host => "127.0.0.1"
        flush_size => 1
    }
}

ES の出力は、次の例外とともに「送信アイテムのフラッシュに失敗しました」と報告します。

NoMethodError: undefined method `tv_sec' for nil:NilClass
于 2014-01-22T20:46:30.147 に答える