Efficient reporting of system resource health status

Techniques for efficient reporting of a health status of a system resource are disclosed. In some embodiments, a computer system performs a method comprising: computing a connection failure rate value of a resource based on connection failure rate data indicating a rate at which requests to connect to the resource failed; computing an operation failure rate value of the resource based on operation failure rate data indicating a rate at which requests for the resource to execute a resource operation failed; determining that the connection failure rate value satisfies a connection failure condition or the operation failure rate value satisfies an operation failure condition; based on the determining that the connection failure rate value or the operation failure rate value satisfies its respective failure condition, attempting to establish a connection to the resource; and determining a status of the resource based on the attempting to establish the connection.

BACKGROUND

A system resource may be any physical or virtual component of a computer system. The health status of a system resource can change from moment to moment. Sometimes the health status of a system resource is up, meaning that the system resource is available for use, and sometimes the health status of a system resource is down, meaning that the system resource is not available for use, such as when a system crashes or power outage occurs.

DETAILED DESCRIPTION

Example methods and systems for efficiently reporting a health status of a system resource are disclosed. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of example embodiments. It will be evident, however, to one skilled in the art that the present embodiments can be practiced without these specific details.

One way to determine a health status of a system resource is to, in response to receiving a request for the health status of the system resource, attempt to establish a connection with the system resource and then, if the connection with the system resource is established, request that a resource operation of the system resource be executed by the system resource. If a failure occurs in either establishing a connection with the system resource or in executing the resource operation, then the health status of the system resource may be determined to be a down status, indicating that the system resource is not available for use. Otherwise, if a connection is successfully established with the system resource and the requested resource operation is successfully executed, then the health status of the system may be determined to be an up status, indicating that the system resource is available for use.

Technical problems arise when using the approach discussed above. First, the above-discussed approach results in an excessive consumption of electronic resources. For example, establishing a connection with the system resource every time that a health status is requested involves the consumption of a significant amount of network bandwidth, especially when the health status is frequently requested. Similarly, executing a resource operation every time that a health status is requested significantly increases the workload of the system resource, especially when the health statis is frequently requested.

Second, the above-discussed approach is vulnerable to making inaccurate determinations regarding the health status of the system resource. For example, the attributes of the resource operation being requested are fixed and as simple as possible, thereby not accurately reflecting the actual specific real-world workload demands on the system resource. Additionally, a single resource operation request that results in a successful execution may lead to an inaccurate determination that the health status of the system resource is up, since several other resource operation requests submitted around the same time as the single resource operation request may result in a failed execution.

As a result of using the above-discussed approach, the functioning of the computer system employing this approach, as well as the system resource and its associated components, suffers. In addition to the issues discussed above, other technical problems may arise as well.

The implementation of the features disclosed herein involves a non-generic, unconventional, and non-routine operation or combination of operations. By applying one or more of the solutions disclosed herein, some technical effects of the system and method of the present disclosure are to provide efficient reporting of a health status of a system resource. In some example embodiments, a computer system computes a connection failure rate value of a system resource for a period of time based on a set of connection failure rate data, where the set of connection failure rate data indicates a rate at which requests to connect to the system resource failed during the period of time, and also computed an operation failure rate value of the system resource for the period of time based on a set of operation failure rate data, where the set of connection failure rate data indicates a rate at which requests for the system resource to execute a resource operation failed during the period of time. The computer system may determine a status of the system resource based on the connection failure rate value and the operation failure rate value. For example, if the connection failure rate value does not satisfy a connection failure condition (e.g., the connection failure rate value is below a connection failure threshold value) and the operation failure rate value does not satisfy an operation failure condition (e.g., the operation failure rate value is below an operation failure threshold value), then the computer system may determine that the status of the system resource is an up status without having to establish a connection with the system resource and request that a resource operation be executed by the system resource in order to make a status determination.

