rsyslog采集impstats信息入elasticsearch

当前日志系统经常使用的有elk(elasticsearch logstash kibana),不过不少公司不喜欢用logstash,而会用不少其余性能好、资源利用少的日志采集软件,其中rsyslog会是不少公司考虑的一款软件。 若是选择了rsyslog,就没法避免的怎样去监控rsyslog的队列信息,还好rsyslog自身经过impstats模块能够快速得到到队列的信息,咱们就能够简单把队列信息转发到elasticsearch。json

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)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

  • 饼干 [字符串]默认为“@cee:”
  • 容许设置必须在消息的JSON部分前面存在的cookie。 最重要的是,这能够设置为空字符串(“”),以便不须要任何cookie。在这种状况下,JSON前面容许使用前导空格。JSON以后不容许使用非空格字符。若是须要,则必须使用mmnormalize。 样品: 这将激活模块并对全部消息应用规范化:

模块(负载= “mmjsonparse” ) 的动做(类型= “mmjsonparse” )性能

要容许解析没有cookie的邮件,请使用此操做语句:jsonp

action(type =“mmjsonparse”cookie =“”)编码

传统格式:日志

$ ModLoad mmjsonparsecode

  • *:mmjsonparse:

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%")
相关文章
相关标签/搜索