mirror of https://github.com/sipwise/kamailio.git
* core: - request stats by method - reply stats by status code Change-Id: I8fd81bdd249bb1ed0e65471d47b5bb16d9315086changes/38/6038/4
parent
09cd01e0fb
commit
398dfd263a
@ -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…
Reference in new issue