我试图建立的logstash-input-mongodb插件读取从我的数据库审计,但所有的分析策略,似乎有问题,我不知道如何自定义任何东西。logstash-input-mongodb:控制输出?
的“扁平化” parse_method相当不错的作品,但它忽略了MongoDB的对象ID,并且不会将输出除了在log_entry场的任何位置。
“simple”parse_method包含对象ID,但输出日期的方式我无法弄清楚如何使用日期过滤器进行分析(例如,“2017-02-12 16:30:00 UTC”)。然后,在没有适当的时间戳的情况下,插件似乎自己生成与当前时间无关的时间戳(例如,在2022年)。
的“挖”的方法我还没有完全想通了呢。
所以我的问题:
- 有没有办法从log_entry分析数据(见下面的例子)字段该插件输出?我试过json过滤器,但它不是json,因为它已被ruby格式化。
- 或者,有什么办法让“扁平”方法包含对象ID?
- 或者,是否有任何可以获得“简单”的方法来正确格式化mongodb ISODate字段?
- 有什么办法来防止插件从一开始的时候读取数据(我只是想推的最后一天左右的时间建成logstash)?
可与任何配置进行复制,这是我的基本的一个:
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 }
}
实例数据,包括log_entry:
{
"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领域的组织?
我已经试过如下:
filter {
ruby {
code => "event.set('organization', eval(event.get('[log_entry]')))"
}
}
但这抛出一个rubyexception:ERROR logstash.filters.ruby - 红宝石发生异常:(EVAL):1:语法错误,意想不到的tINTEGER
你可以分享你的logstash配置吗? – Val
@Val添加了它。我尝试过很多种方式,并没有什么可以改变,所以我认为它没有那么重要。 – joniba
关于第四点,您是否尝试过使用'since_ *'设置? – Val