2015-07-15 11:33 GMT+02:00 Gerhardus Geldenhuis <[email protected]>: > I have made a bit of progress... > 2015-07-14T19:53:26.374223+01:00 rclient rsyslogd-pstats: logtoserver > queue[DA]: origin=core.queue size=0 enqueued=15232 full=0 discarded.full=0 > discarded.nf=0 maxqsize=15232 > 2015-07-14T19:53:26.374227+01:00 rclient rsyslogd-pstats: logtoserver > queue: origin=core.queue size=24642 enqueued=56608 full=0 discarded.full=0 > discarded.nf=0 maxqsize=35002 > > Those lines show that the DA queue has a smaller max queue size of 15232. > If I subtract that from 40 000 I get 24 768 which is the exact amount of > messages that I get on the remote server. The max queue size value is thus > the number of messages that I seem to loose or not get on the remote server. > > I don't have a solution yet but I think that will give some guidance as to > where things are going wrong ( I suspect in my config and/or assumptions )
Not a solution, but a thought: This looks like the remote end does not accept the additional connection the DA queue tries to make. I have seen similar effects during testing when running against nc, which only permits one connection. Something in the firewall that limits that? Rainer > > Regards > > On 15 July 2015 at 09:58, Gerhardus Geldenhuis < > [email protected]> wrote: > >> Hi >> I am attaching a pstats file here as requested. >> >> I configured pstats to log every 10 seconds and the queue that forwards to >> the remote host is called: >> action( type="omrelp" >> name="logtoserver" >> target="192.168.8.134" >> port="514" >> queue.size="50000" >> queue.type="LinkedList" >> queue.spoolDirectory="/var/lib/rsyslog" >> queue.filename="testforwardingqueue" >> queue.lowwatermark="20000" >> queue.highwatermark="35000" >> queue.discardmark="50000" >> queue.maxfilesize="1g" >> queue.saveonshutdown="on" >> # queue.fulldelaymark="2500" >> ) >> >> My process were: >> Start firewall on remote server to block syslog >> >> Run script: >> >> #!/bin/bash >> >> echo '' > /var/log/pstats >> >> echo "" >> /var/log/pstats >> echo "BEGINING of TEST with SEQ-${1}" >> /var/log/pstats >> echo "" >> /var/log/pstats >> >> echo 'Starting log storm' >> for i in $(seq 1 40000); do logger -p error "############### TESTING >> ########### SEQ${1}-${i}"; done >> >> echo "" >> /var/log/pstats >> echo "END of TEST with SEQ-${1}" >> /var/log/pstats >> echo "" >> /var/log/pstats >> >> after having run the script, I then stopped the firewall and waited for >> the logs to flush. Some logs flushed and after I saw them appear in the >> remote server I stopped rsyslog on the client and took a copy of the pstats >> file. >> >> I am trawling through the pstats file now but hopefully you might have >> some useful tool that can make it easier on your side and if not experience >> will always reveal things quicker. >> >> Regards >> >> On 14 July 2015 at 17:12, Rainer Gerhards <[email protected]> >> wrote: >> >>> 2015-07-14 17:32 GMT+02:00 Gerhardus Geldenhuis >>> <[email protected]>: >>> > Thanks David, >>> > I configured RELP but it has not made a difference... >>> > >>> > More specifically if I turn on the firewall by >>> > >>> > 1. running: systemctl start firewalld on the master server >>> > 2. and then start generating 40 000 log entries on the client, and >>> wait >>> > for it to finish >>> > 3. run: systemctl stop firewalld >>> > 4. Wait for logs to come over >>> > 5. Count logs >>> > >>> > I still get 24767 messages instead of 40000. >>> >>> can you share the impstats data with us? We may get a better >>> understanding of what's going on based on it... >>> >>> Rainer >>> > >>> > If however I physically turn of the network on the master machine using >>> > VMWare, I do get 40 000 messages when I connect the network back again. >>> > >>> > So why is RELP handling it like this surely if it does not get any >>> response >>> > from the firewall for if the firewall sends it to a black hole then it >>> > should not mark messages as delivered. I am also willing to admit that >>> my >>> > testing methodology is flawed but then I would like to understand why >>> > exactly and at the moment I feel my testing methodology represents a >>> real >>> > world scenario which would make loosing logs a reality even if you use >>> RELP. >>> > >>> > Importantly I enable the firewall before starting the log test so it >>> should >>> > all be blocked from the very beginning. >>> > >>> > Regards >>> > >>> > On 14 July 2015 at 12:44, David Lang <[email protected]> wrote: >>> > >>> >> One issue you are probably running into is the fact that TCP is not >>> >> reliable enough. TCP is 'reliable' in that if a packet gets dropped it >>> will >>> >> detect and re-send it as part of the same connection, but there is a >>> >> problem when the connection is interrupted (as it is in your test by >>> the >>> >> firewall) >>> >> >>> >> When the sending rsyslog hands the message to the OS on the sending >>> >> system, it is told "yes, I have this and will deliver it" by the OS. >>> But if >>> >> the OS is unable to deliver it (because the network connection breaks), >>> >> there is no way for the OS to go back to the sending application and >>> say >>> >> "oops, I really can't get this through to the other end" so the >>> messages >>> >> are lost. >>> >> >>> >> This is what the RELP protocol was developed to fix. It does >>> application >>> >> level acks for the messages so that if the network is interrupted, it >>> knows >>> >> what messages didn't get through and will re-send them. switch to >>> >> omrelp/imrelp instead of omfwd/imtcp and you should avoid loosing any >>> >> messages >>> >> >>> >> If you make the firewall send resets rather than dropping packets, the >>> >> sending machine will detect the problem faster. >>> >> >>> >> >>> >> This would account for some messages being lost between the time that >>> you >>> >> ahve the firewall block the connection and the time that rsyslog >>> detects >>> >> this. But once rsyslog detects this and starts queueing messages, those >>> >> messages should be sent when rsyslog re-establishes the connection. >>> >> >>> >> enable impstats writing stats rapidly (say every 10 seconds or so for >>> >> testing) >>> >> >>> >> then block the connection and send a small number of messages until >>> >> rsyslog logs locally that it's unable to send and the queue for the >>> action >>> >> starts filling. >>> >> >>> >> then do your write of 40000 test messages >>> >> >>> >> then open the firewall and you should see all the messages get sent >>> once >>> >> rsyslog retries and notices that the connection is open again. >>> >> >>> >> David Lang >>> >> >>> >> On Tue, 14 Jul 2015, Gerhardus Geldenhuis wrote: >>> >> >>> >> Date: Tue, 14 Jul 2015 11:20:46 +0100 >>> >>> From: Gerhardus Geldenhuis <[email protected]> >>> >>> Reply-To: rsyslog-users <[email protected]> >>> >>> To: rsyslog-users <[email protected]> >>> >>> Subject: Re: [rsyslog] Disk queue to flush after restart >>> >>> >>> >>> Hi, >>> >>> I don't seem to be making as much progress as I would hope for. I now >>> have >>> >>> the following client config: >>> >>> action( type="omfwd" >>> >>> target="192.168.8.134" >>> >>> port="514" >>> >>> protocol="tcp" >>> >>> queue.size="50000" >>> >>> queue.type="LinkedList" >>> >>> queue.spoolDirectory="/var/lib/rsyslog" >>> >>> queue.filename="testforwardingqueue" >>> >>> queue.lowwatermark="20000" >>> >>> queue.highwatermark="35000" >>> >>> queue.discardmark="50000" >>> >>> queue.maxfilesize="1g" >>> >>> queue.saveonshutdown="on" >>> >>> # queue.fulldelaymark="2500" >>> >>> ) >>> >>> >>> >>> I have made the numbers smaller to be able to do testing that will >>> finish >>> >>> in a reasonable amount of time. >>> >>> >>> >>> My process is: >>> >>> >>> >>> 1. Start firewall on master server to block all access. >>> >>> 2. On client server start logging using: for i in $(seq 1 40000); do >>> >>> logger -p error "############### TESTING ########### SEQ001-${i}"; >>> done >>> >>> 3. Wait for for loop to finish and check if all entries are >>> contained >>> >>> locally >>> >>> 4. watch 'ls -l /var/lib/rsyslog' to see if queue gets created. >>> >>> 5. Disable firewall on master >>> >>> 6. run logger -p error with one message to get logs going again >>> >>> 7. Wait for logs to arrive on master server >>> >>> 8. grep 'SEQ001' /var/log/messages -c >>> >>> >>> >>> >>> >>> The problem I am getting is that the number of messages I receive on >>> the >>> >>> remote server does not correspond with what I get on the master >>> server. >>> >>> I only get 24768 messages on the master server. >>> >>> >>> >>> Is there anything else that I have missed out of the configuration? I >>> >>> can't >>> >>> see anything that would cause my messages to not arrive. The queue >>> file I >>> >>> specified grows in size but interestingly when I grep'ed it for >>> SEQ005 I >>> >>> only get 15232 matches. I did the grep after re-enabling the firewall. >>> >>> >>> >>> I thought that it might be because syslog thinks my messages are the >>> same >>> >>> and then marks them as duplicates. I then added: >>> >>> for i in $(seq 1 40000); do logger -p error "############### TESTING >>> >>> ########### SEQ005-${i}-$(openssl rand -base64 32)"; done >>> >>> >>> >>> to try and prevent that. However if the firewall is not enabled then >>> all >>> >>> 40k messages arrive on the master server. >>> >>> >>> >>> Any help would be appreciated. >>> >>> >>> >>> Regards >>> >>> >>> >>> On 13 July 2015 at 14:20, Rainer Gerhards <[email protected]> >>> >>> wrote: >>> >>> >>> >>> 2015-07-13 15:18 GMT+02:00 Gerhardus Geldenhuis >>> >>>> <[email protected]>: >>> >>>> >>> >>>>> Hi, >>> >>>>> Thanks for the replies. I think the bulk of my problem was mixing >>> old >>> >>>>> and >>> >>>>> new config and I much further along to get something working. I have >>> >>>>> discovered a few other niggles but will report back once I have >>> >>>>> something >>> >>>>> working properly. As far as pull requests go, I would really >>> consider >>> >>>>> >>> >>>> doing >>> >>>> >>> >>>>> so but as always time is a factor. >>> >>>>> >>> >>>> >>> >>>> yup - for everyone ;) And that is what it is like it currently is ;) >>> >>>> >>> >>>> It does bug me so much that I must just >>> >>>>> end up doing it for the documentation. I will give debug mode a go. >>> >>>>> >>> >>>>> Regards >>> >>>>> >>> >>>>> On 13 July 2015 at 13:17, Rainer Gerhards <[email protected] >>> > >>> >>>>> >>> >>>> wrote: >>> >>>> >>> >>>>> >>> >>>>> 2015-07-10 13:40 GMT+02:00 Gerhardus Geldenhuis >>> >>>>>> <[email protected]>: >>> >>>>>> >>> >>>>>>> Hi >>> >>>>>>> I am struggling a bit to get rsyslog to work as described. >>> >>>>>>> >>> >>>>>>> <rant> >>> >>>>>>> Firstly the documentation is a struggle. There is some reference >>> to >>> >>>>>>> >>> >>>>>> old >>> >>>> >>> >>>>> and >>> >>>>>> >>> >>>>>>> new style configuration but no clear differentiation between the >>> two. >>> >>>>>>> >>> >>>>>> What >>> >>>>>> >>> >>>>>>> makes it more confusing is that documents like >>> >>>>>>> http://www.rsyslog.com/doc/queues.html then refers to what looks >>> like >>> >>>>>>> >>> >>>>>> the >>> >>>>>> >>> >>>>>>> old style of config and none of the examples contains new syntax >>> >>>>>>> >>> >>>>>> examples. >>> >>>>>> >>> >>>>>>> >>> >>>>>>> There was also an expectation that the new rsyslog package would >>> >>>>>>> >>> >>>>>> install >>> >>>> >>> >>>>> a >>> >>>>>> >>> >>>>>>> new style config but that turned out to be not the case. I >>> deleted the >>> >>>>>>> config file and did a yum reinstall just to be sure. >>> >>>>>>> </rant> >>> >>>>>>> >>> >>>>>> >>> >>>>>> well, this is open source. Pull requests are always appreciated, >>> >>>>>> anything else happens as time permits ;) >>> >>>>>> >>> >>>>>> >>> >>>>>>> OS: CentOS 7 >>> >>>>>>> RSyslog: >>> >>>>>>> rsyslog-8.11.0-1.el7.x86_64 >>> >>>>>>> rsyslog-relp-8.11.0-1.el7.x86_64 >>> >>>>>>> rsyslog-gnutls-8.11.0-1.el7.x86_64 >>> >>>>>>> >>> >>>>>>> So basically what I am trying to achieve is the following: >>> >>>>>>> >>> >>>>>>> - Log remotely to a rsyslog server >>> >>>>>>> - Turn off the remote server ( via firewall ) >>> >>>>>>> - Have logs be cached locally and saved to disk >>> >>>>>>> - Restart client server >>> >>>>>>> - Turn remote server back on >>> >>>>>>> - See cached logs appear in the remote server >>> >>>>>>> >>> >>>>>>> It does not work... >>> >>>>>>> >>> >>>>>>> - So more specifically, if I turn the firewall off, log a few >>> >>>>>>> >>> >>>>>> messages >>> >>>> >>> >>>>> and turn it back on then the caching works and I get the >>> messages. >>> >>>>>>> - If however I restart the client server, the logs never make >>> it to >>> >>>>>>> >>> >>>>>> the >>> >>>>>> >>> >>>>>>> remote sever, I can see the logs in the cached file but it >>> does not >>> >>>>>>> >>> >>>>>> get >>> >>>>>> >>> >>>>>>> send to the remote server. >>> >>>>>>> >>> >>>>>>> My config on the client: >>> >>>>>>> #### MODULES #### >>> >>>>>>> module(load="imuxsock") # provides support for local system >>> logging >>> >>>>>>> >>> >>>>>> (e.g. >>> >>>> >>> >>>>> via logger command) >>> >>>>>>> module(load="imklog") # provides kernel logging support >>> (previously >>> >>>>>>> >>> >>>>>> done >>> >>>>>> >>> >>>>>>> by rklogd) >>> >>>>>>> >>> >>>>>>> #### GLOBAL DIRECTIVES #### >>> >>>>>>> $IncludeConfig /etc/rsyslog.d/*.conf >>> >>>>>>> >>> >>>>>>> #### RULES #### >>> >>>>>>> >>> >>>>>>> *.info;mail.none;authpriv.none;cron.none >>> >>>>>>> >>> >>>>>> /var/log/messages >>> >>>> >>> >>>>> authpriv.* >>> >>>>>>> >>> >>>>>> /var/log/secure >>> >>>> >>> >>>>> mail.* >>> >>>>>>> >>> >>>>>> /var/log/maillog >>> >>>> >>> >>>>> cron.* >>> /var/log/cron >>> >>>>>>> *.emerg >>> :omusrmsg:* >>> >>>>>>> uucp,news.crit >>> >>>>>>> >>> >>>>>> /var/log/spooler >>> >>>> >>> >>>>> local7.* >>> >>>>>>> >>> >>>>>> /var/log/boot.log >>> >>>> >>> >>>>> >>> >>>>>>> # ### begin forwarding rule ### >>> >>>>>>> $WorkDirectory /var/lib/rsyslog # where to place spool files >>> >>>>>>> $MainMsgQueueFileName LocalCaching # unique name prefix for spool >>> >>>>>>> >>> >>>>>> files >>> >>>> >>> >>>>> $MainMsgQueueSaveOnShutdown on # save messages to disk on shutdown >>> >>>>>>> # $MainMsgQueueType LinkedList >>> >>>>>>> $MainMsgQueueType Disk >>> >>>>>>> $MainMsgResumeRetryCount -1 # infinite retries if host is down >>> >>>>>>> >>> >>>>>>> *.* @@192.168.8.253:514 >>> >>>>>>> >>> >>>>>>> # ### end of the forwarding rule ### >>> >>>>>>> >>> >>>>>>> My config on the remote server: >>> >>>>>>> module(load="imuxsock") # provides support for local system >>> logging >>> >>>>>>> >>> >>>>>> (e.g. >>> >>>> >>> >>>>> via logger command) >>> >>>>>>> module(load="imklog") # provides kernel logging support >>> (previously >>> >>>>>>> >>> >>>>>> done >>> >>>>>> >>> >>>>>>> by rklogd) >>> >>>>>>> module(load="imtcp") # needs to be done just once >>> >>>>>>> input(type="imtcp" port="514") >>> >>>>>>> $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat >>> >>>>>>> $IncludeConfig /etc/rsyslog.d/*.conf >>> >>>>>>> *.info;mail.none;authpriv.none;cron.none >>> >>>>>>> >>> >>>>>> /var/log/messages >>> >>>> >>> >>>>> authpriv.* >>> >>>>>>> >>> >>>>>> /var/log/secure >>> >>>> >>> >>>>> mail.* >>> >>>>>>> >>> >>>>>> /var/log/maillog >>> >>>> >>> >>>>> cron.* >>> /var/log/cron >>> >>>>>>> *.emerg >>> :omusrmsg:* >>> >>>>>>> uucp,news.crit >>> >>>>>>> >>> >>>>>> /var/log/spooler >>> >>>> >>> >>>>> local7.* >>> >>>>>>> >>> >>>>>>> Any pointers would be appreciated. I am hoping I am missing >>> something >>> >>>>>>> obvious or misunderstanding what I am suppose to be doing. >>> >>>>>>> >>> >>>>>>> >>> >>>>>> You should run rsyslog in such a situation in debug mode.From the >>> >>>>>> debug log, we can see why it thinks it can't deliver to the remote >>> >>>>>> system (well, hopefully ;)). >>> >>>>>> >>> >>>>>> HTH >>> >>>>>> Rainer >>> >>>>>> >>> >>>>>> Regards >>> >>>>>>> >>> >>>>>>> -- >>> >>>>>>> Gerhardus Geldenhuis >>> >>>>>>> _______________________________________________ >>> >>>>>>> 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. >>> >>>>>> >>> >>>>>> >>> >>>>> >>> >>>>> >>> >>>>> -- >>> >>>>> Gerhardus Geldenhuis >>> >>>>> _______________________________________________ >>> >>>>> 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. >>> >>>> >>> >>>> >>> >>> >>> >>> >>> >>> >>> >>> _______________________________________________ >>> >> 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. >>> >> >>> > >>> > >>> > >>> > -- >>> > Gerhardus Geldenhuis >>> > _______________________________________________ >>> > 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. >>> >> >> >> >> -- >> Gerhardus Geldenhuis >> > > > > -- > Gerhardus Geldenhuis > _______________________________________________ > 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.

