DIAGNOSTICS STORAGE WITHIN A MULTI-TENANT DATA CENTER

Diagnostic data is received at a multi-tenant data center. The diagnostic data is from a data system instance and the multi-tenant data center hosts data from a plurality of organizations. The diagnostic data is stored at the multi-tenant data center and a rules engine runs on the diagnostic data and provides optimization recommendations for the instance of the data system to which the diagnostic data was collected.

DETAILED DESCRIPTION

FIG. 1is a block diagram of one embodiment of a diagnostics architecture100in accordance with one embodiment. Architecture100includes multi-tenant data center (e.g., a host for data for a plurality of tenants using a business data system)102coupled to tenants 1-N (104-106). Tenants 1-N indicate that there are a plurality (N) tenants. They will be referred to herein as tenants104and106, but it will be appreciated that more tenants could be hosted by multi-tenant data center102.

Tenant104is shown generating user interface displays108with user input mechanisms110for interaction by user112. Tenant106is shown generating user interface displays114with user input mechanisms116for interaction by user118. Tenants104and106illustratively access multi-tenant data center102over network120.

User input mechanisms110can take a wide variety of different forms. For instance, they can be text boxes, buttons, dropdown menus, icons, links, or other user actuatable input mechanisms for controlling and manipulating tenant104. In addition, the user input mechanisms110can be actuated in a wide variety of different ways. For instance, where the device displaying user interface displays108is a touch sensitive screen, mechanisms110can be actuated by touch gestures using the user's finger, a stylus, or another mechanism. Similarly, where tenant104has speech recognition components, user input mechanisms110can be actuated using voice commands. Of course, they can also be actuated using a point and click device (such as a mouse or track ball), a thumb pad, a touch pad, a keypad, hardware or soft keyboard, or another mechanism.

Multi-tenant data center102illustratively includes site-wide server and services122, shared data store124, one or more processors126, database servers128, business data store130that holds business data for tenant104(including, optionally, diagnostics data132, and discovery data133), business data store134that stores business data for tenant106(as well as, optionally, diagnostics data137and discovery data135), diagnostics engine136that has access to diagnostics rules138, and data viewer component140.

For the sake of simplicity, the present description will proceed with respect to the data hosted by multi-tenant data center102being data for multiple on-premise instances of enterprise resource planning (ERP) systems run at tenants104-106. It will be appreciated, however, that any type of hosted data center may be implemented using the technologies presented herein, including hosting data for other types of hosted or on-premise business applications (or hosted business data systems).

Site-wide severs and services122can illustratively execute various applications and provide site-wide services for multi-tenant data center102. Database servers128illustratively maintain one or more associated databases130-134.

FIG. 1shows that, in one embodiment, multi-tenant data center102can utilize per-tenant unshared private databases130-134. Servers128can include database servers that execute database functions against databases130-134. Servers128can also include utility servers that perform utility functions, such as reporting services, load balancing, provisioning, configuration, statistics, and other utility functions. When a new tenant is provisioned at multi-tenant data center102, it can be assigned to one of the groups served by servers128. One of servers128then creates a private, unshared database130-134for the new tenant. Association or mapping between the tenant and the assigned group is also created and stored in shared data store124, along with other configuration information.

Each tenant104-106illustratively corresponds to a separate organization. The organizations illustratively want their business data stored in an unshared database130-134.

Diagnostic engine136receives diagnostic data from each tenant (and specifically the environment of a business data system run on the tenant) and runs diagnostic rules against the diagnostic data. This is described in greater detail below.

Processor126is illustratively one or more computer processors including associated memory and timing circuitry (not separately shown). It is a functional component of data center102and is activated by, and facilitates functionality of, other items of data center102.

Data viewer component140illustratively generates a web interface for viewing data. This is described in more detail below.

FIG. 1shows that tenant104includes one or more database servers150that are coupled to an application data store152. On-premise business application154is illustratively a business data system (such as an ERP system, a CRM system, an LOB system, etc.). For purposes of the present description, on-premise business application154will be referred to in terms of an ERP application. However, this is for the sake of example only. One or more application servers156provide the functionality for on-premise business application154. Reporting servers158can be included to generate on-line analytical processing (OLAP) reporting services. Network servers168(which can be embodied as web servers) can access network120to upload and download information, and otherwise provide communication, with multi-tenant data center102. Communication servers170control communication between application clients, databases and the applications themselves.

