Systems, methods, and articles of manufacture to manage alarm configurations of servers

Systems, methods, and articles of manufacture to manage alarm configurations of servers are disclosed. An example system includes a processor, an alarm linkage database to store information representative of alarm configurations for a plurality of servers, and a memory comprising machine readable instructions. When executed, the instructions cause the processor to perform operations comprising accessing alarm configurations in the alarm linkage database for a subset of the plurality of servers in response to a first request, initiating a change in respective alarm configurations of the subset of the plurality of the servers, and initiating propagation of the alarm configuration to the subset of the servers, the subset including more than one server.

FIELD OF THE DISCLOSURE

This disclosure relates generally to network management, and, more particularly, to systems, methods, and articles of manufacture to manage alarm configurations of servers.

BACKGROUND

Modern communication networks include many mid-level servers to provide services and to service applications. Examples of such applications include customer service applications, virtual private network applications, and telephony services.

DETAILED DESCRIPTION

Example systems, methods, and articles of manufacture disclosed herein may be used to provide a unified system for managing (e.g., monitoring and/or modifying) alarm configurations on large numbers of servers in a network. In contrast to known networks of servers, in which changes to alarm configurations require manual changes to the monitoring agent on each individual server, example systems, methods, and articles of manufacture disclosed below enable a user of the network to initiate creation, modification, and/or deletion of multiple alarm configurations to multiple servers at the same time. In contrast to the tedious, time-consuming, and error-prone manual configuration processes performed in known networks of servers, example systems, methods, and articles of manufacture enable users to rapidly and accurately define and initiate the implementation of alarm configurations to large numbers of servers.

Some example systems, methods, and articles of manufacture disclosed herein are particularly useful in large-scale systems (e.g., systems involving hundreds or thousands of servers), in which multiple servers perform the same functions (e.g., collectively provide a service) and may benefit from being monitored using similar or identical alarm configurations. For example, if a particular type of server fails and the alarm configuration for the server did not properly warn of the potential failure condition, it may be desirable to correct the alarm configuration of the other ones of that type of server for the potential failure condition in the future. Furthermore, it may be desirable to monitor all other servers of the same type for the same condition(s). Using the example systems, methods, and articles of manufacture disclosed herein, the person(s) responsible for monitoring the type of server can easily define the desired type of monitor(s) and/or alarm thresholds, define the desired servers to which the monitor(s) are to be applied, and initiate the configuration of the servers to implement the monitor(s). A prior art system would require that each server be individually configured with the desired configuration which, in a system including hundreds or thousands servers, can be labor-intensive and error-prone.

In some examples, alarm configurations are collected and stored in an alarm configuration database. Users of the network may access the alarm configuration database via an alarm interface to view alarm configurations for servers. In some examples, alarm configurations are organized according to monitor profiles, which may be stored in a profile database in the alarm linkage database. Users may create, modify, and/or delete monitor profiles and organize assignments of monitors to servers in a monitor profile. Example alarm linkage databases include a monitor database to store monitors, monitor groups, and/or assignments of monitors and/or monitor groups to servers and/or server groups.

In some examples, users may define monitors using knowledge modules, which represent a particular type of object to be monitored. Examples of knowledge modules include knowledge modules for file systems, daemon processes, log files, etc. In some examples, the knowledge modules include knowledge modules associated with the BMCPatrol monitoring tool, the Amity monitoring tool, and/or the Sitescope monitoring tool. The knowledge modules of some examples include procedures and/or data used by monitors to monitor corresponding types of server. In some examples, each knowledge module contains data specific to the knowledge module and data common to multiple knowledge modules (e.g., workflow management).

In some examples, monitors are based on knowledge modules and further include data and/or processes to be monitored, additional processes, alarm thresholds, actions to be taken, parties to be notified, and/or other alarm information. Some example systems, methods, and articles of manufacture disclosed herein organize monitors into monitor groups as defined in a monitor profile. Monitor profiles can define multiple monitor groups. Monitor groups may be used when, for example, a set of identical monitors are to be assigned (e.g. web server monitors, database monitors) to one or more servers. Monitor groups can include monitors based on different knowledge modules. Additionally, each monitor group may be assigned to multiple different server groups. Such assignment advantageously enables multiple monitors to be associated with multiple servers without having to repetitively enter the monitoring configuration for the servers.

Example systems, methods, and articles of manufacture disclosed herein enable the servers in a network to be organized into server groups as defined in a monitor profile. In some examples, a server may be included in multiple server groups (e.g., server groups may overlap).

In some examples, users use an alarm interface to initiate a request to assign a monitor group (e.g., including multiple monitors) to one or more servers (e.g., to a server group), assign a monitor to one or more servers (e.g., to a server group), and/or assign a monitor group to a server group. When a monitor group is assigned to a server group, each of the monitors in the monitor group are assigned (e.g., applied) to each of the servers in the server group.

In some examples, the monitor database stores a single-server type of monitor group. Single-server monitor groups specify a single server name for each monitor in the monitor group and are not to be linked to server groups. Single-server monitor groups are defined for monitors that only apply to a single server. As a result, the single-server monitor groups eliminate the overhead of creating a monitor group and server group with only one entry each.

Example systems, methods, and articles of manufacture disclosed herein include an alarm cataloger to populate the alarm linkage database with alarm configuration information for monitored servers in a network. Example alarm catalogers collect (or cause to be collected) the alarm configuration information for each monitored server by, for example, instructing a monitoring agent on the server to provide identifiers of monitors, monitored parameters, and/or alarm thresholds to the alarm linkage database. In some examples, the monitoring agent collects the requested information and assembles the information into a standardized package for transmission to the alarm linkage database.

In some such examples, the example alarm linkage database receives the standardized package, verifies the information in the package, and creates and/or updates a monitor database and/or a server database according to the information. In some examples, a monitor record is created in the monitor database when a new monitor is found (e.g., during an initial transition or setup period for the alarm linkage database). In some examples, a server record is created in the monitor database when a new server is found. In some examples, monitor records and/or server records are updated based on changes requested by users via the alarm interface.

As used herein, an “alarm” refers to an alert or other notification generated by a monitoring agent monitoring a server in response to a set of one or more operating conditions traversing one or more threshold values. For example, an alarm may be generated by a monitoring agent in response to a workload capacity of a monitored server exceeding a threshold.

FIG. 1is a block diagram of an example system100to monitor servers in a network102. The example system100ofFIG. 1may be used to monitor and/or change alarm configurations for multiple servers104and, in some examples, may be used to improve management of alarm configurations for large numbers of servers in the network102(e.g., hundreds, thousands, tens of thousands, or more).

The example network102ofFIG. 1may be any type and/or combination of types of communications network(s). The example servers104ofFIG. 1may be physical servers and/or virtual servers operating on physical servers (e.g., application servers that provide service(s) to users). One or more of the servers104may be of the same type or purpose, such as a cluster of servers configured to provide a set of identical services.

Each of the example servers104ofFIG. 1is provided with a corresponding monitoring agent106. The monitoring agents106monitor the servers104for defined parameters and to determine whether any operating condition(s) of the servers104traverse one or more alarm thresholds (e.g., exceed, fall below, enter a range, exit a range, etc.). Based on the type of server104(e.g., the function of the server104, the services provided by the server104, etc.), the monitoring agents106are assigned respective monitors108,110,112. The monitors108,110,112define the parameters and/or the alarm thresholds to be monitored. Additionally or alternatively, the monitors108,110,112may define actions to be taken in response to an alarm, a party responsible for the presence and/or maintenance of the monitor108,110,112, and/or any other parameter associated with the purpose, function, and/or relationships of the monitor108,110,112.

The example system100ofFIG. 1includes an alarm linkage database114to store monitor information, server information, and/or profile information. The example alarm linkage database114stores the alarm configurations of the servers104, including information about the monitors108,110,112and/or their relationships (e.g., assignments) to the servers104.

To enable users to effectively navigate large numbers of alarm configurations, the example alarm linkage database114further stores profile information. Users of the example system100are permitted to define and store monitor profiles (also referred to herein as simply “profiles”). For example, a user may choose to define and store a monitor profile for each type of application or service a user is responsible for managing. A user may choose to define and/or store different monitor profiles for managing alarm configurations for different geographic regions or according to any other desired arrangement.