By using a set of connection failure rate data indicating a rate at which requests to connect to the system resource failed during the period of time and a set of connection failure rate data indicating a rate at which requests for the system resource to execute a resource operation failed during the period of time, the computer system is able determine the status of the system resource efficiently and effectively, avoiding excessive consumption of electronic resources associated with establishing a connection and requesting the execution of a resource operation, as well as accurately reflecting the actual specific real-world workload demands on the system resource over a period of time rather than basing the status determination on a single fixed request for the execution of a resource operation. Other technical effects will be apparent from this disclosure as well.

The methods or embodiments disclosed herein may be implemented as a computer system having one or more modules (e.g., hardware modules or software modules). Such modules may be executed by one or more hardware processors of the computer system. In some example embodiments, a non-transitory machine-readable storage device can store a set of instructions that, when executed by at least one processor, causes the at least one processor to perform the operations and method steps discussed within the present disclosure.

The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and benefits of the subject matter described herein will be apparent from the description and drawings, and from the claims.

FIG.1is an example network diagram illustrating a system100. A platform (e.g., machines and software), in the example form of an enterprise application platform112, provides server-side functionality, via a network114(e.g., the Internet) to one or more clients.FIG.1illustrates, for example, a client machine116with programmatic client118(e.g., a browser), a small device client machine122with a small device web client120(e.g., a browser without a script engine), and a client/server machine117with a programmatic client119.

Turning specifically to the enterprise application platform112, web servers124and Application Program Interface (API) servers125can be coupled to, and provide web and programmatic interfaces to, application servers126. The application servers126can be, in turn, coupled to one or more database servers128that facilitate access to one or more databases130. The web servers124, API servers125, application servers126, and database servers128can host cross-functional services132. The cross-functional services132can include relational database modules to provide support services for access to the database(s)130, which includes a user interface library136. The application servers126can further host domain applications134. The web servers124and the API servers125may be combined.

The cross-functional services132provide services to users and processes that utilize the enterprise application platform112. For instance, the cross-functional services132can provide portal services (e.g., web services), database services, and connectivity to the domain applications134for users that operate the client machine116, the client/server machine117, and the small device client machine122. In addition, the cross-functional services132can provide an environment for delivering enhancements to existing applications and for integrating third-party and legacy applications with existing cross-functional services132and domain applications134. In some example embodiments, the system100comprises a client-server system that employs a client-server architecture, as shown inFIG.1. However, the embodiments of the present disclosure are, of course, not limited to a client-server architecture, and could equally well find application in a distributed, or peer-to-peer, architecture system.

FIG.2is a block diagram illustrating an example health reporting system200. The components shown inFIG.2may be configured to communicate with each other via one or more network connections. In some example embodiments, the health reporting system200comprises any combination of one or more of a health monitor210, a monitored connection pool220, and a health indicator230. One or more of the components of the health reporting system200may be implemented by the enterprise application platform112ofFIG.1. For example, the health monitor210, the monitored connection pool220, and the health indicator230may be incorporated into the application server(s)126or the database servers128. However, the health reporting system200may be implemented in other ways as well.

The health reporting system200may be configured to proactively monitor the usage of a system resource250in a given time period (e.g., a given time window). In some example embodiments, the system resource250comprises a database. However, other types of system resources250are also within the scope of the present disclosure, such as any physical or virtual component of a computer system. The system resource250may be configured to perform one or more resource operations. For example, if the system resource250comprises a database, then the system resource250may be configured to execute database operations, such as operations based on structured query language (SQL) statements. The system resource250may comprise a system resource250of a microservice architecture. A microservice architecture is a variant of the service-oriented architecture structural style in which an application is arranged as a collection of loosely coupled services. The system resource250may comprise a system resource250of another type of service-oriented architecture as well.

The system resource250may be used by one or more client devices270(e.g., client machine116or122inFIG.1). Each client device270may submit a request to a domain logic260. The domain logic260may comprise a part of a program that encodes the real-world rules that determine how data can be created, stored, and changed with respect to the system resource250. The domain logic260may manage communication between the client device270and the system resource250.

