On Thu, Mar 5, 2015 at 11:45 AM, Andrew Ruch <[email protected]> wrote:
> On Thu, Mar 5, 2015 at 11:38 AM, David Lang <[email protected]> wrote:
>> What do you mean when you say it's getting corrupted?
>>
>> What is the log message that's being delivered, and what does it look like
>> after the corruption?
>>
>> David Lang
>>
>>
>> On Thu, 5 Mar 2015, Andrew Ruch wrote:
>>
>>> Hello,
>>>
>>> I'm using Rsyslog 8.8.0 on RHEL 6.6 on the sender and receiver.
>>>
>>> I'm experiencing an issue where my disk queue is getting corrupted,
>>> even just sending one message. The Rsyslog server is configured to
>>> receive messages over TCP. The message is then put into a disk queue
>>> before being sent to another local application. When I comment out the
>>> 4 “queue” lines on the action, everything works fine. The remote logs
>>> are received and written to “/var/log/remote.log” successfully. Is
>>> there something else I need to configure for the disk queue to work?
>>>
>>>
>>> Below is a simple configuration file created for debugging this
>>> problem. Also included are some relevant lines from the Rsyslog debug
>>> log.
>>>
>>>
>>> ##########################################################################
>>>
>>> SERVER CONFIG FILE
>>>
>>> ##########################################################################
>>>
>>> # rsyslog v8 configuration file (server)
>>>
>>> #### GLOBAL DIRECTIVES ####
>>>
>>> $DebugLevel 2
>>> $DebugFile /var/log/rsyslog-debug.log
>>>
>>> $umask 0000
>>>
>>> # Working directory for spooling and file monitoring
>>> $WorkDirectory /var/lib/rsyslog
>>>
>>> # Set the message size to 32k (up from 2k default)
>>> $MaxMessageSize 32768
>>>
>>> #### MODULES ####
>>>
>>> # Configure file output defaults
>>> module( load="builtin:omfile"
>>>        template="RSYSLOG_TraditionalFileFormat"
>>>        fileCreateMode="0600"
>>>      )
>>>
>>> # provides input for tcp connections
>>> module( load="imtcp"
>>>        NotifyOnConnectionClose="on"
>>>      )
>>>
>>> #### NETSTREAM DRIVER ####
>>> $DefaultNetstreamDriver ptcp
>>>
>>> #### RULESETS ####
>>>
>>> ruleset(name="remote"){
>>>
>>> # To file
>>> *.*    /var/log/remote.log
>>>
>>> # To local process
>>>    action( template="RSYSLOG_SyslogProtocol23Format"
>>>            name="remotefwd"
>>>            type="omfwd"
>>>            action.resumeRetryCount="-1"
>>>            target="127.0.0.1"
>>>            port="7871"
>>>            protocol="tcp"
>>>            TCP_Framing="octet-counted"
>>>            queue.filename="remotefwd"
>>>            queue.size="1000000"
>>>            queue.type="Disk"
>>>            queue.saveonshutdown="on"
>>>            StreamDriver="ptcp"
>>>          )
>>>
>>> }
>>>
>>> #### INPUTS ####
>>> input(type="imtcp" port="10514" ruleset="remote")
>>>
>>>
>>> #### LOCAL RULES ####
>>>
>>> *.*    /var/log/messages
>>>
>>>
>>>
>>>
>>> ##########################################################################
>>>
>>> DEBUG LOG
>>>
>>> ##########################################################################
>>>
>>> 2608.731281300:main Q:Reg/w0  : processBATCH: next msg 0: <166>1
>>> 2015-03-05T16:23:28.729746+00:00 localci-hdf dev - - -  test 4d
>>> 2608.731286050:main Q:Reg/w0  :     ACTION 0
>>> [builtin:omfile:/var/log/remote.log]
>>> 2608.731296440:main Q:Reg/w0  : executing action 0
>>> 2608.731300781:main Q:Reg/w0  : Called action, logging to builtin:omfile
>>> 2608.731321713:main Q:Reg/w0  : action 0 is transactional - executing
>>> in commit phase
>>> 2608.731327093:main Q:Reg/w0  : wti 0x7f697aa7e200: we need to create
>>> a new action worker instance for action 0
>>> 2608.731331936:main Q:Reg/w0  : Action 0 transitioned to state: itx
>>> 2608.731336015:main Q:Reg/w0  :     ACTION 1
>>> [builtin:omfwd:action(type="builtin:omfwd" ...)]
>>> 2608.731345835:main Q:Reg/w0  : executing action 1
>>> 2608.731349861:main Q:Reg/w0  : Called action, logging to builtin:omfwd
>>> 2608.731373560:main Q:Reg/w0  : strm 0x7f697aa79d70: file
>>> -1(remotefwd) flush, buflen 575
>>> 2608.731378696:main Q:Reg/w0  : strmPhysWrite, stream 0x7f697aa79d70, len
>>> 575
>>> 2608.731440218:main Q:Reg/w0  : file
>>> '/var/lib/rsyslog/remotefwd.00000001' opened as #2 with mode 384
>>> 2608.731447636:main Q:Reg/w0  : strm 0x7f697aa79d70: opened file
>>> '/var/lib/rsyslog/remotefwd.00000001' for WRITE as 2
>>> 2608.731457063:main Q:Reg/w0  : strm 0x7f697aa79d70: file 2 write
>>> wrote 575 bytes
>>> 2608.731462184:main Q:Reg/w0  : remotefwd queue: write wrote 575
>>> octets to disk, queue disk size now 575 octets, EnqOnly:0
>>> 2608.731466581:main Q:Reg/w0  : remotefwd queue: qqueueAdd: entry
>>> added, size now log 1, phys 1 entries
>>> 2608.731471191:main Q:Reg/w0  : remotefwd queue:Reg: high activity -
>>> starting 1 additional worker thread(s).
>>> 2608.731525047:main Q:Reg/w0  : remotefwd queue:Reg: started with
>>> state 0, num workers now 1
>>> 2608.731534075:main Q:Reg/w0  : remotefwd queue: EnqueueMsg advised worker
>>> start
>>> 2608.731540956:main Q:Reg/w0  : END batch execution phase, entering to
>>> commit phase
>>> 2608.731553966:main Q:Reg/w0  : actionCommitAll: action 0, state 1,
>>> nbr to commit 1 isTransactional 1
>>> 2608.731567908:main Q:Reg/w0  : doTransaction: have commitTransaction
>>> IF, using that, pWrkrInfo 0x7f697aa7e2d0
>>> 2608.731580406:main Q:Reg/w0  : entering
>>> actionCallCommitTransaction(), state: itx, actionNbr 0, nMsgs 1
>>> 2608.731598707:7f69754f4700: thread created, tid 3379, name
>>> 'rs:remotefwd queue:Reg'
>>> 2608.731642781:remotefwd queue:Reg/w0: wti 0x7f697aa7d4f0: worker starting
>>> 2608.731656561:remotefwd queue:Reg/w0: DeleteProcessedBatch: we
>>> deleted 0 objects and enqueued 0 objects
>>> 2608.731669096:remotefwd queue:Reg/w0: doDeleteBatch: delete batch
>>> from store, new sizes: log 1, phys 1
>>> 2608.731685925:main Q:Reg/w0  : file stream remote.log params: flush
>>> interval 0, async write 0
>>> 2608.731711325:main Q:Reg/w0  : omfile: write to stream, pData->pStrm
>>> 0x7f6968003980, lenBuf 40, strt data Mar  5 16:23:28 localci-hdf dev
>>> test 4d
>>> 2608.731720487:main Q:Reg/w0  : strm 0x7f6968003980: file
>>> -1(remote.log) flush, buflen 40
>>> 2608.731726623:main Q:Reg/w0  : strmPhysWrite, stream 0x7f6968003980, len
>>> 40
>>> 2608.731743671:main Q:Reg/w0  : file '/var/log/remote.log' opened as
>>> #7 with mode 420
>>> 2608.731756634:main Q:Reg/w0  : strm 0x7f6968003980: opened file
>>> '/var/log/remote.log' for WRITE as 7
>>> 2608.731768282:main Q:Reg/w0  : strm 0x7f6968003980: file 7 write wrote 40
>>> bytes
>>> 2608.731774441:main Q:Reg/w0  : Action 0 transitioned to state: rdy
>>> 2608.731781078:main Q:Reg/w0  : Action 0 transitioned to state: itx
>>> 2608.731786633:main Q:Reg/w0  : Action 0 transitioned to state: rdy
>>> 2608.731791771:main Q:Reg/w0  : actionCommit, in retry loop, iRet 0
>>> 2608.731797654:main Q:Reg/w0  : actionCommitAll: action 2, state 0,
>>> nbr to commit 0 isTransactional 1
>>> 2608.731807120:main Q:Reg/w0  : processBATCH: batch of 1 elements has
>>> been processed
>>> 2608.731812961:main Q:Reg/w0  : regular consumer finished, iret=0,
>>> szlog 0 sz phys 1
>>> 2608.731820159:main Q:Reg/w0  : DeleteProcessedBatch: we deleted 1
>>> objects and enqueued 0 objects
>>> 2608.731825717:main Q:Reg/w0  : doDeleteBatch: delete batch from
>>> store, new sizes: log 0, phys 0
>>> 2608.731831642:main Q:Reg/w0  : regular consumer finished, iret=4,
>>> szlog 0 sz phys 0
>>> 2608.731837955:main Q:Reg/w0  : main Q:Reg/w0: worker IDLE, waiting for
>>> work.
>>> 2608.731967228:remotefwd queue:Reg/w0: file
>>> '/var/lib/rsyslog/remotefwd.00000001' opened as #6 with mode 384
>>> 2608.731981761:remotefwd queue:Reg/w0: strm 0x7f697aa7aff0: opened
>>> file '/var/lib/rsyslog/remotefwd.00000001' for READ as 6
>>> 2608.731989606:remotefwd queue:Reg/w0: strm 0x7f697aa7aff0: file 6
>>> read 575 bytes
>>> 2608.732006243:remotefwd queue:Reg/w0: remotefwd queue: error -2308
>>> dequeueing element - ignoring, but strange things may happen
>>> 2608.732011036:remotefwd queue:Reg/w0: regular consumer finished,
>>> iret=-2308, szlog 0 sz phys 1
>>> 2608.732015422:remotefwd queue:Reg/w0: DeleteProcessedBatch: we
>>> deleted 0 objects and enqueued 0 objects
>>> 2608.732019638:remotefwd queue:Reg/w0: doDeleteBatch: delete batch
>>> from store, new sizes: log 0, phys 1
>>> 2608.732024016:remotefwd queue:Reg/w0: regular consumer finished,
>>> iret=4, szlog 0 sz phys 1
>>> 2608.732028228:remotefwd queue:Reg/w0: remotefwd queue:Reg/w0: worker
>>> IDLE, waiting for work.
>>>
>>>
>>> Thanks,
>>> Andrew
>>> _______________________________________________
>>> 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.
>
>
> By corrupt I mean the log never leaves the queue. The text of the log
> message that corresponds to the debug log I included is "test 4d". The
> debug log shows this error message towards the bottom:
>
> 2608.732006243:remotefwd queue:Reg/w0: remotefwd queue: error -2308
> dequeueing element - ignoring, but strange things may happen
>
>
> Something bad is happening when the message is read from the queue.
>
>
> Thanks,
> Andrew


