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%")
相關文章
相關標籤/搜索