In some example embodiments, the health reporting system200is configured to determine the status of the system resource250based on connection failure rate data corresponding to a period of time and operation failure rate data corresponding to the same period of time. The connection failure rate data may indicate a rate at which requests to connect to the system resource250failed during the period of time, while the operation failure rate data may indicate a rate at which requests for the system resource250to execute a resource operation failed during the period of time. For example, the connection failure rate data may comprise a total count of requests to connect to the system resource250that have been received during the period of time and a total count of those connection requests that have failed to connect to the system resource250, and the operation failure rate data may comprise a total count of requests for a resource operation to be executed by the system resource250that have been received during the period of time and a total count of those operation requests that have failed. The health reporting system200may determine that an operation request has failed based on a determination that an exception has been raised that prevents or terminates the execution of the requested resource operation or a determination that there has been a failure to execute the requested resource operation within a threshold amount of time.

In some example embodiments, the health reporting system200may store the connection failure rate data and the operation failure rate data for subsequent use in determining the status of the system resource250. For example, the health monitor210may work with the monitored connection pool220to store the connection failure rate data and the operation failure rate data. The monitored connection pool220may monitor a connection pool for the system resource250. A connection pool is a cache of connections to a system resource and is maintained so that the connections can be reused when future requests to the system resource are required. Connection pools are used to enhance the performance of executing commands on the system resource250. After a connection is created between a device (e.g., the client device270) and the system resource250, the created connection is placed in the connection pool and it is used again so that a new connection does not have to be established between the device and the system resource250.

In some example embodiments, the monitored connection pool220monitors if a connection to the system resource250can be obtained by a device that is requesting the connection (e.g., the client device270), and reports an error to the health monitor210if a connection to the system resource250cannot be obtained. The monitored connection pool220may also monitor connections that have been established between the system resource250and devices, and report any error associated with the connections to the health monitor210. For example, the monitored connection pool220may detect and report to the health monitor210any exceptions or other types of errors that have been raised in association with any of the connections to the system resource250. An exception is an anomalous or exceptional condition, during the execution of a program, that requires special processing, such as the unavailability of a resource. A connection that is returned from the connection pool to the domain logic260may comprise a wrapper of the original connection from the connection pool. When there is an exception thrown, the wrapper may report the error immediately to the health monitor210and rethrow the exception to the client device270or another caller device. The monitored connection pool220may determine the total count of connection requests that have failed to connect to the system resource250by maintaining a count of the exceptions that are thrown in response to a failed attempt to establish a connection with the system resource250.

In some example embodiments, the health monitor210maintains the statistical data about the errors reported from the monitored connection pool220. The statistical data may be composed of N slices of statistical data, where N is a positive integer. Each slice of the statistical data is an aggregated result of the errors reported from the monitored connection pool220in a fixed interval (e.g., in a fixed interval of one second). In the fixed interval, the connection failure rate data and the operation failure rate data may be aggregated. The connection failure rate data may comprise the total count of requests to obtain a connection with the system resource250and the total count of those requests that failed to obtain a connection with the system resource250. The operation failure rate data may comprise the total count of requests of resource operations submitted to the system resource250and the total count of those requested resource operations that failed to be successfully executed (e.g., total count of exceptions that were raised when the requested resource operations were submitted and applied).

In some example embodiments, the health monitor210may maintain the connection failure rate data and the operation failure rate data in a data structure, such as shown below:

The health monitor210may create a ring buffer to host the N slices of the aggregated connection failure rate data and operation failure rate data. A ring buffer is a data structure that uses a single fixed-size buffer as if it were connected end-to-end. In some example embodiments, the ring buffer always keep the latest data in the most recent N intervals.

FIG.3illustrates an example ring buffer310at different times. In the example shown inFIG.3, the ring buffer310comprises ten positions, with each position configured to store a slice of the aggregated connection failure rate data and operation failure rate data. The ring buffer310is shown at time (T)=0, T=2, T=9, and T=10. The ring buffer310comprises a head pointer320and a tail pointer330.

In some example embodiments, the following operational flow may be used to manage the ring buffer:1. The health monitor210creates an array of IntervalData with its length=N, such as IntervalData[ ] ring=new IntervalData[N].2. Initialize two pointers Head=1 and Tail=1.3. When there is a new report from the monitored connection pool220, get the IntervalData[Head], and update the data of IntervalData[Head].

