Abstract:
In order to provide a more realistic system activity score, an activity monitor gathers activity scores from a plurality of processes on one or more communication systems. An activity score defines an activity level of a particular process. For example, how many cache hits per second are occurring in a communication system or how may a HTTP sessions a web server is handling per second. Because the activity scores are gathered from individual processes within the communication system(s), a more realistic understanding of the overall activity of the communication system(s) can be determined. The gathered activity scores are summed to produce a system activity score. The system activity score is then sent to a user. The user can then utilize the system activity score to better manage the communication system(s).

Description:
TECHNICAL FIELD 
       [0001]    The systems and methods disclosed herein relate to communication systems and in particular to monitoring the activity of communication systems. 
       BACKGROUND 
       [0002]    When a communication system is deployed within an enterprise, the communication system will eventually have to be taken off-line. For example a communication system may need to be taken off-line for hardware failures, hardware upgrades, software upgrades, maintenance, and/or the like. Depending on when the communication system is taken off-line, various problems can arise. For instance, if a communication system is taken off-line during heavy usage, the service disruption may be unacceptable. 
         [0003]    To deal with this problem, some communication systems provide the ability for an administrator to view a system activity score. The activity score is based on a single type of activity, such as a count of the number of currently supported calls. The problem with using a single activity score for the communication system is that this may not accurately reflect the overall activity of the communication system; this can be due to the communication system running other processes not related to the single type of activity. This can result in a communication system being taken off-line at a time when the system is heavily loaded resulting in an unwanted disruption of services. 
       SUMMARY 
       [0004]    Systems and methods are provided to solve these and other problems and disadvantages of the prior art. In order to provide a more realistic system activity score, an activity monitor gathers activity scores from a plurality of processes on one or more communication systems. An activity score defines an activity level of a particular process. For example, how many cache hits per second are occurring in a communication system or how may a HTTP sessions a web server is handling per second. Because the activity scores are gathered from individual processes within the communication system(s), a more realistic understanding of the overall activity of the communication system(s) can be determined. The gathered activity scores are summed to produce a system activity score. The system activity score is then sent to an administrative user. The administrative user can then utilize the system activity score to better manage the communication system(s). 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]      FIG. 1  is a block diagram of a first illustrative system for monitoring an activity level of a communication system. 
           [0006]      FIG. 2  is a block diagram of a second illustrative system for monitoring an activity level of a communication system. 
           [0007]      FIG. 3  is a block diagram of a third illustrative system for monitoring an activity level of a plurality of communication systems. 
           [0008]      FIG. 4  is a flow diagram of a procedure for monitoring an activity level of a communication system. 
           [0009]      FIG. 5  is a flow diagram of a procedure for gathering activity scores from different processes. 
       
    
    
     DETAILED DESCRIPTION 
       [0010]      FIG. 1  is a block diagram of a first illustrative system  100  for monitoring an activity level of a communication system  110 A. The first illustrative system  100  comprises the communication system  110 A and an administration terminal  101 . 
         [0011]    The communication system  110 A can be any type of communication system  110  for managing communication sessions, such as a central office switch, a Private Branch Exchange (PBX), a router, a hub, an Instant Messaging (IM) server, an email server, a text messaging server, a video switch, a session boarder controller, a Session Initiation Protocol (SIP) proxy server, a combination of these, a collection of these, and the like. The communication system  110 A can support a variety of protocols, such as SIP, H.323, video protocols, email protocols, IM protocols, text messaging protocols, voice protocols, Internet Protocol (IP), and/or the like. 
         [0012]    The communication system  110 A further comprises an administration module  111 A, an activity monitor  112 A, and processes  113 A. The administration module  111 A can be or may include any hardware/software that allows an administrator to access information in the communication system  110 A, such as a web server, administration software, and/or the like. The administration module  111 A is shown in the communication system  110 A. However, in some embodiments, the administration module  111 A may be distributed between the communication system  110 A and the administration terminal  101  or wholly on the administration terminal  101 . 
         [0013]    The activity monitor  112 A can be or may include any hardware/software that can gather information from multiple processes  113 A. The activity monitor  112 A can gather information from a variety of sources, such as processes  113 A within the communication system  110 A, processes  113  within other communication systems  110 , or processes  113  within other devices (e.g., from a network analyzer). 
         [0014]    The processes  113 A can be any process  113  that can be monitored individually. For example, the process may be an individual application or thread. 
         [0015]    The administration terminal  101  can be or may include be any device that can communicate with the communication system  110 A, such as a Personal Computer (PC), a telephone, a video endpoint, a cellular telephone, a Personal Digital Assistant (PDA), a tablet device, a notebook device, and the like. While  FIG. 1  only shows a single administration terminal  101  connected directly to the communication system  110 A, multiple administration terminals  101  may be connected to the communication system  110 A. In addition, the administration terminal  101  may be connected via a network. 
         [0016]    The activity monitor  112 A gathers activity scores for processes  113 A in the communication system  110 A. An activity scores indicates a level of activity of an individual process  113 A. The activity scores are typically associated with a process  113 A within the communication system  110 A. However, in some embodiments, the activity scores may be associated with one or more processes  113 A that are external to the communication system  110 A, such as based on network congestion, packet retransmissions, a number of available fallback servers, input from an external network analyzer, a combination of these, and the like. The activity scores can be based on a variety of functions associated with the processes  113 A, such as, a number of current voice or video calls, a number of current Hyper Text Transfer Protocol (HTTP) sessions, a number of sent email messages over a time period, a number of received email messages over a time period, a number of current Instant Messaging (IM) sessions, a number of processed packets, a number of packet retransmissions, a network congestion value, memory usage in the communication system  110 A, a number of disk access requests (e.g., disk accesses for each disk in the communication system  110 A), a number of fall-back servers that are available, a number of cache hits and/or misses (can be for one or more caches in the communication system  110 A), a number of logged on users, a total number of Back-to-Back User Agents (B2BUA) loaded (e.g., SIP B2BUAs), a average number of B2BUAs used per communication session, a number of conference calls that include three or more users, a number of virtual machines, a number of active virtual machines, a number of threads, input from a network analyzer external to the communications system, input from a network analyzer, and/or the like. 
         [0017]    The activity scores of the processes  113 A can be calculated in various ways depending on the type of activity score. In some embodiments, an activity score of a process  113 A can be a normalized activity percentage of a full capacity of the process  113 A. For example, an email application that supports 6000 emails in a queue would show an activity score of 50% when there are 3000 emails in the email queue. 
         [0018]    In another embodiment, the activity score can be based on a threshold. For example, if disk accesses reach a certain threshold (e.g., 90%) the activity score may indicate a full normalized value (e.g. 100 on a scale of 1 to 100). Another example is where the threshold is based on a specific number fallback servers being available. If there is only a single fallback server (i.e., the communication system  110 A) available, the normalized value can be set to  100 . Alternatively, if there are two or more fallback servers available, the normalized value can be set to zero (0). 
         [0019]    In other embodiments, the activity score of a process  113 A can be based on a logarithmic algorithm where the activity score for the process  113 A increases exponentially based on multiple thresholds. 
         [0020]    After gathering the activity scores for the processes  113 A, the activity monitor  112 A sums the activity scores for the processes  113 A into a system activity score. The summation of the activity scores for the processes  113 A can be accomplished in a variety of ways. For example, each activity score for each process  113 A can be normalized to a scale (e.g., 1 to 100) before being summed. The activity scores for each of each individual process  113 A can then be averaged to create the system activity score. 
         [0021]    In some embodiments, an individual activity score for a specific process  113  may be given a higher weight than a different process  113 . For example, an activity score for a number of disk accesses may be given twice the weight versus a number of B2BUAs that are loaded to produce the system activity score. 
         [0022]    In other embodiments, an activity score for a specific process  113  may override another activity score when the activity score for the specific process  113  reaches a defined threshold. For example, an activity score of a number of packet retransmissions may override an activity score for a number of processed packets when the number of packet retransmissions reaches  30  retransmissions per second. 
         [0023]    In other embodiments, the activity score for a specific process  113 A may override all the activity scores for other processes  113  when the activity score for the specific process  113  reaches a defined threshold. For example, if there no fallback servers available (i.e., the fallback server has failed or is offline), the activity score for the fallback server can override the activity scores for all other processes  113 . 
         [0024]    Once the activity score has been generated by the activity monitor  112 A, the system activity score is sent to a user (e.g., an administrator) by the administration module  111 A. For instance, the administration module  111 A can include a web server that presents the system activity score to the user via a browser in the administration terminal  101 . The user can then use the system activity score to determine the busyness of the communication system  110 A. For example, an administrator can employ the system activity score to determine whether to shutdown the communication system  110 A for a software upgrade. If the system activity score is too high, the administrator may delay the software upgrade until a time when the system activity score is at an acceptable value. 
         [0025]      FIG. 2  is a block diagram of a second illustrative system  200  for monitoring an activity level of a communication system  110 A. The second illustrative system  200  comprises the communication system  110 A and the administration terminal  101 . 
         [0026]    In this embodiment, the communication system  110 A comprises the administration module  111 A, the activity monitor  112 A, the processes  113 A and a historical record  215 . The historical record  215  is an historical record of activity scores that have been accumulated over time for the communication system  110 A. The historical record  215  may include activity scores for one or more processes  113 A. The historical record  215  may also include a historical record of system activity scores. 
         [0027]    The processes  113 A, in this embodiment, comprise virtual machines  214 A and  214 B, an application(s)  216 , and a dynamic work-flow  220 . The virtual machines  214 A and  214 B may be virtual machines  214  running on one or more microprocessors. For example, the virtual machines  214 A and  214 B may be running on the same processor or on separate processors. Although  FIG. 2  only shows two virtual machines  214 A and  214 B, any number of virtual machines  214 , including only a single virtual machine  214 , may be running on the communication system  110 A. 
         [0028]    The application(s)  216  can be any type of application that runs on the communication system  110 A, such as a telecommunication application, a video application, an email application, an Instant Messaging (IM) application, a text application, a computational process, an operating system, a web server, a networking application, a social network application, a combination of these, and the like. 
         [0029]    The application(s)  216  further comprises plug-ins  217 A and  217 B, threads  218 A and  218 B, and application versions  219 A and  219 B. The plug-ins  217 A and  217 B can be any software/hardware plug-in  217  that can be dynamically added to the application(s)  216 . For example, the plug-ins  217 A and/or  217 B can be a Session Initiation Protocol (SIP) Back-to-Back User Agent (B2BUA). The plug-in  217 A may be a SIP B2BUA that notifies the activity monitor  112 A when the B2BUA is loaded (e.g., when a communication session is established). Alternatively, the plug-in  217  can be a software plug-in  217  that provides new services via an Application Programming Interface (API) for the application  216 . For example, the plug-in  217 B can be an email plug-in that dynamically provides email services for a video conferencing communication system  110 A. The plug-ins  217 A and  217 B may be external to the application  216 . 
         [0030]    A thread  218  can be a process  113  that is started within the application  216 . Alternatively, the thread  218  can be a process  113  that launches the application  216 . In one embodiment, the thread  218 A is a thread  218  that launches the application  216  and the thread  218 B is a thread  218  that is started from within the application  216  (i.e., a daemon). The threads  218 A and  218 B can be multiple threads  218  that are started within the application  216 . In another embodiment, the threads  218 A and  218 B may be in separate applications  216 . Although only two threads  218 A and  218 B are shown in  FIG. 2 , the application(s)  216  may comprise one or more threads  218 . Alternatively, the threads  218 A and  218 B may be separate from the application  216 . 
         [0031]    The application versions  219 A and  219 B are two different software versions of the application  216 . The application version  219 A may be a first release of software for the application  216  and the application version  219 B may be a second version (or patch) of the application  216 . For example, the communication system  110 A may be a Private Branch Exchange (PBX) that is running two versions of software  219 A and  219 B on two different virtual machines  214 A and  214 B. This may because a customer has only upgraded part of the communication system  110 A. Although only a two application versions  219 A and  219 B are shown in  FIG. 2 , the application  216  may include one or more application versions  219 . The software versions  219 A and  219 B may be running on separate communications systems  110  (e.g., communication systems  110 A- 110 C as shown in  FIG. 3 ). 
         [0032]    The dynamic work-flow  220  is a process  113  that can be created dynamically by a user. For example, the dynamic work-flow  220  can be a dynamically created work-flow created by an administrator of the communication system  110 A using a software development tool. The dynamically created work-flow may be an application  216  that provides new features to an existing communication session, such as a voice call monitoring application that notifies a specific user based on a work spoken in the voice call. 
         [0033]    Two or more of the processes  113  (the virtual machines  214 A and  214 B, the application(s)  216 , the plug-ins  217 A and  217 B, the threads  218 A and  218 B, the application versions  219 A and  219 B, and/or the dynamic work-flow  220 ) can generate activity scores that are gathered by the activity monitor  112 A. The activity monitor  112 A can then sum the activity scores from the processes  113 A into a system activity score for the communication system  110 A. The system activity is then sent to a user. 
         [0034]      FIG. 3  is a block diagram of a third illustrative system  300  for monitoring an activity level of a plurality of communication systems  110 A- 110 C. The third illustrative system  300  comprises communication devices  301 A- 301 N, communication systems  110 A- 110 C, a network  310 , a network analyzer  320 , and the administration terminal  101 . 
         [0035]    In this embodiment, the administration terminal  101  is shown as being connected to the network  310 . The user can employ the administration terminal  101  to receive the system activity score from the communication system  110 A via the network  310 . 
         [0036]    The communication devices  301 A- 301 N can be or may include be any device that can communicate on the network  310 , such as a Personal Computer (PC), a telephone, a video system, a cellular telephone, a Personal Digital Assistant (PDA), a tablet device, a notebook device, a server, and the like. As shown in  FIG. 1 , any number of communication devices  301 A- 301 N may be connected to network  310 , including only a single communication device  301 . In addition, the communication device  301  may be directly connected to the communication system  110 . 
         [0037]    The network  310  can be or may include any collection of communication equipment that can send and receive electronic information, such as the Internet, a Wide Area Network (WAN), a Local Area Network (LAN), a Voice over IP Network (VoIP), the Public Switched Telephone Network (PSTN), a packet switched network, a circuit switched network, a cellular network, a combination of these, and the like. The network  310  can use a variety of protocols, such as Ethernet, Internet Protocol (IP), Session Initiation Protocol (SIP), Integrated Services Digital Network (ISDN), video protocols, email protocols, text protocols, and/or the like. 
         [0038]    The communication systems  110 A- 110 C are shown as being similar to the communication system  110 A in  FIG. 1 . However, the communication systems  110 A- 110 C of  FIG. 3  can be similar to the communication system  110 A as described in  FIG. 1  and/or  FIG. 2 . Although there are only three communication systems  110 A- 110 C shown in  FIG. 3 , any number of communication systems  110  may be connected to the network  310 . 
         [0039]    The network analyzer  320  can be or may include any device that can monitor or sniff packets on the network  310 . In some embodiments, the network analyzer  320  may be included in the communication systems  110 A- 110 C. In this example, the network analyzer  320  can monitor packets sent/received to and from the communication system  110 . In some embodiments, the network analyzer  320  can be included in one or more of the communication devices  301 A- 301 N. In this embodiment, the network analyzer  320  can monitor packets sent/received to and from the communication devices  301 A- 301 N. 
         [0040]    In  FIG. 3 , only the communication system  110 A includes the administration module  111 A. However, in other embodiments, the communication systems  110 B- 110 C may also include the administration module  111 A.  FIG. 3  illustrates a hierarchical communication system  110  of where the communication system  110 A is at the top of the hierarchy and the communication systems  110 B- 110 C are at the bottom of the hierarchy. In this embodiment, the activity monitor  112 A, in addition to gathering the activity scores form the processes  113 A, gathers the activity scores from the activity monitors  112 B- 112 C for the processes  113 B and  113 C via the network  310 . The activity monitor  112 A sums the activity scores from the processes  113 A- 113 C to product the system activity score. The administration module  111 A sends the system activity score to the user of the communication system  110 A. 
         [0041]    To illustrate, consider the following example. Assume that the process  113 A is a first dynamically loadable plug-in  217 , the process  113 B is a second dynamically loadable plug-in  217 , and the process  113 C is a thread  218  in an application  216 . The activity monitor  112 A gathers the activity scores for the processes  113 B- 113 C via the activity monitors  112 B- 112 C. The activity monitor  112 A gets the activity score for the process  113 A. The activity monitor  112  uses the activity scores from the processes  113 A- 113 C to generate the system activity score. 
         [0042]    In one embodiment, the processes  113 A and  113 B are dynamically loadable plug-ins  217 A and  217 B are loaded based on the initiation of a communication session (e.g., SIP B2BUAs that are loaded when a voice communication session is initiated). The dynamically loaded plug-ins  217  may be processes  113  on the same or different communication systems  110 . 
         [0043]    In one embodiment, an activity score can be based on a communication device  301 A- 301 N (e.g., a communication endpoint) as well as a process  113  in the communication system  110 . This allows further flexibility in monitoring the status of the system  300  as a whole. 
         [0044]    In another embodiment, an activity score can be generated by the network analyzer  320 . The network analyzer  320  can send the activity score to the activity monitor  112 A. For example, the activity score can be for a number of packets, packet retransmissions, packet congestion, and/or the like. 
         [0045]    In other embodiments, in addition to the system activity score being sent to the user, the individual activity scores of each process  113  and/or system activity score for an individual communication system  110 A- 110 C can be sent to the user. This allows the user to see which individual processes  113 /individual communication systems  110  may be more heavily loaded than other processes  113 /individual communication systems  110 . This way the user may decide to only take down a particular process  113 , group of processes  113 , and/or individual communication system  110  that is lightly loaded. 
         [0046]      FIG. 4  is a flow diagram of a procedure for monitoring an activity level of a communication system  110 . Illustratively, the communication system  110 , the administration module  111 , the activity monitor  112 , the processes  113 , the virtual machines  214 , the applications  216 , the threads  218 , the plug-ins  217 , the application versions  129 , and the dynamic work-flow  220  are stored-program-controlled entities, such as a computer or processor, which performs the method of  FIGS. 4-5  and the processes described herein by executing program instructions stored in a tangible computer readable storage medium, such as a memory or disk. Although the methods described in  FIGS. 4-5  are shown in a specific order, one of skill in the art would recognize that the steps in  FIGS. 4-5  may be implemented in different orders and/or be implemented in a multi-threaded environment. Moreover, various steps may be omitted or added based on implementation. 
         [0047]    The procedure starts in step  400 . The procedure identifies a plurality of activity scores for a plurality of processes  113  from one or more communication systems  110  in step  402 . The procedure sums the plurality of activity scores into a system activity score in step  404 . The procedure sends the system activity score to a user in step  406 . The activity score is displayed to the user in step  408 . The procedure ends in step  410 . 
         [0048]      FIG. 5  is a flow diagram of a procedure for gathering activity scores from different processes  113 .  FIG. 5  is an illustrative example of steps  402  and  404  of  FIG. 4 . After the procedure starts in step  400 , the procedure gathers activity scores from various processes  113  in step  500 . For example, the procedure can gather activity scores from different virtual machines  214 , different plug-ins  217 , different applications  216 , different threads  218 , other communication systems  110 , software of different versions  219 , a number of calls, a number of HTTP sessions, a number of email messages, a number of Instant Messaging (IM) sessions, a number of packets processed, a number of packet retransmissions, network congestion, memory usage, a number of disk access requests, a number of available fall back servers, a number of cache hits/misses, a number of logged in users, a number of loaded B2BUAs, a number of B2BUAs loaded per communication session, a number of conference calls (three or more participants), input from a network analyzer  320  (internal or external), and/or the like. 
         [0049]    The procedure gathers information from an historical record  215  of activity scores for the communication system(s)  110  in step  502 . The historical record  215  may comprise one or more system activity scores that are captured over time. For example, the historical record  215  may comprise individual system activity scores from a plurality of communication systems  110  (i.e., one system activity score from each of the communication systems  110 A- 110 C) or an overall system activity score for the plurality of communication systems  110 A- 110 C. The historical record  215  may comprise one or more specific activity scores (i.e., the activity scores that are used to create the system activity score) that are captured over time. The activity scores may be captured based on a defined time period. In some embodiments, the defined period of an activity score may be different based on the particular type of activity score. For example, the activity score for the number of B2BUAs loaded per communication session may have a time period of one day and the activity score for the number of conference calls may have a time period of 10 minutes. The activity scores may be based on a rolling system of where older activity scores are overwritten by newer activity scores. Which activity scores are used in step  502  can be administered. 
         [0050]    The procedure identifies one or more activity scores for a similar time period from the historical record  215  of activity scores in step  504 . For example, the procedure can identify a system activity score for the same period during the previous week. In another embodiment, the procedure can identify a plurality of system activity scores during the same timer period for each week over the last year. In other embodiments, the procedure can identify individual activity scores for a particular process  113  at a similar time period. 
         [0051]    The procedure sums the plurality of activity scores gathered in step  500  into a system activity score in step  506 . The procedure adjusts the system activity score based on the historical activity score from the historical record  215  for the similar time period in step  508 . For example, the system activity score in step  506  may be adjusted by averaging the system activity score from step  506  with the system activity score from the historical record  215  at similar time period one month ago. In another embodiment, the procedure adjusts the system activity score (from step  506 ) based on a historical activity score of an individual process  113  based on a similar time period. In one embodiment, the historical system activity score may be given a different weight versus the current system activity score. 
         [0052]    Of course, various changes and modifications to the illustrative embodiment described above will be apparent to those skilled in the art. These changes and modifications can be made without departing from the spirit and the scope of the system and method and without diminishing its attendant advantages. The following claims specify the scope of the invention. Those skilled in the art will appreciate that the features described above can be combined in various ways to form multiple variations of the invention. As a result, the invention is not limited to the specific embodiments described above, but only by the following claims and their equivalents.