Help servers172illustratively provide access to help files for helping user112perform various functions at tenant104. Of course, the on-premise business application environment can include other components, such as other servers, databases, etc., and this is indicated by block174inFIG. 1.

FIG. 1also shows that tenant104includes security component176. Security component176illustratively facilitates authentication and secure communication between tenant104and multi-tenant data center102. This is described in greater detail below.

Processor178is illustratively a computer processor with associated memory and timing circuitry (not separately shown). It illustratively is a functional part of tenant104and facilitates the functionality of various components of tenant104.

User interface component180can be used by various items in tenant104to generate user interface displays108. Of course, component180can generate those displays on its own as well.

Environment discovery component182can be used to discover the various items that comprise part of the on-premise business application environment on tenant104. This is also described in greater detail below as well with respect toFIG. 2. Data collection component184then collects various configuration and performance data from the components and items that make up the environment of the on-premise business application in tenant104. Therefore, component182discovers the business application environment, and component184collects information from the business application environment. Network servers168can then provide diagnostic and configuration data186back to multi-tenant data center102. Multi-tenant data center102then uses diagnostic engine136to run diagnostic rules138against diagnostic and configuration data186. Data viewer component140can generate a view of the raw data, evaluation results and recommendations187for optimizing or increasing the performance, of the business application environment at tenant104. User interface component180can then display the raw data, the configuration results, and the recommendations187, on user interface displays108for user112, or they can be viewed by other suitable components.

It will be noted that, while tenant104is shown in detail, tenant106(and other tenants that use multi-tenant data center102) may illustratively include similar items to those shown in tenant104. However, only tenant104is shown for the sake of simplicity.

FIG. 2is a flow diagram illustrating one embodiment of the operation of the architecture100shown inFIG. 1in conducting an initial discovery of the on-premise business application environment at tenant104. In order to do this, environment discovery component182is first downloaded from multi-tenant data center102and installed on tenant104. User112first provides authentication information through security component176authenticating user112as a member of the organization corresponding to tenant104. For instance, user112can generate an on-premise certificate and then sign into a project for which multi-tenant data center provides storage or functionality. User112then navigates to an upload page through which user112can upload the certificate. It is then uploaded to multi-tenant data center102. Site-wide servers and services122illustratively perform authentication and possibly decryption to ensure that communication between user112of tenant104and data center102is both authorized and secure. Security component176can perform security functions on tenant104, in addition. Receiving the user authentication inputs is indicated by block200inFIG. 2, and sending the authentication information to data center102is indicated by block202.

Once secure communication has been authenticated and established, user112navigates (under control of site-wide server and services122) to a download page and downloads and installs the on-premise environment discovery component182and data collection component184. Receiving and installing these components is indicated by block204inFIG. 2.

Environment discovery component182then conducts an initial discovery of the on-premise business application environment. This is indicated by block206inFIG. 2. The discovery process is described in greater detail below with respect toFIG. 5. Briefly, however, environment discovery component182is illustratively pointed at database servers150. Component182accesses the other servers enumerated in tenant104that are part of the on-premise business application environment. It will be noted that each of the servers are treated separately. For instance, if there are a plurality of application servers156serving on-premise business application154, each of those servers will be treated separately, as a federation of servers instead of as a single server. Thus, the diagnostic and configuration data186can be collected on a per-server basis.

In any case, environment discovery component182discovers the environment for on-premise business application154. The environment data, that represents the configuration of the environment, is then sent to multi-tenant data center102. The discovery data can be stored along with the business data for tenant104, or it can be stored on a shared data store124or elsewhere. In the embodiment shown inFIG. 1, discovery data133and discovery data135are shown stored separately in the business data store for the individual tenants104and106, respectively. Sending the environment or discovery data to data center102is indicated by block208inFIG. 2.

FIG. 3is a flow diagram illustrating one embodiment of the operation of environment discovery component182and data collection component184in performing a data collection operation. In one embodiment, before performing data collection, certificate-based (or other) authentication is performed to ensure that the data collection is properly authorized. If the authorization fails, the data collection process ends. This is indicated by blocks207and209. In one embodiment, the data collection operation is scheduled. Scheduling the diagnostic data collection can be done in a wide variety of different ways. In one embodiment, user108can illustratively open a scheduling application (such as a task scheduler) and create a schedule to run a command line executable. User112can identify a diagnostic executable and specify an existing environment by name. User112can test the scheduled job by running it manually, through the scheduler, and then inspecting a log file to ensure that it was run properly. The user can then log onto multi-tenant data center102and select a project corresponding to the environment for which the data collection has been scheduled. In response, data viewer component140generates a dashboard view of that project and also an environmental dashboard for viewing the named environment. The user can examine a log page for the processes corresponding to that environment to confirm that the data collection has been scheduled and that the diagnostic rules138, corresponding to this diagnostic data collection operation, have been executed.

