2016-05-19 10 views
1

Я ищу некоторое вдохновение для того, как я могу получить доступ к метрикам, собранным SCOM? По сути, я хочу извлечь показатели производительности процессора, памяти и диска, нормализовать и POST для внешнего SaaS-решения через API.Как вы можете получить доступ к показателям Microsoft SCOM?

Как SCOM уже собирает эти метрики кажется Daft установка другого агента для сбора, хотя и в этом случае второй агент не вариант:/

Я был бы признателен за любую помощь.

Спасибо,

J

ответ

1

Как только мы говорим о вдохновении - я обеспечу высокий уровень ответ без каких-либо технических подробностей. Надеюсь, все в порядке, Jamie :) Итак, я вижу здесь три варианта: 1. Получите эти показатели через MOM API (он же SCOM SDK). Очевидная проблема - низкая производительность и дополнительная нагрузка на сервер управления 2. Получите показатели непосредственно из базы данных SCOM. Мы говорим о показателях, поэтому вы можете решить работать не с оперативной БД, а с Datawarehouse DW, поскольку все показатели записываются в обе БД (некоторые MP не делают этого, но основные MP всегда отправляют метрики в обе БД). Я также проголосую за DW DB, потому что он имеет более прозрачную схему. 3. Внесите свой пользовательский WRITE ACTION в MP, который вы хотите отправить данные в SaaS. Конечно, это означает максимальную настройку и не будет работать для запечатанных депутатов ... так что давайте оставим этот вариант, чтобы нарушить ваше воображение :)

Вот что я могу сразу принести на стол. Я надеюсь, что это помогает.

Roman.

1

Итак, как посоветовал Рим, SCOM имеет две базы данных. Операционный и хранилище данных. MP, который собирает данные о производительности, должен явно сохранять собранные данные в БД или и то, и другое. Обычно вы ожидаете, что данные будут сохранены в обоих БД из хорошо продуманного MP. Основное различие между БД заключается в том, что операционный БД хранит почти «реальные» данные (интервал 10-20 минут), но DW DB имеет ежечасные и суточные агрегированные данные.

Отсюда я могу привести несколько примеров на обеих БД.

Оперативная БД:

Этот запрос содержит список всех доступных имен объектов, их экземпляров и соответствующий счетчик для конкретного компьютера Windows, однако, вы можете изменить запрос для других классов:

select pc.* from PerformanceCounterView pc join TypedManagedEntity tme on tme.TypedManagedEntityId = pc.ManagedEntityId join BaseManagedEntity bme on tme.BaseManagedEntityId = bme.BaseManagedEntityId where (bme.TopLevelHostEntityId = (select BaseManagedEntityId from BaseManagedEntity where FullName = 'Microsoft.Windows.Computer:'[email protected])) order by ObjectName, CounterName, InstanceName

Затем, когда вы получите PerformanceSourceInternalId, вы можете извлечь фактические данные, выполнив следующий запрос:

declare @TZOffset as int = DATEDIFF(MINUTE,GETUTCDATE(),GETDATE()) 
SELECT SampleValue, DATEADD(MINUTE,@TZOffset,TimeSampled) as TS 
FROM PerformanceDataAllView 
where (PerformanceSourceInternalId = @SrcID) 
and (TimeSampled > DATEADD(MINUTE,[email protected],@Start)) 
and (TimeSampled < DATEADD(MINUTE,[email protected],@End)) 

NB: все метки времени в обеих БД находятся в формате UTC, поэтому последний запрос переводит их обратно в локальное время.

хранилища данных DB:

DECLARE @StartDateSubParam as datetime DECLARE @CurrentServerSubParam as int SET @StartDateSubParam = '2016-01-01' SET @CurrentServerSubParam =(select mecn.ManagedEntityRowId from vManagedEntity mecn where (mecn.Path is null) and (mecn.FullName like 'Microsoft.Windows.Computer:yourServer.Domain.com')) select me.[Path] as ServerName, me.ManagedEntityRowId as ManagedEntityID, AverageValue, MaxValue, MinValue, perfdata.StandardDeviation, perfdata.[DateTime] as SampleDay from Perf.vPerfHourly perfdata join vPerformanceRuleInstance pri on perfdata.PerformanceRuleInstanceRowId = pri.PerformanceRuleInstanceRowId join vPerformanceRule pr on pr.RuleRowId = pri.RuleRowId left join vManagedEntity me on me.ManagedEntityRowId = perfdata.ManagedEntityRowId where (pr.ObjectName = 'Processor Information') and (pr.CounterName = '% Processor Time') and (perfdata.[DateTime] > @StartDateSubParam) and (me.TopLevelHostManagedEntityRowId = @CurrentServerSubParam)

Этот запрос выбора производительности процессора для компьютера окна с ОС Windows 2008 R2 + (изменение Процессор информации -> Процессор для ранних версий Windows). Вы можете изменить имена на другие доступные счетчики, а также использовать vPerfHourly или vPerfDaily для почасовой или дневной агрегации.

С уважением.