To enable users to access the alarm linkage database114(e.g., to create, modify, and/or delete monitors, monitor-to-server assignments, and/or monitor profiles, the example system100includes an alarm interface116. The example alarm interface116provides an interface via which user devices118,120may view and initiate modifications to alarm configurations in the alarm linkage database114. In the example ofFIG. 1, the alarm interface116receives requests to view and/or modify alarm configuration information (e.g., from the devices118,120) and retrieves the requested information from the alarm linkage database and/or initiates the requested updates to the alarm configurations of the servers104(e.g., via the configuration implementer124). The example alarm interface116ofFIG. 1provides users with a web interface (e.g., a series of web pages displaying requested information based on user actions).

The example system100ofFIG. 1further includes an alarm cataloger122. The example alarm cataloger122ofFIG. 1extracts alarm configurations from the monitoring agents106executing on the servers104. In some examples, the alarm cataloger122extracts an alarm configuration by instructing a monitoring agent106to generate a package including the alarm configuration information and to send the package to the alarm cataloger122and/or to the alarm linkage database114. For example, the package may be a text file or an eXtensible Markup Language (XML) document. The package may be standardized to facilitate processing of the same.

The example alarm cataloger122ofFIG. 1may be scaled to collect and provide alarm configuration information for very large numbers of servers (e.g., hundreds, thousands, tens of thousands, hundreds of thousands, or more) to the alarm linkage database114. In combination with the alarm linkage database114and the alarm interface116, the example alarm cataloger122enables the organization and modification of alarm configuration information by a user for networks including, for example, very large networks of very large numbers of servers.

In the example ofFIG. 1, the alarm cataloger122receives the extracted alarm configuration (e.g., the package) and converts the alarm configuration to information to be stored in the alarm linkage database114. In some examples, the alarm cataloger122verifies that the alarm configuration information is in a proper format and does not have any errors (e.g., syntax errors, unrecognized tags, etc.). A more detailed example of the collection and processing of alarm configuration information by the alarm cataloger122is provided below.

When the alarm interface116of the illustrated example initiates a request to change an alarm configuration, the alarm interface116provides the request to a configuration implementer124. The example configuration implementer124receives requests to change alarm configurations of the servers104and implements the changes to the alarm configurations. When the changes have been implemented, the example configuration implementer124updates the alarm linkage database114with the updated alarm configuration for the affected servers104. In this manner, the example alarm linkage database114is provided with current and accurate alarm configurations of the servers104. In some examples, the configuration implementer124updates the alarm linkage database114with intermediate alarm configurations when a request has been submitted but before the request has been implemented. For example, the configuration implementer124may submit a requested alarm configuration, a pending alarm configuration, a canceled alarm configuration, a rejected alarm configuration, and/or any other intermediate alarm configuration to the alarm linkage database114.

In some examples, the configuration implementer124implements a configuration and/or a change to a configuration by interfacing with the servers104(e.g., the monitoring agents106on the servers104) to configure new monitor(s)108-112, delete monitor(s)108-112, and/or edit the monitors108-112. For example, the configuration implementer124may translate an updated configuration into a set of commands and/or parameters to update the monitoring agents106of the affected servers104and/or may generate an updated configuration file to replace a configuration of the monitoring agent (e.g., completely replace the alarm configurations of affected servers).

The example system100ofFIG. 1further includes a workflow manager126to manage workflows associated with changing alarm configurations. For example, when a user submits a request to change an alarm configuration (e.g., via the alarm interface116) to the alarm linkage database114, the example workflow manager126creates a workflow for the requested change. The workflow is stored in the example alarm linkage database114and may be updated by, for example, the alarm cataloger122and/or the configuration implementer124based on the progress of the workflow. The example alarm interface116may access the workflow manager126to determine, for example, a status of workflows for a user, for a monitor profile, for a server, for a monitor, for a server group, and/or for a monitor group.

The example system100ofFIG. 1further includes a security monitor128to manage security configurations of the example servers104. In some examples, the security monitor128provides alarm configurations pertaining to security aspects of the network102to the alarm linkage database114. The security alarm configurations may be accessed and/or modified via the example alarm interface116. In some examples, the alarm configurations stored and/or modified via the security monitor128are implemented via security knowledge modules.

The example system100ofFIG. 1further includes a network monitor130. The example network monitor130monitors alarm configurations for networking aspects of the network102(e.g., routers, etc.) and stores the alarm configurations in the alarm linkage database114. The networking alarm configurations may be accessed and/or modified via the alarm interface116in a manner similar to the example alarm configurations for the servers104. In some examples, the alarm configurations stored and/or modified via the network monitor130are implemented via networking knowledge modules.

FIG. 2is a block diagram of an example alarm interface200. The example alarm interface200may implement the alarm interface116ofFIG. 1to provide an interface to an alarm linkage database and/or to initiate changes to alarm configurations. The example alarm interface200ofFIG. 2communicates with the alarm linkage database114ofFIG. 1, and includes a user interface202, a login manager204, a profile manager206, a server manager208, a monitor manager210, and a report generator212.

The example user interface202ofFIG. 2provides users with an interface to enter requests and to receive alarm configurations. In some examples, the user interface202generates and provides alarm information to users via web pages using hypertext transfer protocol (HTTP). Similarly, in some examples, the user interface202receives requests via user inputs to a web page (e.g., via the computer118or another type of device) that are submitted to the user interface202via HTTP. In some other examples, the user interface202provides an API that may be accessed by standalone software applications and/or may be linked by other web services. The example user interface202includes necessary hardware and/or software services to dynamically generate and deliver the web pages (or provide any other type of interface such as an API) to the computer118or other device.

The example login manager204ofFIG. 2receives login credentials from a user via the user interface202. Example login credentials may include a user identification and password, an employee number, a secure token, or any other type of credentials. The example login manager204ofFIG. 2authenticates received credentials by querying the example alarm linkage database114.

FIG. 3illustrates an example web page presented upon logging into the alarm interface200(e.g., via the user interface202and/or the login manager204ofFIG. 2). The example web page300includes a navigation guide302to indicate to the user his or her navigation status (e.g., an indication of the type of information that is being presented in the current web page300).

Based on the login manager204receiving authenticated credentials, the example profile manager206ofFIG. 2retrieves monitor profiles304,306belonging to the user (e.g., monitor profiles which the user created and/or of which the user is considered an owner) and/or monitor profiles which the user has permissions to view. The monitor profiles304,306are used to organize assignments of monitors to servers in the network (e.g., the monitors108-112on the servers104in the example network102ofFIG. 1). In some examples, the user enters default settings into one or more monitor profiles304,306. When a monitor profile304,306including default settings is selected, appropriate ones of the default settings of the monitor profile304,306are automatically used when a new monitor, a new monitor group, and/or a new server group are created for the monitor profile304,306. In the illustrated example, a user may create any number of monitor profiles304,306. The example profile manager206presents the monitor profiles304,306to the user via the user interface202for selection (e.g., in a dropdown or selection object). When the user selects a monitor profile (e.g., the profile304) via the user interface202, the user may select a “ViewMonitorProfile” button308to request an interface to view alarm configuration information associated with the monitor profile304, an “EditMonitorProfile” button310to request an interface to edit information associated with the monitor profile304, and/or a “DeleteMonitorProfile” button312to delete the selected monitor profile304. The example profile manager206further presents a “CreateMonitorProfile” link or button314to request an interface to create a new monitor profile.

FIG. 4illustrates an example web page400presented via the user interface202in response to a request to view a monitor profile. For example, the profile manager206ofFIG. 2presents the example web page400when a user selects the monitor profile304and then selects the “ViewMonitorProfile” button308. The example web page400includes information regarding a current status of the selected monitor profile304. The example information is retrieved by the profile manager206from the alarm linkage database114ofFIGS. 1 and 2, and includes a name of the selected monitor profile402, a most recent modification date of the selected monitor profile404, a status of any requested changes to the selected monitor profile406, a user identification of an implementer of the requested changes408(e.g., if the requested changes have been implemented), and an indication of whether requested changes to the selected monitor profile may be self-implemented (e.g., implemented by the user and/or by the configuration implementer124ofFIG. 1).

The example web page400further includes a “BackToMyMonitorProfile” button412to request an interface to view and/or select the monitor profiles associated with the login credentials (e.g., to navigate to the web page300) and an “EditMonitorProfile” button to request an interface to edit the selected monitor profile304. The example web page400ofFIG. 4includes a “ServerGroup” link or button416to request an interface to view server group(s) associated with the selected monitor profile304. The example web page400also includes a “MonitorGroup” link or button418to request an interface to view monitor groups and/or assignments of monitor group(s) (including single-server monitor groups) to server(s) and/or server group(s). A “ViewPendingChanges” link or button420enables a user to request an interface to view pending changes to the selected monitor profile304, changes to monitor group(s), changes to server group(s), and/or changes to assignments of monitor group(s) to server group(s).

The example web page400includes a link or button422to cause the monitor manager210to map one or more monitor group(s) associated with the selected monitor profile304to one or more server group(s).

Returning toFIG. 2, the example server manager208assigns one or more of the servers104to respective server group(s). The example alarm linkage database114stores the server group(s), including identification(s) of the servers in the server group(s). The example server manager208receives requests to create a server group, edit a selected server group, view a selected server group, and/or delete a selected server group via the user interface202. In response to a request specifying an existing server group (e.g., edit, view, delete), the example server manager208accesses the specified (e.g., selected) server group from the alarm linkage database114. Additionally, the example server manager208stores updates to server groups and/or server group information (e.g., for newly-created server groups) in the alarm linkage database114.

When a server group is modified, the example server manager208modifies the assignments of monitor group(s) assigned to the server group. For example, if a server is added to the server group, the monitors in the monitor group(s) that are assigned to the server group are assigned to the added server. Similarly, if a server is removed from the server group, the monitors in the monitor groups that are assigned to the server group are unassigned from the removed server (unless assigned to the server via another monitor group to server group assignment).

FIG. 5illustrates an example web page500presented via the user interface202ofFIG. 2in response to a request to view server groups associated with a selected monitor profile (e.g., the monitor profile304ofFIG. 3). The example web page500may be presented to a user based on a selection of the “ServerGroups” link or button416ofFIG. 4. In response to a selection of the “ServerGroups” link416, the example server manager208retrieves any server group(s) associated with the selected monitor profile304. The retrieved server group(s) (e.g., server groups502,504) are presented in a selection menu506(e.g., a dropdown box).

The example web page500includes a “ViewServerGroup” button508which, when selected, causes the server manager208to retrieve information from the alarm linkage database114for the selected server group (e.g., the server group502), such as assignments of monitor groups to the selected server group502and/or pending changes to the selected server group502. The example web page500also includes an “EditServerGroup” button510which, when selected, causes the server manager208to present an interface (e.g., a web page) to enable the user to edit the servers in the selected server group502and/or edit other information for the selected server group502. A “DeleteServerGroup” button512, when selected, causes the example server manager208to request that the alarm linkage database114delete the selected server group502.

The example web page500further includes a “CreateServerGroup” link or button514which, when selected, causes the server manager208to present a server group creation interface to the user (e.g., via the user interface202). The example server manager208populates some or all of the information associated with the newly-created server group based on the selected monitor profile (e.g., defaults stored in the monitor profile). The example server manager208may send a request to the profile manager206in response to a user selecting a “ReturnToEditMonitorProfile” button516to cause the profile manager206to present the selected monitor profile304and/or information associated with the selected monitor profile304in a web page.

FIG. 6illustrates an example web page600presented to a user in response to a request to edit a server group. The example server manager208ofFIG. 2may present the example web page600via the user interface202when the “EditServerGroup” button510ofFIG. 5is selected in association with the selected server group502.

The example server manager208presents the selected monitor profile304and the name of the selected server group502in the web page600. The example server manager208further presents a selection object602listing the servers604,606that are assigned to the selected server group502as of the most recent request from the server manager208to the alarm linkage database114. The example web page600includes a “DeleteSelectedServer” button608which, when selected, causes the server manager208to remove selected servers604,606from the selection object602. In some examples, selection of the button608causes the server manager208to initiate a request to update the alarm linkage database114by removing selected servers604,606from the selected server group502. In some other examples, the button608causes the desired change to be reflected on the web page600, while actual updating of the selected server group502does not occur unless and until a request is made to save changes to the server group502as discussed below.

The example web page600further includes a selection menu610including selectable servers612(e.g., any server in the network, particular types of servers in the network, servers that are accessible based on the selected monitor profile304, servers that are accessible based on the authenticated user, etc.). In some examples, the server manager208enables a user to search for or otherwise rapidly locate or identify a particular server (e.g., when a scrolling list of servers would be impracticable). For example, the server manager208may accept a text string indicative of a name of a server. Upon selecting or otherwise inputting a server, a user may select an “AddServer” button614to cause the server manager208to initiate a request (e.g., to the alarm linkage database114) to update the selected server group502by adding the selected server612.

In the illustrated example web page600, the server manager208presents a “SaveServerGroup” button616to initiate a request to change the selected server group502. Thus, the example server manager208may initiate multiple changes input via the web page600instead of making multiple requests (e.g., initiating a request to update the server group502each time a button608,614is selected). The example web page600further includes a “ReturnToServerGroup” button618which, when selected, causes the server manager208to display the server groups (e.g., in the web page500shown inFIG. 5.)

FIG. 7illustrates an example web page700presented to a user in response to a request to create a server group. The example server manager208ofFIG. 2may present the example web page700via the user interface202when the “CreateServerGroup” link or button514ofFIG. 5is selected in association with the selected server group502.

The example server manager208presents the selected monitor profile304. A name702of the server group to be created is entered in the web page700. The example web page700includes a “SaveServerGroup” button704. The server manager208stores a new server group in the alarm linkage database114. The example web page700further includes a “ReturnToServerGroup” button706to cause the server manager208to present the list of server groups (e.g., display the web page500ofFIG. 5).

Returning toFIG. 2, the example monitor manager210requests information about monitors and monitor groups from the alarm linkage database114based on a selected monitor profile. The example monitor manager210generates requests to create monitors and/or monitor groups, edit monitors and/or monitor groups, delete monitors and/or monitor groups, and/or assign monitor groups to server groups. For example, the monitor manager210initiates requests to add and/or remove monitors from a monitor group. In some examples, a monitor group may be implemented as a single-server monitor group, which has a single server specified in the properties of the monitor group, to avoid overhead associated with setting up a server group for a single monitor.

The monitor manager210also initiates requests to assign monitor groups to server groups and/or unassign monitor groups to server groups. The monitor groups and the assignments of monitor groups to server groups are stored as alarm configurations in the alarm linkage database114and are updated by the monitor manager210in response to requests via the user interface202. Using the monitor manager210, the example alarm interface200enables a user to rapidly make changes to alarm configurations of large numbers of servers in a network (e.g., the servers104in the network102ofFIG. 1).

When a monitor group is modified, the example monitor manager210modifies the alarm configurations of the server group(s) to which the monitor group is assigned. For example, if a monitor is added to the monitor group, the monitor is assigned to each server in each of the server groups to which the monitor group is assigned. Similarly, if a monitor is removed from the monitor group, that monitor is removed from each server in each of the server groups to which the monitor group is assigned.

FIG. 8illustrates an example web page800presented to a user in response to a request to view monitor groups associated with a selected monitor profile304. The example monitor manager210may present the web page800to a user via the user interface202ofFIG. 2in response to selection of a “MonitorGroup” link or button such as the “MonitorGroup” link418in the web page400ofFIG. 4.

To display the example web page800, the example monitor manager210retrieves monitor group information associated with the selected monitor profile304from the alarm linkage database114. The example monitor manager210presents a selection menu802that includes monitor groups804,806associated with the selected profile. A monitor group804,806may be selected using the selection menu (e.g., via the user interface202).

The example web page800includes a “ViewMonitorGroup” button808which, when selected, causes the monitor manager210to retrieve information associated with the selected monitor group (e.g., the monitor group804) and present the information via the user interface202. The example web page800includes an “EditMonitorGroup” button810which, when selected, causes the monitor manager210to retrieve information associated with the selected monitor group804and present an interface to enable modification of the selected monitor group804(e.g., modifying monitors included in the monitor group). In some examples, the information retrieved in response to selection of the “ViewMonitorGroup” button808is not identical to the information retrieved in response to selection of the “EditMonitorGroup” button810.

The example web page800further includes a “DeleteMonitorGroup” button812which, when selected, causes the monitor manager210to request that the alarm linkage database114delete the selected monitor group804. The web page800includes a “CopyMonitorGroup” button814which, when selected, causes the monitor manager210to create a new monitor group having identical characteristics as the selected monitor group804, except as to a name of the newly-created monitor group. To copy a selected monitor group804, the example monitor manager210requests information associated with the selected monitor group804and then requests that the alarm linkage database114to store a new monitor group having the same monitors and the same characteristics except as to name. In some examples, the monitor manager210generates the name of the newly-created monitor group by appending “_COPY” or another string to the name of the selected monitor group804. The example monitor manager210presents an interface to modify the newly-created monitor group (e.g., similar to the interface presented when the “EditMonitorGroup” button810is selected).

The example web page800includes a “CreateMonitorGroup” link or button816. Selection of the “CreateMonitorGroup” link or button816causes the example monitor manager210to create a new monitor group and store the newly-created monitor group in the alarm linkage database114. The example monitor manager210generates the monitor group using default settings specified by the selected monitor profile304. The example monitor manager210further presents interface to modify the newly-created monitor group (e.g., similar to the interface presented when the “EditMonitorGroup” button810is selected). The example web page800also includes a “CreateMonitor” button818to cause the monitor manager210to present an interface (e.g., a web page) to create a new monitor to be associated with the selected monitor profile304.

A “ReturnToEditMonitorProfile” button820causes the profile manager206to present information via the user interface202to enable the user to edit the selected monitor profile304. In some examples, the “ReturnToEditMonitorProfile” button820is replaced or supplemented by a button to cause the profile manager206to present an interface to view the information associated with the selected monitor profile304(e.g., the web page400ofFIG. 4).

FIG. 9illustrates an example web page900presented to a user in response to a request to edit a selected monitor group. The example monitor manager210presents the web page900via the user interface202in response to, for example a selection of the “EditMonitorGroup” button810ofFIG. 8. To present the web page900, the example monitor manager210retrieves information associated with the selected monitor group804from the alarm linkage database114.

The example web page900ofFIG. 9includes a selection object902, which includes a listing of monitors904,906belonging to the selected monitor group804(e.g., determined from the alarm linkage database114). Any of the example monitors904,906may be selected in the selection object902. A “RemoveSelectedMonitor” button908, when selected, causes the monitor manager210to remove selected monitors904,906from the selected monitor group804. In some examples, the monitor manager210requests removal of selected monitors904,906when the button908is selected. In some other examples, the monitor manager210removes the selected monitors904,906from the selection object902, but does not request the removal of the selected monitors904,906from the selected monitor group804until a save request is made (e.g., via a “SaveMonitorGroup” button910).

The example web page900includes a selection menu912including monitors914that may be added to the selected monitor group804. In some examples, the monitors listed in the selection menu912are limited to particular types of monitors (e.g., types of monitors specified by the selected monitor group804). In some other examples, any monitor(s) that are accessible to the selected monitor profile304and/or to the authenticated user are listed in the selection menu912. In some examples, the selection menu912is augmented or replaced by a text field to enable specifying and/or searching for monitors (e.g., when a number of monitors would be impractical to list in a selection menu such a drop down menu).

When a monitor914to be added is selected via the selection menu912, an “AddMonitor” button916in the web page900may be selected to cause the monitor manager210to add the selected monitor914to the selected monitor group804. In some examples, the monitor manager210updates the selected monitor group804on selection of the “AddMonitor” button916, while in other examples the monitor manager210adds the selected monitor914to the selection object902, from where it may be removed via the “RemoveSelectedMonitor” button908, and does not update the selected monitor group804unless and until the “SaveMonitorGroup” button910is selected.

The example web page900includes a “CreateMonitor” link or button918. The example “CreateMonitor” link or button918may be similar or identical to the example “CreateMonitor” link or button818ofFIG. 8. In some examples, the “CreateMonitor” link or button918ofFIG. 9causes any newly-created monitors to be automatically added to the selected monitor group804on creation. The example web page900includes a “ReturnToMonitorGroup” button920which, when selected, causes the monitor manager210to present the monitor groups804,806associated with the selected monitor profile304(e.g., present the web page800ofFIG. 8).

FIG. 10illustrates an example web page1000presented to a user in response to a request to create or edit a monitor. The example monitor manager210ofFIG. 2presents the example web page1000in response to a request to create a monitor (e.g., selection of a “CreateMonitor” link or button818,918ofFIGS. 8and/or9via the user interface202ofFIG. 2).

The example web page1000ofFIG. 10includes a listing of different knowledge modules1002that may be selected to create a new monitor. In the example ofFIG. 10, a “Daemon” knowledge module1004is selected, and the monitor manager210presents monitor data fields1006-1048based on the selection. The example data fields1006-1048include a monitor ID1006(e.g., an identification number, a monitor name, etc.), a name of a classification or organizational group1008to which the monitor belongs (e.g., for organization and/or identification purposes, not to be confused with a monitor group), a blackout field1010, a methods and procedures (M&P) uniform resource locator (URL)1012, an application identifier1014, an email address1016, a daemon to be monitored1018(e.g., by the monitor), a recovery script1020, notes about the monitor1022, a selection of whether a ticket should automatically be generated1024, a managed organization1026, a platform on which the monitor is to be run1028, a number of instances of the monitor to be run on each server to which the monitor is assigned1030, an instance identifier1032(e.g., an instance name), a TelAlert group profile1034, security priority1036(e.g., ESET priority), a work queue1038, a high availability (HA) failover directory1040, a status of the monitor1042in the alarm linkage database114, a severity1044(e.g., severity of alarms resulting from the monitor), an active organization1046, an asset identifier1048, and/or any other type of parameter or information pertaining to the monitor to be created. In some examples, any or all of the data fields1006-1048may be pre-populated based on settings for the selected monitor profile304.

A “Save” button1050causes the monitor manager210to update the alarm linkage database114using the data entered into the web page1000. For example, the monitor manager210may request the alarm linkage database114to create a new monitor in association with the selected monitor profile304, to include the new monitor in one or more monitor groups, and/or to re-apply monitor groups, which have been updated to include the new monitor, to server groups to which the monitor groups have been assigned. The example web page1000includes a “ReturnToEditMonitorProfile” button1052which, when selected, causes the profile manager206ofFIG. 2to present information associated with the selected monitor profile304. The example “ReturnToEditMonitorProfile” button1052ofFIG. 10does not cause the monitor manager210to save any tentative changes made to the monitor via the web page1000. In some examples, the “ReturnToEditMonitorProfile” button1052is replaced or supplemented by a “ReturnToEditMonitorGroup” button to cause the monitor manager210to present an interface to edit the selected monitor group802.

FIG. 11illustrates an example web page1100presented in response to a request to create a monitor group. The example monitor manager210ofFIG. 2may present the web page1100via the user interface202ofFIG. 2when the “CreateMonitorGroup” button816ofFIG. 8is selected. The example web page1100ofFIG. 11includes a monitor group name field1102, into which a name of the monitor group to be created may be entered. In some examples, the monitor group name1102is pre-populated based on settings associated with the selected monitor profile304.

The example web page1100includes a “SaveMonitorGroup” button1104to cause the monitor manager210to request that the monitor group be created in the alarm linkage database114with the requested monitor group name1102. The example web page1100further includes a “ReturnToMonitorGroup” button1106which, when selected, causes the monitor manager210to present the monitor groups804,806associated with the selected monitor profile304(e.g., present the web page800ofFIG. 8). In some examples, selecting the “SaveMonitorGroup” button1104also causes the monitor manager210to present the monitor groups804,806associated with the selected monitor profile304after submitting the request to create the monitor group.

FIG. 12illustrates an example web page1200presented to a user in response to a request to apply a monitor group to a server group. The example monitor manager210presents the example web page1200via the user interface202in response to a request to assign or map monitor groups to server groups (e.g., selection of the link422ofFIG. 4). In the example ofFIG. 12, the selected monitor group802is assigned to server groups1202,1204.

The example web page1200includes a selection menu1206to select server groups1202,1204to which the monitor group802is to be unassigned. When an assigned server group1202,1204is selected from the selection menu1206, an “Unassign ServerGroup” button1208may be selected to cause the monitor manager210to request the selected monitor group802to be unassigned from the selected server group (e.g., to remove the monitors in the monitor group802from the servers in the selected server group).

The example web page1200further includes a selection menu1210listing server groups1212,1214,1216,1218to which the selected monitor group802may be assigned. When an “Assign ServerGroup” button1220is selected, the example monitor manager210requests that the selected monitor group802be assigned to a selected server group (e.g., the server group1212) in the selection menu1210. The assignment request generated by the monitor manager210causes the monitors included in the selected monitor group802to be configured on the servers included in the selected server group1212.

Using the example selection menus1206,1210, a change in alarm configurations can be rapidly initiated for a large number of servers (e.g., hundreds, thousands, tens of thousands, or more). The configuration of the monitors on the servers may be performed by, for example, the configuration implementer124ofFIG. 1.

While an example interface to assign a monitor group to one or more server groups is illustrated inFIG. 12, other interfaces and/or arrangements may additionally or alternatively be used. For example, any type of selection object or menu may be used to select a server group and/or a monitor group. In some examples, a server group is selected and monitor groups may be selected for assigning and/or unassigning to the server group. In some other examples, one or more monitor groups are selected to be assigned to one or more server groups selected in the same interface. Furthermore, the example monitor manager210may request changes to the alarm configurations of servers by requesting changes to alarm configurations incrementally (e.g., requesting incremental changes to previous alarm configurations, such as assigning a monitor group to a server group while leaving prior alarm configuration information unchanged) and/or by overwriting previous alarm configurations (e.g., replacing complete prior alarm configurations of a server group with a complete updated alarm configuration).

To illustrate, a server group to which monitor group A and monitor group B (e.g., AB) are assigned is to have a monitor group C assigned. The example monitor manager210may incrementally update the server group by adding monitor group C in addition to monitor groups A and B. Alternatively, the example monitor manager210may overwrite the prior alarm configuration by removing the monitor groups A and B and assigning monitor group C to the server group.

FIG. 13illustrates an example web page1300presented in response to a request to edit a monitor profile. The example web page1300may be presented by the profile manager206ofFIG. 2via the user interface202in response to a request to access and/or change a selected monitor profile. The example web page1300specifies the selected monitor profile304and provides fields and/or menu items1302-1318. The fields and/or menu items1302-1318may be used to specify default properties for monitors, monitor groups, server groups, and/or assignments of monitor groups to server groups that are created in association with the selected monitor profile304. In some examples, an authenticated user may organize monitor groups, server groups, monitors, and/or assignments of monitor groups to server groups, by monitor profiles according to the characteristics or properties that are to be defined as defaults for the monitor groups, server groups, monitors, and/or assignments. The example profile manager206therefore enables efficient creation of monitors, server groups, and monitor groups, and assignment of monitor groups to server groups.

When changes to any of the fields1302-1318have been entered, a “SaveMonitorProfile” button1320may be selected to cause the profile manager206to request that the changes to the selected monitor profile304be saved at the alarm linkage database114. The web page1300also includes a “ReturnToViewMonitorProfile” button1322which, when selected, causes the profile manager206to present information associated with the selected monitor profile304(e.g., present the web page400ofFIG. 4) with or without saving changes to the fields1302-1318to the alarm linkage database.

The example report generator212ofFIG. 2accesses the alarm linkage database114to retrieve alarm configuration information and to generate reports of alarm configurations. The example report generator212compares an alarm configuration requested by a user for a server to an alarm configuration implemented on the server and generates a report of any discrepancies. This report may be provided to, for example, the user and/or to an administrator or manager of the server to address the discrepancies.

Flowcharts representative of example machine readable instructions for implementing the alarm interfaces116,200ofFIGS. 1and/or2are shown inFIGS. 14A-14E. Flowcharts representative of example machine readable instructions for implementing the alarm linkage databases114,1500of FIGS.1and/or15are shown inFIG. 17. Flowcharts representative of example machine readable instructions for implementing the alarm catalogers124,1800ofFIGS. 1and/or18are shown inFIG. 19. In this example, the machine readable instructions comprise a program for execution by a processor such as the processor2012shown in the example computer2000discussed below in connection withFIG. 20. The program may be embodied in software stored on a tangible computer readable medium such as a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-ray disk, or a memory associated with the processor2012, but the entire program and/or parts thereof could alternatively be executed by a device other than the processor2012and/or embodied in firmware or dedicated hardware. Further, although the example program is described with reference to the flowcharts illustrated inFIGS. 14A-14E,17, and/or19, many other methods of implementing the example alarm interfaces116,200ofFIGS. 1and/or2, the alarm linkage databases114,1500ofFIGS. 1and/or15, and/or the alarm catalogers124,1800ofFIGS. 1and/or18may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined.

FIGS. 14A-14Ecollectively illustrate a flowchart representative of example machine readable instructions1400which may be executed to interface with an alarm linkage database (e.g., the alarm linkage database114ofFIGS. 1and/or2). The example instructions1400ofFIGS. 14A-14Emay be implemented by the example alarm interfaces116,200ofFIGS. 1and/or2to, for example, enable a user to efficiently access and/or change alarm configurations for servers in a network. The example instructions1400may advantageously be used to organize and modify alarm configurations for large numbers of servers (e.g., hundreds, thousands, tens of thousands, or more servers).

The example instructions1400may be performed when, for example, a user accesses the alarm interface200via a user device such as the user devices118,120ofFIG. 1. The example login manager204ofFIG. 2receives (e.g., via the user interface202) user login information (block1401). The login information may include, for example, an assigned user name, a password, a security token, and/or any other type of credentials and/or authentication information. If the user is not authenticated (block1402), control returns to block1401to receive user login information.

If the user is authenticated (block1402), the example profile manager206ofFIG. 2presents monitor profiles associated with the authenticated user (block1403). For example, the profile manager206may request or retrieve the monitor profiles owned by and/or accessible by the authenticated user from the alarm linkage database114and present the monitor profiles in a web page via the user interface202.

If a request to view a selected monitor profile is received (block1404), control is transferred to block1411(FIG. 14B), described below. If a request to edit a selected monitor profile is received (block1405), control is transferred to block1418(FIG. 14B), described below. If deletion of a selected monitor profile is received (block1406), the example profile manager206deletes the selected monitor profile (block1407). For example, the profile manager206may request the alarm linkage database114to delete the selected profile. After deleting a profile (block1407), control returns to block1403to present the profiles associated with the user.

If viewing of a selected monitor profile, editing of a selected monitor profile, and deletion of a selected monitor are not selected (blocks1404-1406), the profile manager206determines whether creation of a monitor profile has been requested (block1408). If a request to create a monitor profile has been received (block1408), the example profile manager206creates a new monitor profile (block1409) and transfers control to block1418(FIG. 14B) with the newly created profile as the selected profile. If a request to create a monitor profile is not received (block1408), the example login manager204determines whether the user has logged out (block1410). If the user has not logged out (block1410), control returns to block1403to continue to present the monitor profiles for the user. If the user has logged out (block1410), control returns to block1401to receive new login information.

Turning toFIG. 14B, the example profile manager206presents information for a selected monitor profile (e.g., in response to a request to view a selected monitor profile) (block1411). The example profile manager206determines whether a request to edit the selected monitor profile has been received (block1412). If a request to edit the selected monitor profile has not been received (block1412), the example profile manager206determines whether a request to delete the selected monitor profile has been received (block1413). If deletion of the selected monitor profile has been requested (block1413), the example profile manager206deletes the selected monitor profile (block1414) and control returns to block1403(FIG. 14A) to present the monitor profiles.

If a profile delete request has not been received (block1413), the example profile manager206determines whether the monitor profile server groups have been selected (block1415). For example, a request to view and/or edit the server groups associated with the selected monitor profile may be received via the user interface202. If the server groups have been selected (block1415), control is transferred to the server manager208at block1423(FIG. 14C). If the server groups have not been selected (block1415), the example profile manager206determines whether the monitor profile monitor groups have been selected (block1416). For example, a request to view and/or edit the monitor groups associated with the selected monitor profile may be received via the user interface202. If the monitor groups have been selected (block1416), control is transferred to the monitor manager210at block1439(FIG. 14D). The example profile manager206determines whether a request to return to selection of a monitor profile has been received (block1417). If a request to return to a monitor profile selection has been received (block1417), control returns to block1403(FIG. 14A). If a request to return to a monitor profile selection has not been received (block1417), control returns to block1411to present information for the selected profile.

If a request to edit a selected monitor profile has been received in block1405(FIG. 14A), the example profile manager206presents information for the selected monitor profile (block1418). After presenting the information (block1418), or after an edit to the profile is requested in block1412, the example profile manager206receives edits or modifications to the information for the selected profile (block1419). For example, the profile manager206may receive, via the user interface202, changes to profile defaults, a name of the monitor profile, and/or any other modifiable property or characteristic of the selected monitor profile. In the example instructions1400, the edits are not saved until saving of the edits to the profile is requested (block1420). If a request to save the monitor profile is received (block1420), the example profile manager206stores the edited profile information in the alarm linkage database114(block1421).

After storing the edited information (block1421), or if saving of the profile is not requested (block1420), the example profile manager206determines whether a return to the monitor profile selection has been requested (block1422). If a request to return to a monitor profile selection has been received (block1422), control returns to block1403(FIG. 14A). If a request to return to a monitor profile selection has not been received (block1422), control returns to block1418to present the information for the selected profile. In the example instructions1400, any unsaved changes to the selected monitor profile are ignored or discarded when control returns to block1403.

Turning toFIG. 14C, the example server manager208ofFIG. 2, in response to a selection of server groups associated with a selected monitor profile (block1415ofFIG. 14B), lists server groups for the selected monitor profile (block1423). For example, the server manager208may request the listing of server groups associated with the selected monitor profile from the alarm linkage database114ofFIGS. 1and/or2. The example server manager208determines whether a request to edit a server group has been received (block1424).

If a request to edit a server group has not been received (block1424), the example server manager208determine whether a request to create a server group has been received (block1425). If creation of a server group has been requested (block1425), the example server manager208creates a new server group for the selected monitor profile using the default settings or properties associated with the selected monitor profile (block1426). If a request to create a server group has not been received (block1425), the example server manager208determines whether a request to delete a server group has been received (block1427). If a request to delete a selected server group has been received (block1427), the example server manager208deletes the selected server group (block1428). For example, the server manager208may request that the alarm linkage database delete the server group.

The example server manager208determines whether control is to return to the profile manager206to view the monitor profile (block1429). If viewing the monitor profile has not been requested (block1429), control returns to block1423to list the server groups for the selected monitor profile. If viewing the monitor profile has been requested (block1429), control returns to block1411(FIG. 14B) to present information for the selected profile.

After creating a server group (block1426) or if a request to edit a server group has been received (block1424), control is transferred to block1430to present the servers in the selected server group. For example, the server manager208may retrieve a listing of the servers included in the server group from the alarm linkage database114. The server manager208determines whether a request to add server(s) to the server group has been received (block1431). If a request to add server(s) has been received (block1431), the example server manager208adds selected server(s) to the selected server group (block1432). In the example instructions1400, the server manager208tentatively adds the server(s) and does not generate a request to the alarm linkage database114to add the server(s) until a request to save changes to the server group is received.

After adding selected servers (block1432) and/or if a request to add server(s) is not received (block1431), the example server manager208determines whether a request to delete selected server(s) from the selected server group has been received (block1433). If a request to delete server(s) has been received (block1433), the example server manager208deletes the selected server(s) from the selected server group (block1434). In the example instructions1400, the server manager208tentatively delete the server(s) and does not generate a request to the alarm linkage database114to delete the server(s) from the selected server group until a request to save changes to the server group is received.

After deleting selected servers (block1434) and/or if a request to delete server(s) is not received (block1433), the example server manager208determines whether a request to save the selected server group has been received (block1435). If a request to save the server group has been received (block1435), the example server manager208stores the server group in a server group database (e.g., provides the updates and a request to save the server group to the alarm linkage database114) (block1436).

After saving the server group (block1436) or if saving the server group has not been requested (block1435), the example server manager208determines whether a request to map monitor group(s) to server group(s) has been received (block1437). If a request to map has been received (block1437), control is transferred to the example monitor manager210ofFIG. 2at block1456(FIG. 14E). If a request to map has not been received (block1437), the example server manager208determines whether to return to presenting monitor profile information (block1438). If the server manager208is to return to presenting monitor profile information (block1438), control returns to the profile manager206at block1411(FIG. 14B). If the server manager208is to not return to presenting monitor profile information (block1438), control returns to block1430to present the servers in the selected server group.

Turning toFIG. 14D, in response to a selection or request to view monitor groups (block1416ofFIG. 14B), the example monitor manager210ofFIG. 2lists monitor groups for the selected monitor profile (block1439). For example, the monitor manager210may request the listing of monitor groups associated with the selected monitor profile from the alarm linkage database114ofFIGS. 1and/or2. The example monitor manager210determines whether a request to edit a monitor group has been received (block1440).

If a request to edit a monitor group has not been received (block1440), the example monitor manager210determines whether a request to create a monitor group has been received (block1441). If creation of a monitor group has been requested (block1441), the example monitor manager210creates a new monitor group for the selected monitor profile using the default settings or properties associated with the selected monitor profile (block1442). If a request to create a monitor group has not been received (block1441), the example monitor manager210determines whether a request to delete a monitor group has been received (block1443). If a request to delete a selected monitor group has been received (block1443), the example monitor manager210deletes the selected monitor group (block1444). For example, the monitor manager210may request that the alarm linkage database114delete the selected monitor group.

After deleting the selected monitor group (block1444) or if deleting a monitor group has not been requested (block1443), the example monitor manager210determines whether a request to map monitor group(s) to monitor group(s) has been received (block1445). If a request to map has been received (block1445), control is transferred to the example monitor manager210ofFIG. 2at block1456(FIG. 14E). If a request to map has not been received (block1445), the example monitor manager210determines whether to return to presenting monitor profile information (block1446). If the monitor manager210is to return to presenting monitor profile information (block1446), control returns to the profile manager206at block1411(FIG. 14B). If the monitor manager210is to not return to presenting monitor profile information (block1446), control returns to block1439to present the monitor groups for the selected profile.

If a request to edit a monitor group has been received (block1440), control is transferred to block1447to present the monitors in the selected monitor group. For example, the monitor manager210may retrieve a listing of the monitors included in the selected monitor group from the alarm linkage database114. The monitor manager210determines whether a request to add monitor(s) to the monitor group has been received (block1448). If a request to add monitor(s) has been received (block1448), the example monitor manager210adds selected monitor(s) to the selected monitor group (block1449). In the example instructions1400, the monitor manager210tentatively adds the monitor(s) and does not generate a request to the alarm linkage database114to add the monitor(s) until a request to save changes to the monitor group is received.

After adding selected monitors (block1449) and/or if a request to add monitor(s) is not received (block1448), the example monitor manager210determines whether a request to delete selected monitor(s) from the selected monitor group has been received (block1450). If a request to delete monitor(s) has been received (block1450), the example monitor manager210deletes the selected monitor(s) from the selected monitor group (block1451). In the example instructions1400, the monitor manager210tentatively deletes the monitor(s) and does not generate a request to the alarm linkage database114to delete the monitor(s) from the selected monitor group until a request to save changes to the monitor group is received.

After deleting selected monitors (block1451) and/or if a request to delete monitor(s) is not received (block1450), the example monitor manager210determines whether a request to save edits to the selected monitor group has been received (block1452). If a request to save the monitor group has been received (block1452), the example monitor manager210stores the monitor group in a monitor group database (e.g., provides the updates and a request to save the monitor group to the alarm linkage database114) (block1453).

After saving the monitor group (block1453) or if saving the monitor group has not been requested (block1452), the example monitor manager210determines whether a request to map monitor group(s) to monitor group(s) has been received (block1454). If a request to map has been received (block1454), control is transferred to block1456(FIG. 14E). If a request to map has not been received (block1437), the example monitor manager210determines whether to return to presenting a list of monitor groups (block1455). If the monitor manager210is to return to presenting a list of monitor groups (block1455), control returns to block1439. If the monitor manager210is to not return to presenting monitor profile information (block1455), control returns to block1447to present the monitors in the selected monitor group.

Turning toFIG. 14E, the example monitor manager210presents a list of server group(s) and a list of monitor group(s) for the selected monitor profile (e.g., via the user interface202) (block1456). For example, the monitor manager210may retrieve a list of server groups and a list of monitor groups associated with the selected monitor profile from the alarm linkage database114. The example monitor manager210receives a selection of server group(s) in the first list (block1457). The example monitor manager210receives a selection of monitor group(s) in the second list (block1458).

The monitor manager210determines if a request to assign the selected monitor group(s) (block1458) to the selected server group(s) (block1459) has been received (block1459). For example, the request may be received via the user interface202. If a request to assign has been received (block1459), the example monitor manager210initiates a request to assign the monitors in the selected monitor group(s) to the servers in the selected server group(s) (block1460). For example, the monitor manager210may generate a request to the alarm linkage database114and/or to the configuration implementer124ofFIG. 1.

After initiating the request to assign monitor group(s) to server group(s) (block1460), or if assignment has not been requested (block1459), the example monitor manager210determines whether to return to presenting the selected monitor profile (block1461). If the monitor manager is to return to presenting the monitor profile (block1461), control returns to block1411(FIG. 14B).

If the monitor manager210determines not to return to presenting the selected monitor profile (block1461), the example monitor manager210determines whether listing the server group(s) has been selected (block1462). If listing the server group(s) has been selected (block1462), control returns to block1423(FIG. 14C).

If the monitor manager210determines not to return to listing the server group(s) (block1462), the example monitor manager210determines whether listing the monitor group(s) has been selected (block1463). If listing the monitor group(s) has been selected (block1463), control returns to block1439(FIG. 14D). If the monitor manager210determines not to return to listing the server group(s) (block1463), control returns to block1456.

FIG. 15is a block diagram of an example alarm linkage database1500. The example alarm linkage database1500ofFIG. 15may implement the alarm linkage database114ofFIGS. 1and/or2to store alarm information and/or to provide alarm configuration information to a user (e.g., via the alarm interfaces116,200ofFIGS. 1and/or2). As described in more detail below, the example alarm linkage database1500ofFIG. 15enables efficient management of alarms for large numbers of servers in a network.

The example alarm linkage database1500ofFIG. 1includes a request handler1502, a profile database1504, a monitor database1506, a server database1508, a knowledge module database1510, a mapping database1512, and a database updater1514. In some examples, the profile database1504, the monitor database1506, the server database1508, the knowledge module database1510, and the mapping database1512are implemented using database tables (e.g., relational database tables, SQL tables, etc.). The example database updater1514ofFIG. 15interfaces with the alarm cataloger122and the configuration implementer124ofFIG. 1to update the example profile database1504, the example monitor database1506, the example server database1508, the example knowledge module database1510, and/or the example mapping database1512in responses to changes to alarm configurations of servers in a network (e.g., the servers104of the network102ofFIG. 1.

The example request handler1502ofFIG. 15receives requests from the alarm interface116. Example requests may include requests to view, edit, create, and/or delete monitor profiles; view, edit, create, and/or delete monitor groups and/or server groups; and/or assign monitor groups to server groups.

The example profile database1504ofFIG. 15stores monitor profiles including characteristics and properties of profiles. Example characteristics of monitor profiles include the names of the monitor profiles, users who have privileges to view and/or edit a monitor profile, and/or default settings of a monitor profile. In response to a request involving a monitor profile, the example request handler1502accesses the profile database1504to retrieve the appropriate monitor profile information to respond to the request.

The example monitor database1506ofFIG. 15stores monitors and/or monitor groups. For example, storing a monitor group may include storing identifications of monitors included in the monitor group. In the example ofFIG. 15, information stored in association with a monitor is based on the knowledge module associated with the monitor (e.g., one or more pieces of stored information are specific to the knowledge module).

The example server database1508ofFIG. 15stores information about the servers104in the network102and server groups. For example, the server database1508may store the servers that are included in respective server groups.

The example mapping database1512ofFIG. 15stores information regarding mapping of monitors and/or monitor groups to servers and/or server groups. The example mapping database1512may organize the mappings, for example, by identifiers of monitor groups in association with identifiers of the server groups to which they are assigned. Additionally or alternatively, the example mapping database1512may organize the mappings using the identifiers of the server groups with the monitor groups assigned to the server groups.

FIG. 16illustrates example data structures1602-1624stored in the alarm linkage database1500ofFIG. 15. The example data structures1602-1624are stored in the example databases1504-1512and may be accessed to present alarm configuration information and/or modified when alarm configurations are changed.

A Monitor_Profile structure1602includes data associated with stored monitor profiles. The example Monitor_Profile structure1602ofFIG. 16is related to a Profile_Defaults structure1604that may be accessed to obtain defaults for a particular monitor profile. The example Monitor_Profile structure1602is also related to an Owner structure1606that stores an owner of the monitor profiles and to a Change_History structure1608that stores changes to stored profile managers and the statuses of submitted changes. The example Monitor_Profile structure1602, the example Profile_Defaults structure1604, the example Owner structure1606, and the example Change_History structure1608ofFIG. 16are stored in the example profile database1504ofFIG. 15.

A Monitor_Group structure1610stores information about monitor groups. The example Monitor_Group structure1610ofFIG. 16is linked to the Monitor_Profile structure1602to identify the monitor profile with which a stored monitor group is associated. The example Monitor_Group structure1610stores a name of each monitor group and identifiers of monitors included in the monitor groups. The Monitor_Group structure1610may be stored in the example monitor database1506ofFIG. 15.

A PatrolKM structure1612stores mappings of knowledge modules (e.g., knowledge modules for Patrol agents to perform alarm monitoring) to monitors. The example PatrolKM structure1612ofFIG. 16is stored in the example KM database1510ofFIG. 15and may be accessed to determine an alarm configuration associated with an identified monitor.

A Server_Group structure1614stores information about server groups including, for example, a name of the server group and a monitor profile associated with the server group. Accordingly, the example Server_Group structure1614ofFIG. 16is linked to the Monitor_Profile structure1602. The example Server_Group structure1614is linked to a Server structure1616, a Server_to_Server_Group structure1618, and a Server_Group_to_Monitor_Group structure1620. The example Server_Group structure1614, the example Server structure1616, and the example Server_to_Server_Group structure1618ofFIG. 16are stored in the example server database1508ofFIG. 15. The example Server_Group_to_Monitor_Group structure1620is stored in the example monitor database1506.

The example Server structure1616ofFIG. 16includes information associated with the servers104in the network102ofFIG. 1. Accordingly, the example Server structure1616may include a large number of entries corresponding to a large-scale network102(e.g., hundreds, thousands, or tens of thousands of the servers104). The Server structure1616stores information such as the host names (e.g., identifiers, server names) of the servers104, an operating system type, information regarding a monitoring agent (e.g., Patrol) and whether one or more types of monitoring agents are installed. The example Server_Group structure1614stores host names of the servers104that are included in each stored server group, which links the Server_Group structure1614to the Server structure1616.

The example Server_to_Server_Group structure1618ofFIG. 16also stores the associations of the example servers104and the server groups. In the example ofFIG. 16, the Server_to_Server_Group structure1618may be organized (e.g., keyed) according to the host name of the server (e.g., list the server groups to which each server104belongs, organized by host name) and/or according to the name of the server group (e.g., list the servers104belonging to each server group, organized by server group name).

The example Server_Group_to_Monitor_Group structure1620ofFIG. 16stores the associations of the example servers and monitor groups. The example Server_Group_to_Monitor_Group structure1620ofFIG. 16includes the name of a monitor group and the host names of servers104to which monitors in the monitor group are assigned. In other words, entries exist for each of the example monitor groups and include information about the servers to which the monitor groups are assigned. In some examples, the Server_Group_to_Monitor_Group structure1620may be organized (e.g., keyed) according to the host name of the server (e.g., list the monitor groups assigned to each server104, organized by host name) according to the name of a server group (e.g., list the monitor groups assigned to each server group, organized by server group name), and/or according to the name of a monitor group (e.g., list the servers or server groups to which each monitor group is assigned, organized by monitor group name). The example Server_Group_to_Monitor_Group structure1620is stored in the mapping database1512ofFIG. 15.

Returning toFIG. 15, the example database updater1514receives updates to the databases1504-1512from the alarm cataloger122and/or the configuration implementer124. As described below, the alarm cataloger122collects alarm configurations from the servers104(e.g., collects information about the monitors108-112via the monitoring agents106on the servers104). The example alarm cataloger122provides initial alarm configurations (e.g., server information, monitor information, monitor-to-server mappings, etc.) collected from the servers104to the database updater1514and provides updates to the alarm configurations based on collected updated alarm configurations (e.g., updates collected periodically, aperiodically, at particular times, in response to particular events, etc.) to the database updater1514. The example database updater1514ofFIG. 15parses the updates and updates the corresponding databases1504-1512(e.g., the appropriate structures1602-1620in the databases1504-1512).

The example database updater1514ofFIG. 15also receives statuses regarding pending changes to alarm configurations from the configuration implementer124. For example, the implementation of requested changes to alarm configurations made by users of the alarm interface116on the servers104may be delayed. Delay may arise from ticketing, workflow scheduling, pending approval of the change request, and/or any other source of delay. The example configuration implementer124provides status updates to the example database updater1514, which updates the appropriate statuses in the databases1504-1512(e.g., the status fields in the example structures1602,1614,1618,1620and/or in the Change_History structure1608).

FIG. 17is a flowchart representative of example machine readable instructions1700which may be executed to store alarm information for a plurality of servers. The example instructions1700ofFIG. 17may be implemented by the example alarm linkage database1500ofFIG. 15to provide alarm configuration information.

The example instructions1700begin by determining whether alarm configuration data has been received (block1702). For example, the database updater1514may receive alarm configuration data from the alarm cataloger122and/or the configuration implementer124. The alarm configuration information includes, for example, monitor information for server(s)104in the network102. If alarm configuration data has been received (block1702), the example database updater1514stores and/or updates alarm configuration data in a monitor database (e.g., the monitor database1506ofFIG. 15). The alarm configuration data stored in the monitor database may include information about monitors operating on the server(s)104.

The example database updater1514ofFIG. 15relates the alarm configuration data to server(s) in the server database1508(block1706). For example, the database updater1514may link the servers in the server database1508from which the alarm configuration information was extracted by the alarm cataloger122and/or the configuration implementer124. For example, the database updater1514may link the data in the structures1602-1620.

After relating the alarm configuration data (block1706), or if alarm configuration data was not received (block1702), the example request handler1502ofFIG. 15determines whether an alarm configuration update request has been received (block1708). For example, the request handler1502may receive requests to update an alarm configuration of one or more servers, requests to create, edit, view, and/or delete monitor groups, server groups, and/or monitor profiles, requests to map monitor group(s) to server group(s), and/or other types of requests. If a request has been received (block1708), the example request handler1502determines whether the request has been implemented (block1710). For example, the request handler1502may check a status of the request in the databases1504-1512(e.g., in the structures1602-1620).

If the request has been implemented (block1710), the example request handler1502and/or the database updater1514update the monitor database1506and the profile database1504based on the request (block1712). For example, some or all requests received via the request handler1502may be implemented immediately or substantially immediately, and can be reflected in the databases1504-1512and presented to the requester as completed. If the request is not implemented (block1710), the example request handler1502updates a status of the request (e.g., a status of a change to the information in the databases1504-1512) (block1714). The example request handler1502may further present the updated status via the alarm interface116.

After updating the request status (block1714) or updating the monitor database1506and the profile database1504(block1712), or if an alarm configuration update request has not been received (block1708), the example request handler1502ofFIG. 15determines whether an alarm linkage database access request has been received (block1716). An alarm linkage database access request may include, for example, a request to view a monitor, a monitor group, a server group, a monitor profile, and/or any other information stored in the databases1504-1512and/or the alarm linkage database1500. If an alarm linkage database access request has been received (block1716), the example request handler1502ofFIG. 15retrieves the requested data from the profile database1504, from the monitor database1506, from the server database1508, and/or from the mapping database1512(block1718). In some examples, the request handler1502may retrieve data from the KM database1510. The request handler1502provides (e.g., presents) the requested data (e.g., retrieved from the databases1504-1512) via the alarm interface116(block1720). For example, the request handler1502may provide the requested data to the alarm interface116, which presents a web site or other interface including the requested data.

After providing the requested data (block1720), or if an alarm linkage database access request was not received (block1716), control returns to block1702to determine whether alarm configuration data has been received. The example instructions1700may iterate to receive alarm configurations, receive updates to alarm configurations, and/or receive database access requests, and to handle the data and/or requests.

FIG. 18is a block diagram of an example alarm cataloger1800. The alarm cataloger1800ofFIG. 18may implement the alarm cataloger122ofFIG. 1to collect alarm configurations from servers104in a network102, process the collected alarm configurations, and store the alarm configurations in the alarm linkage database114and1500ofFIGS. 1,2, and/or15.

The example alarm cataloger1800ofFIG. 18includes a network interface1802, a server selector1804, an alarm configuration extractor1806, a data file converter1808, a database table maintainer1810, a data validator1812, and an event logger1814. For purposes of illustration, the example alarm cataloger1800is described below with reference to two servers1816,1818, each of which include a monitoring agent1820,1822and at least one monitor1824,1826.

The example network interface1802ofFIG. 18transmits and receives commands and data to the servers1816,1818and the alarm linkage database114via the network102. The example network interface1802includes appropriate hardware to communicate via the network, such as a network interface card.

The example server selector1804ofFIG. 18selects a server (e.g., the server1816) from the servers1816,1818in the network102. In some examples, the server selector1804maintains a list of the servers1816,1818in the network102and the times at which the servers1816,1818were most recently instructed to provide alarm configurations. In some examples, the server selector1804accesses the list of servers in a server database in the alarm linkage database114(e.g., the server database1508ofFIG. 15). The server selector1804selects server(s)1816,1818periodically, aperiodically, at particular times, in response to particular events, in response to a request, and/or at any other time, from which alarm configurations are to be extracted. For example, the server selector1804may select each of the servers1816,1818in the network once per 24 hour period.

The example alarm configuration extractor1806ofFIG. 18instructs the monitoring agents1820,1822executing on the servers1816,1818to report alarm configurations. For example, when the alarm configuration extractor1806receives a selection of the server1816, the alarm configuration extractor1806issues a command to the selected server1816(e.g., to the monitoring agent1820of the selected server1816, via the network interface1802) to extract and transmit the alarm configuration of the server1816.

In response to the command from the alarm configuration extractor1806of the illustrated example, the example monitoring agent1820on the server1816collects the alarm configuration of the server1816(e.g., instances of monitors, monitored server parameters, alarm thresholds, etc.) and generates a file or package including the information and structured in a standard format, such as eXtensible Markup Language (XML). The monitoring agent1820of the illustrated example transmits the package to the alarm cataloger1800. The example data file converter1808ofFIG. 18receives the package via the network interface1802and converts data files, including alarm configurations reported from the server1816, to relational data such as data that can be used in a relational database. In the example ofFIG. 18, the data file converter1808converts the standardized data to a data format that can be used to update the alarm linkage database114(e.g., the databases1504-1512ofFIG. 15).

The example database maintainer1810ofFIG. 18updates the alarm linkage database114(e.g., the databases1504-1512) based on the information received from the data file converter1808. In some examples, the database maintainer1810retrieves alarm configuration information from the alarm linkage database114corresponding to the alarm configuration information from the data file converter1808. If the database maintainer1810of the illustrated example determines that no updates to the alarm linkage database114are necessary (e.g., no changes to the alarm configuration of the server1816has occurred), the example database maintainer1810does not issue an update command. On the other hand, if the database maintainer1810determines that the alarm configuration information for the server1816needs to be updated in the alarm linkage database (e.g., the alarm configuration of the server1816is different than an alarm configuration for the server1816stored in the alarm linkage database114).

The example data validator1812ofFIG. 18validates the alarm configuration data converted by the data file converter1808. If the alarm configuration data is in correct format, the example data validator1812provides a confirmation of valid data to the database maintainer1810. In contrast, if the alarm configuration data is incorrect (e.g., not correctly formatted and/or missing data), the example data validator1812of the illustrated example notifies the database maintainer1810. The database maintainer1810awaits validation of the alarm configuration information prior to updating of the alarm linkage database114. The example data validator1812further provides the validation results to the event logger1814. The example event logger1814ofFIG. 18logs attempted updates of the alarm linkage database114. The example event logger1814further logs instances of invalid data, including the servers1816,1818from which the invalid data was received.

FIG. 19is a flowchart representative of example machine readable instructions1900which may be executed to collect and store alarm configurations for a plurality of servers (e.g., the servers104,1816,1818ofFIGS. 1and/or18). The example instructions1900ofFIG. 19may be performed to implement the alarm catalogers122and/or1800ofFIG. 18.

The example alarm cataloger1800selects a server (e.g., via the server selector1804) (block1902). For example the server selector1804may select any of the servers104in the example network102ofFIG. 1. The example alarm configuration extractor1806instructs the selected server (e.g., the server1816ofFIG. 18) to provide an alarm configuration (block1904). For example, the alarm configuration extractor1806may transmit a request or other instruction to the selected server1816via the network interface1802to cause the server1816(e.g., the monitoring agent1820on the server1816) to collect, package, and transmit its alarm configuration as a data file.

The example data file converter1808converts the data file containing the alarm configuration (e.g., to a standardized format) (block1906). Example conversions may include converting the alarm configuration from an XML format to a format that may be used to update database record(s). The example data validator1812verifies (e.g., validates) the converted data file (block1908).

If the converted data file is not verified (block1910), the example event logger1814logs the unverified converted data file (block1912). On the other hand, if the converted data file is verified (block1910), the example database maintainer1810stores the alarm configuration information (e.g., from the converted data file) in an alarm linkage database (e.g., the alarm linkage database114ofFIG. 1) (block1914).

The example server selector1804determines whether there are additional servers to be selected (block1916). If there are additional servers (block1916), control returns to block1902to select a server. If there are no additional servers (block1916), the example instructions1900may end.

While example manners of implementing the alarm linkage database114, the example alarm interface116, and the alarm cataloger122ofFIG. 1have been illustrated inFIGS. 2,15, and18, one or more of the elements, processes and/or devices illustrated inFIGS. 2,15, and/or18may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the example configuration implementer124, the example workflow manager126, the example security monitor128, the example network monitor130, the example user interface202, the example login manager204, the example profile manager206, the example server manager208, the example monitor manager210, the example report generator212, the example request handler1502, the example profile database1504, the example monitor database1506, the example server database1508, the example knowledge module database1510, the example mapping database1512, the example database updater1514, the example network interface1802, the example server selector1804, the example alarm configuration extractor1806, the example data file converter1808, the example database table maintainer1810, the example data validator1812, the example event logger1814and/or, more generally, the example alarm interfaces116,200, the example alarm linkage databases114,1500, and/or the example alarm catalogers122,1800ofFIGS. 2,15, and/or18may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example configuration implementer124, the example workflow manager126, the example security monitor128, the example network monitor130, the example user interface202, the example login manager204, the example profile manager206, the example server manager208, the example monitor manager210, the example report generator212, the example request handler1502, the example profile database1504, the example monitor database1506, the example server database1508, the example knowledge module database1510, the example mapping database1512, the example database updater1514, the example network interface1802, the example server selector1804, the example alarm configuration extractor1806, the example data file converter1808, the example database table maintainer1810, the example data validator1812, the example event logger1814and/or, more generally, the example alarm interfaces116,200, the example alarm linkage databases114,1500, and/or the example alarm catalogers122,1800ofFIGS. 2,15, and/or18could be implemented by one or more circuit(s), programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)), etc. When any of the apparatus or system claims of this patent are read to cover a purely software and/or firmware implementation, at least one of the example configuration implementer124, the example workflow manager126, the example security monitor128, the example network monitor130, the example user interface202, the example login manager204, the example profile manager206, the example server manager208, the example monitor manager210, the example report generator212, the example request handler1502, the example profile database1504, the example monitor database1506, the example server database1508, the example knowledge module database1510, the example mapping database1512, the example database updater1514, the example network interface1802, the example server selector1804, the example alarm configuration extractor1806, the example data file converter1808, the example database table maintainer1810, the example data validator1812, and/or the example event logger1814are hereby expressly defined to include a tangible computer readable medium such as a memory, DVD, CD, Blu-ray, etc. storing the software and/or firmware. Further still, the example alarm interfaces116,200, the example alarm linkage databases114,1500, and/or the example alarm catalogers122,1800ofFIGS. 2,15, and/or18may include one or more elements, processes and/or devices in addition to, or instead of, those illustrated inFIGS. 3,15, and/or18, and/or may include more than one of any or all of the illustrated elements, processes and devices.