The ring buffer may employ the following task to update the head pointer320and the tail pointer330, with the task being scheduled repeatedly:a. Let Head=(Head+1) mod N.b. If Head=Tail, Let Tail=(Tail+1) mod N.

In the example shown inFIG.3, at T=0, the head pointer320and the tail pointer330are at position 1 of the ring buffer, with positions 2-10 of the ring buffer310being empty (e.g., not filled in with any of the aggregated connection failure rate data and operation failure rate data). At T=2, the head pointer320has moved to position 3 and the tail pointer330has remained at position 1, with positions 1 and 2 of the ring buffer310having been filled in with the aggregated connection failure rate data and operation failure rate data, and positions 4-10 of the ring buffer310being empty. At T=9, the head pointer320has moved to position 10 and the tail pointer330has remained at position 1, with positions 1 to 9 of the ring buffer310having been filled in with the aggregated connection failure rate data and operation failure rate data. At T=10, the tail pointer330has moved to position 2, since the head pointer320has moved back to position 1, and all of the positions of the ring buffer310have been filled in with the aggregated connection failure rate data and operation failure rate data.

It is contemplated that other implementations of the ring buffer310may be employed by the health monitor210. Furthermore, the health monitor210may use other types of data structures or other types of data storage techniques to store or otherwise manage the aggregated connection failure rate data and operation failure rate data.

In some example embodiments, the health monitor210can evaluate the health status of the system resource250at any time based on the aggregated connection failure rate data and operation failure rate data. The health monitor210may evaluate the status of the system resource250based on a request from a system monitor240. A system monitor240is a hardware or software component used to monitor system resources and performance in a computer system. A system resource may comprise any physical or virtual component within a computer system. The system monitor240may transmit a request for the status of the system resource250to the health indicator230, which may communicate with the health monitor210to determine the status of the system resource250. Once the status of the system resource250is determined, the health indicator230may transmit the status of the system resource250to the system monitor250. It is contemplated that the status of the system resource250may be requested by or transmitted to other types of hardware or software components other than the system monitor240.

Before evaluating the health status of the system resource250, the health monitor210may first determine if there is enough aggregated data to evaluate the health status of the system resource250. It is normal for some system resources250to have little traffic or even no traffic at all during a specific period of time. As a result, for these time periods, there may be few or no aggregated data in the ring buffer310. In some example embodiments, the health monitor210may employ a connection data threshold value (Tr) for the requests to obtain a connection with the system resource250and an operation data threshold value (To) for the requested resource operations submitted to system resource250to determine how to compute the status of the system resource250. For example, the health monitor210may condition the use of the aggregated connection failure rate data and operation failure rate determining the status of the system resource250on both of the following conditions being satisfied:

∑i=TailHeadCri<Tr⁢and⁢∑i=TailHeadOri<To,
where Criis the total count of requests to connect to the system resource250and Oriis total count of requests for a resource operation to be executed by the system resource250.

When both of the above conditions are satisfied, the health monitor210may use the aggregated connection failure rate data and operation failure rate in determining the status of the system resource250. Otherwise, the health monitor210may report an error to the health indicator230to indicate that there is not enough aggregated data to provide a report. If the health monitor210reports an error, then the health indicator230may attempt to obtain a connection with the system resource250and submit a request to the system resource250to execute a resource operation in order to check the status of the system resource250. If the two conditions above are satisfied, then the health monitor210may determine the status of the system resource250based on a computed connection failure rate value of the system resource250for a period of time based on the connection failure rate data corresponding to the period of time and on a computed operation failure rate value of the system resource250for the period of time based on the operation failure rate data corresponding to the period of time. In computing the connection failure rate value and the operation failure rate value, the health monitor210may weight each corresponding connection failure rate data and each corresponding operation failure rate data, respectively, based on its time interval, where the weighting of each corresponding failure rate data is applied in direct proportion to a level of recency of the corresponding time interval, such that the failure rate data of the most recent time interval is given the highest weight, the failure rate data of the second most recent time interval is given the second highest weight, and so on and so forth until the failure rate data of the least recent time interval, which is given the least weight in the computation of the respective failure rate value.

