Tag Archives: Application

Monitoring Oracle WebLogic Servers

This blog is contributed by my friend Luciano Gomes, a VMware Technical Account Manager in Rio de Janeiro Area, Brazil. Thank you, Lucky!

You can monitor Oracle WebLogic Server using vR Ops. This helps you see the correlation between Application and Infrastructure. I’ve created 3 custom dashboards to jump start your effort.

First of all, the pre-requisites:

  1. vR Ops Enterprise edition.
  2. Weblogic Solution Installed
    1. Download here and see here how to install
    2. We support WebLogic 10.3 and above. These dashboards were made for 10.3. If you have a different version you need to update the metrics files.
  3. EP Ops Agent installed on each WebLogic servers that you want to monitor
    1. See here how to install
  4. Import all Dashboards, Views and re-create all metrics files available.
    1. See here how to import

To import, follow these 3 steps:

  1. Import the dashboards available here
  2. Import the views available here
  3. Recreate the Metrics files, available below (See here how to recreate this metrics files below). The files must have the same name as shown below.

weblogic-admin-server.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Weblogic Admin 10.3">
 <Metric attrkey="PERFORMANCE|JVMTotalGarbageCollectionTime" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="PERFORMANCE|JVMTotalGarbageCollectionTimeperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|InvalidLoginAttemptsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|JTAActiveTransactionsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|JTACommittedTransactionsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|JMSActiveServers" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|JTASecondsActiveperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|JTASystemTransactionsRolledBackperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|JTATransactionsRolledBackperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|SocketsOpen" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 </AdapterKinds>

weblogic-jdbc-connection-pool.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Weblogic 10.3 JDBC Connection Pool">
 <Metric attrkey="UTILIZATION|ActiveConnections" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|FailurestoReconnectperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|HighActiveConnections" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|LeakedConnectionsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|MaxConnectionsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalConnectionsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ConnectionDelayTime" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalConnections" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|WaitingForConnectionCurrentCount" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 </AdapterKinds>

weblogic-jta-resource.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Weblogic 10.3 JTA Resource">
 <Metric attrkey="AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionHeuristicCommitsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionHeuristicHazardTotalperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionHeuristicMixedTotalperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionHeuristicRollbacksperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionHeuristicsTotalperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionsCommittedperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionsRolledBackperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionsTotal" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|TransactionHeuristicCommits" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 </AdapterKinds>

weblogic-webapp.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Weblogic 10.3 Webapp">
 <Metric attrkey="AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|CurrentActiveSessions" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|SessionsCreated" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|SessionsCreatedperMinute" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 </AdapterKinds>

Once you got them imported, you’ll get the dashboards below. I’ve added some help on the dashboard image.

Weblogic Components Dashboard:

Weblogic Components Menu

Weblogic Overview

Hope you find it useful. Do reach out via Linkedin and Twitter. Thanks for reading!

Monitoring IIS with vRealize Operations

This blog is contributed by my friend Luciano Gomes, a VMwareTAM in Rio de Janeiro Area, Brazil. Thank you, Lucky!

In this post, I would like to show how you can monitor Microsoft IIS. By the end of it, you will get a dashboard like this.

First, let’s get the prerequisites out of the way:

  1. vRealize Operations (Enterprise edition, not Advance. IIS is considered as application, not infrastructure)
  2. Endpoint Operations Agent running on each IIS machine you are monitoring.
  3. IIS Solution for vR Ops (here). Download and install it.

With the above done, download the dashboard I created. Import it into vR Ops.

Once done, follow the steps below to configure the Metric Config XML files. The files are required to drive the widgets, so they show the metrics you want. You can certainly configure the files if you want to show a different metrics.

The above will take you to the Manage Metric Config screen.

  1. Click ReskndMetric folder to expand
  2. Click Green Plus Sign to create a new file.

Use the name exactly like listed below. The filename no extension.

IIS ALL METRICS

