[jitsi-dev] videobridge pubsub stats woes


#1

I've tried to enable pubsub statistics from the bridge (as documented in https://github.com/jitsi/jitsi-videobridge/blob/master/doc/using_statistics.md -- thanks!)
by adding the following lines to my .sip-communicator/sip-communicator.properties:
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=pubsub
org.jitsi.videobridge.PUBSUB_SERVICE=mydomain
org.jitsi.videobridge.PUBSUB_NODE=videobridge

This gets parsed at startup. So I would expect to see some stanzas to mydomain, but there is nothing. Anything obvious? I am using build rev 231.

Some notes I made while reading the README:
- the format looks quite similar to http://xmpp.org/extensions/xep-0039.html (one of my favorite specs, allowed me to query stupid ejabberd servers for their number of online users for almost a decade), maybe you can reuse that?

- not sure why type=result is used in the first example

- Does setting STATISTICS_TRANSPORT=colibri mean that the statistics will be sent to any active focus? If this is set to pubsub, will it still be sent to all focuses as described in the sentence below the first example?

cheers

philipp


#2

Hello, Philipp!

This gets parsed at startup. So I would expect to see some stanzas to
mydomain, but there is nothing. Anything obvious? I am using build rev 231.

Oh, I guess we'll have to check again in order to give you a definite
answer because we recently modified the XMPP implementation in order
to support the statistics over the REST API of Videobridge.

- Does setting STATISTICS_TRANSPORT=colibri mean that the statistics will be
sent to any active focus?

Yes, the statistics are sent to each focus of a non-expired conference.

If this is set to pubsub, will it still be sent to
all focuses as described in the sentence below the first example?

No, the statistics will be sent to the pubsub node only and will not
be sent to any conference focus.

Best regards,
Lyubomir Marinov

···

2014-08-26 18:46 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:


#3

digging slightly deeper into this it seems that init()
https://github.com/jitsi/jitsi-videobridge/blob/master/src/org/jitsi/videobridge/stats/PubSubStatsTransport.java#L105
is never called, therefore the publisher is not created and publishStatistics() doesn't do anything.


#4

other than the <iq type=result/> issue this seems almost good now. My focus module receives the information and logs them into influxdb.

I am slightly worried that a publish error disposes the stats transport however --
https://github.com/jitsi/jitsi-videobridge/blob/master/src/org/jitsi/videobridge/stats/PubSubStatsTransport.java#L208 and also on line 188
How about logging-but-ignoring in that case? Might be a temporary failure.


#5

hey Lyubomir,

Hello, Philipp!

This gets parsed at startup. So I would expect to see some stanzas to
mydomain, but there is nothing. Anything obvious? I am using build rev 231.

Oh, I guess we'll have to check again in order to give you a definite
answer because we recently modified the XMPP implementation in order
to support the statistics over the REST API of Videobridge.

thanks -- do you recall in what version the changes were made? I can check that then, I still have some old versions installed.

- Does setting STATISTICS_TRANSPORT=colibri mean that the statistics will be
sent to any active focus?

Yes, the statistics are sent to each focus of a non-expired conference.

If this is set to pubsub, will it still be sent to
all focuses as described in the sentence below the first example?

No, the statistics will be sent to the pubsub node only and will not
be sent to any conference focus.

fab.

···

Am 26.08.2014 21:01, schrieb Lyubomir Marinov:

2014-08-26 18:46 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:


#6

oh, I just noticed that there is an error right below one of the pubsub settings:

14:47:04.120 INFO: [9] org.jitsi.videobridge.osgi.OSGiBundleActivator.info() org.jitsi.videobridge.PUBSUB_NODE=videobridge
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

but I think that one is normal?


#7

I think build 205 was the first to incorporate the REST-induced changes.

···

2014-08-26 22:31 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

do you recall in what version the changes were made? I can check
that then, I still have some old versions installed.


#8

Thank you, Philipp! I'll try to fix it.

···

2014-09-15 16:36 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

digging slightly deeper into this it seems that init()
https://github.com/jitsi/jitsi-videobridge/blob/master/src/org/jitsi/videobridge/stats/PubSubStatsTransport.java#L105
is never called, therefore the publisher is not created and
publishStatistics() doesn't do anything.


#9

oh, I just noticed that there is an error right below one of the pubsub settings:

14:47:04.120 INFO: [9] org.jitsi.videobridge.osgi.OSGiBundleActivator.info() org.jitsi.videobridge.PUBSUB_NODE=videobridge
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

but I think that one is normal?

Yes. I think it is not related. Do you have any other errors?

···

On Aug 27, 2014, at 2:14 PM, Philipp Hancke <fippo@goodadvice.pages.de> wrote:

_______________________________________________
dev mailing list
dev@jitsi.org
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/dev


#10

works btw, thanks!

···

Am 15.09.2014 um 15:40 schrieb Lyubomir Marinov:

2014-09-15 16:36 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

digging slightly deeper into this it seems that init()
https://github.com/jitsi/jitsi-videobridge/blob/master/src/org/jitsi/videobridge/stats/PubSubStatsTransport.java#L105
is never called, therefore the publisher is not created and
publishStatistics() doesn't do anything.

Thank you, Philipp! I'll try to fix it.


#11

