2016-05-19 20 views
1

我在尋找一些靈感來了解如何訪問SCOM收集的指標?本質上,我想提取CPU,內存和磁盤利用率度量標準,通過API對外部SaaS解決方案進行標準化和POST。如何訪問原始Microsoft SCOM度量標準?

由於SCOM已經收集這些指標似乎愚蠢安裝其他代理收集,儘管在這種情況下,第二劑是不是一個選項:/

我希望得到任何幫助。

感謝,

Ĵ

回答

1

只要我們正在談論的靈感 - 我將提供一些沒有技術細節的高層次的答案。我希望它的罰款,傑米:) 所以我在這裏可以看到三個選項來做到這一點: 1.獲得通過MOM API(又名SCOM SDK),這些指標。明顯的問題 - 管理服務器上的性能低下和負載過重 2.直接從SCOM數據庫獲取指標。我們正在談論的指標,所以你可能會決定不與運營DB但隨着數據倉庫DW,因爲所有指標被寫入各自的DB(一些議員不這樣做,但主要的議員一律傳送數據到兩個數據塊)的工作。我也投票支持DW DB,因爲它具有更透明的模式。 3.將您的自定義WRITE ACTION注入要將數據發送到SaaS的MP中。當然,這意味着最大的定製,並且不會對密封的國會議員的工作......讓我們離開這個選項只是爲了擾亂你的想象力:)

這就是我可以給辦公桌的時候了。我希望它有幫助。

羅馬。

1

所以,作爲羅馬建議,SCOM有兩個數據塊。操作和數據倉庫。收集性能數據的MP應明確地將收集的數據保存到數據庫或兩者。通常情況下,您會希望將數據保存到精心設計的MP中的兩個數據庫中。 DB之間的主要區別在於Operational DB存儲幾乎「實時」數據(間隔10-20分鐘),但DW DB具有每小時和每日彙總數據。

從這裏,我可以給你一對夫婦的兩個數據塊的例子。

操作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)) 

注意:兩個數據庫中的所有時間戳均爲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計算機與Windows 2008 R2 +(其他城市處理器信息 - 早期的Windows版本>處理器),查詢選擇處理器的性能。 您可以將名稱更改爲其他可用計數器,也可以使用vPerfHourlyvPerfDaily進行每小時或每日彙總。

此致敬禮。