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!

From Local to Global

I made a career move from local role to a global role mid last year. It’s been almost a year, so I’d like to share the pro and con of both roles. Hopefully it helps you in your career, and keeping the fun in work!

It’s common for a global corporation to have 4 levels of geographic coverage:

  • Local: cover a city or a small country. In my case, it’s just Singapore.
  • Regional: cover a region or large country. In my case, it’s ASEAN.
  • Continent: Asia Pacific, Europe, Africa, America
  • Global.

In vendor environment (as opposed to end-user), there are 2 large primary teams

  • Product team: develop the product. The sub-team are:
    • Product Management, R&D, QA, Sustaining, UX (focus on the UI), IX (focus on documentation).
    • They focus on releasing the next big thing.
  • Field team: sell, implement, support the product.
    • Sales, SE, Consulting, Technical Account Managers, Support, Education.
    • They focus on the quarterly target, closing large deals.

Of course, they are supported by many smaller & supporting team, such as marketing, pricing, and CTO Office.

I’ve never worked in Product Team, so when an opportunity arose, I took the leap of faith.

  • From Local to Global, bypassing ASEAN and Asia Pacific.
  • From Field to R&D. My boss no longer in Singapore, ASEAN and Pacific, but directly at our HQ in Palo Alto. A few months ago, there was a re-org and my boss now in Europe. I have not met him yet!
  • From generalist to specialist. I now do vR Ops full time.

Now that it’s almost a year, I can say with enough confidence that it was a good decision. We all work for 3 reasons. I call them the 3M of work:

  • Money
  • Meaning. It has to fill your spirit, not just your pocket.
  • Merriment. It’s gotta be fun, and you love your work.

The job at global level is harder, much harder. Instead of thinking for just 1 customer (my job was Account SE), or a few customers, I have to think of the world. While working on future version, I have to think of current version and previous version. Brownfield is much harder than greenfield. I learned from R&D team that there was many things to be considered before adding or removing a feature. The complexity makes the job meaningful. Life is short, and the journey is as important as the destination. I’ve never done product development before. Luckily, folks are kind and we got along really well. I work with R&D team in Armenia and Palo Alto. They have never, never asked me to accommodate their time zone. I’m truly grateful for that. Folks like Monica Sharma (Director, Product Management) and of course Sunny Dua provide a lot of coaching and guidance.

My perspective was widened. Before, I was just working with a few customers in Singapore, and a bit of ASEAN. Now I work with customers from Europe to US. What I accepted as the best before, has been reset. I’ve seen other region and customers achieved something better.

I didn’t know there was so much work! The demand for the role I took was apparently untapped. I had no idea since I was not busy when doing local role! There was so much request for help outside Singapore. I do webex regularly with customers, helping them remotely. They would login to their production environment, and we troubleshoot issue together. I get to see live environment, and insight into operation.

The downside is travel. Controlling the schedule is important, else I could travel non-stop and just spend weekend at home. My travel schedule is practically full 3 months in advance. Again, folks are generally accommodating. I learn when we explain to folks openly why we can’t be there (they are sponsoring my trip), they are willing to accommodate.

Travel can be sudden. I gotta a call to help large customer on Thursday morning, and on Sunday I was already in the plane to see them. If you have young kids, this can be deal breaker. My 2 kids are 12 and 15 already, but my Mum at 80 needs care.

Speaking of travel, gluten free is a challenge. I am allergic to both dairy and gluten, so keeping these 2 away is difficult when abroad. There is no easy solution today. Singapore Airlines changes the menu every 3 months, so I know in advance exactly what I’m getting 🙂

I hope the sharing is useful for those who are thinking of taking global role.

Monitoring Active Directory 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 Active Directory.

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

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

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. This is required to drive the widgets, so they show the correct 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.

You will need to repeat this step 4 times, please, make a note and repeat the name exactly like listed below:

ad-server.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Active Directory">
 <Metric attrkey="AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|DSClientBindsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="THROUGHPUT|DSDirectorySearchesperMinute" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 </AdapterKinds>

ad-ldap.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Active Directory">
<Metric attrkey="Active Directory LDAP:LDAP|AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
<Metric attrkey="Active Directory LDAP:LDAP|THROUGHPUT|LDAPSearchesperMinute" label="" unit="" yellow="" orange="" red=""/>
<Metric attrkey="Active Directory LDAP:LDAP|THROUGHPUT|LDAPNewConnectionsperMinute" label="" unit="" yellow="" orange="" red=""/>
</ResourceKind>
</AdapterKind>
</AdapterKinds>

ad-authentication.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Active Directory">
 <Metric attrkey="Active Directory Authentication:Authentication|AVAILABILITY|ResourceAvailability" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="Active Directory Authentication:Authentication|THROUGHPUT|NTLMAuthenticationsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="Active Directory Authentication:Authentication|THROUGHPUT|KerberosAuthenticationsperMinute" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="Active Directory Authentication:Authentication|THROUGHPUT|KDCTGSRequestsperMinute" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 </AdapterKinds>

VM-OS-AD-metrics.xml

<?xml version="1.0" encoding="UTF-8"?>
 <AdapterKinds>
 <AdapterKind adapterKindKey="EP Ops Adapter">
 <ResourceKind resourceKindKey="Windows">
 <Metric attrkey="FileServer Logical Disk:C:|UTILIZATION|Avg.Disksec/Transfer" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="FileServer Mount:C:\ (local/NTFS)|UTILIZATION|UsePercent" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="FileServer Physical Disk:0 C:|UTILIZATION|%DiskTime" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="FileServer Physical Disk:0 C:|UTILIZATION|Avg.DiskQueueLength" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="FileServer Physical Disk:0 C:|UTILIZATION|CurrentDiskQueueLength" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="FileServer Physical Disk:0 C:|UTILIZATION|DiskReadBytes/sec" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="FileServer Physical Disk:0 C:|UTILIZATION|DiskWriteBytes/sec" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="NetworkServer Interface:Network Interface eth10 (ethernet)|THROUGHPUT|BitsReceivedperSecond" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="NetworkServer Interface:Network Interface eth10 (ethernet)|THROUGHPUT|BitsTransmittedperSecond" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|CpuUsage" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|PercentUsedMemory" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="UTILIZATION|PercentUsedSwap" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 <AdapterKind adapterKindKey="VMWARE">
 <ResourceKind resourceKindKey="VirtualMachine">
 <Metric attrkey="cpu|capacity_contentionPct" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="cpu|usage_average" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="diskspace|actual.capacity.normalized" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="diskspace|underusedpercent" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="mem|host_contentionPct" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="mem|usage_average" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="storage|totalReadLatency_average" label="" unit="" yellow="" orange="" red=""/>
 <Metric attrkey="storage|totalWriteLatency_average" label="" unit="" yellow="" orange="" red=""/>
 </ResourceKind>
 </AdapterKind>
 </AdapterKinds>

That’s it!

To use the Dashboard, watch the 45 seconds video below:

PS: If you like the soundtrack, the music is Plain Truth offered for free by Gunnar Olsen. Nice right! 🙂

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