Server virtualization techniques allow a software service provider to operate multiple virtual machines (VM) on the same physical hardware (e.g., different VMs for different customer, and/or different VMs for different requests from same customer). With cloud computing gaining popularity in providing information technology (IT) services, instead of running and maintaining their own computer systems, a lot of customers turn to service providers. For example, a service provider typically hosts an enterprise resource planning (“ERP”) software package on multiple virtual machines (or “customer tenants” as referred herein) for one or more customers.
Traditionally, the ERP software status of each customer tenant is monitored individually by a service consultant of the software service provider. Individual monitoring increases the complexity and cost of the monitoring services provided by the software service provider. Individual monitoring also limits the software service provider's ability to actively measure, in aggregate, usage metrics for the ERP software applications across multiple customer tenants using the ERP software package. This hinders the software service provider's ability to identify potential early-stage problems within the ERP applications (e.g., application problems experienced by only a few tenants), which, in turn, increases response time of the software developer to rectify the early-stage problems before they are manifested across all customer tenants using the ERP software package. Thus, there is a need in the art for a centralized multi-tenant monitoring system.
Embodiments of the present invention provide a central monitoring system for enterprise resource planning software hosted in a plurality of customer tenants. The central monitoring system may include software instructions that when executed by a computer processor, performs a method include extracting process status data from one or more customer tenants independently, transforming the extracted process status data to generate generalized status codes according to predetermined status codes, transferring the generated generalized status codes to a central monitoring system, loading the generated generalized status codes to the central monitoring system, and transforming the generalized status codes to monitoring-specific simplified status codes.
The central monitoring system 110 may comprise a server 114, a data storage 116 and a monitoring terminal 112. The central monitoring system 110 may be connected to the customer tenants via the link 130. The link 130 may be wired or wireless, and may be through an internet connection.
In an embodiment, the customer tenant(s) 102 may be hosted by an computing service provider. That is, the customer tenant(s) 102 may be hosted off site from the geographical location of the clients. Thus, the clients 124 may access the respective computing services provided by each customer tenant (e.g., 122.1˜122.N) via internet connections (secure, un-secure, remote desktops, etc.).
In an embodiment, each customer tenant 122 may provide an enterprise resource planning (ERP) system that integrates internal and external management information across an entire organization for a respective client. Each ERP system may provide computing services in a variety of business areas, such as, financials, customer relationship management, supply chain management, etc. Each business area may generate and process business data in different format and/or different content (e.g., heterogeneous business data). The business process status of all customer tenants may be gather regularly by the central monitoring system 110. The business process status may include status from the various business areas. In one embodiment, the customer tenants may run the same version of software being monitored by the central monitoring system 110.
The business process status from the various business areas may be integrated into a single status model following an ETL-Approach (Extract, Transform, Load) according to one embodiment. In an embodiment, the heterogeneous business data may be extracted from the customer tenants, the extracted business data then may be transformed according to a mapping relationship to generalized status codes, and the transformed generalized status data may then be loaded into a central monitoring system.
The method 200 may start at block 210 for customer tenant status information extraction. The customer tenant status information extraction block 210 may include a block 211 in which the heterogeneous business data (e.g., process status data) may be read from one or more customer tenants independently by a data extractor and a block 212 in which the process status data extracted from each customer tenant may be associated with predetermined status codes.
In an embodiment, the data extractor may also transform the extracted data according to a general complete status model. For example, each business area inside a customer tenant may have specific status values. For example: for Financial Documents, Document Type “Journal Entry” may have status values “In Process”, “Blocked;” and for Supplier Relationship Management (SRM), Document Type “Purchase Order” may have status values “Active”, “Cancelled.”
The business status from several business areas may be contained in one single table (e.g., a general table) with the status values following the model of
Referring back to
In an embodiment, the block 214 may determine numbers of corresponding documents for each generalized status value per customer tenant. For example, after mapping of status codes to generalized codes of GS-1 through GS-5 are performed, the method 200 may determine, for a customer tenant, that there may be 7 documents have GS-1 status, 0 document has GS-2 status, 5 documents have GS-3 status, 12 documents have GS-4 status, and 23 documents have GS-5 status. This information may be collected regularly for each customer tenant.
After the customer tenant status information extraction block 210, the method 200 may continue to the next block 215 for communicating generalized status information to a centralized monitoring system. The generalized status information may be transferred to the central monitoring system for each monitored tenant independently. In an embodiment, existing technology, such as synchronous and/or asynchronous communication (e.g., web services) may be used. For example, the generalized status information may be collected from each of the customer tenants 120 and transferred to the central monitoring system 110 via the link 130 as shown in
After transferring the collected data to the central monitoring system, the method 200 may load the collected data into the central monitoring system at block 220. The block 220 may include a block 221 for mapping generalized status codes to central monitoring system status codes and a block 222 for storing the central monitoring system status codes generated from the mapping. The mapping from generalized status codes to central monitoring system status codes may condense the generalized status codes according to a monitoring-specific, simplified status model.
The processor 502 is a programmable processor that executes instructions residing in the memory 504 to receive and send data via the I/O device(s) 506. The instructions may perform the operations of a multi-tenants central monitoring process according to an exemplary embodiment. The term programmable processor as used herein is any programmable microprocessor or processor or combination of microprocessors or processors that can operate on digital data, which may be special or general purpose processors coupled to receive data and instructions from, and to transmit data and instructions to, a machine-readable medium. According to one embodiment of the present invention processor 502 is an Intel® microprocessor.
Memory 504 is a machine-readable medium that stores data that is processed by the processor 502. The term machine-readable medium as used herein is any addressable storage device that stores digital data including any computer program product, apparatus and/or device (e.g., a random access memory (RAM), read only memory (ROM), magnetic disc, optical disc, programmable logic device (PLD), tape, hard drives, RAID storage device, flash memory or any combination of these devices). This may include external machine-readable mediums that are connected to the processor 502 via one or more I/O device(s) 506.
The I/O device(s) 506 may be one or more input/output interfaces that receive and/or send digital data to and from an external device. Interfaces as used herein are any point of access to an external device where digital data is received or sent, including ports, buffers, queues, subsets thereof, or any other interface to an external device.
The exemplary method and computer program instructions may be embodied on a machine readable storage medium such as a computer disc, optically-readable media, magnetic media, hard drives, RAID storage device, and flash memory. In addition, a server or database server may include machine readable media configured to store machine executable program instructions. The features of the embodiments of the present invention may be implemented in hardware, software, firmware, or a combination thereof and utilized in systems, subsystems, components or subcomponents thereof. When implemented in software, the elements of the invention are programs or the code segments used to perform the necessary tasks. The program or code segments can be stored on machine readable storage media. The “machine readable storage media” may include any medium that can store information. Examples of a machine readable storage medium include electronic circuits, semiconductor memory device, ROM, flash memory, erasable ROM (EROM), floppy diskette, CD-ROM, optical disk, hard disk, fiber optic medium, or any electromagnetic or optical storage device. The code segments may be downloaded via computer networks such as Internet, Intranet, etc.
Although the invention has been described above with reference to specific embodiments, the invention is not limited to the above embodiments and the specific configurations shown in the drawings. For example, some components shown may be combined with each other as one embodiment, or a component may be divided into several subcomponents, or any other known or available component may be added. The operation processes are also not limited to those shown in the examples. Those skilled in the art will appreciate that the invention may be implemented in other ways without departing from the spirit and substantive features of the invention. For example, features and embodiments described above may be combined with and without each other. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive. The scope of the invention is indicated by the appended claims rather than by the foregoing description, and all changes that come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.