[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