The health monitor210may determine if the connection failure rate value satisfies a connection failure condition or if the operation failure rate value satisfies an operation failure condition. For example, the health monitor210may determine whether the connection failure rate value is equal to or greater than a threshold value for the connection failure condition and whether the operation failure rate value is equal to or greater than a threshold value for the operation failure condition. If neither the connection failure rate value nor the operation failure rate value satisfies their respective failure conditions, then the health monitor210may determine that the status of the system resource250is an up status. If either the connection failure rate value or the operation failure rate value satisfies their respective failure conditions, then the health monitor210may instruct the health indicator230to determine the status of the system resource250by attempting to obtain a connection with the system resource250and submitting a request for the system resource250to execute a resource operation.

FIG.4is a flowchart illustrating an example method400of efficiently reporting a health status of a system resource. The method400can be performed by processing logic that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device), or a combination thereof. In one example embodiment, one or more of the operations of the method400are performed by the health reporting system200ofFIG.2or any combination of one or more of its components (e.g., the health indicator210, the health monitor220, the monitored connection pool230).

At operation402, the health reporting system200may store connection failure rate data corresponding to a period of time and operation failure rate data corresponding to the period of time. In some example embodiments, the connection failure rate data indicates a rate at which requests to connect to a system resource250failed during the period of time, and the operation failure rate data indicates a rate at which requests for the system resource250to execute a resource operation failed during the period of time. For example, the connection failure rate data may comprise a total count of requests to connect to the system resource250that have been received during the period of time and a total count of those connection requests that have failed to connect to the system resource250, and the operation failure rate data may comprise a total count of requests for a resource operation to be executed by the system resource250that have been received during the period of time and a total count of those operation requests that have failed (e.g., an exception is raised that prevents or terminates the execution of the requested resource operation, failure to execute the requested resource operation within a threshold amount of time).

In some example embodiments, the connection failure rate data and the operation failure rate data are stored in a ring buffer. However, the connection failure rate data and the operation failure rate data may be stored using other types of data structures and data storage techniques. The connection failure rate data may comprise a corresponding connection failure rate data for each time interval of a plurality of time intervals of the period of time, and the operation failure rate data may comprise a corresponding operation failure rate data for each time interval of the plurality of time intervals of the period of time. For example, the period of time may comprise a total of ten time intervals, with each of the ten time intervals being one second in duration. In this example, the connection failure rate data may comprise a corresponding connection failure rate data for each one second time interval, such that ten distinct instances of connection failure rate data are stored in association with their corresponding time intervals of the period of time. Similarly, the operation failure rate data may comprise a corresponding operation failure rate data for each one second time interval, such that ten distinct instances of operation failure rate data are stored in associated with their corresponding time intervals of the period of time.

In some example embodiments, the system resource250comprises a database. However, other types of system resources250are also within the scope of the present disclosure, such as any physical or virtual component of a computer system. The system resource may comprise a system resource250of a microservice architecture. However, the system resource may comprise a system resource250of another type of service-oriented architecture.

The health reporting system200may, at operation404, compute a connection failure rate value of the system resource250for the period of time based on the set of connection failure rate data. The computing of the connection failure rate value of the system resource250for the period of time may comprise accessing the set of connection failure rate data stored in the ring buffer. However, the computing of the connection failure rate value may include obtaining the connection failure rate data in other ways as well. In some example embodiments, the computing of the connection failure rate value of the system resource250for the period of time comprises weighting each corresponding connection failure rate data based on its time interval, where the weighting of each corresponding connection failure rate data is applied in direct proportion to a level of recency of the corresponding time interval, such that the connection failure rate data of the most recent time interval is given the highest weight, the connection failure rate data of the second most recent time interval is given the second highest weight, and so on and so forth until the connection failure rate data of the least recent time interval, which is given the least weight in the computation of the connection failure rate value.