As mentioned above, the example instructions1400,1700, and/or1900ofFIGS. 14A-14E,17, and/or19may be implemented using coded instructions (e.g., computer readable instructions) stored on a tangible computer readable medium such as a hard disk drive, a flash memory, a read-only memory (ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, a random-access memory (RAM) and/or any other storage medium in which information is stored for any duration (e.g., for extended time periods, permanently, brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term tangible computer readable storage medium is expressly defined to include any type of computer readable storage device or storage disc (e.g., a magnetic storage disc, an optical storage disc) and to exclude propagating signals. Additionally or alternatively, the example processes ofFIGS. 14A-14E,17, and19may be implemented using coded instructions (e.g., computer readable instructions) stored on a non-transitory computer readable medium such as a hard disk drive, a flash memory, a read-only memory, a compact disk, a digital versatile disk, a cache, a random-access memory and/or any other storage media in which information is stored for any duration (e.g., for extended time periods, permanently, brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable storage device or storage disc (e.g., a magnetic storage disc, an optical storage disc) and to exclude propagating signals. As used herein, when the phrase “at least” is used as the transition term in a preamble of a claim, it is open-ended in the same manner as the term “comprising” is open ended. Thus, a claim using “at least” as the transition term in its preamble may include elements in addition to those expressly recited in the claim.

FIG. 20is a block diagram of an example processor platform2000capable of executing the instructions1400,1700, and/or1900ofFIGS. 14A-14E,17, and/or19to implement the alarm linkage databases114,1500ofFIGS. 1and/or15, the alarm interfaces116,200ofFIGS. 1and/or2, and/or the alarm catalogers122,1800ofFIGS. 1and/or18. The processor platform2000can be, for example, a server, a personal computer, or any other type of computing device.

The processor platform2000of the instant example includes a processor2012. For example, the processor2012can be implemented by one or more microprocessors or controllers from any desired family or manufacturer.

The processor2012includes a local memory2013(e.g., a cache) and is in communication with a main memory including a volatile memory2014and a non-volatile memory2016via a bus2018. The volatile memory2014may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of random access memory device. The non-volatile memory2016may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory2014,2016is controlled by a memory controller.

The processor platform2000also includes an interface circuit2020. The interface circuit2020may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.

One or more input devices2022are connected to the interface circuit2020. The input device(s)2022permit a user to enter data and commands into the processor2012. The input device(s) can be implemented by, for example, a keyboard, a mouse, a touchscreen, a track-pad, a trackball, isopoint and/or a voice recognition system.

One or more output devices2024are also connected to the interface circuit2020. The output devices2024can be implemented, for example, by display devices (e.g., a liquid crystal display, a cathode ray tube display (CRT), a printer and/or speakers). The interface circuit2020, thus, typically includes a graphics driver card.

The interface circuit2020also includes a communication device (e.g., the user interface202ofFIG. 2, the request handler1502and/or the database updater1514ofFIG. 15, and/or the network interface1802ofFIG. 18) such as a modem or network interface card to facilitate exchange of data with external computers via a network2026(e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).

The processor platform2000also includes one or more mass storage devices2028for storing software and data. Examples of such mass storage devices2028include floppy disk drives, hard drive disks, compact disk drives and digital versatile disk (DVD) drives. The mass storage device2028may implement the databases1504-1512and/or the event logger1814ofFIGS. 15and/or18.

The coded instructions2032ofFIGS. 14A-14E,17, and/or19may be stored in the mass storage device2028, in the volatile memory2014, in the non-volatile memory2016, and/or on a removable storage medium such as a CD or DVD.

Example systems, methods, and articles of manufacture disclosed herein enable improved user efficiency when managing alarm configurations on servers in a network. Example systems, methods, and articles of manufacture enable such efficiency by assigning group(s) of monitors to group(s) of servers in a network in a few steps. Example systems, methods, and articles of manufacture also provide for more efficient viewing of alarm configurations on multiple servers by organizing monitors, monitor groups, and/or server groups within monitor profiles. Example systems, methods, and articles of manufacture provide a central location for alarm configuration information so that discrepancies between requested alarm configurations and actual alarm configurations can be rapidly identified and corrected, and by providing a single location to reference the alarm configurations.