2015-05-26 13:13 GMT+02:00 singh.janmejay <[email protected]>: > Fixed here: https://github.com/rsyslog/rsyslog/pull/358 > > Some related thoughts: > - this control can be used to exactly count messages > - most load-balancing or sampling scenarios don't need exact counters, > they need to be approximately right > - random-numbers can be used for load-balancing (goes without saying > it doesn't give us counters, if needed for some other reason) > > Global variables work using a global-lock, which is not good for throughput. > > So how about: > - we build support for thread-local (or rather worker-instance-local) counters
trying to fight feature creep: do we *really* need yet another variable class? Aren't we totally confusing users? > - we build a function rand(<max>) which returns a random number 0 <= > result < 'max' sounds like a minimal change (aka "good") to me. Rainer > > I am not suggesting one-of-the-two, instead Im suggesting 'both'. > > On Sat, May 23, 2015 at 8:24 AM, David Lang <[email protected]> wrote: >> you should be able to use global variables instead. no need for a plugin. >> >> David Lang >> >> On Sat, 23 May 2015, chenlin rao wrote: >> >>> Date: Sat, 23 May 2015 10:41:27 +0800 >>> From: chenlin rao <[email protected]> >>> Reply-To: rsyslog-users <[email protected]> >>> To: rsyslog-users <[email protected]> >>> Subject: Re: [rsyslog] cee json + mmsequence >>> >>> >>> mmsequence is deprecated? So which plugin instead? >>> >>> 2015-05-22 21:15 GMT+08:00 singh.janmejay <[email protected]>: >>> >>>> Cool, thats the answer I was looking for. >>>> >>>> >>>> On Fri, May 22, 2015 at 5:55 PM, Rainer Gerhards >>>> <[email protected]> wrote: >>>>> >>>>> 2015-05-21 17:40 GMT+02:00 singh.janmejay <[email protected]>: >>>>>> >>>>>> Are $/ variable manipulations supposed to be atomic? >>>>> >>>>> >>>>> It depends on what you mean with "atomic". The value returned should >>>>> be consistent, that for sure. But if you use >>>>> >>>>> $/var = $/var + 1 >>>> >>>> >>>> Yes, I expect it to jump, but not get corrupted. >>>> >>>>> >>>>> and $/var is 16 when this starts, the result can very well be 18 if >>>>> another thread executed the exact same sequence. I think for this use >>>>> there was an atomic increment function planned. I guess I never >>>>> implemented it, though. >>>>> >>>>>> >>>>>> Eg. $/var % 16 should never produce any number greater than 15, but it >>>> >>>> does. >>>> >>>> This will not be a problem if we use atomic read. >>>> Since you have made it clear that the idea was to make it atomic(which >>>> means this is a bug), I'll fix this. >>>> >>>>> >>>>> as David said, that's a bug. >>>>> >>>>>> >>>>>> Are they non-atomic by design? If so, is mmsequence the right thing to >>>>>> use (assuming it has atomic counters, I haven't checked if it really >>>>>> does)? >>>>> >>>>> >>>>> mmsequence is deprecated. >>>>> >>>>>> >>>>>> There are few options on the table, I guess. >>>>> >>>>> >>>>> before I take a shot at these, let's see if we had the same >>>>> understanding of "atomic". >>>> >>>> >>>> We do. >>>> >>>>> >>>>> Rainer >>>>>> >>>>>> 1. If $/ variables are supposed to be atomic, we just fix the impl. >>>>>> 2. We use mmsequence, and keep it alive (assuming it has atomic >>>> >>>> counters) >>>>>> >>>>>> 3. We fix mmsequence to implement atomic counters. >>>>>> 4. If $/ is not supposed to be atomic (by design), we implement $@ >>>>>> which is thread-local, so people can get atomic counters within thread >>>>>> (evenness in data(for load-balancing or sampling kind of usecase) is >>>>>> maintained by the fact that a single thread will pump a lot of >>>>>> messages, so across all threads it'll approximately be as even as it >>>>>> is in a single-thread. >>>>>> 5. We implement a random-number construct (which i believe either >>>>>> mmsequence or mmcount had) which allows acceptable load-balancing or >>>>>> sampling etc. >>>>>> >>>>>> Thoughts? >>>>>> >>>>>> On Wed, Dec 3, 2014 at 11:12 PM, David Lang <[email protected]> wrote: >>>>>>> >>>>>>> On Wed, 3 Dec 2014, Brian Knox wrote: >>>>>>> >>>>>>>> So two questions then: >>>>>>>> >>>>>>>> 1. In the case of using mmjsonparse on messages where we do not know >>>>>>>> ahead >>>>>>>> of time what all the. json attributes will be, is there a var for a >>>> >>>> place >>>>>>>> >>>>>>>> in the tree where we can get all attributes that were in the cee >>>> >>>> message? >>>>>>> >>>>>>> >>>>>>> >>>>>>> There are three 'classes' of variables >>>>>>> >>>>>>> $! are 'normal' variables, the place that mmjsonparse, etc put the >>>> >>>> results >>>>>>> >>>>>>> of parsing the cee message by default. >>>>>>> >>>>>>> $. are 'local' variables, they are a place you can put stuff that you >>>> >>>> don't >>>>>>> >>>>>>> want to end up in a message when you output $! >>>>>>> >>>>>>> $\ are 'global' variables, unlike the others, they persist from >>>> >>>> message to >>>>>>> >>>>>>> message. >>>>>>> >>>>>>> All of these variables are a tree, where you can have $!foo!bar and >>>>>>> $!foo!baz. If you just reference $!foo it will output both bar and baz >>>> >>>> as >>>>>>> >>>>>>> JSON >>>>>>> >>>>>>> so to see everything, parse the message and then output $! >>>>>>> >>>>>>>> 2. If mmsequence is being deprecated, is there a pointer to how to >>>>>>>> increment global variables to provide a sequence? >>>>>>> >>>>>>> >>>>>>> >>>>>>> set $\var = $\var + 1; >>>>>>> >>>>>>>> 3. This morning I remembered the "mmcount" module - is this also >>>>>>>> being >>>>>>>> deprecated in favor of global variables? >>>>>>> >>>>>>> >>>>>>> >>>>>>> probably. >>>>>>> >>>>>>> David Lang >>>>>>> >>>>>>> >>>>>>>> Brian >>>>>>>> >>>>>>>> On Wed, Dec 3, 2014 at 3:52 AM, Rainer Gerhards < >>>> >>>> [email protected]> >>>>>>>> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> 2014-12-02 21:59 GMT+01:00 Brian Knox <[email protected]>: >>>>>>>>> >>>>>>>>>> We have a case where we are receiving messages in @cee: format, and >>>>>>>>>> would >>>>>>>>>> like to add a sequence variable generated via mmsequence to the >>>> >>>> message. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Before I spend too much time digging into this I wanted to ask if, >>>> >>>> using >>>>>>>>>> >>>>>>>>>> some template hackery and json subtrees, this is something that >>>> >>>> sounds >>>>>>>>>> >>>>>>>>>> possible - and if maybe someone else was already doing it. >>>>>>>>>> >>>>>>>>>> >>>>>>>>> David has answered the real question, just let me add that >>>> >>>> mmsequence was >>>>>>>>> >>>>>>>>> a >>>>>>>>> work-around for v7 where global variables were not available. It is >>>> >>>> now >>>>>>>>> >>>>>>>>> deprecated and will probably removed in a couple of month. >>>>>>>>> >>>>>>>>> I'll check the doc if it tells this clearly enough. >>>>>>>>> >>>>>>>>> Rainer >>>>>>>>> >>>>>>>>>> Thanks! >>>>>>>>>> Brian >>>>>>>>>> _______________________________________________ >>>>>>>>>> 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. >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> 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. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Regards, >>>>>> Janmejay >>>>>> http://codehunk.wordpress.com >>>>>> _______________________________________________ >>>>>> 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. >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Janmejay >>>> http://codehunk.wordpress.com >>>> _______________________________________________ >>>> 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. > > > > -- > Regards, > Janmejay > http://codehunk.wordpress.com > _______________________________________________ > 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.

