On Thu, Oct 29, 2015 at 4:22 PM, Peter Portante <[email protected]>
wrote:

>
>
> On Thu, Oct 29, 2015 at 3:47 PM, David Lang <[email protected]> wrote:
>
>> On Thu, 29 Oct 2015, Peter Portante wrote:
>>
>> On Thu, Oct 29, 2015 at 9:52 AM, Dave Caplinger <
>>> [email protected]> wrote:
>>>
>>> There are two approaches:
>>>>
>>>> 1) Modify the syslog line to insert the property by using a template
>>>>
>>>> 2) Use JSON to preserve the original unmodified log line and add the
>>>> property as an extra key/value pair
>>>>
>>>> Either way, I'd suggest you first validate if you have or can get a
>>>> modern
>>>> (v8) version of Rsyslog; your config snippet suggests you may be using
>>>> version 5 or lower.
>>>>
>>>>
>>> Yes, so RHEL 7 ships v7 right now, but they did not change the
>>> rsyslog.conf
>>> file that ships with RHEL. :(
>>>
>>> I have the ability to run v8, so I'd like to do #2.  Here is a JSON
>>> template that I use, would I reference the "$!roles" variable as below?
>>>
>>> set $!roles = "openstack-0,controller,db"
>>> template(name="mytemplate"
>>>         type="list") {
>>>    constant(value="{")
>>>    constant(value="\"@timestamp\":\"")
>>> property(name="timereported" dateFormat="rfc3339")
>>>    constant(value="\",\"@version\":\"2015.09.24-0")
>>>    constant(value="\",\"message\":\"")
>>>  property(name="msg"
>>> format="json")
>>>    constant(value="\",\"hostname\":\"")
>>> property(name="hostname")
>>>    constant(value="\",\"level\":\"")
>>> property(name="syslogseverity-text")
>>>    constant(value="\",\"pid\":\"")
>>> property(name="procid")
>>>    constant(value="\",\"roles\":\"")
>>> property(name="!roles")
>>>    constant(value="\",\"rsyslog\": {")
>>>    constant(value="\"facility\":\"")
>>> property(name="syslogfacility-text")
>>>    constant(value="\",\"programname\":\"")
>>> property(name="programname")
>>>    constant(value="\",\"fromhost\":\"")
>>> property(name="fromhost")
>>>    constant(value="\",\"fromhost-ip\":\"")
>>> property(name="fromhost-ip")
>>>    constant(value="\",\"timegenerated\":\"")
>>> property(name="timegenerated" dateFormat="rfc3339")
>>>    constant(value="\",\"protocol-version\":\"")
>>> property(name="protocol-version")
>>>    constant(value="\",\"structured-data\":\"")
>>> property(name="structured-data")
>>>    constant(value="\",\"app-name\":\"")
>>> property(name="app-name")
>>>    constant(value="\",\"msgid\":\"")
>>> property(name="msgid")
>>>    constant(value="\",\"inputname\":\"")
>>> property(name="inputname")
>>>    constant(value="\"} }")
>>>    }
>>>
>>> So since I have a number of systems that are running v5 and v7 of
>>> rsyslog,
>>> is there a way in those versions to modify the
>>> RSYSLOG_SyslogProtocol23Format template to add a constant value?
>>>
>>
>> you are working too hard on this.
>>
>
> Yes, you are right, I can see what need to do here.
>
>
>>
>> create a template similar to:
>>
>> $template structuredmsg,"<%pri%>%timereported% %hostname% %syslogtag%
>> @cee:%$!%\n"
>>
>
> This works with v7* so this is wonderful.
>
>
>>
>> then log things with the format RSYSLOG_DebugFormat and make sure that
>> everything you want to send to the far side shows up in either hostname,
>> programname, facility/severity, or as a $! variable.
>>
>> if you use mmjsonparse, it will parse the message if it's json, and it
>> will make $!msg = $msg if it's not json.
>>
>
> So I have v8.8.0 right now, and the mmjsonparse module appears to go into
> an infinite loop on some message.  So I'll get the latest setup on my box
> and work with that.
>

Well, I moved to v8.14.0, and when I add the "action(type=\"mmjsonparse\")"
before I do anything else, no logging occurs, and the messages begin to
pile up internally (if I following the debug output correctly).

I am probably missing something here:

module(
    load="imuxsock"
    SysSock.Name="/run/systemd/journal/syslog"
    SysSock.Use="off")
module(load="imjournal" StateFile="/var/lib/rsyslog/imjournal.state")
module(load="imklog")
module(load="imudp")
input(type="imudp" port="514")
module(load="imptcp")
input(type="imptcp" port="514")
module(load="omelasticsearch")
module(load="mmjsonparse")
module(load="mmsnmptrapd")
module(load="mmutf8fix")
global(
    # Where to place auxiliary files
    workDirectory="/var/lib/rsyslog"
    # perf-dept: we want fully qualified domain names for common logging
    preserveFQDN="on")
main_queue(
    # Beaf up the internal message queue
    queue.size="131072"
    # 90% of QueueSize
    queue.discardmark="117964"
    # If we reach the discard mark, we'll throw out notice, info, and debug
messages
    queue.discardseverity="5")
template(name="logstash-index-pattern" type="list") {
    constant(value="logstash-")
    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="com-redhat-rsyslog-hier"
         type="list") {
    constant(value="{")
    constant(value="\"@timestamp\":\"")
property(name="timereported" dateFormat="rfc3339")
    constant(value="\",\"@version\":\"2015.09.24-0")
    constant(value="\",\"message\":\"")               property(name="msg"
format="json")
    constant(value="\",\"hostname\":\"")
 property(name="hostname")
    constant(value="\",\"level\":\"")
property(name="syslogseverity-text")
    constant(value="\",\"pid\":\"")
property(name="procid")
    constant(value="\",\"rsyslog\": {")
    constant(value="\"facility\":\"")
property(name="syslogfacility-text")
    constant(value="\",\"programname\":\"")
property(name="programname")
    constant(value="\",\"fromhost\":\"")
 property(name="fromhost")
    constant(value="\",\"fromhost-ip\":\"")
property(name="fromhost-ip")
    constant(value="\",\"timegenerated\":\"")
property(name="timegenerated" dateFormat="rfc3339")
    constant(value="\",\"protocol-version\":\"")
 property(name="protocol-version")
    constant(value="\",\"structured-data\":\"")
property(name="structured-data")
    constant(value="\",\"app-name\":\"")
 property(name="app-name")
    constant(value="\",\"msgid\":\"")                 property(name="msgid")
    constant(value="\",\"inputname\":\"")
property(name="inputname")
    constant(value="\",\"cee\":\"")
property(name="$!all-json")
    constant(value="\"} }")
    }
$ActionFileDefaultTemplate RSYSLOG_FileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
action(type="mmutf8fix" mode="utf-8")
*.* :mmsnmptrapd:
action(type="mmjsonparse")
action(
    type="omelasticsearch"
    server="172.18.40.3"
    serverport="9200"
    template="com-redhat-rsyslog-hier"
    searchIndex="logstash-index-pattern"
    dynSearchIndex="on"
    searchType="rsyslog"
    bulkmode="on"
    queue.type="linkedlist"
    queue.size="5000"
    queue.dequeuebatchsize="300"
    action.resumeretrycount="-1")


 Thanks for any help you can offer.

-peter



> Thanks for setting me straight, David!
>
> -peter
>
>
>
>>
>> you then send via the structuredmsg I show above, and on the receiving
>> system, use mmjsonparse and it will recreate the $! variables that you sent
>> (validate via RSYSLOG_DebugFormat
>>
>> David Lang
>>
>>
>>
>> _______________________________________________
>> rsyslog mailing list
>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> http://www.rsyslog.com/professional-services/
>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> DON'T LIKE THAT.
>>
>
>
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to