Wednesday, November 23, 2011

NPC Application Groups

As mentioned in a previous series of posts, when building groups in NPC, there needs to be a 'Reporting Groups' group.  Expanding on the need for reporting groups, I figured I'd detail exactly what should go into that group and how to work with it.

The most important group that should exist in the reporting groups is an application group.  This application group doesn't contain any objects of itself and really isn't used for any reporting.  It's just there to assist in managing the groups that it will contain, namely application groups.  While the strategies outlined in my previous posts build the groups needed to organize the geographical layout of your infrastructure, the Applications group is where the logical layout of your applications is built to facilitate reporting on individual applications.
Let's say I have an in house application that is hosted by 10 different servers in two different roles (web tier and database tier).  The first thing I would need to do depends on whether or not I have SuperAgent (aka Application Delivery Analysis or ADA).  If I have ADA, I'll configure the applications there and ensure each application is being displayed there properly.  In ADA, application components are configured.  Even though this all belongs to one application, ADA treats each component as a different application.  That's why we need the NPC groups to bring them together.  

In this case, I'd configure two ADA applications: Web and DB.  The configuration of an application in ADA involves designating on which port the application component is hosted and the servers that host it.  Since my front tier is web based and the back end uses MSSQL, the applications would be configured like this:

Web Tier: Port 80
Servers: 10.1.2.10-10.1.2.19

DB Tier: Port 1433
Servers: 10.1.2.20

Once I've configured these in ADA and verified that they are reporting data that I expect, I'm ready to logically group them together in NPC.  The sync process should take care of itself automatically.  If you're at this step within 5 minutes of configuring the applications in ADA, you might want to make sure ADA is in sync with NPC through the data sources menu in NPC.

Under my Reporting Groups/Applications group, I'll need to create a group to contain my application.  The name of this group should be the name of the application.  Underneath this group you have two options: manual membership or dynamic groups.  Obviously dynamic groups are better, but I'll explain how to use manual membership for the masochistic ones out there.

If I'm building manual groups, I'll need to include the servers hosting the application and the application CI (configuration item) itself.  In this way, I can ensure that I will see ADA data within NPC.  If I only add the servers (leaving the application CIs out of the group) NPC will assume a wildcard for the application parameter of the data.  This means that I'll see any application hosted by the servers instead of just the two I'm interested in.  I can add the systems via a rule (if your naming convention allows distinguishing between applications by server name) or I can add the servers manually.  The same can be said for adding the application CIs.  The problem with this is that most things change and I don't want to have to update my group every time I update the configuration in ADA.

Building dynamic groups is actually easier and they will update themselves based on the configuration changes I make in ADA (don't ask: ADA has automatic application discovery, but it doesn't do well with custom applications that use common ports).  Part of the sync process between ADA and NPC involves the creation of some system groups called 'Relationship' groups.  These groups pull together all the servers hosting a single ADA application and put them (along with the application CI) into a dynamic group.  The sync process will do this for all applications configured in ADA (which can be a lot since ADA can discover applications).  So, the general idea is that once I've configured my two applications in ADA, there will be two corresponding groups in NPC that contain all the servers and the application CIs.  If I simply copy those groups and paste them into my /Reporting Groups/Applications/MyApp group, I'm done.  The MyApp group will contain two subgroups that contain all the objects I need to properly display data in NPC.  At the same time, the groups will update.  So, if my application shifts a little (new server added to the front end, for example), all I have to do is update the configuration in ADA and my groups in NPC will update.

Stay tuned, I'll be blogging about APD next.  No, not the Austin police department: Application Performance Dashboard.