Description

I am in need to get some statistic counters related to each lcr gw currently loaded in Kamailio.
Kamailio already provides the counters I need inside the KEX module with the following command:

kamcmd> stats.get_statistics core:
core:bad_URIs_rcvd = 69
core:bad_msg_hdr = 2
core:drop_replies = 0
core:drop_requests = 8499
core:err_replies = 0
core:err_requests = 0
core:fwd_replies = 4
core:fwd_requests = 65
core:rcv_replies = 502088
...

Here kamailio doing exactly what i want, it's exposing the counter data via xmlrpc which is great for attaching an external tool to build statistics.
Unfortunately Kamailio KEX module is counting every single request/reply hitting the proxy server, the idea is to have the above stats related to the gateways currently loaded by the lcr module.
In this way, for example I can tell how many request/replies I got from gw id X or gw id Y and produce gw based stats.
Unfortunately the KEX module has no "concept" of "GW" and "LCR", so the idea is to implement the same counting logic inside LCR module.
The counting should not be persistent (counters must go to zero every time kamailio restarts).
When adding or deleting a new gateway, the counting in memory must reflect the status of the internal state or lcr gatewas, so, for example, after adding a new gateway and reloading lcr tables, the new counters must be immediately available through xmlrpc without a new kamailio restart. The same concept applies when the gateway is removed from the list.

Expected behavior

A possible implementation should give the user to query counters in a way similar to this:

# kamcmd lcr.stats
{
	gw: {
		{
			gw_id: <id of lcr mysql table here>
			gw_name: <description of lcr mysql table here>
			requests: 0
			requests_invite: 0
			requests_cancel: 0
			...
		}
		{
			gw_id: <id of lcr mysql table here>
			gw_name: <description of lcr mysql table here>
			requests: 0
			requests_invite: 0
			requests_cancel: 0
			...
		}
	}
}

Additionally, it would be helpful to set a gw id as argument in order to filter, for example:

# kamcmd lcr.stats 95
{
	gw: {
		{
			gw_id: 95
			gw_name: <description of gw id 95>
			requests: 222
			requests_invite: 1
			requests_cancel: 1
			requests_ack: 1
			...
		}
	}
}

Actual observed behavior

To my knowledge, nothing related to this issue has been implemented in Kamailio so far


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <kamailio/kamailio/issues/3372@github.com>