Therefore, data collection component184waits until it is time for a next scheduled diagnostic data collection operation. This is indicated by block210inFIG. 3. When it is time to perform a diagnostic data collection, environment discovery component182performs a re-discovery operation. That is, even though a discovery operation was originally performed, there may have been updates or modifications to the on-premise business application environment since that original discovery operation. Therefore, component182rediscovers the environment. This is indicated by block212inFIG. 3.

If there are any environment updates, they are uploaded to multi-tenant data center102, where they can be stored along with the data for tenant104. This is indicated by blocks214and216inFIG. 3.

Data collection component184then performs the diagnostic data collection on the re-discovered environment. It should be noted that, when installed, data collection component184is agentless. This means that, even if multiple different server instances are being run on multiple different servers on tenant104, an instance of data collection component184is not run on each server. Instead, component104looks at that collection of servers as a federation of servers performing together, and collects diagnostic data in this way. One embodiment of some things that data collection component184can collect is described in more detail below with respect toFIG. 6. Performing the diagnostic data collection on the re-discovered environment is indicated by block218inFIG. 3.

Once the on-premise environmental diagnostic data is collected, security component176performs authentication with multi-tenant data center102. It should be noted that, in one embodiment, the authentication process is performed automatically by security component176, without any user involvement. However, to the extent user112is involved in the communication, then the authentication performed by security component176verifies that user108is associated with the organization corresponding to tenant104. In one specific embodiment, the authentication is a certificate-based authentication such as that briefly described above. Performing the authentication is indicated by block220inFIG. 3.

Once the diagnostic data has been collected, network server168can illustratively upload the diagnostic data186to multi-tenant data center102. It can be stored as diagnostic data132in the business data for tenant130, or in another place. At a suitable time, diagnostic engine136can retrieve diagnostic data132and evaluate it against the diagnostic rules138and return the raw data, the evaluation results and the recommendations187to tenant104. Uploading the diagnostic data to the data center for evaluation is indicated by block222inFIG. 3and receiving the raw diagnostic data, the evaluation results and any recommendations, is indicated by block224. User interface component180can then be used to display the raw data, the evaluation results and the recommendations to user112on user interface displays108. This is indicated by block226inFIG. 3.

FIGS. 3A-3Dare illustrative user interface displays showing various views that can be selected by user112in order to view the information returned by diagnostic engine136.FIG. 3Ashows one embodiment of a user interface display230. It can be seen that, in user interface display230, user112has selected a dashboard view by actuating dashboard button232. In response, user interface component180shows diagnostic information. User interface display230shows that an environment display234displays a particular named environment for which the diagnostic data was collected. User interface display230also includes a rule message section236and a job alert section238. Rule message section236shows a number of servers that had error messages and warning messages generated for them. In addition, a message count indicator240shows the number of messages that were generated, by category. For instance, indicator240shows that four error messages were generated, one warning message was generated, and no information messages were generated.

Job alert section238shows a plurality of different categories of alerts that can be displayed. In one embodiment, the alerts include jobs with unreachable hosts, jobs with errors, and successful jobs. Both sections236and238illustratively include a graphical indicator, such as a pie chart, which breaks out the messages or alerts, by percentage.

In the embodiment shown inFIG. 3A, user interface display230also includes a message list section242. Message list section242shows status, application role, host instance, module, runtime and rule, corresponding to each of a plurality of different messages. In the embodiment shown inFIG. 3A, the last five messages are displayed, although any other desired number of messages could be displayed as well.

FIG. 3Bshows a user interface display244in which the user has selected the messages button246. This causes display244to show the message list242(shown at the bottom ofFIG. 3A). It also allows the user to select any of the messages in list242and obtain additional information for it. InFIG. 2B, the user has selected a second message250from list242. This causes rule detail section252to be updated with the details of the rule that generated the highlighted message250. In the embodiment shown inFIG. 3B, the rule is “RSCI not configured”. Rule details section252includes the name254of the rule, along with the module256on which the rule was run, and an author258of this specific rule. Section252also includes a condition indicator260that indicates a specific condition that caused the rule to fire. In addition, an observation section262provides observations that are relevant to the rule, and recommendation section264includes a recommendation to remedy the error or alert that spawned the message. In addition, an additional information section266allows user112to obtain additional information corresponding to the error or alert that spawned the message.

