This discussion has been locked. The information referenced herein may be inaccurate due to age, software updates, or external references.
You can no longer post new replies to this discussion. If you have a similar question you can start a new discussion in this forum.

Win32_PerfRawData vs Win32_PerfFormattedData in APM

Background:
I am using NPM 9.1 SP5 & APM 2.5

Problem:
I am using a WMI query to get some disk IO statistics for my Windows hosts.  One example is:

SELECT CurrentDiskQueueLength FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk WHERE Name='_Total'

This query works great on 2003 systems.  Win32_PerfFormattedData is not available in Windows 2000, so i tried using this query instead:

SELECT CurrentDiskQueueLength FROM Win32_PerfRawData_PerfDisk_PhysicalDisk WHERE Name='_Total'

I can now collect statistics on 2000 & 2003 systems, but the numbers are HUGE.  I realize that the Raw data keeps adding up over time.  How can i make this data useful in APM?

Thanks!

  • They are huge numbers because the raw data has to be "cooked" with another number to convert it to something meaningful. Unfortunately, because the Performance Counter monitor doesn't provide a way to do arithmetic in the monitor itself, you can't use that monitor to get accurate disk size information from Windows 2000.

    HOWEVER....

    You can write a Windows script monitor to get the data you want.  

    It seemed to be a common enough scenario, so as a example for another customer, I wrote a script that converts the raw data to something meaningful. The script reads the raw data %free for the C: logical drive, converts it to a percentage of disk space used, and reports that value as the statistic.

    I got the instructions on how to convert the raw data from a Microsoft Scripting tutorial:  http://msdn.microsoft.com/en-us/library/ms974615.aspx . You can probably change a few things in the script to make this work for physical disk sizes.

    Notes:

    1. This script requires the following script arguments

     

      Script Arguments:   ${IP} ${USER} ${PASSWORD}

    2. This script cannot monitor the status of the Orion NPM server itself, because it *only* makes remote WMI calls. You have to use the other script for that.

    strComputer = wscript.arguments(0)

    strUser = wscript.arguments(1)
    strPassword = wscript.arguments(2)

    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objSWbemLocator.ConnectServer (strComputer, "root\cimv2", strUser, strPassword)

    Set colDisks = objWMIService.ExecQuery _
        ("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk Where Name = 'C:'")

    For Each objDisk in colDisks
        intBaseValue = objDisk.PercentFreeSpace_Base
        dblActualUsedSpace = 100 - ((100 * objDisk.PercentFreeSpace) / intBaseValue)
        WScript.Echo "Statistic:" & Int(dblActualUsedSpace)
    Next  

  • I see how you do this calculation using the used space which has a "base" counter as well (objDisk.PercentFreeSpace_Base).  There are 4 specific metrics that I am trying to capture for Disk IO, but only 1 has a base metric as well.

    CurrentDiskQueueLength
    DiskBytesPerSec
    PercentDiskTime (has base)
    DiskTransfersPerSec

    http://msdn.microsoft.com/en-us/library/aa394308%28VS.85%29.aspx

    Is there an article or a way to do this calulation on a metric without a base?