加载期间的数据转换

时间:2014-11-25 14:23:30

标签: mongodb logstash

在我的服务器上运行名为“logstash”的应用程序。此应用程序从多个服务器接收日志条目,并将它们作为JSON文档上载到MongoDB。像魅力一样。

示例:

{
    u'syslog_message': u'[10724525.839722] [UFW BLOCK] IN=venet0 OUT= MAC= SRC=1.2.3.4 DST=9.8.7.6 LEN=52 TOS=0x08 PREC=0x20 TTL=50 ID=55384 PROTO=TCP SPT=349 DPT=123 WINDOW=14600 RES=0x00 SYN URGP=0 ',
    u'received_from': u'1.3.5.7:1234',
    u'@version': u'1',
    u'@timestamp': datetime.datetime(2014, 11, 20, 15, 9, 55),
    u'syslog_timestamp': u'Nov 20 15:09:55',
    u'syslog_facility': u'user-level',
    u'syslog_severity': u'notice',
    u'host': u'2.4.6.8:2468',
    u'syslog_program': u'kernel',
    u'syslog_hostname': u'server01',
    u'received_at': u'2014-11-20 20:09:55 UTC',
    u'message': u'<4>Nov 20 15:09:55 server01 kernel: [10724525.839722] [UFW BLOCK] IN=venet0 OUT= MAC= SRC=1.2.3.4 DST=2.3.4.5 LEN=52 TOS=0x08 PREC=0x20 TTL=50 ID=55384 PROTO=TCP SPT=1234 DPT=543 WINDOW=14600 RES=0x00 SYN URGP=0 ',
    u'_id': ObjectId('546e4a93e98673fe8f11a4d2'),
    u'type': u'syslog',
    u'syslog_severity_code': 5,
    u'syslog_facility_code': 1
}

但数据并不完全是我想要的。我需要将字符串转换为日期,根据其他元素添加一些元素,并在加载到特定集合中的每个文档上添加更多“转换”。

处理此问题的默认方式是什么?整个过程记录在哪里?

1 个答案:

答案 0 :(得分:2)

Logstash有许多过滤插件,可用于添加,删除和修改消息字段。 Logstash documentation列出了所有内容。根据您上面的示例消息判断,我已经说过已经有很多过滤器了。听起来你至少需要一个额外的date filter和一个mutate filter来完成你所概述的内容。