<?xml version="1.0" encoding="UTF-8"?>
<AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="IIS AppHostSvc">
 <Metric attrkey="AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessCpuUsage" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessResidentMemorySize" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessPageFaultsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessOpenFileDescriptors" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessThreads" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessVirtualMemorySize" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 <ResourceKind resourceKindKey="IIS WAS Service">
 <Metric attrkey="UTILIZATION|ProcessThreads" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessResidentMemorySize" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessPageFaultsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessOpenFileDescriptors" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessCpuUsage" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessCpuTotalTimeperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ChildProcesses" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 <ResourceKind resourceKindKey="IIS WAS Service Application Pool">
 <Metric attrkey="UTILIZATION|CurrentApplicationPoolUptime" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalWorkerProcessesCreatedperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalWorkerProcessStartupFailuresperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalApplicationPoolUptime" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalApplicationPoolRecyclesperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|RecentWorkerProcessFailures" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|CurrentWorkerProcesses" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|MaximumWorkerProcessesperMinute" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 <ResourceKind resourceKindKey="IIS WWW Service">
 <Metric attrkey="THROUGHPUT|BytesReceived/sec" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|BytesSent/sec" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|ConnectionAttempts/Sec" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|CurrentConnections" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|MeasuredAsyncI/OBandwidthUsage" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|ProcessCpuUsage" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalGetRequestsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|TotalNotFoundErrorsperMinute" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
</AdapterKinds>

That’s it!

Hope you find it useful. Do reach out via Linkedin and Twitter. Thanks for reading!

Multi-tier Application Monitoring

This post is part of Operationalize Your World post. Do read it first to get the context.

I covered a single-tier application in this post. Read that first, as this blog builds upon that.

Done?

Great! A lot of you have shared that you want a multi-tier applications. One customer has a mission critical application that spans 5 tiers and 68 VMs. The dashboard I shared earlier does not scale to that level, as you certainly don’t want to check 68 VM one by one!

Application

To make sure we are on the same page, here is an example of multi-tier application:

A multi-tier application can suffer from either horizontal or vertical problem:

  • By horizontal, I mean a tier has problem. When the web tier is slow, it can slow down the entire application. The speed of a convoy is determined by the slowest car. We will use the following formula to determine the application performance:
    Application Performance = Minimum (Tier Performance)
  • By vertical, I mean something that cut across tier. Storage, for example. If the slowness is caused by something common, there is no need to troubleshoot individual VM, as they are simply victim.

That means we need to check both angles when an application had performance problem:

  • Which tier had the problem? Since when? How bad? What was the problem?
  • What infra problem did the app had? Storage, Network, CPU, RAM?

The above check makes a good starting point in your analysis. Don’t zoom into a particular VM until you know the overall picture. No point fire fighting the kitchen if the whole house is on fire.

Application Tier

The health of a tier is the average health of its member. This is because a tier scales out. We are not taking the minimum value. This is not a convoy.

Hold on!” you might say. Since it is scale out, App Team has catered for this. If they only need 3 web servers, they will deploy 4 or even 5. So both performance and availability are not affected. The tier performance has to take into account this extra node, not simply doing an average.

This logic sounds reasonable. But is it correct?

It is not actually. Because this is not about Availability. This is about Performance. All web servers are still up, but if node no 4 is slower, user experience will be affected.

My fellow blogger Luciano Gomes advise that some Load Balancer can detect the performance of a node. This is good, as simply counting the number of session is not a complete measurement. The node measurement is based on this formula. It takes into account how the IaaS platform is serving the Node. So it’s looking beyond the Guest OS. This is because performance cannot be measured from within the Guest OS only. Review this discussion between David Davis and Sunny Dua.

This is why we are doing an average. You want to be informed if there is degradation, since this is performance, not availability.

The health of a VM is simple. We leverage the work we’ve done for a single-tier application here.

Dashboard 

I found that doing a logical design of dashboard actually saves time. Follow best practices to help you.

Here is the logical design of the dashboard. Notice it has 3 levels: App, Tier, VM.

Here is what it looks like

Click on the image below to see explanation of each section:

Hope you find it useful. As usual, you do not have to build this from scratch. This is part of Operationalize Your World, which give you 50+ dashboards.