當前日誌系統經常使用的有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%")