sflow module and increasing useragent
Neil Mckee
neil.mckee.ca at gmail.com
Wed Aug 10 19:42:44 UTC 2011
On Aug 10, 2011, at 9:55 AM, Mark Moseley wrote:
> On Tue, Aug 9, 2011 at 10:37 PM, Neil Mckee <neil.mckee.ca at gmail.com> wrote:
>> It looks like it may be (erroneously!) ignoring that limit and sending the whole user-agent string. Thanks for pointing it out.
>>
>> If you are using sflowtool to print the output at the collector then it's probably chopping the field there, so you would just need to tweak sflowtool/src/sflow.h file and recompile sflowtool.
>>
>> The user-agent can be kilobytes long in some cases. How many bytes is enough? Please submit comments to the HTTP thread on http://groups.google.com/group/sflow.
>>
>> Neil
>>
>>
>> On Aug 9, 2011, at 6:21 PM, Mark Moseley wrote:
>>
>>> If I wanted to increase the amount of bytes logged by the sflow module
>>> for the user agent to, say, 128 bytes, what would I need to change?
>>>
>>> I tried changing this:
>>>
>>> (in ngx_http_sflow.h)
>>> #define SFLHTTP_MAX_USERAGENT_LEN 128
>>>
>>> but I still get the user agent truncated at 64 bytes. Nor does it seem
>>> like SFLHTTP_MAX_USERAGENT_LEN is used anywhere in the code (or any
>>> SFLHTTP_MAX_* define).
>>>
>>> I'm sure I could whack on it long enough to get it to work, but I ask
>>> mainly because I don't want to cause some buffer/format/etc overflow
>>> somewhere else down the line. Thanks!
>
> Thanks for the info. That did the trick. I wrongly assumed the limit
> was being applied in the module itself.
>
> BTW, is there anywhere that has info on APIs for host sflow? I've been
> googling to no avail. The perl Net::sFlow module chokes badly
> (presumably just expecting standard sflow), and I've not been able to
> track down a python module (which is what I'm really interested in).
> Just asking since we have this thread going, but I can repost to the
> google group if you think it'd be better asked there. Thanks!
Do you mean you are looking for a Python equivalent of what sflowtool.c does?
The data is all XDR-encoded, so you might start with Python's "xdrlib". However it may be easier and more compact to just unpack the data manually. The C implementation for Ganglia-gmond is an example of that. It is much more compact than sflowtool.c, and might be a better place to start if you just want the sFlow-HOST structures:
http://ganglia.svn.sourceforge.net/viewvc/ganglia/trunk/monitor-core/gmond/sflow.c?revision=2638&view=markup
(see the "process_sflow_datagram()" function near the bottom.)
sFlow XDR specs that have been finalized are published here:
http://www.sflow.org/developers/specifications.php
Neil
P.S. The Perl library should be able to skip over structures it doesn't recognize, so you might want to point that out to it's author(s).
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
More information about the nginx
mailing list