Operations Manager Failed to convert performance data

После установки новых пакетов управления (Management Pack) SQL Server версии 6.4.0.0 на System Center Operations Manager 2012 SP1 UR3 в событиях стали появляться уведомления с заголовком Operations Manager Failed to convert performance data и содержанием:

Модулю не удалось преобразовать параметр в двойное значение.
Исходный параметр: "$Data/Property[@Name='CPUUsage']$"
Параметр после замены $Data: "1.#INF"
Ошибка: 0x80020005
Подробности:Type mismatch.
Это затронуло один или несколько рабочих процессов. 
Имя рабочего процесса: Microsoft.SQLServer.2008.DBEngine.CPUUsagePercentMonitor
Имя экземпляра: MSSQLSERVER
ИД экземпляра: {53711322-4783-9029-7E20-646B41F2E995}
Группа управления: MG

В английской версии OpsMgr уведомление выглядит так:

Module was unable to convert parameter to a double value Original parameter: 
'$Data/Property[@Name='CPUUsage']$' Parameter after $Data replacement: '-1.#IND' 
Error: 0x80020005 Details: Type mismatch. One or more workflows were affected by 
this. Workflow name: Microsoft.SQLServer.2008.DBEngine.CPUUsagePercentMonitor 
Instance name: MSSQLSERVER Instance ID: {yyyy} 
Management group: MG

У нас уведомления генерируются на SQL server 2008, 2008 R2 и 2012.

На данный момент отсутствует правильное устранение ошибки. Ожидаем обновления пакетов управления для SQL серверов.

Временное решение — отключение двух правил:

MSSQL 2012: Collect DB Engine CPU Utilization (%)
MSSQL 2008: Collect DB Engine CPU Utilization (%)

и отключение двух мониторингов:

CPU Utilization (%) for 2008
CPU Utilization (%) for 2012

Источник проблемы, как сообщает Kuchynski Andrei:

It looks like a bug in the script
function Main {param ($ computerName) - called with cluster host name

and then listing of active instances of SQL on node 

$ counters = (Get-Counter ("\ Process (sqlservr *) \ ID Process")). CounterSamples
$ counters | foreach {

And here is the error:
$ allowedCoreCount = GetSQLAllowedCoreCount $ computerName $ instanceName $ logicalCoresCount
The computerName may be different. 

In my case, the configuration is as follows:
A two-node cluster, and 3 instances of the SQL:
cl-sql-01\sql1
cl-sql-02\sql2
cl-sql-03\sql3

This rule is invoked for the first instance of an error does not occur in first foreach.

However, the second will be generated connection string sql-sc-01\sql2 that will cause an error.

Добавить комментарий