I'm not clear on what the inaccuracy is.
Richard
I'm not clear on what the inaccuracy is.
Richard
Those graphs are the same server, at the same point in time, the top one is graphing WowzaMediaServerPro:name=IOPerformance,vHostName=s lush,vHosts=VHosts,messagesOutBytes via JMX the bottom one is graphing the same attribute via the HTTP provider.
Top graph says that vhost is currently putting out 339KBytes/sec the bottom graph says 2.85KBits/sec.
I would expect them to be the same (if multiplied to the same unit) while these are not in the same ballpark, or in the same universe really. The value via JMX is correct as that was 24 clients connected playing a 128Kbits/sec stream.
edit:
Code for the HTTP based graph is at:
http://caco.slush.ca/~dene/wowza_munin.txt
The JMX based graph is using the jmx plugin from munin exchange.
Last edited by denefoster; 08-16-2010 at 02:28 PM.
Maybe you have a decimal point in the wrong place somewhere. 339 bytes * 8 = 2712 bits.
Richard
Possible, but the only maths going on is fetching the number of bytes out, then multiplying by 8. More disconcerting is the complete difference in trend as well. If the numbers didn't match up but graph valley and peaks did, then I would be much happier.. but in this case the HTTP version just seems wrong.
Any other info I can provide ? I don't particularly mind using JMX if that's the answer to get accurate statistics, other than starting up a JVM to make a single JMX call for every vhost every 5 minutes is a bit silly.
They look similar to me. JMX is probably more finely plotted. And the numbers seem to line up bytes for bits, assuming you have misplaced a decimal. I can only suggest to use what you are comfortable with, what makes sense to you.
Richard
Will generate some more graphs in compatible units, as this isn't getting the problem across clearly enough.
Aaaand, I think I found the problem. It's not a decimal point calculation on my part.. it's that the different methods expose different values.
messagesOutBytes is available via JMX, while MessagesOutBytesRate is available via HTTP. The HTTPProvider doesn't seem to give access to raw bytes in or out.
So.. ignore me, kind of ! Better case would be to provide the same values via the HTTPProvider, but I can probably do that myself.
Cheers
Okay, thanks for the update. getMessagesOutBytes and getMessagesOutBytesRate are both methods of the IOPerformanceCounter
The source for connectioncounts is here:
http://www.wowzamedia.com/forums/showthread.php?t=7097
You can add messageOutBytes by changing this:
To this:Code:private void outputIOPerformanceInfo(StringBuffer ret, IOPerformanceCounter ioPerformance) { ret.append("<MessagesInBytesRate>"+ioPerformance.getMessagesInBytesRate()+"</MessagesInBytesRate>"); ret.append("<MessagesOutBytesRate>"+ioPerformance.getMessagesOutBytesRate()+"</MessagesOutBytesRate>"); }
But MessagesOutBytes is cumulative, so I'm not sure how it will plot in your graph. Actually, I think you want the rate or a delta.... I will let you play around with it.Code:private void outputIOPerformanceInfo(StringBuffer ret, IOPerformanceCounter ioPerformance) { ret.append("<MessagesInBytesRate>"+ioPerformance.getMessagesInBytesRate()+"</MessagesInBytesRate>"); ret.append("<MessagesOutBytes>"+ioPerformance.getMessagesOutBytes()+"</MessagesOutBytes>"); ret.append("<MessagesOutBytesRate>"+ioPerformance.getMessagesOutBytesRate()+"</MessagesOutBytesRate>"); }
Richard
Much appreciated.. and yeah, cumulative is what I want, for most cases at least.. RRD deals with the delta and plotting.
Getting an absolute rate means that accuracy essentially is equal to sample rate.. whereas bytes being cumulative means I can sample as little as I want and still compute a sensible rate.
Cheers,
Dane