2016-03-22 20:34 GMT+01:00 singh.janmejay <[email protected]>:
> What about wrapDynamicObjects="on|off"? That is required regardless,
> right? (if we want to preserve backward compatibility). Unless we
> choose to change it anyway (which im fine with).
>
> @Rainer: what do you think about foreach handling object?

so far I could only manage to have a glimpse at the conversation. I
admit that I am really concerned about all the extra complexity we
introduce. And do so for what I think is a border-use case at best.
There is a lot of work that should really be done in regard to
variables and performance and I am unsure if this is the right time to
do large extensions...

I was happy with the dynstats as it looked like a very contained
solution that did not affect much else. But now it looks we need to
touch a big deal of code ... code that's not really ready for that...

Maybe I get a different view when I find time to read all this more in-depth....

Rainer
>
> On Wed, Mar 23, 2016 at 1:01 AM, David Lang <[email protected]> wrote:
>> On Wed, 23 Mar 2016, singh.janmejay wrote:
>>
>>> Foreach can only work with arrays as of now. It can't work with
>>> objects (key-value pairs). So [{name: ... value: ...}, {..},...] is
>>> the only format that will work as of now.
>>>
>>> We can enhance foreach to work with objects.
>>>
>>> I can make a flag available at dyn-stats bucket level, which can
>>> control serialization format, but that would really be a hack.
>>>
>>> From single-responsibility pattern pov, impstats should be the only
>>> component that decides how to layout data for user to see.
>>>
>>> How about this:
>>>
>>> impstats(format="json" wrapDynamicObjects="on"...)?
>>>
>>> It defaults to off, which keeps backward compatibility.
>>>
>>> So what do you guys think about:
>>> - wrapDynamicObjects="on|off"
>>> - generating [{name: a, value: 10}, {...} ...] vs. {a: 10, ...}
>>> (foreach will handle the former out of the box, but later is concise,
>>> readable and light-weight in addition to being more json-y.
>>> - enhancing foreach to work with {a: 10, b: 20...}
>>
>>
>> If we can enhance foreach to work with the concise format, I would rather
>> wait for it instead of introducing the wrapping version.
>>
>> I'm thinking that foreach walks through arrays, rather than mixing concepts,
>> a foreachobject that gives us a name and contents for a {} list of objects
>> may be the right thing to do?
>>
>> foreach just returns a single object while foreachobject needs to return the
>> object and name.
>>
>> although, if we ever get the ability to address arrays directly, being able
>> to look at the array position would be the equivalent of the name.
>>
>> David Lang
>>
>>
>>
>>> On Wed, Mar 23, 2016 at 12:26 AM, David Lang <[email protected]> wrote:
>>>>
>>>> On Tue, 22 Mar 2016, singh.janmejay wrote:
>>>>
>>>>> How about this: we support a new flag in impstats which allows
>>>>> json-formatted stats-line to optionally use
>>>>> encapsulated/wrapped-layout?
>>>>>
>>>>> impstats(format="json" ...) generates
>>>>>
>>>>>
>>>>> {"name":"msg_per_host","origin":"dynstats.bucket","z-scribe1r-b":80,"SWEB10":67}
>>>>>
>>>>> however,
>>>>>
>>>>> impstats(format="json/w" ...) generates {"header":
>>>>> {"name":"msg_per_host","origin":"dynstats.bucket"}, "counters" :
>>>>> {"z-scribe1r-b":80,"SWEB10":67}}
>>>>>
>>>>> This is relevant, the serilization format we use right now mixes
>>>>> pre-defined keys with counter-names and it can affect regular static
>>>>> counters too.
>>>>
>>>>
>>>>
>>>> with the existing pstats output, there is no ability for user-defined
>>>> data
>>>> to become a tag name, so there is no potential for ambiguity. but with
>>>> dynastats, this is not a possibility, and the format we use should
>>>> prevent
>>>> problems.
>>>>
>>>> Also, just from a conceptual point of view, why should the bucket
>>>> contents
>>>> be at the same level as the bucket name?
>>>>
>>>> other than backwards compatibility, what advantage is there of the
>>>> current
>>>> version in JSON? the documentation uses the plain text equivalant, which
>>>> is
>>>> perfectly legitimate because there is an order to the line, and after you
>>>> get past the name and origin, everything else on the line is name-value
>>>> pairs of counters, again, no ambiguity.
>>>>
>>>> But with JSON, I don't believe that you can depend on tools maintaining
>>>> (or
>>>> even identifying) the order of the elements, and if you have multiple
>>>> elements with the same name, it's implementation dependent as to which
>>>> one
>>>> will be seen.
>>>>
>>>> So purely from a correctness and defensive programming point of view, I
>>>> think the current JSON serialization should be changed, with the old
>>>> format
>>>> no longer being an option.
>>>>
>>>>
>>>>
>>>>
>>>> As to the details of the new format
>>>>
>>>> What I'm wanting to do with the counters is something like
>>>>
>>>> if $!origin == "dynstats.bucket" then {
>>>>   foreach $.tag $!counters {
>>>>     /var/log/stats;format
>>>>   }
>>>> }
>>>>
>>>> to output one line per counter.
>>>>
>>>> I'm very flexible in how to do this, but I would much rather be able to
>>>> do
>>>> this inside rsyslog than have to serialize things to an external script,
>>>> have it parse the json and process it.
>>>>
>>>> my initial thinking was just do
>>>>
>>>> counters: [ "z-scribe1r-b":80,"SWEB10":67 ]
>>>>
>>>> but as I'm typing this, I realize that doesn't work as I don't have a way
>>>> to
>>>> break $.tag down to reference the name and the value.
>>>>
>>>> I'd hate to have to do something like
>>>>
>>>> counters: [{"name":"z-scribe1r-b","value":80
>>>> },{"name":"SWEB10","value":67}]
>>>>
>>>> this mirrors the misuse of XML that gives it such a horrible reputation.
>>>> But
>>>> unless we introduce some new function to rsyslog to break things down, I
>>>> don't see a better way. If we do need to do something like this, I sure
>>>> would not want to make it the default JSON, which would result in two
>>>> different formats. I hate the idea of starting to have different formats
>>>> because of subtypes of data (what is someone wants the cee version of
>>>> this
>>>> for example, you start to have orthoginal format decisions)
>>>>
>>>>
>>>> David Lang
>>>> _______________________________________________
>>>> 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.

Reply via email to