Electronic monitoring is commonly employed to monitor the state of a system. From computer system performance to home security to automobile engines, electronic monitoring is increasingly employed to generate alerts if the monitored system fails to perform satisfactorily in some manner. Monitoring can be performed on a system-wide basis or on a component of the system. In the following disclosure, system monitoring is discussed although it should be understood that such discussion applies as well to monitoring an individual component since the difference is subjective. That is, a person may consider an object a system by itself, while another may consider the same object a component in a larger system.
One of the most common ways to continuously monitor a system is by periodic sampling. In periodic sampling, the state of the monitored system is sampled on a periodic schedule. In a typical monitoring situation, some predefined alert threshold is specified. If the value of the most recently obtained sample of data exceeds the predefined alert threshold, an alert is generated. If the most recently obtained sample falls below the threshold, no alert is generated.
This method of alert generation is, however, susceptible to transient conditions. For example, if the state of the monitored system swings rapidly above and below the predefined alert threshold every sampling period or every few sampling periods, alerts are alternately sent and suppressed. If the sampling period is relatively high, e.g., many times per second or per minute, the alert signal simply jitters on and off.
The invention relates, in an embodiment, to a method for generating alerts from a periodically sampled system. The method includes maintaining a sampling window having a predefined number of most-recently collected samples. The method further includes calculating an alert value, the alert value representing a ratio of a first value to a total number of samples in the sampling window, the first value representing a total number of samples in the sampling window having parameters exceeding a predefined sample alert threshold. The method additionally includes generating a first alert if the alert value exceeds a predefined alert threshold.
In another embodiment, the invention relates to an article of manufacture comprising a program storage medium having computer readable code embodied therein, the computer readable code being configured to generate alerts from a periodically sampled system. There is included computer readable code for maintaining a sampling window having a predefined number of most-recently collected samples. There is further included computer readable code for calculating an alert value, the alert value representing a ratio of a first value to a total number of samples in the sampling window, the first value representing a total number of samples in the sampling window having parameters exceeding a predefined sample alert threshold. Additionally, there is included computer readable code for generating a first alert if the alert value exceeds a predefined alert threshold.
In yet another embodiment, the invention relates to a method for fine-tuning an alert signal obtained from a periodically sampled system. There is included providing an alert signal generator. The alert signal generator includes first logic for maintaining a sampling window at a constant window size, the sampling window containing most-recently collected samples. The alert signal generator includes second logic for calculating an alert value, the alert value representing a ratio of a first value to a total number of samples in the sampling window, the first value representing a total number of samples in the sampling window having parameters exceeding a sample alert threshold. The alert generator includes third logic for generating a first alert if the alert value exceeds an alert threshold. There is also included providing a control panel having a plurality of user-manipulable controls. The plurality of user-manipulable controls include at least one of a first control for varying the window size, a second control for varying the sample alert threshold, and a third control for varying the alert threshold.
These and other features of the present invention will be described in more detail below in the detailed description of various embodiments the invention and in conjunction with the following figures.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
The present invention will now be described in detail with reference to various embodiments thereof as illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without some or all of these specific details. In other instances, well known process steps and/or structures have not been described in detail in order to not unnecessarily obscure the present invention.
Various embodiments are described hereinbelow, including methods and techniques. It should be kept in mind that the invention may also cover articles of manufacture that includes a computer readable medium on which computer-readable instructions for carrying out embodiments of the inventive technique are stored. The computer readable medium may include, for example, semiconductor, magnetic, opto-magnetic, optical, or other forms of computer readable medium for storing computer readable code. Further, the invention may also cover apparatuses for practicing embodiments of the invention. Such apparatus may include circuits, dedicated and/or programmable, to carry out tasks pertaining to embodiments of the invention. Examples of such apparatus include a general purpose computer and/or a dedicated computing device when appropriately programmed and may include a combination of a computer/computing device and dedicated/programmable circuits adapted for the various tasks pertaining to embodiments of the invention.
In accordance with embodiments of the present invention, there is provided a technique for substantially eliminating alert jitters due to transient conditions in the periodically sampled monitored system. Embodiments of the invention provide a persistent sliding window having a predefined number of most-recently collected samples. The predefined number of most-recently collected samples may be predefined by the system or may be definable by the user.
As a sample is collected, this most-recently collected sample is added to the sliding window, and the oldest sample in the sliding window is discarded. Thus, the size of the sliding window remains constant despite the fact that its membership changes as the samples are collected.
Periodically or upon the collection of a new sample, an alert value is calculated. This alert value calculation may be explained using an example. Suppose there are ten samples in the sliding window. As new samples are collected, they are added to the sliding window and the oldest samples are discarded, thereby keeping the sliding window membership at 10.
Suppose each sample contains a parameter having a value between 0 and 1, with 0.5 representing the predefined sample alert threshold (SAT). The predefined sample alert threshold (SAT) represents a system-defined or user-definable value that is employed to ascertain whether a sample collected reflects an event that potentially raises an alert or is simply a normal state of operation. In the case where the predefined SAT is 0.5, if a sample parameter is greater than 0.5, that sample is deemed a potential alert-causing sample (PACS). The borderline case wherein the sampled parameter is equal to the SAT (e.g., 0.5 in the current example), the sample may be deemed a PACS or a non-PACS, depending on how the alert generating algorithm is configured.
The calculated alert value (CAV) represents the ratio of PACS to the total number of samples in the sliding window. If there are four samples whose parameters exceed the predefined SAT value of 0.5, the number of PACS will be 4. In this case, the calculated alert value will be 4 divided by 10 or 40%.
Furthermore, there is provided a predefined alert threshold (AT), which may be a system-defined or a user-definable value. If the calculated alert value (CAV) exceeds the predefined alert threshold (AT), an alert is generated. On the other hand, if the CAV is below the predefined alert threshold (AT), the alert is not generated. In the borderline case wherein the CAV equals the predefined alert threshold (AT), an alert may be generated or may be suppressed depending on how the alert generating algorithm is configured.
Since the alert is generated based on the calculated alert value associated with the sliding window instead of being based solely on the value of the most recently collected sample, jitters in the alert signal are substantially eliminated. Further, the user may be furnished with controls in some embodiments to tune the alerting system to generate alerts based on user-specified thresholds. These controls may be furnished on a computer screen as part of a control panel to allow the user to fine-tune the alert signal, for example. As an example, if jitter is deemed excessive in the alert signal received, the user may increase the number of samples in the sliding window, thereby lessening the impact of transients. As another example, if additional sensitivity is desired, the user may decrease the number of samples in the sliding window and/or lowering the sample alert threshold (SAT) and/or lowering the predefined alert threshold (AT). One skilled in the art would readily appreciate that providing these user controls to allow the user to fine-tune the sliding window-based alert signal represents a level of refinement not available in the prior art.
The features and advantages of the present invention may be better understood with reference to the figures and drawings below. Suppose an internet merchant wishes to be alerted if the time it takes to serve up a webpage from his internet merchandising server is greater than 10 seconds. In
In
In this case, the calculated alert value (CAV) is ⅖ or 40% since two out of the five samples in the sliding window exceed the predefined sample alert threshold (SAT). If the predefined alert threshold is 50%, i.e., the CAV needs to be 50% or higher to generate an alert, no alert would be generated in the case of
In
In
In an embodiment, a notification may be generated if the monitored system moves from an alert state (such as in
In
In
In
In an embodiment, a new alert is furnished to the user when moving from the alert state of
In
In
In an embodiment, the calculated alert value is not computed until the sliding window is filled up. In the context of the current example, no calculation would be done until at least five samples are collected. In another embodiment, calculation is performed with the uncollected samples counted as “non-alert” samples. Thus, if only three samples are collected and all exceed the predefined sample alert threshold (SAT), an alert would be generated since the predefined alert threshold (AT) of 50% would have been exceeded irrespective whether the last two samples of the sliding window, which are yet to be collected at that point, turn out to be “non-alert” samples or “alert” samples.
In step 906, the calculated alert value (CAV) is compared against a predefined alert threshold (AT). If the calculated alert value (CAV) exceeds the predefined alert threshold (AT), an alert is generated (step 908). The method returns from step 908 to step 902 wherein the sliding window membership is changed when a new sample is collected. On the other hand, if the calculated alert value (CAV) is below the predefined alert threshold (AT), the method returns from step 906 to step 902 wherein the sliding window membership is changed when a new sample is collected.
In an embodiment, the sliding window alarming technique is employed as a part of an Internet Service monitoring system, such as the OpenView Internet Services™ or OVIS™ product from the Hewlett-Packard Company of Palo Alto, Calif. The sample may be obtained by periodically sending a synthetic transaction from probes to a target. The probe may create a HTTP request, which is then sent to the HTTP server. The manner in which the server responds to the probe's request may be used to calculate a variety of metrics, such as server availability and server response time.
Table 1 shows, in an embodiment of the present invention, the various probes that may be employed in such an Internet service monitoring system.
Table 2 shows, in an embodiment of the present invention, the various metrics that may be measured from the server's response to the request sent via the probe.
Table 3 shows, in an implementation of the present invention, various probe types and associated metrics that may be collected along with their descriptions.
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
OFFER_TIME - Metric 1 - Time to first offer
LEASE_TIME - Metric 2 - Time to lease offered
TRANSFER_TIME - Metric 5 - Time to complete
TRANS_BYTES - Metric 6 - The number of bytes
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Time taken to establish PPP
RAS_CONNECT_STATUS - Metric 1 - Error
BAUD_RATE - Metric 2 - Baud Rate - Transfer
TOTAL_CONNECTION_TIME - Metric 3 - Total
TERMINATION_STATUS - Metric 4 - True (1)
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Execution time of the query
ANSWER_DNS - Metric 1 - Answer DNS is set to
AVAILABILITY - If a measurement could not be
SETUP_TIME - Time to log in to the Exchange
RESPONSE_TIME - Total response time of the
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time of the
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT_TIME - Metric 2 - Time to perform
SERVER_RESP_TIME - Metric 3 - Time it takes
AUTH_TIME - Metric 4 - Time to authenticate
PORT_TIME - Metric 5 - Time to send the client
TRANSFER_TIME - Metric 6 - Overall time to
DATA_TRANS_BYTES - Metric 7 - The number
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT_TIME - Metric 2 - Time to connect to
SERVER_RESP_TIME - Metric 3 - Time it takes
TRANSFER_TIME - Metric 4 - Time it took to
TRANS_BYTES - Metric 5 - The number of bytes
HTTP_STATUS - Metric 6 - HTTP/S status code
REQUESTS - Metric 7 - Number of HTTP/S
BROKEN_LINKS - Metric 8 - Number of
AVAILABILITY - If a measurement could not be
RESPONSE_TIME -
SETUP_TIME -
TRANSFER_TPUT -
DNS_SETUP_TIME - Metric 1 -
CONNECT_TIME - Metric 2 -
SERVER_RESP_TIME - Metric 3 -
TRANSFER_TIME - Metric 4 -
TRANSFER_BYTES - Metric 5 -
HTTP_STATUS - Metric 6 -
REQUESTS - Metric 7 -
BROKEN_LINKS - Metric 8 -
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Response time is the
TRANSFER_TPUT - Transfer bytes/Transfer
MIN_RESPONSE - Metric 1 - Minimum
MAX_RESPONSE - Metric 2 - Maximum
PACKET_LOSS - Metric 3 - Number of packets
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP
—
TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT_TIME - Metric 2 - Time to connect to
SERVER_RESP_TIME - Metric 3 - Time for
AUTH_TIME - Metric 4 - Time to authenticate
TRANSFER_TIME - Metric 5 - Overall time it
DATA_TRANS_BYTES - Metric 6 - The number
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
NUM_ENTRIES - Metric 2 - Number of returned
CONNECT_TIME - Metric 3 - Time to connect to
TRANSFER_TIME - Metric 4 - Overall time it
TRANS_BYTES - Metric 5 - The number of bytes
AVAILABILITY - If a measurement could not be
SETUP_TIME - Time to resolve address and
RESPONSE_TIME - Total response time for the
TRANSFER_TPUT - Transfer bytes/Transfer
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT_TIME - Metric 2 - Time to connect to
SERVER_RESP_TIME - Metric 3 - Overall time
AUTH_TIME - Metric 4 - Time to authenticate
GROUP_TIME - Metric 5 - Time to select
READ_TIME - Metric 6 - Time to read articles
TEAR_DOWN_TIME - Metric 7 - Overall time to
DATA_TRANS_TIME - Metric 8 - The number of
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DATA_TRANS_BYTES - Metric 5 - The number
TRANSFER_TIME - Metric 6 - Overall time it
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to setup database
TRANSFER_TPUT - Transfer bytes/Transfer
CONNECT_TIME - Metric 1 - Time to connect to
SERVER_RESP_TIME - Metric 2 - Time to
TRANSFER_TIME - Metric 3 - Overall time it
DATA_TRANS_BYTES - Metric 4 - The number
AVAILABILITY - WEBAPP service type only The
RESPONSE_TIME - The average response time
TRANSACTION_RATE - Metric 1 - Total number
RESPONSE_TIME_VIOLATION_COUNT -
Metric 2 - Number of
RESPONSE_TIME_VIOLATION_PERCENTAGE
TRANSACTION_SIZE - Metric 4 - WEBAPP
FAILED_TRANSACTION_RATE - Metric 5 -
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT TIME - Metric 2 - Time to connect to
SERVER_RESP_TIME - Metric 3 - Time it takes
AUTH_TIME - Metric 4 - Time to authenticate
TRANSFER_TIME - Metric 5 - Overall time to
DATA_TRANS_BYTES - Metric 6 - The number
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
TRANSFER_TIME - Metric 4 - Overall time it
DATA_TRANS_BYTES - Metric 5 - The number
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to get a successful
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total time running the script
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT_TIME - Metric 2 - Time to connect to
SERVER_RESP_TIME - Metric 3 - Time it takes
TRANSFER_TIME - Metric 4 - Overall time to
TRANS_BYTES - Metric 5 - The number of bytes
TEAR_DOWN_TIME - Metric 6 - Overall time to
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP
—
TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT_TIME - Metric 2 - Time to connect to
SERVER_RESP_TIME - Metric 3 - Time it takes
TRANSFER_TIME - Metric 4 - Time it took to
TRANS_BYTES - Metric 5 - The number of bytes
HTTP_STATUS - Metric 6 - HTTP/S status code
REQUESTS - Metric 7 - Number of HTTP
BROKEN_LINKS - Metric 8 - Number of
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP_TIME - Time to resolve address
TRANSFER_TPUT -The average bandwidth used
CONNECT_TIME - Metric 1 - The time to
SERVER_RESP_TIME - Metric 2 - The time it
TRANSFER_TIME - Metric 3 - The time it takes
PACKETS_RECEIVED - Metric 4 - Total number
PACKET_LOSS - Metric 5 - The percentage of
LATENCY - Metric 6 - The latency in data
CONGESTION - Metric 7 - The percentage of
STREAM_SETUP_TIME - Metric 8 - The initial
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
SETUP
—
TIME - Time to resolve address and
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
CONNECT
—
TIME - Metric 2 - Time to perform
AVAILABILITY - If a measurement could not be
RESPONSE_TIME - Total response time for the
TRANSFER_TPUT - Transfer bytes/Transfer
DNS_SETUP_TIME - Metric 1 - Time to resolve
TRANSFER_TIME - Metric 4 - Overall time it
TRANS_BYTES - Metric 5 - The number of bytes
While this invention has been described in terms of several embodiments, there are alterations, permutations, and equivalents which fall within the scope of this invention. It should also be noted that there are many alternative ways of implementing the methods and apparatuses of the present invention. It is therefore intended that the following appended claims be interpreted as including all such alterations, permutations, and equivalents as fall within the true spirit and scope of the present invention.
| Number | Name | Date | Kind |
|---|---|---|---|
| 3312969 | Halsted | Apr 1967 | A |
| 3505649 | Evans | Apr 1970 | A |
| 3797014 | Tompkins et al. | Mar 1974 | A |
| 4517554 | Moser et al. | May 1985 | A |
| 5260687 | Yamauchi et al. | Nov 1993 | A |
| 5293323 | Doskocil et al. | Mar 1994 | A |
| 5609156 | Keith et al. | Mar 1997 | A |
| 5724362 | Lau | Mar 1998 | A |
| 5852793 | Board et al. | Dec 1998 | A |
| 6098195 | Northcott | Aug 2000 | A |
| 6182022 | Mayle et al. | Jan 2001 | B1 |
| 6424930 | Wood | Jul 2002 | B1 |
| 6510509 | Chopra et al. | Jan 2003 | B1 |
| 6633834 | Conrad et al. | Oct 2003 | B2 |
| 6732063 | Famili et al. | May 2004 | B2 |
| Number | Date | Country | |
|---|---|---|---|
| 20050197792 A1 | Sep 2005 | US |