[asterisk-commits] qwell: trunk r91779 - in /trunk: doc/ include/asterisk/ main/ res/snmp/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Dec 7 10:11:05 CST 2007
Author: qwell
Date: Fri Dec 7 10:11:05 2007
New Revision: 91779
URL: http://svn.digium.com/view/asterisk?view=rev&rev=91779
Log:
Add count of total number of calls processed by asterisk during it's lifetime.
Add number of total calls and current calls to SNMP.
Closes issue #10057, patch by jcmoore.
Modified:
trunk/doc/asterisk-mib.txt
trunk/include/asterisk/pbx.h
trunk/main/cli.c
trunk/main/pbx.c
trunk/res/snmp/agent.c
Modified: trunk/doc/asterisk-mib.txt
URL: http://svn.digium.com/view/asterisk/trunk/doc/asterisk-mib.txt?view=diff&rev=91779&r1=91778&r2=91779
==============================================================================
--- trunk/doc/asterisk-mib.txt (original)
+++ trunk/doc/asterisk-mib.txt Fri Dec 7 10:11:05 2007
@@ -11,7 +11,7 @@
FROM DIGIUM-MIB;
asterisk MODULE-IDENTITY
- LAST-UPDATED "200606081626Z"
+ LAST-UPDATED "200708211450Z"
ORGANIZATION "Digium, Inc."
CONTACT-INFO
"Mark A. Spencer
@@ -30,6 +30,9 @@
Tel: +47 5598 7200
Email: tholo at voop.no"
DESCRIPTION
+ "Add total and current call counter statistics."
+ REVISION "200708211450Z"
+ DESCRIPTION
"Asterisk is an Open Source PBX. This MIB defined
objects for managing Asterisk instances."
REVISION "200603061840Z"
@@ -103,6 +106,23 @@
DESCRIPTION
"The control socket for giving Asterisk commands."
::= { asteriskConfiguration 4 }
+
+astConfigCallsActive OBJECT-TYPE
+ SYNTAX Gauge32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The number of calls currently active on the Asterisk PBX."
+ ::= { asteriskConfiguration 5 }
+
+astConfigCallsProcessed OBJECT-TYPE
+ SYNTAX Counter32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The total number of calls processed through the Asterisk PBX since last
+ restart."
+ ::= { asteriskConfiguration 6 }
-- asteriskModules
@@ -194,7 +214,7 @@
-- asteriskChannels
astNumChannels OBJECT-TYPE
- SYNTAX Integer32
+ SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
Modified: trunk/include/asterisk/pbx.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/pbx.h?view=diff&rev=91779&r1=91778&r2=91779
==============================================================================
--- trunk/include/asterisk/pbx.h (original)
+++ trunk/include/asterisk/pbx.h Fri Dec 7 10:11:05 2007
@@ -892,6 +892,11 @@
* \brief Retrieve the number of active calls
*/
int ast_active_calls(void);
+
+/*!
+ * \brief Retrieve the total number of calls processed through the PBX since last restart
+ */
+int ast_processed_calls(void);
/*!
* \brief executes a read operation on a function
Modified: trunk/main/cli.c
URL: http://svn.digium.com/view/asterisk/trunk/main/cli.c?view=diff&rev=91779&r1=91778&r2=91779
==============================================================================
--- trunk/main/cli.c (original)
+++ trunk/main/cli.c Fri Dec 7 10:11:05 2007
@@ -569,6 +569,61 @@
}
#undef MODLIST_FORMAT
#undef MODLIST_FORMAT2
+
+static char *handle_showcalls(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ struct timeval curtime = ast_tvnow();
+ int showuptime, printsec;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "core show calls [uptime]";
+ e->usage =
+ "Usage: core show calls [uptime] [seconds]\n"
+ " Lists number of currently active calls and total number of calls\n"
+ " processed through PBX since last restart. If 'uptime' is specified\n"
+ " the system uptime is also displayed. If 'seconds' is specified in\n"
+ " addition to 'uptime', the system uptime is displayed in seconds.\n";
+ return NULL;
+
+ case CLI_GENERATE:
+ if (a->pos != e->args)
+ return NULL;
+ return a->n == 0 ? ast_strdup("seconds") : NULL;
+ }
+
+ /* regular handler */
+ if (a->argc >= e->args && !strcasecmp(a->argv[e->args-1],"uptime")) {
+ showuptime = 1;
+
+ if (a->argc == e->args+1 && !strcasecmp(a->argv[e->args],"seconds"))
+ printsec = 1;
+ else if (a->argc == e->args)
+ printsec = 0;
+ else
+ return CLI_SHOWUSAGE;
+ } else if (a->argc == e->args-1) {
+ showuptime = 0;
+ printsec = 0;
+ } else
+ return CLI_SHOWUSAGE;
+
+ if (option_maxcalls) {
+ ast_cli(a->fd, "%d of %d max active call%s (%5.2f%% of capacity)\n",
+ ast_active_calls(), option_maxcalls, ESS(ast_active_calls()),
+ ((double)ast_active_calls() / (double)option_maxcalls) * 100.0);
+ } else {
+ ast_cli(a->fd, "%d active call%s\n", ast_active_calls(), ESS(ast_active_calls()));
+ }
+
+ ast_cli(a->fd, "%d call%s processed\n", ast_processed_calls(), ESS(ast_processed_calls()));
+
+ if (ast_startuptime.tv_sec && showuptime) {
+ print_uptimestr(a->fd, ast_tvsub(curtime, ast_startuptime), "System uptime", printsec);
+ }
+
+ return RESULT_SUCCESS;
+}
static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
@@ -680,6 +735,8 @@
((double)ast_active_calls() / (double)option_maxcalls) * 100.0);
else
ast_cli(fd, "%d active call%s\n", ast_active_calls(), ESS(ast_active_calls()));
+
+ ast_cli(fd, "%d call%s processed\n", ast_processed_calls(), ESS(ast_processed_calls()));
}
return CLI_SUCCESS;
@@ -1124,6 +1181,8 @@
AST_CLI_DEFINE(handle_chanlist, "Display information on channels"),
+ AST_CLI_DEFINE(handle_showcalls, "Display information on calls"),
+
AST_CLI_DEFINE(handle_showchan, "Display information on a specific channel"),
AST_CLI_DEFINE(handle_core_set_debug_channel, "Enable/disable debugging on a channel",
Modified: trunk/main/pbx.c
URL: http://svn.digium.com/view/asterisk/trunk/main/pbx.c?view=diff&rev=91779&r1=91778&r2=91779
==============================================================================
--- trunk/main/pbx.c (original)
+++ trunk/main/pbx.c Fri Dec 7 10:11:05 2007
@@ -416,6 +416,7 @@
AST_MUTEX_DEFINE_STATIC(maxcalllock);
static int countcalls;
+static int totalcalls;
static AST_RWLIST_HEAD_STATIC(acf_root, ast_custom_function);
@@ -3472,8 +3473,10 @@
}
#endif
- if (!failed)
+ if (!failed) {
countcalls++;
+ totalcalls++;
+ }
ast_mutex_unlock(&maxcalllock);
return failed;
@@ -3558,6 +3561,11 @@
int ast_active_calls(void)
{
return countcalls;
+}
+
+int ast_processed_calls(void)
+{
+ return totalcalls;
}
int pbx_set_autofallthrough(int newval)
Modified: trunk/res/snmp/agent.c
URL: http://svn.digium.com/view/asterisk/trunk/res/snmp/agent.c?view=diff&rev=91779&r1=91778&r2=91779
==============================================================================
--- trunk/res/snmp/agent.c (original)
+++ trunk/res/snmp/agent.c Fri Dec 7 10:11:05 2007
@@ -67,6 +67,8 @@
#define ASTCONFRELOADTIME 2
#define ASTCONFPID 3
#define ASTCONFSOCKET 4
+#define ASTCONFACTIVECALLS 5
+#define ASTCONFPROCESSEDCALLS 6
#define ASTMODULES 3
#define ASTMODCOUNT 1
@@ -592,6 +594,12 @@
case ASTCONFSOCKET:
*var_len = strlen(ast_config_AST_SOCKET);
return (u_char *)ast_config_AST_SOCKET;
+ case ASTCONFACTIVECALLS:
+ long_ret = ast_active_calls();
+ return (u_char *)&long_ret;
+ case ASTCONFPROCESSEDCALLS:
+ long_ret = ast_processed_calls();
+ return (u_char *)&long_ret;
default:
break;
}
@@ -723,6 +731,8 @@
{ASTCONFRELOADTIME, ASN_TIMETICKS, RONLY, ast_var_Config, 2, {ASTCONFIGURATION, ASTCONFRELOADTIME}},
{ASTCONFPID, ASN_INTEGER, RONLY, ast_var_Config, 2, {ASTCONFIGURATION, ASTCONFPID}},
{ASTCONFSOCKET, ASN_OCTET_STR, RONLY, ast_var_Config, 2, {ASTCONFIGURATION, ASTCONFSOCKET}},
+ {ASTCONFACTIVECALLS, ASN_GAUGE, RONLY, ast_var_Config, 2, {ASTCONFIGURATION, ASTCONFACTIVECALLS}},
+ {ASTCONFPROCESSEDCALLS, ASN_INTEGER, RONLY, ast_var_Config, 2, {ASTCONFIGURATION, ASTCONFPROCESSEDCALLS}},
{ASTMODCOUNT, ASN_INTEGER, RONLY, ast_var_Modules , 2, {ASTMODULES, ASTMODCOUNT}},
{ASTINDCOUNT, ASN_INTEGER, RONLY, ast_var_indications, 2, {ASTINDICATIONS, ASTINDCOUNT}},
{ASTINDCURRENT, ASN_OCTET_STR, RONLY, ast_var_indications, 2, {ASTINDICATIONS, ASTINDCURRENT}},
More information about the asterisk-commits
mailing list