在我的服务器上运行名为“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
}
但数据并不完全是我想要的。我需要将字符串转换为日期,根据其他元素添加一些元素,并在加载到特定集合中的每个文档上添加更多“转换”。
处理此问题的默认方式是什么?整个过程记录在哪里?
答案 0 :(得分:2)
Logstash有许多过滤插件,可用于添加,删除和修改消息字段。 Logstash documentation列出了所有内容。根据您上面的示例消息判断,我已经说过已经有很多过滤器了。听起来你至少需要一个额外的date filter和一个mutate filter来完成你所概述的内容。