MT#19415 Extend kamailio core and dialog stats

* core:
  - request stats by method
  - reply stats by status code

Change-Id: I8fd81bdd249bb1ed0e65471d47b5bb16d9315086
changes/38/6038/4
Victor Seva 9 years ago committed by Víctor Seva
parent 09cd01e0fb
commit 398dfd263a

@ -15,6 +15,7 @@ sipwise/parallel_build.patch
sipwise/tcap.patch
# carrier support
sipwise/usrloc_dbro.patch
sipwise/0001-kex-add-extended-core-stats.patch
##
# MT#14217
sipwise/janssonrpc-c-fakerpc.patch

@ -0,0 +1,243 @@
From 28990f68fe444570a427f0e8d44253b02cb6f179 Mon Sep 17 00:00:00 2001
From: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Mon, 9 May 2016 11:31:10 +0200
Subject: [PATCH] kex: add extended core stats
* requests by method
* replies by status code
---
modules/kex/core_stats.c | 155 ++++++++++++++++++++++++++++++++++++++++++++++-
modules/kex/core_stats.h | 29 +++++++++
2 files changed, 181 insertions(+), 3 deletions(-)
diff --git a/modules/kex/core_stats.c b/modules/kex/core_stats.c
index ff1ee92..0e426d6 100644
--- a/modules/kex/core_stats.c
+++ b/modules/kex/core_stats.c
@@ -54,12 +54,65 @@ stat_var* err_rpls; /*!< error replies */
stat_var* bad_URIs; /*!< number of bad URIs */
stat_var* unsupported_methods; /*!< unsupported methods */
stat_var* bad_msg_hdr; /*!< messages with bad header */
-
+ /*! received requests by method */
+stat_var* rcv_reqs_invite;
+stat_var* rcv_reqs_cancel;
+stat_var* rcv_reqs_ack;
+stat_var* rcv_reqs_bye;
+stat_var* rcv_reqs_info;
+stat_var* rcv_reqs_register;
+stat_var* rcv_reqs_subscribe;
+stat_var* rcv_reqs_notify;
+stat_var* rcv_reqs_message;
+stat_var* rcv_reqs_options;
+stat_var* rcv_reqs_prack;
+stat_var* rcv_reqs_update;
+stat_var* rcv_reqs_refer;
+stat_var* rcv_reqs_publish;
+/*! extended received replies */
+stat_var* rcv_rpls_1xx;
+stat_var* rcv_rpls_18x;
+stat_var* rcv_rpls_2xx;
+stat_var* rcv_rpls_3xx;
+stat_var* rcv_rpls_4xx;
+stat_var* rcv_rpls_401;
+stat_var* rcv_rpls_404;
+stat_var* rcv_rpls_407;
+stat_var* rcv_rpls_480;
+stat_var* rcv_rpls_486;
+stat_var* rcv_rpls_5xx;
+stat_var* rcv_rpls_6xx;
/*! exported core statistics */
stat_export_t core_stats[] = {
{"rcv_requests" , 0, &rcv_reqs },
+ {"rcv_requests_invite" , 0, &rcv_reqs_invite },
+ {"rcv_requests_cancel" , 0, &rcv_reqs_cancel },
+ {"rcv_requests_ack" , 0, &rcv_reqs_ack },
+ {"rcv_requests_bye" , 0, &rcv_reqs_bye },
+ {"rcv_requests_info" , 0, &rcv_reqs_info },
+ {"rcv_requests_register" , 0, &rcv_reqs_register },
+ {"rcv_requests_subscribe" , 0, &rcv_reqs_subscribe },
+ {"rcv_requests_notify" , 0, &rcv_reqs_notify },
+ {"rcv_requests_message" , 0, &rcv_reqs_message },
+ {"rcv_requests_options" , 0, &rcv_reqs_options },
+ {"rcv_requests_prack" , 0, &rcv_reqs_prack },
+ {"rcv_requests_update" , 0, &rcv_reqs_update },
+ {"rcv_requests_refer" , 0, &rcv_reqs_refer },
+ {"rcv_requests_publish" , 0, &rcv_reqs_publish },
{"rcv_replies" , 0, &rcv_rpls },
+ {"rcv_replies_1xx" , 0, &rcv_rpls_1xx },
+ {"rcv_replies_18x" , 0, &rcv_rpls_18x },
+ {"rcv_replies_2xx" , 0, &rcv_rpls_2xx },
+ {"rcv_replies_3xx" , 0, &rcv_rpls_3xx },
+ {"rcv_replies_4xx" , 0, &rcv_rpls_4xx },
+ {"rcv_replies_401" , 0, &rcv_rpls_401 },
+ {"rcv_replies_404" , 0, &rcv_rpls_404 },
+ {"rcv_replies_407" , 0, &rcv_rpls_407 },
+ {"rcv_replies_480" , 0, &rcv_rpls_480 },
+ {"rcv_replies_486" , 0, &rcv_rpls_486 },
+ {"rcv_replies_5xx" , 0, &rcv_rpls_5xx },
+ {"rcv_replies_6xx" , 0, &rcv_rpls_6xx },
{"fwd_requests" , 0, &fwd_reqs },
{"fwd_replies" , 0, &fwd_rpls },
{"drop_requests" , 0, &drp_reqs },
@@ -119,8 +172,53 @@ static int km_cb_req_stats(struct sip_msg *msg,
update_stat(rcv_reqs, 1);
if(!IS_SIP(msg))
return 1;
- if(msg->first_line.u.request.method_value==METHOD_OTHER)
- update_stat(unsupported_methods, 1);
+ switch(msg->first_line.u.request.method_value) {
+ case METHOD_INVITE:
+ update_stat(rcv_reqs_invite, 1);
+ break;
+ case METHOD_CANCEL:
+ update_stat(rcv_reqs_cancel, 1);
+ break;
+ case METHOD_ACK:
+ update_stat(rcv_reqs_ack, 1);
+ break;
+ case METHOD_BYE:
+ update_stat(rcv_reqs_bye, 1);
+ break;
+ case METHOD_INFO:
+ update_stat(rcv_reqs_info, 1);
+ break;
+ case METHOD_REGISTER:
+ update_stat(rcv_reqs_register, 1);
+ break;
+ case METHOD_SUBSCRIBE:
+ update_stat(rcv_reqs_subscribe, 1);
+ break;
+ case METHOD_NOTIFY:
+ update_stat(rcv_reqs_notify, 1);
+ break;
+ case METHOD_MESSAGE:
+ update_stat(rcv_reqs_message, 1);
+ break;
+ case METHOD_OPTIONS:
+ update_stat(rcv_reqs_options, 1);
+ break;
+ case METHOD_PRACK:
+ update_stat(rcv_reqs_prack, 1);
+ break;
+ case METHOD_UPDATE:
+ update_stat(rcv_reqs_update, 1);
+ break;
+ case METHOD_REFER:
+ update_stat(rcv_reqs_refer, 1);
+ break;
+ case METHOD_PUBLISH:
+ update_stat(rcv_reqs_publish, 1);
+ break;
+ case METHOD_OTHER:
+ update_stat(unsupported_methods, 1);
+ break;
+ }
return 1;
}
@@ -128,6 +226,57 @@ static int km_cb_rpl_stats(struct sip_msg *msg,
unsigned int flags, void *param)
{
update_stat(rcv_rpls, 1);
+ if(msg->first_line.u.reply.statuscode > 99 &&
+ msg->first_line.u.reply.statuscode <200)
+ {
+ update_stat(rcv_rpls_1xx, 1);
+ if(msg->first_line.u.reply.statuscode > 179 &&
+ msg->first_line.u.reply.statuscode <190) {
+ update_stat(rcv_rpls_18x, 1);
+ }
+ }
+ else if(msg->first_line.u.reply.statuscode > 199 &&
+ msg->first_line.u.reply.statuscode <300)
+ {
+ update_stat(rcv_rpls_2xx, 1);
+ }
+ else if(msg->first_line.u.reply.statuscode > 299 &&
+ msg->first_line.u.reply.statuscode <400)
+ {
+ update_stat(rcv_rpls_3xx, 1);
+ }
+ else if(msg->first_line.u.reply.statuscode > 399 &&
+ msg->first_line.u.reply.statuscode <500)
+ {
+ update_stat(rcv_rpls_4xx, 1);
+ switch(msg->first_line.u.reply.statuscode) {
+ case 401:
+ update_stat(rcv_rpls_401, 1);
+ break;
+ case 404:
+ update_stat(rcv_rpls_404, 1);
+ break;
+ case 407:
+ update_stat(rcv_rpls_407, 1);
+ break;
+ case 480:
+ update_stat(rcv_rpls_480, 1);
+ break;
+ case 486:
+ update_stat(rcv_rpls_486, 1);
+ break;
+ }
+ }
+ else if(msg->first_line.u.reply.statuscode > 499 &&
+ msg->first_line.u.reply.statuscode <600)
+ {
+ update_stat(rcv_rpls_5xx, 1);
+ }
+ else if(msg->first_line.u.reply.statuscode > 599 &&
+ msg->first_line.u.reply.statuscode <700)
+ {
+ update_stat(rcv_rpls_6xx, 1);
+ }
return 1;
}
diff --git a/modules/kex/core_stats.h b/modules/kex/core_stats.h
index 9ba315e..bd58268 100644
--- a/modules/kex/core_stats.h
+++ b/modules/kex/core_stats.h
@@ -38,9 +38,38 @@ extern stat_export_t core_stats[];
/*! \brief received requests */
extern stat_var* rcv_reqs;
+/* \brief extended received requests by method */
+extern stat_var* rcv_reqs_invite;
+extern stat_var* rcv_reqs_cancel;
+extern stat_var* rcv_reqs_ack;
+extern stat_var* rcv_reqs_bye;
+extern stat_var* rcv_reqs_info;
+extern stat_var* rcv_reqs_register;
+extern stat_var* rcv_reqs_notify;
+extern stat_var* rcv_reqs_message;
+extern stat_var* rcv_reqs_options;
+extern stat_var* rcv_reqs_prack;
+extern stat_var* rcv_reqs_update;
+extern stat_var* rcv_reqs_refer;
+extern stat_var* rcv_reqs_publish;
+
/*! \brief received replies */
extern stat_var* rcv_rpls;
+/*! \brief extended received replies */
+extern stat_var* rcv_rpls_1xx;
+extern stat_var* rcv_rpls_18x;
+extern stat_var* rcv_rpls_2xx;
+extern stat_var* rcv_rpls_3xx;
+extern stat_var* rcv_rpls_4xx;
+extern stat_var* rcv_rpls_401;
+extern stat_var* rcv_rpls_404;
+extern stat_var* rcv_rpls_407;
+extern stat_var* rcv_rpls_480;
+extern stat_var* rcv_rpls_486;
+extern stat_var* rcv_rpls_5xx;
+extern stat_var* rcv_rpls_6xx;
+
/*! \brief forwarded requests */
extern stat_var* fwd_reqs;
--
2.8.1
Loading…
Cancel
Save