The present invention generally relates to the field of computer system monitoring and software configuration management and, more particularly, to a method for monitoring changes that take place during the software update process applied to a plurality of similar servers.
Change monitoring is an integral part of the life-cycle of a server. Every now and then, changes must he applied to the server to support bug fixes, policy changes, security issues, software updates, new installs, etc. Typically a server change is applied to a set of servers which may be homogenous (e.g., all servers that belong to a particular service tier, in this case the System Administrator (SA) would typically try to keep the servers as close as possible each to another) or heterogenous (e.g., many desktops that may have been deployed from a single golden image but which were not further synchronized). The change is tested on a “representative” server and then applied to all other servers, with the hope that the change will have the same effect on all servers. Differences between servers increase the chances of errors. Therefore, if possible, a SA attempts to keep their servers as similar to each other as possible. Indeed, monitoring and enforcing similarity between servers is a common and major work item for a SA. In particular, during a change, the SA must monitor the process to verify that it works on every server.
In the background art, a common practice is to monitor a change application on a given server by a version comparison. That is, the file system state before and after the change was applied is compared. For example, there are tools that can show you a log of file-system changes that reflect the change process. However, it is difficult to analyze the difference set and decide whether the recorded changes are in line with what was expected (i.e., which changes are valid and which indicate a possible problem).
In addition, there are background art examples that compare servers to one another (e.g., using the UNIX “diff” command). For example, U.S. Patent Publication No. US 2003/023343 (the '343 application) discloses a method and system for model-based, heterogeneous server configuration management. In particular, the method and system of the '343 application for configuring heterogeneous servers across a network through modules that can browse, snapshot, track changes, track compliance, correct server objects on each of the servers, and provision new servers. By comparing server's to a reference model, discrepancies in the software configuration of the servers can be identified and corrected. As an alternative to the above-discussed reference model, an arbitrary snapshot or scheduled snapshots of a server can be used to track change and compliance in that server.
However, since even homogenous servers are not identical (i.e., some of their configuration files are typically different since based on the server “persona” (e.g., IP address, hostname, . . . ), a problem with the above-discussed background art approach is that one needs to be able to analyze the difference set and decide which changes are valid (e.g., occur “naturally”, such as logs or tmp directory content) and which changes indicate an undesired state in the server (e.g., some action that was mistakenly or maliciously taken on the target server).
Further, existing tools for server configuration management that compare servers (i.e., either one server to another, or one version to another on the same server) are inefficient since they produce a large data output that is hard to analyze. In consideration of the above discussion, there is a need in the art for tools that can systematically narrow down the difference set (e.g., beyond statically pie-configured rules, such as “Ignore /tmp”) to focus the SA on important differences that may indicate a problem. In addition, there is a need in the art, for a tool that combines a versions compare with server-to-server compare and that analyzes a set of results from several compare operations rather than post-filter the result of a single compare operation.
An embodiment of the invention is a method for monitoring changes in at least two servers, comprising: creating difference results that encapsulate effects of changes applied to file systems of at least two servers, wherein the differences are defined by predetermined, creation rules; comparing the difference results between the at least two servers to detect differences in the respective difference results, wherein the detected differences are defined in accordance with predetermined comparison rules; analyzing the detected differences in comparison results in accordance with predetermined analysis rules; and indicating potential problems from the analyzed and detected differences.
Yet another embodiment of the invention is a method for monitoring changes in a plurality of servers, comprising: creating, difference results that encapsulate effects of changes applied to file systems of at least one server (this is a reference server, in the sense that the modified server may have been successfully tested thoroughly), wherein the differences are defined by predetermined creation rules; creating difference results that encapsulate effects of changes applied to file systems of at least two additional servers, wherein the differences are defined by additional predetermined creation rules; comparing the difference results between the at least one server (the reference server) to the difference results of the at least two additional servers to detect differences in the respective difference results, wherein the detected differences are defined in accordance with predetermined comparison rules; analyzing the detected differences in comparison results in accordance with predetermined analysis rules; and indicating potential problems from the analyzed and detected differences.
In the above-discussed embodiments of the invention, preferably the method further comprises: storing a snapshot of the file systems of the at least two servers before the changes; storing a snapshot of the file system of the at least two servers after the changes; comparing the before snapshot and after snapshot of the changes in each of the at least two servers.
In addition, in the above-discussed embodiments of the invention, the before snapshot and after snapshot are compared using UNIX or LINUX diff commands. Further, in embodiments of the invention, storing the before snapshot and after snapshot further comprises using at least one of copy-on-write and logical snapshot storage semantics. Further, in the embodiments of the invention, creating difference results further comprises tracking and logging file system changes while the changes are applied. Moreover, in embodiments of the invention analyzing further comprising: applying at least one of user annotation and historical knowledge.
The invention can be described in greater detail with the aid of the following drawings.
An example will further illustrate the method implemented In
−NETMASK=‘255.255.255.224’
+NETMASK=‘255.255.255.0’.
An example will further illustrate the method Implemented in
Any of the configurations shown in
As an examples of the operation of some of these predetermined rules, assume that we use the UNIX/LINUX diff tool to compare A1 (resp. B1) with A0 (resp. B0). If we desire to ignore the content of the /imp, we could use the following example for “Ignoring the content of /tmp” (note: we assume in the following that directory TTT0 contains the file system that corresponds to A0 and TT1 the file system that corresponds to A1).
The first recursive difference between A0 and A1 would yield the differences in the tmp directories as follows:
In the implementation of a diff of TTT0 with TTT1, the content of the /tmp directories could be as follows (note: a diff option to implement the rule was added in case one does not take care of the top directory):
In this case, a more elaborate rule might say;
A non-limiting example of an implementation of the above rule could be the following:
With regard to the above example, Step 2 could be implemented, for example by;
In addition, the implementation of Step 3 could consist of applying the VIRUSDetector.sh software on each of the files listed with TMPSuspectList and finally output as potential problems the files for which the VIRUSDetector.sh software gave an indication that this may be a piece of malware.
An example will further illustrate the method implemented in
An example will further illustrate the method implemented in
That is, a comparison between A and B will show identical DiffResults. In addition, note that other lines in /etc/sysconfig/network/ifcfg-eth0 of servers A and B may be different before and after the change. For example on A: IPADDR=‘10.1.1.1’; and on B: IPADDR=‘10.1.1.2’. Further, DiffResults might also show differences in the /var/log and /tmp directories. The predetermined comparison rules may instruct the method to ignore these differences.
Alternatively, if B is a windows machine so only the registry is changed. The comparison between A and B will show very different values for DiffResults. In addition, an example of one of the predetermined rules having an intent of detecting a different install root point of a given application that was modified) could, be as follows:
Further for this example:for server A you get a difference set of:
Then you compare the two different sets by not taking care of the the fact that rootA may be different from rootB. That is, in the previous example you would get as sole difference;
The implementation of such a rule could be done, for example with standard UNIX/LINUX tools (e.g., shell/gawk/etc.).
An example will further illustrate the method implemented in
Alternatively, if there are too many differences then analysis rules may still indicate a potential problem. An example might, be that 5 log lines were added on server A during the change while 5000 log lines were added on server B during the change. This situation could indicate a problem on server B or it could be that server B is okay if B is running some other programs that log a lot of information. These particular differences between servers can be accounted for in defining the various predetermined rules discussed above.
Further,
The difference results DA, DB are next compared at CD wherein predetermined comparison rules RD are used to compare the difference between difference results (DiffResults). These values DD are then stored for further analysis which occurs at EB in accordance with predetermined analysis rules of REB. Depending on the content of the predetermined analysis rules REB, an indication of potential problem areas in the servers is indicated at IB.
An example will further illustrate the method implemented in
Alternatively, there could be only two types of DiffResults One that is the same for all windows machines A and one that is the same for all UNIX machines B. In this scenario, no problems would be indicated. A gold server is explicitly designated as such; namely, the administrator tests the results on a particular servers to validate the changes and then marks that server as “golden” to be used to verify the change on other servers. Here, however, the “good” servers are implicitly recognized˜˜a multi-way compare identifies which diffresults are “normal”/“popular” and which are “unqiue”/“rare”˜˜rather than assessing the correctness of the change by testing one golden server, the “pattern” of a golden server is identified by popularity.
Predetermined creation rules RA, RB may be modified by being further refined based on feedback from comparing differences of DiffResults at CD and analyzing Comparison Results at EB. This refinementThe difference results DA, DB are next compared at CD wherein predetermined comparison rules RD are used to compare the difference between difference results (DiffResults). These values DD are then stored for further analysis which occurs at EB in accordance with predetermined analysis rules of REB. Depending on the content of the predetermined analysis rules REB, an indication of potential problem areas in the servers is indicated at IB.
The foregoing description illustrates and describes embodiments of the present invention. Additionally, the disclosure shows and describes only the preferred embodiments of the invention, but as mentioned above, it is to be understood that the invention is capable of use In various other combinations, modifications, and environments and is capable of changes or modifications within the scope of the Inventive concept as expressed herein, commensurate with the above teachings and/or skill or knowledge of the relevant art. The embodiments described hereinabove are further intended to explain best modes known of practicing the invention and to enable others skilled in the art to utilize the invention in such or other embodiments and with the various modifications required by the particular applications or uses of the invention. Accordingly, the description is not intended to Limit the invention to the form or application disclosed herein. Also, It is Intended that the appended, claims be construed to include alternative embodiments,
In addition, embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention Is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. Furthermore, the invention can take the form of a computer program product, accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid, state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include, but are not limited to, compact disk read only memory (CDROM), compact disk-read/write (CD-RIW) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and. Ethernet cards are just a few of the currently available types of network adapters.