当前日志系统常用的有elk(elasticsearch logstash kibana),不过很多公司不喜欢用logstash,而会用很多其他性能好、资源利用少的日志采集软件,其中rsyslog会是很
当前日志系统常用的有elk(elasticsearch logstash kibana),不过很多公司不喜欢用logstash,而会用很多其他性能好、资源利用少的日志采集软件,其中rsyslog会是很多公司考虑的一款软件。如果选择了rsyslog,就无法避免的怎样去监控rsyslog的队列信息,还好rsyslog自身通过impstats模块可以快速获得到队列的信息,我们就可以简单把队列信息转发到elasticsearch。
impstats
module(load="impstats" interval="120" severity="6" log.syslog="on" format="json-elasticsearch" resetCounters="on")
omelasticsearch
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" )}
mmjsonparse
JSON / CEE结构化内容提取模块(mmjsonparse)
模块名称: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。这是有意的,但是未来的版本可能支持配置参数以放宽格式要求。具体的操作配置指令:
- 饼干 [字符串]默认为“@cee:”
- 允许设置必须在消息的JSON部分前面存在的cookie。最重要的是,这可以设置为空字符串(“”),以便不需要任何cookie。在这种情况下,JSON前面允许使用前导空格。JSON之后不允许使用非空格字符。如果需要,则必须使用mmnormalize。样品:这将激活模块并对所有消息应用规范化:
模块(负载= “mmjsonparse” )的动作(类型= “mmjsonparse” )
要允许解析没有cookie的邮件,请使用此操作语句:
action(type =“mmjsonparse”cookie =“”)
传统格式:
$ ModLoad mmjsonparse
- *:mmjsonparse:
if( $syslogfacility-text=="syslog" ) then{call RulesetForImpstatsOmesstop}
模板配置
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%")