Listing all the performance collection rules in a management group
Performance monitors will look at at performance counter value and change state when a particular condition is detected. However if you want to collect performance counters for viewing in the console or reporting, you need to create a performance collection rule.
Here is sample script I put together to show what performance rules are present, and some details about each rule as as collection frequency, the perf conter name, and where the data is written.
function GetPerfCounterName ([String] $configuration)
{$config = [xml] ("<config>" + $configuration + "</config>")
return ($config.Config.ObjectName + "\" + $config.Config.CounterName)
}
function GetFrequency ([String] $configuration)
{$config = [xml] ("<config>" + $configuration + "</config>")
$frequency = $config.Config.Frequency;
if($frequency -eq $null)
{
$frequency = $config.Config.IntervalSeconds;
}return ($frequency)
}
function GetDisplayName($performanceRule)
{
if($performanceRule.DisplayName -eq $null)
{
return ($performanceRule.Name);
}
else
{
return ($performanceRule.DisplayName);
}}
function GetWriteActionNames($performanceRule)
{
$writeActions = "";foreach($writeAction in $performanceRule.WriteActionCollection)
{$writeActions += " " + $writeAction.Name;
}return ($writeActions);
}$perf_collection_rules = get-rule -criteria:"Category='PerformanceCollection'"
$perf_collection_rules | select-object @{name="Type";expression={foreach-object {(Get-MonitoringClass -id:$_.Target.Id).DisplayName}}},@{name="RuleDisplayName";expression={foreach-object {GetDisplayName $_}}} ,@{name="CounterName";expression={foreach-object {GetPerfCounterName $_.DataSourceCollection[0].Configuration}}},@{name="Frequency";expression={foreach-object {GetFrequency $_.DataSourceCollection[0].Configuration}}},@{name="WriteActions";expression={foreach-object {GetWriteActionNames $_}}} | sort Type,RuleDisplayName,CounterName | export-csv "c:\perf_collection_rules.csv"
The write action column contains information about where the perf counter is written.
WriteToDB or CollectionPerformanceData - write to the operational DB
WriteToDW or CollectPerfDataWarehouse - write to the data warehouse
WC - This is used to storing baseline data for a perf counter into the operational DB.
In order to run this script, you will need to open the OpsMgr Command Shell and then just paste in the script.
Comments
- Anonymous
August 06, 2007
PingBack from http://msdnrss.thecoderblogs.com/2007/08/06/similar-script-but-for-perf-collection-rules/ - Anonymous
October 14, 2007
The comment has been removed - Anonymous
October 18, 2007
For any new COLLECTION RULE you create, do you get it automatically written to BOTH the OpsDB AND the datawarehouse ? - Anonymous
October 18, 2007
Thanks,Good JOB...Can i have more Scripts? Please...Ciao - Anonymous
April 20, 2008
Hi Boris!Thanks for this blog. I have a question.Is it possible to get collected performance data using the Operation Manager SDK or it is possible to get them only just by querying Operation Manager DB directly? - Anonymous
May 21, 2009
Hi,Same question again. How can I optain the performance data from MOM? Is the actual SDK providing with such feature?Thank you - Anonymous
May 24, 2009
You can definitely get the data using the SDK. I suggest you check out the MSDN docs:http://msdn.microsoft.com/en-us/library/microsoft.enterprisemanagement.managementgroup.getmonitoringperformancedata.aspx