Here you go. This is what we have so far.

   global(
        MaxMessageSize="32k"
        workDirectory="/data"
        parser.escapeControlCharactersOnReceive="off"
   )

   module(load="imrelp")
   input(
        port="20514"
        type="imrelp"
        name="imrelp"
        ruleset="json"
   )

   module(load="builtin:omfile")
   ruleset(name="error"){
        action(
            type="omfile"
            file="/data/rsyslog-errors.log"
        )
   }
   ruleset(name="unknown"){
        action(
            type="omfile"
            file="/data/rsyslog-unknown.log"
        )
   }

   template(name="ts" type="string" string="%timestamp:::date-rfc3339%")
   ruleset(name="to-index"){
        set $!data=$msg;
        set $!data!host_forwarded=$hostname;
        set $!data!time_processed=exec_template("ts");
        #FIXME This line fails. isn't myhostname set?
        #set $!data!host_received=$myhostname;
        action(
            action.reportSuspension="on"
            action.resumeRetryCount="-1"
            type="omfile"
            file="/data/to-index.log"
            template="json"
        )
   }

   module(load="mmjsonparse")
   module(load="mmnormalize")
   ruleset(name="json"){
        #FIXME seems ruleset workers need a queue or they create a temp
   queue (performance impact)
        # considering this pipeline: relp->file->elastic, what should
   be the best approach?
        queue.filename="relp.qi"
        queue.maxdiskspace="1G"
        queue.SaveOnShutdown="on"
        queue.type="Disk"

        action(
            cookie=""
            type="mmjsonparse"
        )
        if $parsesuccess == "FAIL" then {
            call error
            stop
        }
        # start script combines /etc/rsyslog.d/apps/*.rb into
   /etc/rsyslog.rb
        #       rule=app1:app1 whatever1
        #       rule=app2:app2 whatever2
        # Due to how liblognorm works, seems to be much faster than
        #   each app.conf file like:
        #       else if $!app == "popimap" then {
        #           # Here's an example on when to use inline rules
        #           # https://github.com/rsyslog/rsyslog/issues/625
        #           # Inline rules would make it possible to have
        #           #     just 1 config file per app, instead of 2
        #           action(
        #               #rule="<%pri%>%time_received:date% %hostname%
   %tag% %msg%"
        #               rulebase="/etc/rsyslog.d/apps/app1.rb"
        #               type="mmnormalize"
        #           )
        #           if $!user != "" then {
        #               #FIXME now also fails (not set?)
        #               set $!data!index="myindex-" & $now;
        #               set
   $!data!type="this_msg_type_is_known_by_this_app";
        #               call to-index
        #           } else {
        #               call error
        #           }
        #       }
   #TODO set $.line= app & " " & msg;?
        action(
            type="mmnormalize"
            variable="$!msg"
            rulebase="/etc/rsyslog.d/rsyslog.rb"
        )
        if $!user == "" then {
            call unknown
            stop
        }
        # Each app.conf defines/calls their own pipeline steps
        #   at the end: call to-index
        $IncludeConfig /etc/rsyslog.d/apps/*.conf
   }

   module(load="imfile")
   input(type="imfile"
        file="/data/to-index.log"
        tag="rsyslog"
        ruleset="elastic"
   )
   template(name="json" type="string" string="%$!data%\n")
   template(name="index" type="string" string="$!data!index")
   template(name="type" type="string" string="$!data!type")
   module(load="omelasticsearch")
   ruleset(name="elastic"){
        set $!data=$rawmsg;
        set $!data!@timestamp=exec_template("ts");
        action(
            action.resumeRetryCount="-1"
            type="omelasticsearch"
            server="server"
            serverport="9200"
            searchIndex="index"
            dynSearchIndex="on"
            searchType="type"
            dynSearchType="on"
            template="json"
        )
   }


Regards

_______________________________________________
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