logstash-input-mongodbプラグインがデータベースからの監査を読み取るように設定しようとしていますが、すべての解析戦略に問題があるようで、何もカスタマイズする方法がわかりません。logstash-input-mongodb:出力を制御しますか?
"flatten" parse_methodは非常にうまく動作しますが、mongodbオブジェクトIDは無視され、log_entryフィールド以外のどこにも出力されません。
「単純な」parse_methodにはオブジェクトIDが含まれていますが、日付フィルタを解析する方法(たとえば、「2017-02-12 16:30:00 UTC」)はわかりません。次に、適切なタイムスタンプがない場合、プラグインは、現在の時刻とは関係のないタイムスタンプを独自に生成するように見えます(たとえば、2022年)。
"dig"メソッド私はまだ分かりません。
だから私の質問:
- LOG_ENTRYからのデータを解析する方法はあります(以下の例を参照)フィールドのプラグインが出力しますか?私はjsonフィルターを試しましたが、ルビーフォーマットだったのでjsonではありません。
- または、オブジェクトIDを含むように「平坦化」メソッドを取得する方法はありますか?
- または、mongodb ISODateフィールドを適切にフォーマットするための「シンプルな」方法を得ることができますか?
- プラグインが最初からデータを読み込まないようにする方法はありますか(私は最後の日かそれ以上をlogstashにプッシュしたいだけです)?
{ "audit-id" => "58a2edc916e057270065fa74", "created" => "2017-02-14T11:45:13Z", "type" => "mongodb-audit", "audit-type" => "PaymentAudit", "mongo_id" => "58a2edc916e057270065fa74", "expiresAt" => "2017-05-15T11:45:13Z", "lastUpdated" => "2017-02-14T11:45:13Z", "@timestamp" => 2017-02-14T11:45:13.000Z, "log_entry" => "{\"_id\"=>BSON::ObjectId('58a2edc916e057270065fa74'), \"order\"=>BSON::ObjectId('a8a2f205790858970046aa59'), \"_type\"=>\"PaymentAudit\", \"lastUpdated\"=>2017-02-14 11:45:13 UTC, \"created\"=>2017-02-14 11:45:13 UTC, \"payment\"=>BSON::ObjectId('58a2edc02eafcd560101ee5f'), \"organization\"=>BSON::ObjectId('56edde0ba33e1c03ff54a5ec'), \"status\"=>\"succeeded\", \"context\"=>{\"type\"=>\"order\", \"id\"=>BSON::ObjectId('58a2e205790852270046ab59')}, \"expiresAt\"=>2017-05-15 11:45:13 UTC, \"__v\"=>0}", "logdate" => "2017-02-14T11:45:13+00:00", "__v" => 0, "@version" => "1", "context_type" => "order", "status" => "succeeded", "timestamp" => "2017-02-14T11:45:13Z" }
がどのように私は上記のLOG_ENTRYフィールドから組織を抽出することができます。LOG_ENTRY含む
input { mongodb { uri => 'mongodb://localhost:27017/test' placeholder_db_dir => '/elk/logstash-mongodb/' placeholder_db_name => 'logstash_sqlite.db' collection => 'auditcommunications' batch_size => 1000 parse_method => "flatten" } } filter { date { match => [ "timestamp", "ISO8601" ] } } output { stdout { codec => rubydebug } }
例データ:
は、ここに私の基本的なものをだ、任意の構成で再現することはできますか?
私は次のことを試してみた:
filter {
ruby {
code => "event.set('organization', eval(event.get('[log_entry]')))"
}
}
が、これはrubyexceptionをスロー:ERRORのlogstash.filters.rubyを - Rubyの例外が発生しました:(evalの):1:構文エラー、予期しないtINTEGER
ログストアの設定を共有できますか? @Valがそれを加えました: – Val
私はそれをさまざまな方法で試してみましたが、何も違いはないようですので、それはそれほど重要ではないと思います。 – joniba
4番目の点については、 'since_ *'設定を試してみましたか? – Val