IP Library Granted Patent US 7,653,722
Granted Patent B1
US 7,653,722 · App. 11/294,664 · Granted Jan 26, 2010

Server monitoring framework

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,653,722
App. No.
11/294,664
Granted
Jan 26, 2010
Kind
B1
Abstract

A novel software framework monitors server statistics for a plurality of software modules and makes its collected statistics available to those modules. Unlike prior implementations, the framework provides shared server-monitoring code through which the plurality of software modules can monitor various types of servers, such as authentication servers, ICAP servers, origin servers, hierarchical proxy servers and so forth. Because the same server-monitoring code is accessed by each of the software modules, the overall amount of code that is written, compiled and executed may be reduced. Moreover, the shared server-monitoring code is not protocol-dependant and therefore may be coded outside of the kernel-level protocol engines. Preferably, the shared server-monitoring code is implemented as a user-level thread or process.

Claims (44)

1. A method for monitoring a plurality of servers coupled to a computer system, the method comprising:

registering, by a plurality of software modules, the plurality of servers in a data structure configured to store statistics associated with the plurality of servers, wherein at least one server is a different type of server than the remaining servers of the plurality of servers and each of the plurality of software modules access a same server-monitoring code, and the server-monitoring code is not protocol-dependent;

collecting statistics associated with the plurality of servers; and

storing the collected statistics in the data structure.

2. The method of claim 1 , further comprising:

receiving a request to retrieve a desired set of statistics from the data structure, the desired set of statistics satisfying predetermined search criteria selected by a software module in the plurality of software modules;

retrieving the desired statistics from the data structure; and

returning the desired statistics to the software module that sent the request.

3. The method of claim 1 , further comprising:

calculating a weight metric for each of the plurality of servers, the calculated weight metric derived based on the collected statistics.

4. The method of claim 3 , further comprising:

storing the calculated weight metrics in the data structure.

5. The method of claim 3 , wherein each weight metric is calculated based on at least one of a measured Transmission Control Protocol (TCP) round-trip time (RTT) and a measured protocol-specific RTT.

6. The method of claim 3 , further comprising:

receiving a request from a software module in the plurality of software modules, the request specifying predetermined search criteria;

identifying a set of servers whose weight metrics satisfy the predetermined search criteria; and

returning the identities of servers in the set of servers to the software module that sent the request.

7. The method of claim 1 , wherein the step of collecting statistics further comprises:

periodically collecting statistics for each of the one or more servers.

8. The method of claim 7 , wherein the collected statistics include at least one of a measured Transmission Control Protocol (TCP) round-trip time (RTT) and a measured protocol-specific RTT.

9. A computer system configured to monitor a plurality of servers, the computer system comprising:

a plurality of software modules each executed by a processor, the plurality of software modules configured to register the plurality of servers in a data structure configured to store statistics associated with the one or more servers, wherein at least one server is a different type of server than the remaining servers of the plurality of servers and each of the plurality of software modules access a same server-monitoring code, and the server-monitoring code is not protocol-dependent;

means for collecting statistics associated with the plurality of servers; and

means for storing the collected statistics in the data structure.

10. The computer system of claim 9 , further comprising:

means for receiving a request to retrieve a desired set of statistics from the data structure, the desired set of statistics satisfying predetermined search criteria selected by a software module in the plurality of software modules;

means for retrieving the desired statistics from the data structure; and

means for returning the desired statistics to the software module that sent the request.

11. The computer system of claim 9 , further comprising:

means for calculating a weight metric for each of the plurality of servers, the calculated weight metric derived based on the collected statistics.

12. The computer system of claim 11 , further comprising:

means for receiving a request from a software module in the plurality of software modules, the request specifying predetermined search criteria;

means for identifying a set of servers whose weight metrics satisfy the predetermined search criteria; and

means for returning the identities of servers in the set of servers to the software module that sent the request.

13. A network cache configured to monitor a plurality of servers, the network cache comprising:

a processor;

a memory adapted to store a data structure configured to store statistics associated with the plurality of servers, the memory further adapted to store instructions for execution by the processor, at least a portion of the instructions being configured to perform the steps of:

registering, by a plurality of software modules, the plurality of servers in the data structure, wherein at least one server is a different type of server than the remaining servers of the plurality of servers and each of the plurality of software modules access a same server-monitoring code, and the server-monitoring code is not protocol-dependent;

collecting statistics associated with the plurality of servers; and

storing the collected statistics in the data structure.

14. A computer-readable storage medium containing executable program instructions executed by a processor, comprising:

registering, by a plurality of software modules, a plurality of servers coupled to a computer system in a data structure configured to store statistics associated with the plurality of servers, wherein at least one server is a different type of server than the remaining servers of the plurality of servers and each of the plurality of software modules access a same server-monitoring code, and the server-monitoring code is not protocol-dependent;

collecting statistics associated with the plurality of servers; and

storing the collected statistics in the data structure.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 068175/0948 →
CHANGE OF NAME Recorded Aug 19, 2011
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 026776/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2005
From: KRISHNA, RAVI; SHAH, VANDANA
To: NETWORK APPLIANCE, INC.
Reel/Frame 017294/0843 →