Hi Ramona,
o Elena-Ramona Modroiu [02/11/09 18:20]:
Maybe, if we
would add a way to monitor SEMS servers from within
SIREMIS, it would give a good opportunity to monitor e.g. conference
bridge, voicemail server, prepaid app, or b2bua (like sbc).
What do you think?
I think it would be very useful. It looks to me more like an extension
to communicate via XMLRPC with SEMS - send command and display the result.
What is the XMLRPC you are using in SEMS? The C library used in Kamailio
proved quite unstable, therefore SIREMIS uses MI UDP - simpler protocol
and easy to troubleshoot. There should be XMLRPC PHP lib, therefore easy
SEMS uses
xmlrpc++, with the addition of multi threaded server (and
client with failover fallback). We have it deployed for quite some time,
and it works pretty reliably. Of course XML is always bloat, but I think
that TCP as reliable transport is not bad for this purpose - no need to
reimplement on application level. There is also a UDP server, but it is
little used, also due to that encoding/decoding of data structures is
much more straight forward with xmlrpc. Things on my list to try out are
also json-rpc (for easier integration with web apps) to DI, and protocol
buffers+libevent, for more performance. But I think for most
applications, xmlrpc2di works reasonably well.
To explain this a little further, in SEMS modules can export an internal
interface called DI ('dynamic invocation' - runtime function evaluation
and variably typed arguments) to export cross module APIs (SIP registrar
client, UAC authentication, DIAMETER client, message file storage,
accounting, conference room control etc). With xmlrpc2di, these APIs are
instantly accessible through XMLRPC from the outside. XMLRPC fits well,
because it contains data type description in the function call XML
document, and function names are dynamic - just like DI.
Similarly, monitoring data that the SEMS application can add to the call
info is variable - applications can add string/int attributes, or
arbitrary data structures, referenced by an attribute name. If accessed
via XMLRPC, they should be available just as the application added it;
int as int, strings as strings, arrays as arrays (struct support for
xmlrpc coming soon). If we can come up with a generic way to represent
that on the web page, it can be used for many diverse monitoring purposes.
to extend SIREMIS.
Is it possible to get statistic information out of SEMS? Like number of
active calls? Such data can be used to build charts, which is nice to
monitor the service health and evolution.
the xmlrpc2di module has the calls()
method. Also, the listActive()
function from 'monitoring' does just that. By calling get() on the call
id, further information can be queried - e.g. it can be grouped by
application, domain etc.
Stefan
Regards,
Ramona
_______________________________________________
Kamailio (OpenSER) - Users mailing list
Users(a)lists.kamailio.org
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
--
Stefan Sayer
VoIP Services
stefan.sayer(a)iptego.com
www.iptego.com
IPTEGO GmbH
Wittenbergplatz 1
10789 Berlin
Germany
Amtsgericht Charlottenburg, HRB 101010
Geschaeftsfuehrer: Alexander Hoffmann