当前日志系统经常使用的有elk(elasticsearch logstash kibana),不过不少公司不喜欢用logstash,而会用不少其余性能好、资源利用少的日志采集软件,其中rsyslog会是不少公司考虑的一款软件。 若是选择了rsyslog,就没法避免的怎样去监控rsyslog的队列信息,还好rsyslog自身经过impstats模块能够快速得到到队列的信息,咱们就能够简单把队列信息转发到elasticsearch。json
module(load="impstats" interval="120" severity="6" log.syslog="on" format="json-elasticsearch" resetCounters="on")
ruleset( name="RulesetForImpstatsOmes" ) { action( name="parse_impstats" cookie="" type="mmjsonparse" ) action( type = "omelasticsearch" template="linetemplate" server="127.0.0.1” serverport="9200" dynSearchType="on" dynSearchIndex="on" searchIndex="impstatsIndexName" searchType="impstatsTypeName" name="action_omelasticsearch-log2es" bulkmode="on" ) }
JSON / CEE结构化内容提取模块(mmjsonparse)cookie
模块名称:mmjsonparse 可用时间: 6.6.0+ 做者:赖Gerhards < rgerhards @ adiscon 。COM > 说明: 此模块支持解析遵循CEE / lumberjack规范的结构化日志消息。检查所谓的“CEE cookie”,而且若是存在,解析JSON编码的结构化消息内容。而后,属性可用做原始消息属性。 “CEE cookie”是字符串“@cee:”,它必须在实际的JSON以前。请注意,JSON必须有效,且不得后跟任何非JSON消息。若是这些条件不成立,mmjsonparse将不解析相关的JSON。这是基于在CEE /项目樵夫中使用的cookie定义,而且意在帮助防止错误地将消息检测为不是CEE的CEE。 这也意味着mmjsonparse当前不是一个通用的JSON解析器,它从消息中可能发生的JSON中拾取JSON。这是有意的,可是将来的版本可能支持配置参数以放宽格式要求。 具体的操做配置指令:elasticsearch
模块(负载= “mmjsonparse” ) 的动做(类型= “mmjsonparse” )性能
要容许解析没有cookie的邮件,请使用此操做语句:jsonp
action(type =“mmjsonparse”cookie =“”)编码
传统格式:日志
$ ModLoad mmjsonparsecode
if( $syslogfacility-text=="syslog" ) then { call RulesetForImpstatsOmes stop }orm
模板配置server
template( name="linetemplate" type="list" ) { constant(value="{") property(name="timereported" dateFormat="rfc3339" format="jsonf" outname="@timestamp") constant(value=",") property(name="hostname" format="jsonf" outname="host") constant(value=",") property(name="$!all-json" position.from="2") # constant(value="}") } template( name="impstatsIndexName" type="list" ) { constant(value="impstats-") property(name="timereported" dateFormat="rfc3339" position.from="1" position.to="4") constant(value=".") property(name="timereported" dateFormat="rfc3339" position.from="6" position.to="7") constant(value=".") property(name="timereported" dateFormat="rfc3339" position.from="9" position.to="10") } template( name="impstatsTypeName" type="string" string="%programname%")