Is the action queue thread tied to the ruleset?

-- James

----- Reply message -----
From: "David Lang" <[email protected]>
To: "rsyslog-users" <[email protected]>
Subject: [rsyslog] client connectivity issues syslog-ng -> rsyslog 7.x
Date: Fri, Jun 14, 2013 6:13 pm



I've found that FixedArray queues are noticably faster than LinkedList. That
probably won't completely solve the problem, but it may help.

If I'm seeing this correctly, this is the message template

$template appLogHadoopTemplate,"<%PRI%>%TIMESTAMP% %FROMHOST% 
app=%programname:R,ERE,1,DFLT:([A-Za-z0-9]+)-.*-.*_.*--end%|bucket=%programname:R,ERE,1,DFLT:.*-.*-.*_([A-Za-z0-9]+)--end%%msg%\n"

and this is the filename template

$template 
appLogDynFile,"/log/app-logs/%**programname:R,ERE,0,DFLT:[A-Za-z0-9]+--end%/%FROMHOST%/%$**YEAR%/%$MONTH%/%$DAY%/%PROGRAMNAME%.log"

Both of these are heavy users of regex parsing, which is a pretty expensive
operation

One thing that I think I'm seeing, it that you do the same regex multiple times.
With an ugly regex like this, you would probably gain significantly by setting a
variable and using that

set $!shortname = "%programname:R,ERE,1,DFLT:([A-Za-z0-9]+)-.*-.*_.*--end%"

$template appLogHadoopTemplate,"<%PRI%>%TIMESTAMP% %FROMHOST% 
app=%$!shortname%|bucket=%$!shortname%%msg%\n"

the other thing is, can you simplify the regex? it looks like you are trying to
pull any alphanumeric value ahead of a -, but if that's the case, why are you
matching things after that?

will the following give you what you need?

set $!shortname = "%programname:R,ERE,1,DFLT:^([A-Za-z0-9]+)-%"

I anchor the regex to the beginning of the string, and then pull everything
before the -

David Lang

On Fri, 14 Jun 2013, Timothy Ehlers wrote:

> Date: Fri, 14 Jun 2013 17:50:05 -0500
> From: Timothy Ehlers <[email protected]>
> Reply-To: rsyslog-users <[email protected]>
> To: rsyslog-users <[email protected]>
> Subject: Re: [rsyslog] client connectivity issues syslog-ng -> rsyslog 7.x
>
> Yeah it helped in staging but with the higher volume of prod ruleset 2
> seems to be the problem... I still only see 1 thread and its pegged at 100%
>
> $Ruleset appLog
> $ActionQueueType LinkedList
> $ActionQueueWorkerThreads 64
> $ActionQueueWorkerThreadMinimumMessages 10000
> $ActionQueueSize 400000
> *.*
> ?appLogDynFile;appLogHadoopTemplate
>
> There must be something i do not understand about the Queue system.
>
>
> On Fri, Jun 14, 2013 at 4:45 PM, David Lang <[email protected]> wrote:
>
>> Interesting, I did not expect that action queues would help this much,
>> given that you have the rulesets bound to different interfaces, I would
>> have expected that their output processing would be independant.
>>
>> But the fact that putting in action queues (I assume one queue per
>> ruleset??) splits up the work so much says that I was wrong.
>>
>> Which output is the action 3 queue that's using so much more CPU than
>> anything else?
>>
>>
>> David Lang
>>
>> On Fri, 14 Jun 2013, Timothy Ehlers wrote:
>>
>>  I put ActionQueus into the config and in staging it looks better now.
>>> 12773 root      20   0 1919m 231m 1848 R 34.8  0.5   0:19.06 rs:action 3
>>> que
>>> 12772 root      20   0 1919m 231m 1848 S 10.6  0.5   0:09.51 rs:action 2
>>> que
>>> 12751 root      20   0 1919m 231m 1848 S  1.7  0.5   0:01.29 rs:main Q:Reg
>>> 12742 root      20   0 1919m 231m 1848 S  0.7  0.5   0:00.72 in:imtcp
>>> 12767 root      20   0 1919m 231m 1848 S  0.7  0.5   0:00.21 rs:action 5
>>> que
>>> 12774 root      20   0 1919m 231m 1848 S  0.7  0.5   0:00.70 rs:action 4
>>> que
>>>
>>> I will try this in production with the Higher volume after a peer review.
>>>
>>>
>>> On Fri, Jun 14, 2013 at 4:32 PM, Timothy Ehlers <[email protected]>
>>> wrote:
>>>
>>>  52mb/sec inbound traffic
>>>> Hadoop stream is showing: 25k msg per second.. i do not know how accurate
>>>> this is.
>>>>
>>>> $OptimizeForUniprocessor off
>>>> $MaxMessageSize 2048k
>>>>
>>>> # Rsyslog plugins
>>>> $ModLoad immark         # provides --MARK-- message capability
>>>> $ModLoad imudp          # provides UDP syslog reception
>>>> $ModLoad imtcp          # provides TCP syslog reception
>>>> $ModLoad imuxsock       # provides support for local system logging (e.g.
>>>> via logger command)
>>>> $ModLoad imklog         # provides kernel logging support (previously
>>>> done
>>>> by rklogd)
>>>> $ModLoad imrelp         # Provides RELP syslog reception
>>>> $ModLoad omrelp         # Provides RELP syslog transmission
>>>>
>>>> # Rsyslog Stats
>>>> $ModLoad impstats
>>>> $PStatInterval 60
>>>> $PStatSeverity 7
>>>>
>>>> # Queue configuration
>>>> $ActionQueueSize 2000000
>>>> $MainMsgQueueSize 40000000
>>>>
>>>> # File Creation Permissions
>>>> $umask 0000
>>>> $DirCreateMode 0755
>>>> $FileCreateMode 0644
>>>>
>>>> # Remote Log Processing Ruleset
>>>> $PreserveFQDN on
>>>> $template
>>>> appLogDynFile,"/log/app-logs/%**programname:R,ERE,0,DFLT:[A-**
>>>> Za-z0-9]+--end%/%FROMHOST%/%$**YEAR%/%$MONTH%/%$DAY%/%**
>>>> PROGRAMNAME%.log"
>>>> $template
>>>> currLogStatsDynFile,"/log/app-**logs/logstats/%FROMHOST%/%$**
>>>> YEAR%/%$MONTH%/%$DAY%/**logstats.log.%$HOUR%00"
>>>> $template
>>>> currAppLogDynFile,"/log/app-**logs/%msg:R,ERE,1,DFLT:^([A-**
>>>> Za-z0-9._-]+)\|([A-Za-z0-9._-]**+)\|([A-Za-z0-9._]+)[-_]*([A-**
>>>> Za-z0-9]*)([\^])--end%/%**FROMHOST%/%$YEAR%/%$MONTH%/%$**
>>>> DAY%/%msg:R,ERE,1,DFLT:^([A-**Za-z0-9._-]+)\|([A-Za-z0-9._-]**
>>>> +)\|([A-Za-z0-9._]+)[-_]*([A-**Za-z0-9]*)([\^])--end%-%msg:R,**
>>>> ERE,2,DFLT:^([A-Za-z0-9._-]+)\**|([A-Za-z0-9._-]+)\|([A-Za-z0-**
>>>> 9._]+)[-_]*([A-Za-z0-9]*)([\^]**)--end%-%msg:R,ERE,3,DFLT:^([**
>>>> A-Za-z0-9._-]+)\|([A-Za-z0-9._**-]+)\|([A-Za-z0-9._]+)[-_]*([**
>>>> A-Za-z0-9]*)([\^])--end%-%msg:**R,ERE,4,DFLT:^([A-Za-z0-9._-]+**
>>>> )\|([A-Za-z0-9._-]+)\|([A-Za-**z0-9._]+)[-_]*([A-Za-z0-9]*)([**
>>>> \^])--end%.log.%$HOUR%00"
>>>> $template
>>>> currAppLoggTemplate,"%msg:R,**ERE,1,DFLT:^[A-Za-z0-9._-]+\|[**
>>>> A-Za-z0-9._-]+\|[A-Za-z0-9._]+**[-_]*[A-Za-z0-9]*[\^](.*)--**end%\n"
>>>> $template currAppLoggTemplate2,"%msg%\n"
>>>> $template currentappLogHadoopTemplate,"<**%PRI%>%TIMESTAMP:date-rfc3164%
>>>> %FROMHOST% %msg%\n"
>>>> $template currentappLogNewHadoopTemplate**,"<%PRI%>%TIMESTAMP%
>>>> %FROMHOST%
>>>> app=%msg:R,ERE,1,DFLT:^([A-Za-**z0-9._-]+)\|([A-Za-z0-9._-]+)\**
>>>> |([A-Za-z0-9.]+)[-_]*([A-Za-**z0-9]*)--end%|bucket=%msg:R,**
>>>> ERE,4,DFLT:^([A-Za-z0-9._-]+)\**|([A-Za-z0-9._-]+)\|([A-Za-z0-**
>>>> 9.]+)[-_]*([A-Za-z0-9]*)--end%
>>>> %msg%\n"
>>>> $template appLogHadoopTemplate,"<%PRI%>%**TIMESTAMP% %FROMHOST%
>>>> app=%programname:R,ERE,1,DFLT:**([A-Za-z0-9]+)-.*-.*_.*--end%|**
>>>> bucket=%programname:R,ERE,1,**DFLT:.*-.*-.*_([A-Za-z0-9]+)--**
>>>> end%%msg%\n"
>>>> $template
>>>> remoteMessagesDynFile,"/log/**system-logs/%FROMHOST%/%$YEAR%**
>>>> /%$MONTH%/%$DAY%/messages"
>>>> $template
>>>> remoteSecureDynFile,"/log/**secure-system-logs/%FROMHOST%/**
>>>> %$YEAR%/%$MONTH%/%$DAY%/**secure"
>>>> $template
>>>> remoteMaillogDynFile,"/log/**system-logs/%FROMHOST%/%$YEAR%**
>>>> /%$MONTH%/%$DAY%/maillog"
>>>> $template
>>>> remoteEmergDynFile,"/log/**system-logs/%FROMHOST%/%$YEAR%**
>>>> /%$MONTH%/%$DAY%/emergency"
>>>> $template
>>>> remoteCronDynFile,"/log/**system-logs/%FROMHOST%/%$YEAR%**
>>>> /%$MONTH%/%$DAY%/cron"
>>>> $template
>>>> remoteSpoolerDynFile,"/log/**system-logs/%FROMHOST%/%$YEAR%**
>>>> /%$MONTH%/%$DAY%/spooler"
>>>> $template
>>>> remoteBootDynFile,"/log/**system-logs/%FROMHOST%/%$YEAR%**
>>>> /%$MONTH%/%$DAY%/boot.log"
>>>>
>>>> $Ruleset appLog
>>>> *.*
>>>>  ?appLogDynFile;**appLogHadoopTemplate
>>>> # Forward to Hadoop
>>>> #*.*                                             @@
>>>> wmhdcollector01s.stag.**timstesting.net:5003<http://wmhdcollector01s.stag.timstesting.net:5003>
>>>> ;
>>>>
>>>> $Ruleset currAppLog
>>>> *.*
>>>>  ?currAppLogDynFile;**currAppLoggTemplate
>>>> # Forward to Hadoop
>>>> *.*
>>>> @@hadoopcollectors.prod.**timstesting.net:5003;**
>>>> currentappLogHadoopTemplate
>>>>
>>>> $Ruleset currLogStats
>>>> *.*                                                  ?currLogStatsDynFile
>>>> # Forward to Hadoop
>>>> #*.*
>>>> @@hadoopcollectors.prod.**timstesting.net:5003;**
>>>> currentappLogHadoopTemplate
>>>>
>>>> # Remote System Log Processing Ruleset
>>>> $Ruleset remoteSysLogs
>>>> # Log all kernel messages to the console.
>>>> # Logging much else clutters up the screen.
>>>> #kern.*                                                 /dev/console
>>>>
>>>> # Log anything (except mail) of level info or higher.
>>>> # Don't log private authentication messages!
>>>> $DirCreateMode 0755
>>>> $FileCreateMode 0644
>>>> *.info;local1.none;local6.**none;mail.none;authpriv.none;**cron.none
>>>>      ?remoteMessagesDynFile
>>>>
>>>> # The authpriv file has restricted access.
>>>> $DirCreateMode 0700
>>>> $FileCreateMode 0600
>>>> authpriv.*
>>>>  ?remoteSecureDynFile
>>>>
>>>> # Log all the mail messages in one place.
>>>> $DirCreateMode 0755
>>>> $FileCreateMode 0644
>>>> mail.*
>>>>  ?remoteMaillogDynFile
>>>>
>>>>
>>>> # Log cron stuff
>>>> $DirCreateMode 0755
>>>> $FileCreateMode 0644
>>>> cron.*
>>>>  ?remoteCronDynFile
>>>>
>>>> # Everybody gets emergency messages
>>>> $DirCreateMode 0755
>>>> $FileCreateMode 0644
>>>> *.emerg
>>>> ?remoteEmergDynFile
>>>>
>>>> # Save news errors of level crit and higher in a special file.
>>>> $DirCreateMode 0755
>>>> $FileCreateMode 0644
>>>> uucp,news.crit
>>>>  ?remoteSpoolerDynFile
>>>>
>>>> # Save boot messages also to boot.log
>>>> $DirCreateMode 0755
>>>> $FileCreateMode 0644
>>>> local7.*
>>>>  ?remoteBootDynFile
>>>>
>>>> # Local Log Processing Ruleset
>>>> $Ruleset local
>>>> # Log all kernel messages to the console.
>>>> # Logging much else clutters up the screen.
>>>> #kern.*                                                 /dev/console
>>>>
>>>> # Log anything (except mail) of level info or higher.
>>>> # Don't log private authentication messages!
>>>> *.info;local1.none;local6.**none;mail.none;authpriv.none;**cron.none
>>>>      /var/log/messages
>>>> syslog.=debug
>>>>       /log/rsyslog-stats
>>>>
>>>> # The authpriv file has restricted access.
>>>> authpriv.*                                              /var/log/secure
>>>>
>>>> # Log all the mail messages in one place.
>>>> mail.*                                                  -/var/log/maillog
>>>>
>>>>
>>>> # Log cron stuff
>>>> cron.*                                                  /var/log/cron
>>>>
>>>> # Everybody gets emergency messages
>>>> *.emerg                                                 :omusrmsg:*
>>>>
>>>> # Save news errors of level crit and higher in a special file.
>>>> uucp,news.crit                                          /var/log/spooler
>>>>
>>>> # Save boot messages also to boot.log
>>>> local7.*                                                /var/log/boot.log
>>>>
>>>> # Assign default Ruleset
>>>> $DefaultRuleset local
>>>>
>>>> # New AppLog Process RELP Collector
>>>> $InputRELPServerBindRuleset appLog
>>>> $InputRELPServerRun 20514
>>>>
>>>> # Current AppLog TCP Collector
>>>> $InputTCPServerBindRuleset currAppLog
>>>> $InputTCPServerRun 20516
>>>>
>>>> # Current LogStats TCP Collector
>>>> $InputTCPServerBindRuleset currLogStats
>>>> $InputTCPServerRun 20518
>>>>
>>>> # SystemLog TCP Collector
>>>> $InputTCPServerBindRuleset remoteSysLogs
>>>> $InputTCPServerRun 20515
>>>>
>>>> # SystemLog UDP Collector
>>>> $InputUDPServerBindRuleset remoteSysLogs
>>>> $UDPServerRun 514
>>>>
>>>>
>>>
>>>
>>>
>>>  ______________________________**_________________
>> rsyslog mailing list
>> http://lists.adiscon.net/**mailman/listinfo/rsyslog<http://lists.adiscon.net/mailman/listinfo/rsyslog>
>> http://www.rsyslog.com/**professional-services/<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.
_______________________________________________
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