I spoke too soon...
08:16:57.384 INFO: [10] org.jitsi.videobridge.xmpp.ComponentImpl.info() SENT:
     <iq type="set" id="0YApC-0" from="bridge.host" to="host">
       <pubsub xmlns="http://jabber.org/protocol/pubsub">
         <create node="videobridge"/>
       </pubsub>
     </iq>

08:16:57.390 INFO: [20] org.jitsi.videobridge.xmpp.ComponentImpl.info() RECV: <iq id="0YApC-0" type="result" to="bridge.host" from="stage-host"/>

Looks good so far...

08:16:58.204 SEVERE: [13] org.jitsi.videobridge.stats.PubSubStatsTransport.publishStatistics().207 Failed to publish to PubSub node: videobridge

The only error that could be thrown is
     throw new IllegalArgumentException("The node doesn't exists");

But shouldn't the bridge try to configure the node first? Looks like the publish is attempted too early in the process.

···

Am 30.09.2014 um 11:31 schrieb Philipp Hancke:

Am 15.09.2014 um 15:40 schrieb Lyubomir Marinov:

2014-09-15 16:36 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

digging slightly deeper into this it seems that init()
https://github.com/jitsi/jitsi-videobridge/blob/master/src/org/jitsi/videobridge/stats/PubSubStatsTransport.java#L105

is never called, therefore the publisher is not created and
publishStatistics() doesn't do anything.

Thank you, Philipp! I'll try to fix it.

works btw, thanks!


#12

After ignoring that exception I get timeout on the pubsub requests despite receiving responses. Maybe iq handling does not deal with two host-only JIDs?

Anyway, I can ignore that for a while and hook up my stuff.

···

Am 01.10.2014 um 10:23 schrieb Philipp Hancke:

Am 30.09.2014 um 11:31 schrieb Philipp Hancke:

Am 15.09.2014 um 15:40 schrieb Lyubomir Marinov:

2014-09-15 16:36 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

digging slightly deeper into this it seems that init()
https://github.com/jitsi/jitsi-videobridge/blob/master/src/org/jitsi/videobridge/stats/PubSubStatsTransport.java#L105

is never called, therefore the publisher is not created and
publishStatistics() doesn't do anything.

Thank you, Philipp! I'll try to fix it.

works btw, thanks!

I spoke too soon...
08:16:57.384 INFO: [10] org.jitsi.videobridge.xmpp.ComponentImpl.info()
SENT:
     <iq type="set" id="0YApC-0" from="bridge.host" to="host">
       <pubsub xmlns="http://jabber.org/protocol/pubsub">
         <create node="videobridge"/>
       </pubsub>
     </iq>

08:16:57.390 INFO: [20] org.jitsi.videobridge.xmpp.ComponentImpl.info()
RECV: <iq id="0YApC-0" type="result" to="bridge.host" from="stage-host"/>

Looks good so far...

08:16:58.204 SEVERE: [13]
org.jitsi.videobridge.stats.PubSubStatsTransport.publishStatistics().207
Failed to publish to PubSub node: videobridge

The only error that could be thrown is
     throw new IllegalArgumentException("The node doesn't exists");

But shouldn't the bridge try to configure the node first? Looks like the
publish is attempted too early in the process.


#13

oh, additionally it seems that it only works then
org.jitsi.videobridge.STATISTICS_TRANSPORT=pubsub
is in the properties. But isn't that the default?

(given my rate of finding bugs I should really do QA for living :slight_smile:

···

Am 01.10.2014 um 18:33 schrieb Philipp Hancke:

Am 01.10.2014 um 10:23 schrieb Philipp Hancke:

Am 30.09.2014 um 11:31 schrieb Philipp Hancke:

Am 15.09.2014 um 15:40 schrieb Lyubomir Marinov:

2014-09-15 16:36 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

digging slightly deeper into this it seems that init()
https://github.com/jitsi/jitsi-videobridge/blob/master/src/org/jitsi/videobridge/stats/PubSubStatsTransport.java#L105

is never called, therefore the publisher is not created and
publishStatistics() doesn't do anything.

Thank you, Philipp! I'll try to fix it.

works btw, thanks!


#14

Hello, Philipp!

Thank you for the feedback!

The push statistics transport - either coliri or pubsub - has be
explicitly specified because the default is the pull statistics access
through the REST API of Videobridge.

Best regards,
Lyubomir

···

2014-10-01 21:30 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

oh, additionally it seems that it only works then
org.jitsi.videobridge.STATISTICS_TRANSPORT=pubsub
is in the properties. But isn't that the default?


#15

ah... so https://github.com/jitsi/jitsi-videobridge/blob/master/doc/using_statistics.md (at the bottom) is outdated. I'll fix that (and the typos). Thanks!

···

Am 01.10.2014 um 20:46 schrieb Lyubomir Marinov:

2014-10-01 21:30 GMT+03:00 Philipp Hancke <fippo@goodadvice.pages.de>:

oh, additionally it seems that it only works then
org.jitsi.videobridge.STATISTICS_TRANSPORT=pubsub
is in the properties. But isn't that the default?

Hello, Philipp!

Thank you for the feedback!

The push statistics transport - either coliri or pubsub - has be
explicitly specified because the default is the pull statistics access
through the REST API of Videobridge.