FIG. 3Cshows one embodiment of a user interface display268. Display268is generated when user112actuates the environments button270. This causes one of the components of tenant104to display an environments list272that lists details about the environment corresponding to on-premise business application154in tenant104. Details section272illustratively includes an environment indicator274corresponding to the environment, along with a resource type indicator276, a host name278that hosts the environment, an identifier280that identifies the environment, and a port number and product version282and284, respectively, corresponding to the displayed environment.

FIG. 3Dis one embodiment of a user interface display286that is generated when the user actuates the status button288. It can be seen that user interface display286includes a status display290. Status display290again identifies the environment identifier247and includes a dropdown menu for selecting a number of status lines that are to be displayed. Display section290includes a status display294, a start time display296, and a completed time298. This includes the status of the diagnostic data collection and the start and end times when the diagnostic data collection was started and completed, respectively. In addition, display290includes a resource type indicator300and a server indicator302. Indicator300identifies the resource type for which the diagnostic data was collected and server indicator302indicates the servers for which the diagnostic data was collected.

FIG. 4is a flow diagram illustrating one embodiment of the operation of diagnostic engine136in multi-tenant data center102in performing diagnostic services for tenant104. Multi-tenant data center102first receives the certificate-based (or other authentication) information from tenant104. This is indicated by block350inFIG. 4. Diagnostic engine136then (after tenant104has been authenticated) either receives from tenant104, or obtains from the data store130for tenant104, the diagnostic data (186or132). Receiving or obtaining the diagnostic data is indicated by block352inFIG. 4.

Diagnostic engine136then accesses diagnostic rules138in order to perform the evaluation. It will be noted that rules138can be a separate set of rules for each tenant, each business system environment, or they can be one common set of rules, or otherwise. Accessing the rules is indicated by block354inFIG. 4.

Diagnostic engine136then performs an evaluation of the diagnostic data received for tenant104against the diagnostic rules. This is indicated by block356inFIG. 4. It will be noted that a wide variety of different types of diagnostic rules can be run against the diagnostic data. The rules can determine whether the servers and environment for the on-premise business application154are configured properly or whether they can be configured for improved performance. The diagnostic rules138can implement a set of best practices and they can be used to enforce or recommend other things as well. The diagnostic rules138can have a wide variety of complexity. For instance, they can expose scalar variables, process records, count the number of files, compare files against one another, implement combinatorial logic against the data, or a wide variety of other things as well. In addition, the rules can be ranked according to importance, or they can be weighted according to importance. The more important rules may generate different types of messages, or the messages generated from those rules can be flagged as being more important than messages generated from other rules, etc.

Diagnostic engine136then generates the results of the evaluation, and can also generate recommendations based on those results. This is indicated by blocks358and360inFIG. 4.

Diagnostic engine136and data viewer component140can then generate a view of the raw data collected, the evaluation results, and the recommendations, and they can be displayed to a desired user or at a desired location. Generating a view of the raw data collected, the evaluation results and the recommendations187is indicated by block362inFIG. 4. In one embodiment, the view of this data is provided by a web view generated by data viewer component140of multi-tenant data center102.

FIG. 5is a flow diagram illustrating one embodiment of the operation of environment discovery component182in more detail. In one embodiment, environment discovery component182accesses database server150. The database server150illustratively enumerates the various servers and components in the environment of on-premise business application154. Accessing database server150is indicated by block370inFIG. 5. Environment discovery component182then identifies other servers that are part of the business data system environment (that is, servers on the predefined set of data used by on-premise business application154). Identifying the other servers on the predefined set of data is indicated by block372inFIG. 5.

There are a wide variety of different types of servers that may be identified. For example, they can include the database servers150, communication server170, network (or web) servers168, reporting (e.g., OLAP) servers158, other types of analytic servers373, help servers172, application servers156, or other servers374.

Environment discovery component182then stores environment data that represents the configuration of the on-premise business application environment. This is indicated by block376inFIG. 5.

FIG. 6is a flow diagram illustrating one embodiment of the operation of data collection component184in more detail. Component184first illustratively selects an individual server identified in the environment. This is indicated by block380inFIG. 6. Next, data collection component184collects any of a wide variety of different types of data, for that selected server. This can include, by way of example, running database queries382, reading registries384, reading event logs386, issuing network commands to obtain network statistics388, or a wide variety of other data collection390.