In doing some more research, it appears that local messages work just
fine when being sent to the disk queue. (Note that I changed the
server configuration slightly to allow for local messages to be sent
to the "remote" action.)

Here are the steps:

1) Call "logger" from local server. This log message is successfully
passed through the queue and sent to my local application using omfwd.

RSYSLOG DEBUG LOGS:

4981.388342088:main Q:Reg/w0  : remotefwd queue: write wrote 395
octets to disk, queue disk size now 790 octets, EnqOnly:0
4981.388462240:remotefwd queue:Reg/w0: strm 0x7f4faae85050: file 2
read 395 bytes

2) Call “logger” from remote client. This log message causes an error
in the queue.

RSYSLOG DEBUG LOGS:

5000.069186937:main Q:Reg/w0  : remotefwd queue: write wrote 572
octets to disk, queue disk size now 1362 octets, EnqOnly:0
5000.069278979:remotefwd queue:Reg/w0: strm 0x7f4faae85050: file 2
read 572 bytes
5000.069308645:remotefwd queue:Reg/w0: remotefwd queue: error -2308
dequeueing element - ignoring, but strange things may happen

3) Call “logger” from local server again. This log message is successful.

RSYSLOG DEBUG LOGS:

5033.404190090:main Q:Reg/w0  : remotefwd queue: write wrote 395
octets to disk, queue disk size now 1757 octets, EnqOnly:0
5033.404195439:main Q:Reg/w0  : remotefwd queue: qqueueAdd: entry
added, size now log 1, phys 2 entries
5033.404273139:remotefwd queue:Reg/w0: doDeleteBatch: delete batch
from store, new sizes: log 1, phys 2
5033.404279061:remotefwd queue:Reg/w0: objDeserialize error -2029
during header processing - trying to recover
5033.404348551:remotefwd queue:Reg/w0: strm 0x7f4faae85050: file 2
read 395 bytes
5033.404362158:remotefwd queue:Reg/w0: deserializer has possibly been
able to re-sync and recover, state 0



To me, this implies that something is different about the message
being written to disk when it originates from imtcp. However, it still
works to write this message to file, so I think everything is working
as far as the TCP transfer of the message.

Andrew
_______________________________________________
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