The health reporting system200may compute an operation failure rate value of the system resource250for the period of time based on the set of operation failure rate data, at operation406. The computing of the operation failure rate value of the system resource250for the period of time may comprise accessing the set of operation failure rate data stored in the ring buffer. However, the computing of the operation failure rate value may include obtaining the operation failure rate data in other ways as well. In some example embodiments, the computing of the operation failure rate value of the system resource250for the period of time comprises weighting each corresponding operation failure rate data based on its time interval, where the weighting of each corresponding operation failure rate data is applied in direct proportion to the level of recency of the corresponding time interval, such that the operation failure rate data of the most recent time interval is given the highest weight, the operation failure rate data of the second most recent time interval is given the second highest weight, and so on and so forth until the operation failure rate data of the least recent time interval, which is given the least weight in the computation of the operation failure rate value.

At operation408, the health reporting system200may determine whether the connection failure rate value satisfies a connection failure condition or the operation failure rate value satisfies an operation failure condition. The connection failure condition and the operation failure condition may each comprise a corresponding threshold value to be equaled or exceeded by the connection failure rate value and the operation failure rate value, respectively, in order to be satisfied.

If, at operation408, the health reporting system200determines that the connection failure rate value does not satisfy the connection failure condition and the operation failure rate value does not satisfy the operation failure condition, then the health reporting system200may determine that a status of the system resource250is an up status, at operation410, in response to, or otherwise based on, the determining that the connection failure rate value does not satisfy the connection failure condition and the operation failure rate value does not satisfy the operation failure condition.

Next, the health reporting system200may, at operation412, transmit the status of the system resource250to a hardware or software component in response to, or otherwise based on, the determining of the status of the system resource at operation410. In some example embodiments, the hardware or software component comprises a system monitor240. However, other types of hardware or software components are also within the scope of the present disclosure.

If, at operation408, the health reporting system200determines that the connection failure rate value satisfies the connection failure condition or that the operation failure rate value satisfies the operation failure condition, then the health reporting system200may attempt to establish a connection to the system resource250, at operation414. For example, at operation414, the health reporting system200may submit a request to connect to a database or some other type of system resource250.

At operation416, the health reporting system200may then determine whether the requested connection to the system resource250was established. If, at operation416, the health reporting system200determines that the requested connection to the system resource250failed to be established, then the health reporting system200may determine that the status of the system resource250is a down status (e.g., unavailable for use), at operation418, in response to, or otherwise based on, the determining that the connection to the system resource250failed to be established.

If, at operation416, the health reporting system200determines that the requested connection to the system resource250was established, then the health reporting system200may transmit, to the system resource250, a request to execute a resource operation of the system resource250, at operation420, in response to, or otherwise based on, the determining that the connection to the system resource250was established. The resource operation may comprise any operation that the system resource250performs as a service. In one example in which the system resource250comprises a database, the resource operation may comprise a query of the database. Other types of resource operations are also within the scope of the present disclosure.

The health reporting system200may, at operation422, determine the status of the system resource250based on the transmitting of the request to execute the resource operation, such as by determining whether the requested resource operation successfully executed or failed to execute. If, at operation422, the health reporting system200determines that the requested resource operation was successfully executed by the system resource250, then the health reporting system200may determine that the status of the system resource250is an up status, at operation410, in response to, or otherwise based on, the determining that the requested resource operation was successfully executed by the system resource250. The health reporting system200may then transmit the status of the system resource250to the hardware or software component, at operation412, in response to, or otherwise based on, the determining that the status of the system resource250is an up status at operation410.

If, at operation422, the health reporting system200determines that the requested resource operation failed to successfully execute, then the health reporting system200may determine that the status of the system resource250is a down status, at operation418, in response to, or otherwise based on, the determining that the requested resource operation failed to successfully execute. The health reporting system200may then transmit the status of the system resource to the hardware or software component, at operation412, in response to, or otherwise based on, the determining that the status of the system resource250is a down status at operation418.

FIG.5is a flowchart illustrating another example method500of efficiently reporting a health status of a system resource. The method500can be performed by processing logic that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device), or a combination thereof. In one example embodiment, one or more of the operations of the method500are performed by the health reporting system200ofFIG.2or any combination of one or more of its components (e.g., the health indicator210, the health monitor220, the monitored connection pool230). The method500may include operation501being performed prior to operations404and414of the method400.

