Abstract:
A method and system for monitoring resource usage in a networked computer system that includes client systems, a resource server and system resources accessible to the resource server. A client system issues a resource job requiring use of a system resource wherein the resource job includes job instructions directing the resource to perform an operation and job data to be operated upon by the resource in performing the operation. The client system forwards the resource job to the resource server, which directs the job instructions and job data to a resource that returns corresponding job result information to the resource server. A job processor in the resource server forwards the resource job to the resource and extracts job attribute information identifying system resources to be used in executing the resource job. A resource agent in the resource server forwards the job attribute information and job result information to a collection server wherein the job result information identifies the results achieved by the resource. The collection server generates job detail information representing system resources used in executing the resource job from the job attribute information and the job result information and stores the job details in a database. A resource manager system communicating with the collection server may then read the job details from the database and provide the job details to a user of the resource manager system for use in monitoring usage of systems resources.

Description:
FIELD OF THE INVENTION 
     The present invention relates to a method and system for monitoring and recording the usage of resources on a system and, in particular, for monitoring and recording the usage of resources, such as print facilities, in a networked system. 
     BACKGROUND OF THE INVENTION 
     A common historical feature of virtually all cooperative enterprises, such as a business, group of businesses or business divisions, or governmental or administrative organization of any form, is the sharing of resources among the individuals or groups of individuals therein. It is well known and accepted that the sharing of resources among users reduces the per user cost of the resources, including supply and maintenance costs, and allows a greater range of resources to be made available to the users. 
     The sharing of resources is a common feature of computer systems and, in particular, is one of the primary reasons for networked computers systems wherein the users share such facilities as storage devices, communications networks, printers, and even applications programs and data files. The sharing of resources, such as supplies and maintenance services, however, is also of benefit for standalone systems used by the members of an organization or group. 
     To obtain the optimum benefit from shared resources, it is necessary to monitor the usage of the resources to insure that the types, number and capacities of the resources correspond to the needs of the user so that the work of the users is not hampered by lack of a resource and to insure that resources are not underutilized. Such monitoring also allows the efficient scheduling of supplies and maintenance, and can assist in insuring that the resources are used properly for the intended purposes. 
     The monitoring of resource usage is, however, a persistent problem in contemporary computer systems as the systems are not designed to, and do not, provide the facilities to provide the necessary information in a form and manner to be efficiently and effectively used by a resource administrator. For example, one of the most common shared resources in networked computer systems is printers which, in networked computer systems, are typically connected from a print server system that is accessible to the users of other systems in the network through the network. While print servers and most printers include a spooler mechanism that manages the flow of print jobs through the printer and that generates data pertaining to the jobs, the data is generally inadequate for effective monitoring of the printer usage. That is, the data generated by a print spooler usually records only that a print job was completed or failed, may indicate the date and time a job was submitted or a queue number assigned to the job by the spooler, and may include error messages. In addition, the data normally must be collected from each print server or printer individually and by hand, and the data from individual printers must then collated and merged by hand to provide an overview of printer use in, for example, a department of a corporation. While other types of resources, such as file servers and network controllers, may provide more detailed usage information and may make the information accessible through the network, there are many that have little better facilities for monitoring than are typically provided in printers and print servers. 
     The present invention provides a solution to these and other problems of the prior art. 
     SUMMARY OF THE INVENTION 
     The present invention is directed to a method and system for monitoring resource usage in a networked computer system. The networked system includes at least one client system, a resource server and at least one system resource accessible to the resource server and the client systems and the resource server are interconnected by a communications network. A client system includes a processor for executing an application program for issuing a resource job requiring use of a system resource wherein a resource job includes job instructions directing the resource to perform an operation and job data to be operated upon by the resource in performing the operation. The client system forwards the resource job to the resource server, which responds by directing the job instructions and job data to a resource accessible to the resource server. The resource in turn responds to the job instructions and job data by returning corresponding job result information to the resource server. 
     According to the present invention, in the resource server a job processor forwards the resource job to the resource and extracts job attribute information from the resource job wherein the job attribute information includes information identifying system resources to be used in executing the resource job. A resource agent in the resource server receives the job attribute information from the job processor and job result information returned from the resource, wherein the job result information identifies the results achieved by the resource in response to the resource job, and forwards the job attribute information and job result information to a collecting server. 
     A resource collector in the collecting server receives the job attribute information and the job result information, generates corresponding job detail information representing system resources used in executing the resource job and stores the job details in a database. A resource manager system communicating with the collecting server through the network may then read the job details from the database and provide the job details to a user of the resource manager system for use in monitoring usage of systems resources. 
     In further embodiments of the invention, the resource agent includes a dynamic discovery function for identifying a current location of a current resource collector on the network and transmitting job attribute information and job result information to the current collecting server. The system resource manager may also include a dynamic discovery function for identifying a current location of a current collecting server on the network and reading job details from the database in the current collecting server. 
     In still further implementations of the invention, a client system may include a local resource accessible to the client system and the client system may transmit the job instructions and job data of a resource job to the local resource. The client system will includes a job capture mechanism for capturing the job instructions and job data transmitted to the local resource and job result information returned by the local resource, extracting the job attribute information from the captured job instructions and job data, and forwarding the job attribute information and job result information to the resource server. Alternately, the capture mechanism may forward the job instructions, job data and job result information to the resource server. 
     In a presently preferred embodiment of the invention, which is discussed in detail herein, the resources being monitored are printers, so that the resource jobs are print jobs and the job instructions and job data of the resource jobs are printing instructions and document data. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       The foregoing and other objects, features and advantages of the present invention will be apparent from the following description of the invention and embodiments thereof, as illustrated in the accompanying figures, wherein: 
         FIG. 1  is a map showing how  FIGS. 1A-1B  are to be assembled. After assembly,  FIGS. 1A-1B  provide a block diagram of a networked system incorporating the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     As will be described in the following,  FIGS. 1A and 1B  illustrate the present invention for a typical and illustrative exemplary embodiment of the present invention providing usage monitoring of shared printing resources in a networked system. 
     As represented in  FIGS. 1A and 1B , a System  10  may typically include one or more Client Systems  12 , a Resource Server  14 , one or more Printers  16 , an Collection Server  18  and a Resource Management System  20 , all of which are interconnected and communicate through a Network  22 . It will be understood by those of ordinary skill in the relevant arts and for purposes of the following discussion, although not shown or discussed in further detail herein, that Network  22  may be embodied in many forms, such as the Internet, a proprietary network, a local or wide area network of any form, hard-wire connections between components of System  10 , or a combination thereof. It will also be understood that the components of System  10 , such as Client Systems  12 , Resource Server  14 , Collection Server  18  and Resource Manager System  20 , will include the facilities, such as network drivers and interfaces and communication control and protocol programs, necessary to communicate through Network  22 . 
     As indicated, each Client System  12  includes a Client Processor  12 A, such as a personal computer or a terminal served by an application program/file server system, wherein each Client Processor  12 A is connected to Network  22  and executes at least one Application Program  12 B to perform operations on documents of various forms and formats, including issuing instructions for printing documents upon command by the user of Client System  12 . In a typical networked environment as illustrated in  FIGS. 1A and 1B , Client Systems  12  will transmit Print Jobs  24 , that is, documents to be printed and information related to the printing of the documents, to Resource Server  14  through Network  22 . 
     As represented in  FIGS. 1A and 1B , a Print Job  24  is comprised to two primary components, indicated in  FIGS. 1A and 1B  as Document Data  26  and Print Instructions  28 . Document Data  26  is essentially comprised of the document to be printed and will include, at the minimum and for example, a text or graphic file or a file containing a combination of text and graphics, indicated as Document (Doc) File  12 C. Document Data  26  will typically include other information describing the internal characteristics of the file or document, depending upon characteristics of the Application Program  12 B and the file management services included in, for example, the operating system functions of Client System  12 . Document Data  26  may, for example, further include such information as the file name, size and type, author and creation or editing date, document formatting information such as page size, margins, number of pages, font type and size, header and footer information, text and graphics color specifications or definitions, and so on. 
     Print Instructions  28 , in turn, are essentially comprised of the information necessary to direct a Printer  16  in printing the Document Data  26  according to the requirements of the Print Job  24  and the information therein, as generated by a Client System  12 , will depend upon the specific nature, capabilities and functions of Application Program  12 B and, in particular, the capabilities and features of Print Control Functions  12 D that may be included in either or both of the Application Program  12 B and the print services included in, for example, the operating system functions of Client System  12 . Print Instructions  28  may include, for example, number of copies to the printed, a printer or system to execute the job, various materials to be used in printing selected pages of the document, such as letterhead, plain bond, paper of selected colors, or transparency films, which may be identified by material type or by paper tray in the printer, depending upon the intelligence incorporated in the Printer  16  or Resource Server  14 , colors to be used for various texts, single or double sided printing, collation, binding, and so on. 
     It will be understood that in some systems a Client System  12  may transmit the Document Data  26  and the Print Instructions  28  of a Print Job  24  in the form of a single entity, such as a job print file structure. In other systems, a Client System  12  may transmit the Document Data  26  and Print Instructions  28  as separate but associated entities, for example, by linking the Document Data  26  and Print Instructions  28  through a common job identifier. It will also be understood that one or more Client Systems  12  of System  10  may function as file servers to store and provide files, including document files to be printed, under the direction of the Client Systems  12  executing Application Programs  12 B. In this instance, a Print Job  24  as issued by a Client System  12  may be in the form of Print Instructions  28  and a request to a Client System  12  operating as a file server to provide the Document Data  26 , that is, a document file, to Resource Server  14 , whereupon the Client System  12  operating as a file server will be the actual source of the Document Data  26  of the Print Job  24 . As will be described below with regard to Resource Server  14 , however, the present invention is readily adaptable to the specific form in which a Print Job  24  is transmitted to Resource Server  14 , and such adaptations will be well understood by those of ordinary skill in the relevant arts after the following discussion of a Resource Server  14 . 
     In addition, it will be understood that in some implementations of a System  10  at least some Client Systems  12  may be connected directly to a dedicated local Printer  16 L wherein the usage of such local Printers  16 L is to be monitored by the system of the present invention in a manner similar to the usage monitoring of shared Printers  16 . In such instances, an example of which is illustrated in  FIGS. 1A and 1B  and the operation of which will be well understood by those of ordinary skill in the arts, the Document Data  26  and Print Instructions  28  of a Job  24  will be sent directly to the associated Printer  16 L by the Client System  12 , either by direct connection or, for example, through a Network  22 . The Printer  16 L will respond with Job Results  30  wherein Job Results  30  will typically, and at a minimum, include a message whether the Job  24  was completed or failed to be printed, sometimes with an error/diagnostic message, and may include such information as a Job  24  identifier and the times of receipt and completion of the Job  24 . A Job Results  30  may also include other information, such as the amounts of printing media and paper used. In this case, the Client System  12  will additionally include a Job Capture Mechanism (Job Capture)  32 , which is typically implemented as a small program or utility that monitors print commands to the Printer  16 L and captures, that is, copies or records, the Document Data  26  and Print Instructions  28  sent to the Printer  16  and the Job Results  30  returned by the Printer  16 L. Job Capture  32  then forwards all or part of Document Data  26 , Print Instructions  28  and Job Results  30  to Resource Server  14  to be used in monitoring the usage of the Printer  16 L. As the construction and operation of such monitor and capture routines are well known to those of ordinary skill in the arts, the detailed operation of Job Capture  32  need not be discussed in further detail herein. 
     At this point, it should be noted that the information that is regarded as necessary or desirable to monitor the usage of a resource such as a Printer  16  in any particular system or application will typically not include all of the information that is forwarded to the resource to control the operation of the resource. For example, in most situations it is not necessary to capture the actual contents of documents in order to monitor the usage of printers. In addition, the information generated by a Client System  12  to control a resource, such as the information in the Document Data  26  and Print Instructions  28  of a Print Job  24 , is not necessarily organized and structured in a form that is most useful for resource usage monitoring. In the present exemplary embodiment of the invention, for example, the desired resource usage information, which is identified in  FIGS. 1A and 1B  in Resource Server  14  as Job Attributes  34 , may typically include part or all of the information contained in Print Instructions  28  but may also include information from Document Data  26 , depending on the form in which Document Data  26  and Print Instructions  28  are generated by the Client System  12 . For example, Job Attributes  34  may desirably include such information as the document file name, size and type, author, creation or editing date, document formatting, print color specifications, and so on, and some of this information may reside in Document Data  26  rather than in Print Instructions  28 . For these reasons, it will be recognized that it will often be necessary, in any particular implementation of a System  10  incorporating the present invention, to extract the desired resource usage monitoring information, that is, Job Attributes  34 , from the information that is generated by the Client Systems  12  to control the resources. 
     In, for example, those instances wherein a document is printed by a Printer  16 L that is directly associated with a Client System  12 , it will be recognized that it is not necessary to send the actual document file, that is, the actual contents of the document, to Resource Server  14 . It is sufficient, for resource usage monitoring purposes, to send only the Job Attribute  34  information to a Resource Server  14 . For this reason, the Job Capture  32  residing in a Client System  12  may include routines or utilities to extract the desired information from either or both of Document Data  26  and Print Instructions  28 , format this information into a Job Attributes  34 , and forward the Job Attributes  34  and the corresponding Job Results  30  to Resource Server  14 . In the alternative, and depending upon the choices of the designer, Job Capture  32  may simply capture the Document Data  26 , Print Instructions  28  and Job Results  30  and forward this information to Resource Server  14  with, for example, an attached or associated designator that the document is not to be actually printed and that the information is for usage monitoring purposes only. Again, the construction of routines to extract and compile information from known information structures or formats and into another format is well understood by those of ordinary skill in the arts and need not be discussed in further detail herein. 
     Lastly with respect to Client Systems  12 , it should be noted that a Client System  12  may forward resource usage information, such as the Job Attributes  34  and Job Results  30  generated for or by a local Printer  16 L, directly to Collection Server  18  rather than to Resource Server  14  if the information is in a form suitable for use by Collection Server  18 . In a presently preferred embodiment of a System  10 , however, as described below, Resource Server  14  operates as a network communications node between the Client Systems  12  connected from Resource Server  14  and Collection Server  18  and all resource usage information is routed to Collection Server  18  through Resource Server  14 . 
     Next considering Resource Server  14  and Printers  16 , as shown in  FIGS. 1A and 1B  Resource Server  14  includes a Print Processor  14 A, again such as a personal computer or a network server processor, wherein Resource Server  14  includes a Job Processor  14 B and a Resource Agent  14 C that are connected to Network  22 , either directly or through Print Processor  14 A and through a Network  22  interface device and the appropriate network protocol. It will be understood that Job Processor  14 B and Resource Agent  14 C may be implemented in Print Processor  14 A, for example, by programs executing in Print Processor  14 A, or as dedicated function processors controlled by a Print Processor  14 A. In addition, and as shown, Resource Server  14  is connected to one or more Printers  16 , either directly or through Network  22 , and to Collection Server  18  through Network  22 . 
     Upon receiving a Print Job  24  from a Client System  12 , Job Processor  14 B forwards the print job, that is, the contents of the document and the instructions, commands and information necessary to control the printing of the document to one or more Printers  16  as a Job Data/Attributes  38 . It will be apparent that the characteristics of Job Data/Attributes  38  will depend on the requirements of Print Jobs  24  and the capabilities and characteristics of Printers  16 . In this regard, it should be noted that Printers  16  connected from Resource Server  14  may, depending upon the particular System  10 , be comprised of a single Printer  16  or group of individual Printers  16  controlled directly by Resource Server  14  or a complex of Printers  16  with a printer controller communicating with Resource Server  14 . It will also be recognized that each of the Printers  16  in a group of individual printers or a complex of printers may have different characteristics and capabilities. For example, some of Printers  16  may have color capability while others may be provided with different types and sizes of print media, such as plain or letterhead paper or transparency films and different sizes and colors of paper. The printing instruction processing and self-control capabilities of Printers  16  or the printer controller may also differ. Some printers or printer controllers, for example, may be capable of translating Document Data  26  and Print Instructions  28  or Job Attributes  34  directly. Others may require that complex documents be broken into separate jobs and directed to different printers according to page type or printing characteristics, and detailed instructions, such as the paper trays to be used for each type of page. In some implementations of a System  10 , therefore, Document Data  26  and Print Instructions  28  or Job Attributes  34  may be used directly by Printers  16  while in other implementations some or all of Document Data  26 , Print Instructions  28 , or Job Attributes  34  may unsuitable for direct control of Printers  16 . Job Processor  14 B may therefore additionally include routines for extracting the document data and printing instructions or commands necessary to control Printers  16  from a Print Job  24  and translating the document data, instructions and commands into a Job Data/Attributes  38  suitable for use by Printers  16 . Again, the construction of routines to extract and compile information from known information structures or formats and into other formats, such as translating Document Data  26  and Print Instructions  28  into Job Attributes  34  or Job Data/Attributes  38 , is well understood by those of ordinary skill in the arts and need not be discussed in further detail herein. 
     As indicated in  FIGS. 1A and 1B , Printers  16  will, upon completion of each Print Job  24 , return a corresponding Job Results  40  to Resource Server  14  in the manner described above with respect to a Printer  16 L and Job Results  30  and Resource Server  14  will forward Job Results  40  to Collection Server  18  with the corresponding Job Attributes  34 . As described with respect to Job Results  30 , a Job Results  30  will typically, and at a minimum, include a message whether the Print Job  24  was completed or failed to be printed and may include, for example, error/diagnostic messages, a job identifier, the times of receipt and completion of the job, and information such as the amounts of printing media and paper used, depending upon the capabilities of the printers or printer controller. 
     As described above, Resource Server  14  also collects and forwards to Collection Server  18  resource usage information pertaining to the resources associated with Resource Server  14 , that is, Printers  16 , as print jobs are performed. As also described, the desired resource usage information will typically not include all of the information that must be sent to the resource, and the information as sent to a resource may not be in a form that is most useful for resource usage monitoring. For these reasons, Job Processor  14 B processes the information sent to the resources, such as Document Data  26  and Print Instructions  28 , as necessary to extract the information comprising Job Attributes  34  and organizes the information into a corresponding Job Attributes  34 . Resource Server  14  then forwards each Job Attributes  34  to Resource Agent  14 C with the corresponding Job Results  40 . Again, the construction of routines to extract and compile information from known information structures or formats and into other formats, such as translating Document Data  26  and Print Instructions  28  into Job Attributes  34 , is well understood by those of ordinary skill in the arts and need not be discussed in further detail herein. 
     In addition, it has been described above that a Client System  12  may generate and forward the Job Attributes  34  and Job Results  30  of a Printer Job  24  executed on a local Printer  16 L to Resource Server  14 , or may simply forward the Document Data  26 , Print Instructions  28  and Job Results  30  to Resource Server  14 . If the information pertaining to locally executed Print Jobs  24  is not directly usable as usage monitoring information by Collection Server  18 , it will be processed by Job Processor  14 B, which will generate corresponding Job Attributes  34  and, if necessary, a corresponding Job Results  40 . Again, the construction of routines to extract and compile information from known information structures or formats and into other formats is well understood by those of ordinary skill in the arts and need not be discussed in further detail herein. 
     As represented in  FIGS. 1A and 1B , Job Attributes  34  and Job Results  40  generated by Job Processor  14 B as a consequence of Print Jobs  24  sent to Printers  16  and  16 L are provided to Resource Agent  14 C, which in turn communicates Job Attributes  34  and Job Results  40  to Collection Server  18  through Network  22 . It will be understood that Collection Server  18  may be located locally to Resource Server  14 , so that the Network  22  connection between Resource Server  14  and Collection Server  18  is implemented through wired connections or, more usually, a local area network. Collection Server  18  may, however, be located remotely from Resource Server  14  and the Network  22  providing network communications between Resource Server  14  and Collection Server  18  may be implemented through a wide area network, such as the Internet. In addition, and while Collection Server  18  may be implemented in a dedicated, fixed system or network node, it is anticipated that the logical or physical location of Collection Server  18  may change from time to time, or there may be several Resource Servers  14 , each of which may be used at certain times or each of which may be used to monitor different resources. For this reason, in the presently preferred embodiment Resource Agent  14 C incorporates a Dynamic Discovery Mechanism (Dynamic Discovery)  42  to allow Resource Agent  14 C to determine, at any time, the current location of Collection Server  18  in Network  22 . In Systems  10  wherein Network  22  is the Internet, for example, Dynamic Discovery  42  may be implemented through an Internet browser. In systems interconnected through other types of networks, Dynamic Discovery  42  will be implemented using the network address seek mechanism native to those systems, as will be familiar to those of ordinary skill in the relevant arts. 
     Referring to Collection Server  18 , as indicated in  FIGS. 1A and 1B  Collection Server  18  includes an Collection Processor  18 A, which may be implemented, for example, by a personal computer or other processor or computer having the necessary capabilities, a Resource Collector  18 B and a Resource Database  18 C. The database supported by Resource Database  18 C will typically reside in a mass storage device, such as a disk drive, and the database management functions of Resource Database  18 C will typically be implemented by programs executing in Collection Processor  18 A. The functions of Resource Collector  18 B, which will include a Network  22  interface device, may likewise be implemented by programs executing in Collection Processor  18 A or may be implemented as dedicated as a function processor controlled by Collection Processor  18 A. 
     As shown, Resource Collector  18 B is connected to Network  22  to communicate with one or more Printer Servers  14  or equivalent resource servers in System  10 , with the initial communications being established through Dynamic Discovery  42  mechanism and Resource Collector  18 B thereafter receiving resource usage information such as Job Attributes  34  and Job Results  40  from the Resource Server  14  or an equivalent other server. Resource Collector  18 B receives, collects and collates or otherwise processes Job Attributes  34  and Job Results  40  as necessary for the information to be stored in Resource Database  18 C and provides the resource usage monitoring information to Resource Database  18 C as Job Details  44 . 
     It is apparent that the resource usage monitoring information represented in Job Details  44  in Resource Database  18 C may be read therefrom and used as desired by a user of Collection Processor  18 A. In a presently preferred embodiment of a System  10 , however, it is anticipated that one or more users who may be located remotely from the System  10  will wish to access and use the resource usage monitoring information residing in Resource Database  18 C. For this reason, and as indicated in  FIGS. 1A and 1B , Resource Database  18 C is accessible through Network  22  through an appropriate network interface device and the appropriate network communication protocols, which may be executed under control or programs executing in Collection Processor  18 A. Such remote users are indicated in  FIGS. 1A and 1B  as the users of one or more Resource Manager Systems  20 , wherein each Resource Management System  20  includes a Management Processor  20 A, which may be implemented as a personal computer or a network server processor, and an appropriate Network  22  interface device for executing Network  22  communications protocols. The Network  22  interface of a Resource Manager System  20  is represented in  FIGS. 1A and 1B  as Browser  20 B, which typically operates under control of programs executing in Management Processor  20 A. As indicated in  FIGS. 1A and 1B , Browser  20 B incorporates a Dynamic Discovery Mechanism (Dynamic Discovery)  42  to allow Resource Manager System  20  to determine, at any time, the current location of Collection Server  18  in Network  22  and to communicate with Collection Server  18 . In particular, Browser  20 B includes the facility, represented as View Results  46 , to access and view the resource usage monitoring information residing in Resource Database  18 C, typically by communicating with the database management program executing in Collection Processor  18 A. 
     It will therefore be apparent from the above description of the present invention that the present invention provides a method and system for obtaining and collecting resource usage information and for making such information available in a form suitable for planning and managing the efficient use of resources. It will also be apparent to those of ordinary skill in the relevant arts that while the invention has been particularly shown and described with reference to preferred embodiments of the apparatus and methods thereof, various changes, variations and modifications in form, details and implementation may be made therein without departing from the spirit and scope of the invention as defined by the appended claims, certain of which have been described herein above. It will be recognized, for example, that the present system resource usage monitoring system may be used to monitor system resources other than printers, or in addition to printers, such as the usage of file servers and communications facilities. Therefore, it is the object of the appended claims to cover all such variation and modifications of the invention as come within the true spirit and scope of the invention.