It can thus be seen that multi-tenant data center102receives diagnostic data from an instance of a business application (such an ERP application). The multi-tenant data center hosts data from a plurality of different organizations. The diagnostics data is stored at the multi-tenant data store and diagnostic engine136is run against the collected data to provide evaluation results and optionally a variety of different optimizations or recommendations. The results can be transmitted back to the tenant by a web view from the multi-tenant data center102or otherwise. In addition, user112is illustratively authenticated to ensure that user112is with an organization corresponding to tenant104. Once the user is verified as being associated with the organization, the diagnostic data associated with the ERP instance for the organization is transmitted to the tenant for viewing by the user112.

In the embodiment shown inFIG. 7, some items are similar to those shown inFIG. 1and they are similarly numbered.FIG. 7specifically shows that multi-tenant data center102is located in cloud502(which can be public, private, or a combination where portions are public while others are private). Therefore, user112uses a user device504that includes tenant104to access those systems through cloud502.

FIG. 7also depicts another embodiment of a cloud architecture.FIG. 7shows that it is also contemplated that some elements of data center102are disposed in cloud502while others are not. By way of example, data stores130,134can be disposed outside of cloud502, and accessed through cloud502. In another embodiment, diagnostic engine136and rules138are also outside of cloud502. Regardless of where they are located, they can be accessed directly by device504, through a network (either a wide area network or a local area network), they can be hosted at a remote site by a service, or they can be provided as a service through a cloud or accessed by a connection service that resides in the cloud. All of these architectures are contemplated herein.

FIG. 8is a simplified block diagram of one illustrative embodiment of a handheld or mobile computing device that can be used as a user's or client's hand held device16, in which the present system (or parts of it) can be deployed.FIGS. 9-12are examples of handheld or mobile devices.

FIG. 8provides a general block diagram of the components of a client device16that can run components of data center102or tenants104-106or that interacts with architecture100, or both. In the device16, a communications link13is provided that allows the handheld device to communicate with other computing devices and under some embodiments provides a channel for receiving information automatically, such as by scanning Examples of communications link13include an infrared port, a serial/USB port, a cable network port such as an Ethernet port, and a wireless network port allowing communication though one or more communication protocols including General Packet Radio Service (GPRS), LTE, HSPA, HSPA+ and other 3G and 4G radio protocols, 1Xrtt, and Short Message Service, which are wireless services used to provide cellular access to a network, as well as 802.11 and 802.11b (Wi-Fi) protocols, and Bluetooth protocol, which provide local wireless connections to networks.

Under other embodiments, applications or systems (like on-premise business application154) are received on a removable Secure Digital (SD) card that is connected to a SD card interface15. SD card interface15and communication links13communicate with a processor17(which can also embody processors126or178fromFIG. 1) along a bus19that is also connected to memory21and input/output (I/O) components23, as well as clock25and location system27.

FIGS. 10 and 11provide additional examples of devices16that can be used, although others can be used as well. InFIG. 10, a feature phone, smart phone or mobile phone45is provided as the device16. Phone45includes a set of keypads47for dialing phone numbers, a display49capable of displaying images including application images, icons, web pages, photographs, and video, and control buttons51for selecting items shown on the display. The phone includes an antenna53for receiving cellular phone signals such as General Packet Radio Service (GPRS) and 1Xrtt, and Short Message Service (SMS) signals. In some embodiments, phone45also includes a Secure Digital (SD) card slot55that accepts a SD card57.

The mobile device ofFIG. 11is a personal digital assistant (PDA)59or a multimedia player or a tablet computing device, etc. (hereinafter referred to as PDA59). PDA59includes an inductive screen61that senses the position of a stylus63(or other pointers, such as a user's finger) when the stylus is positioned over the screen. This allows the user to select, highlight, and move items on the screen as well as draw and write. PDA59also includes a number of user input keys or buttons (such as button65) which allow the user to scroll through menu options or other display options which are displayed on display61, and allow the user to change applications or select user input functions, without contacting display61. Although not shown, PDA59can include an internal antenna and an infrared transmitter/receiver that allow for wireless communication with other computers as well as connection ports that allow for hardware connections to other computing devices. Such hardware connections are typically made through a cradle that connects to the other computer through a serial or USB port. As such, these connections are non-network connections. In one embodiment, mobile device59also includes a SD card slot67that accepts a SD card69.

Note that other forms of the devices16are possible.