At operation501, the health reporting system200may determine whether an amount of connection failure rate data for the period of time is below a connection data threshold value or an amount of operation failure rate data for the period of time is below an operation data threshold value. If the health reporting system200determines that the amount of connection failure rate data for the period of time is below the connection data threshold value or that the amount of operation failure rate data for the period of time is below the operation data threshold value, then the health reporting system200may proceed to operation414, where the health reporting system200may attempt to establish a connection to the system resource250, and then proceed with the flow of operations of the method400. If the health reporting system200determines that the amount of connection failure rate data for the period of time is not below the connection data threshold value and that the amount of operation failure rate data for the period of time is not below the operation data threshold value, then the health reporting system200may proceed to operation404, where the health reporting system200computes the connection failure rate value of the system resource250for the period of time based on the connection failure rate data, and then proceed with the flow of operations of the method400.

Example 1 includes a computer-implemented method performed by a computer system having a memory and at least one hardware processor, the computer-implemented method comprising: computing a first connection failure rate value of a system resource for a first period of time based on a first set of connection failure rate data, the first set of connection failure rate data indicating a rate at which requests to connect to the system resource failed during the first period of time; computing a first operation failure rate value of the system resource for the first period of time based on a first set of operation failure rate data, the first set of operation failure rate data indicating a rate at which requests for the system resource to execute a resource operation failed during the first period of time; determining that the first connection failure rate value satisfies a connection failure condition or the first operation failure rate value satisfies an operation failure condition; based on the determining that the first connection failure rate value satisfies the connection failure condition or the first operation failure rate value satisfies the operation failure condition, attempting to establish a connection to the system resource; determining a first status of the system resource based on the attempting to establish the connection to the system resource; and transmitting the first status of the system resource to a hardware or software component based on the determining the first status of the system resource.

Example 2 includes the computer-implemented method of example 1, further comprising receiving a request for the first status of the system resource from the hardware or software component, wherein the transmitting the first status of the system resource is performed in response to the receiving the request for the first status.

Example 3 includes the computer-implemented method of example 1 or example 2, wherein: the first set of connection failure rate data and the first set of operation failure rate data are stored in a ring buffer; the computing the first connection failure rate value of the system resource for the first period of time comprises accessing the first set of connection failure rate data stored in the ring buffer; and the computing the first operation failure rate value of the system resource for the first period of time comprises accessing the first set of operation failure rate data stored in the ring buffer.

Example 4 includes the computer-implemented method of any one of examples 1 to 3, wherein: the first set of connection failure rate data comprises a corresponding connection failure rate data for each time interval of a plurality of time intervals of the first period of time; and the first set of operation failure rate data comprises a corresponding operation failure rate data for each time interval of the plurality of time intervals of the first period of time.

Example 5 includes the computer-implemented method of any one of examples 1 to 4, wherein: the computing the first connection failure rate value of the system resource for the first period of time comprises weighting each corresponding connection failure rate data based on its time interval, the weighting of each corresponding connection failure rate data being applied in direct proportion to a level of recency of the corresponding time interval; and the computing the first operation failure rate value of the system resource for the first period of time comprises weighting each corresponding operation failure rate data based on its time interval, the weighting of each corresponding operation failure rate data being applied in direct proportion to the level of recency of the corresponding time interval.

Example 6 includes the computer-implemented method of any one of examples 1 to 5, wherein the determining the first status of the system resource comprises: determining that the connection to the system resource failed to be established; and determining that the first status of the system resource is a down status based on the determining that the connection to the system resource failed to be established.

Example 7 includes the computer-implemented method of any one of examples 1 to 6, wherein the determining the first status of the system resource comprises: determining that the connection to the system resource was established; transmitting, to the system resource, a request to execute a resource operation of the system resource based on the determining that the connection to the system resource was established; and determining the first status of the system resource based on the transmitting of the request to execute the resource operation.

