The Server (and client) Performance Solution for OMS

Are you looking for a way to use OMS to give you performance information? Check out this pre-built solution which you can have running in your environment in less than 5 minutes. Earlier this year I wrote a series of blog posts on how to visualize server information in OMS. I have been working on evolving this and with help from. I took insights from the OMS community and combined that with some enhancements to the View Designer to move this forward. Microsoft has also provided the ability to easily import a pre-built solution into OMS so this is now much easier to share.

This blog post will showcase how to install the new server health solution for OMS, give some examples of how data is visualized for server health in OMS using this solution, show some of the approaches used within this solution and show you where to download the solution from.

 

Installing the server performance solution for OMS:

To add the server health solution to your environment you just need to Import the solution (available for download at https://gallery.technet.microsoft.com/scriptcenter/Server-Performance-3d767ab1) and add the performance counters which it uses.

Importing the solution:

To import the solution open the View Designer.

112116_1438_TheServeran1.png

Use the Import option and choose the “Server Performance.omsview” file available for download at: https://gallery.technet.microsoft.com/scriptcenter/Server-Performance-3d767ab1

112116_1437_TheServeran2.png

Once it is imported, save the solution.

server03

Add the metrics specified on the page:

The next step is to add the performance metrics which are required for the page.

server04

Default performance counters will cover all of the ones used by this solution.

If you want to add only the specific counters which are used by this solution add:

  • Logical Disk(*)\% Free Space
  • Memory(*)\% Committed Bytes in Use
  • Memory(*)\Available MBytes
  • Network Interface(*)\Bytes Total/Sec
  • Network Adapter(*)\Bytes Received/sec
  • Network Adapter(*)\Bytes Sent/sec
  • Processor(_Total)\% Processor Time

 

What queries does this solution use?

Server queries for their data being sent to OMS:

  • Servers currently reporting to OMS/Computers sending data: “MG:* | Measure Max(TimeGenerated) as LastData by Computer | where LastData>NOW-1HOURS
  • Servers not currently reporting to OMS/Computers not sending data: “MG:* | Measure Max(TimeGenerated) as LastData by Computer | where LastData<NOW-1HOURS

Processor queries:

  • Average Processor over time: “Type:Perf (ObjectName:Processor OR ObjectName:System) AND (CounterName=”% Processor Time”) | measure avg(CounterValue) by Computer
  • 90th Percentile Processor over time: “Type:Perf (ObjectName:Processor OR ObjectName:System) AND (CounterName=”% Processor Time”) | measure percentile90(CounterValue) by Computer”
  • StackedBarChart processor over time: “Type:Perf (ObjectName:Processor OR ObjectName:System) AND (CounterName=”% Processor Time”) | measure percentile90(CounterValue) by Computer | Display StackedBarChart

Disk usage queries:

  • Average Disk usage over time: “Type:Perf ((ObjectName:LogicalDisk AND CounterName:”% Free Space” )) | Measure avg(CounterValue) by Computer
  • 90th Percentile Disk usage over time: “Type:Perf ((ObjectName:LogicalDisk AND CounterName:”% Free Space” AND InstanceName!=”_Total”)) | measure percentile90(CounterValue) as AvgFreeSpace by Computer,InstanceName | sort AvgFreeSpace
  • StackedBarChart Disk usage over time: “Type:Perf ((ObjectName:LogicalDisk AND CounterName:”% Free Space” AND InstanceName!=”_Total”)) | measure percentile90(CounterValue) as AvgFreeSpace by Computer,InstanceName | sort AvgFreeSpace | display StackedBarChart

Memory usage queries:

  • Average available Mbytes over time: “Type:Perf (ObjectName: Memory) AND (CounterName=”% Committed Bytes In Use”) | Measure percentile90(CounterValue) by Computer
  • 90th Percentile available Mbytes over time: “Type:Perf ((ObjectName:Memory AND CounterName:”Available MBytes” )) | measure percentile90(CounterValue) as AvgFreeMemory by Computer | sort AvgFreeMemory
  • StackedBarChart Memory over time: “Type:Perf ((ObjectName:Memory AND CounterName:”Available MBytes” )) | measure percentile90(CounterValue) as AvgFreeMemory by Computer | sort AvgFreeMemory | Display StackedBarChart

Network usage queries:

  • Average network traffic per computer: “Type:Perf (ObjectName=”Network Interface”) (CounterName=”Bytes Total/sec”) | measure Avg(CounterValue) as BytesTotal by Computer
  • StackedBarChart Network traffic bytes total/sec: “Type:Perf (ObjectName=”Network Interface”) (CounterName=”Bytes Total/sec”) | measure Avg(CounterValue) as BytesTotal by Computer | Display StackedBarChart
  • Packets Received over time: “Type:Perf (ObjectName=”Network Adapter”) (CounterName=”Bytes Received/sec”) | measure Avg(CounterValue) as PacketsReceived by Computer
  • Packets Sent over time over time: “Type:Perf (ObjectName=”Network Adapter”) (CounterName=”Bytes Sent/sec”) | measure Avg(CounterValue) as PacketsSent by Computer
  • Packets per second over time: “Type:Perf (ObjectName=”Network Interface”) (CounterName=”Bytes Total/sec”) | measure Avg(CounterValue) as BytesTotal by Computer

 

Examples of new ways that the view designer was used:

The view designer has added some interesting features recently. These include the ability to show health through thresholds and the added capability to show sparklines. Additionally, the underlying query language was changed to allow a view to display the StackedBarCart.

 

Thresholds:

In this solution thresholds are used in the processor, disk usage and memory views. The processor threshold configuration is shown below (healthy when < 90, warning at > 90, error at > 95).

server05

An example of how these are displayed is shown below:

server06

Sparklines:

In this solution sparklines are used by the data sent by computers, processor and memory views.

server07

Sparklines are enabled by checking the option under the list which you are displaying.

server08

An example of how these are displayed is shown below:

 

StackedBarChart:

To use the StackedBarChart when we open a view, just add the “| Display StackedBarChart” to the end of the query as shown below.

Type:Perf (ObjectName:Processor OR ObjectName:System) AND (CounterName=”% Processor Time”) | measure percentile90(CounterValue) by Computer | Display StackedBarChart

 

 

Server Health Visualization using this solution:

Once this solution has been imported and you have added the required performance metrics you should now have a list of the servers which have reported data in the last hour to OMS and those that have not.

server09

Drilling into this top level view provides information on how much data has been sent from these computers to OMS as well as information on processor utilization and disk usage. Note the health of these various objects such as in Free Megabytes below where the W and U drives are critical (red), and others are yellow and processor health is green in the processor utilization view.

server10

Information on memory and network usage are also displayed.

server11

When you drill into the top section of the processor area you get a larger graph shown below.

server12

If you drill into the table at the bottom you get the StackedBarChart view of processor information:

server13

Each of the various views can be drilled into. A good example of the StackedBarChart for network traffic is shown below. This makes it easy to visualize when large amounts of network traffic are occurring across an entire environment.

server14

You can also specific to only display a specific machine in the StackedBarChart.

server15

Note: This solution also works for Windows clients. An example is shown below:

112116_1437_TheServeran16.png

Special Thanks To: Thank you Stan and Daniele who provided me with help on my underlying queries for this solution and thank you to Microsoft for the new View Designer functionality.

Summary: If you are looking for a way to visualize server performance information in OMS, check this solution out! This solution is available for download on TechNet galleries at: https://gallery.technet.microsoft.com/scriptcenter/Server-Performance-3d767ab1

4 Comments

  1. Sheray February 3, 2017
    • Cameron Fuller February 3, 2017
  2. Eric Ramer November 21, 2017
    • Cameron Fuller November 22, 2017

Leave a Reply