RSylog GELF (Graylog) Format verwenden

Graylog bietet einen einfach zu konfigurierenden Syslog-Input an. Leider kommt es jeh nach verwendeten „Loglayout“ dann zu parsing Fehlern. Bei mir hat es z. B. hauptsächlich die Genauigkeit des Zeitstempels betroffen.

Am leichtesten löst man das Problem indem man RSyslog dazu bringt, im GELF Format zu loggen. Dies ist ein einfaches JSON Format und ohne Probleme vie RSyslog-Template umzusetzten:

template(name="gelf" type="list") {
    constant(value="{\"version\":\"1.1\",")
    constant(value="\"host\":\"")
    property(name="hostname")
    constant(value="\",\"facility\":\"")
    property(name="syslogfacility-text")
    constant(value="\",\"facility-num\":\"")
    property(name="syslogfacility")
    constant(value="\",\"syslogtag\":\"")
    property(name="syslogtag")
    constant(value="\",\"priority\":\"")
    property(name="syslogpriority-text")
    constant(value="\",\"message\":\"")
    property(name="msg" format="json")
    constant(value="\",\"timestamp\":")
    property(name="timegenerated" dateformat="unixtimestamp")    
    constant(value=".")
    property(name="timegenerated" dateformat="subseconds")    
    constant(value=",\"level\":\"")
    property(name="syslogseverity")
    constant(value="\",\"severity\":\"")
    property(name="syslogseverity-text")
    constant(value="\"}")
}

action(type="omfwd" target="deepdraft.aqua" port="12201" protocol="udp" template="gelf")