Example 8 includes the computer-implemented method of any one of examples 1 to 7, wherein the determining the first status of the system resource based on the transmitting of the request to execute the resource operation comprises: determining that the requested resource operation failed to execute; and determining that the first status of the system resource is a down status based on the determining that the requested resource operation failed to execute.

Example 9 includes the computer-implemented method of any one of examples 1 to 8, wherein the determining the first status of the system resource based on the transmitting of the request to execute the resource operation comprises: determining that the requested resource operation was executed by the system resource; and determining that the first status of the system resource is an up status based on the determining that the requested resource operation was executed by the system resource.

Example 10 includes the computer-implemented method of any one of examples 1 to 9, further comprising: computing a second connection failure rate value of the system resource for a second period of time different from the first period of time based on a second set of connection failure rate data, the second set of connection failure rate data indicating the rate at which requests to connect to the system resource failed during the second period of time; computing a second operation failure rate value of the system resource for the second period of time based on a second set of operation failure rate data, the second set of connection failure rate data indicating the rate at which requests for the system resource to execute the resource operation failed during the second period of time; determining that the second connection failure rate value does not satisfy the connection failure condition and the second operation failure rate value does not satisfy the operation failure condition; determining that a second status of the system resource is an up status based on the determining that the second connection failure rate value does not satisfy the connection failure condition and the second operation failure rate value does not satisfy the operation failure condition; and transmitting the second status of the system resource to the hardware or software component based on the determining the that the status of the system resource is an up status.

Example 11 includes the computer-implemented method of any one of examples 1 to 10, further comprising: determining that an amount of connection failure rate data for a third period of time different from the first period of time is below a connection data threshold value or an amount of operation failure rate data for the third period of time is below an operation data threshold value, the connection failure rate data for the third period of time indicating a rate at which requests to connect to the system resource failed during the third period of time, and the connection failure rate data for the third period of time indicating a rate at which requests for the system resource to execute the resource operation failed during the third period of time; based on the determining that the amount of connection failure rate data for the third period of time is below the connection data threshold value or the amount of operation failure rate data for the third time period is below the operation data threshold value, attempting to establish another connection to the system resource; determining a third status of the system resource based on the attempting to establish the another connection to the system resource; and transmitting the third status of the system resource to the hardware or software component based on the determining the third status of the system resource.

Example 12 includes the computer-implemented method of any one of examples 1 to 11, wherein the system resource comprises a database.

Example 13 includes the computer-implemented method of any one of examples 1 to 12, wherein the database comprises a database of a microservice architecture.

Example 14 includes a system comprising: at least one processor; and a non-transitory computer-readable medium storing executable instructions that, when executed, cause the at least one processor to perform the method of any one of examples 1 to 13.

Example 15 includes a non-transitory machine-readable storage medium, tangibly embodying a set of instructions that, when executed by at least one processor, causes the at least one processor to perform the method of any one of examples 1 to 13.

Example 16 includes a machine-readable medium carrying a set of instructions that, when executed by at least one processor, causes the at least one processor to carry out the method of any one of examples 1 to 13.

The example computer system600includes a processor602(e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory604, and a static memory606, which communicate with each other via a bus608. The computer system600may further include a graphics or video display unit610(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system600also includes an alphanumeric input device612(e.g., a keyboard), a user interface (UI) navigation (or cursor control) device614(e.g., a mouse), a storage unit (e.g., a disk drive unit)616, an audio or signal generation device618(e.g., a speaker), and a network interface device620.

The storage unit616includes a machine-readable medium622on which is stored one or more sets of data structures and instructions624(e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions624may also reside, completely or at least partially, within the main memory604and/or within the processor602during execution thereof by the computer system600, the main memory604and the processor602also constituting machine-readable media. The instructions624may also reside, completely or at least partially, within the static memory606.

This detailed description is merely intended to teach a person of skill in the art further details for practicing certain aspects of the present teachings and is not intended to limit the scope of the claims. Therefore, combinations of features disclosed above in the detailed description may not be necessary to practice the teachings in the broadest sense, and are instead taught merely to describe particularly representative examples of the present teachings.