Märkmeid SCOM’i poolt kogutud jõudlusandmete kohta.

Teatavasti talletab SCOM endasse (okei SQL baasi) monitooritavate objektide jõudlusandmeid. Mida ja kui sageli kogutakse on määratud halduspakkide ( ja admini poolt määratud override) reeglitega.

Jõudlustulemusi numbrilisel kujul tegelikult kusagilt ei näe – põhimõtteliselt on graafiliseks nägemiseks 3 võimalust:

* Perfromance View

* Performance Widget

* Raport

Võib tekida vajadus otsa vaadata puhastele numbritele ja selelks tuleb sukelduda baasi maailma.

Performance/Event/alert jne andmeid hoitakse 2’s baasis – põhibaasis ja DW baasis.  Põhibaasis on ainult viimase aja andmed ja määratud ajaga agregeeritakse need ja kustutatakse sealt. Alles jäävad ainult DW’s asuvad andmed, kus neid samuti agregeeritakse ja kustutatakse pikaajaliselt.

Teoorias peaks Performance View andmed tulema operational DB. Widgeti ja Raporti omad tulevad DW’st.

Nüüd tekis mul vajadus RAW data järgi ja selleks läks tsipa aega ja SQL’ querysid. Panen siia sammhaaval kirja, eks lõptulemust saab igaüks ise ilusamaks ajada.

 

Alustuseks on kasulik lugeda näiteks – https://capacitas.wordpress.com/2012/12/05/retrieving-data-from-the-scom-database/

Kasutades vaateid:

OperationsManagerDW.Perf.vPerfHourly

OperationsManagerDW.Perf.vPerfDaily

OperationsManagerDW.Perf.vPerfRaw

saad erineva agregeeritusega andmeid.

Näiteks:

SELECT FullName, InstanceName, DateTime, SampleValue

FROM OperationsManagerDW.dbo.vManagedEntity,

OperationsManagerDW.dbo.vPerformanceRule,

OperationsManagerDW.dbo.vPerformanceRuleInstance,

OperationsManagerDW.Perf.vPerfRaw

WHERE vPerfRaw.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId

AND vPerfRaw.PerformanceRuleInstanceRowId = vPerformanceRuleInstance.PerformanceRuleInstanceRowId

AND vPerformanceRuleInstance.RuleRowId = vPerformanceRule.RuleRowId

AND vPerformanceRule.ObjectName = ‘LogicalDisk’

AND vPerformanceRule.CounterName = ‘Avg. Disk sec/Transfer’

AND DateTime > ‘2015-06-24’

AND DateTime < ‘2015-06-27’

AND FullName like ‘%SERVER1%’

ORDER BY FullName, InstanceName, DateTime

Saad vastuseks agregeerimata loogiliste ketaste andmed SERVER1 kohta.

KUID – need on siiski juba agregeeritud andmed DW baasist. Mõnikord võib olla vajadus leida sama objekti kohta andmeid operational baasist.

 

Operational baasis pole kahjuks vajalikke SQL vaateid defineeritud ja seega kasutame erinevaid päringuid erinevate tabelite vastu.

Esmalt – leiame monitooritava objekti ID (mis on seotud serveriga SERVER1)

SELECT *  FROM [OperationsManager].[dbo].[BaseManagedEntity] where FullName like ‘%SERVER1%’

Otsime üles meid huvitava objekti kohta käiva  BaseManagedEntityID  ja jätame selle meelde  näiteks 9AEBE075-10D8-1B76-2175-DD29CDF9777B

Samuti otsime FullName alt sobiva objekti nime ja jätame sealt meelde sobiva substringi – näiteks LogicalDisk mille kohta me andmeid tahame.

Teiseks – leiame Perfomance Counter ID

SELECT *  FROM [OperationsManager].[dbo].[PerformanceCounter] where ObjectName like ‘%logicaldisk%’

Jätame meelde näiteks:( kui meid huvitab Avg Disk sec/ Transfer)

6B85C704-8122-4317-8E73-F42E279DFC10    LogicalDisk    Avg. Disk sec/Transfer

Kolmandaks – leiame selle objekti ID kohta käiva sisemiseID (kasutades eelmites sammudes leitud andmeid)

SELECT *  FROM [OperationsManager].[dbo].[PerformanceSource] where PerformanceCounterId = ‘6B85C704-8122-4317-8E73-F42E279DFC10’ and BaseManagedEntityId = ‘9AEBE075-10D8-1B76-2175-DD29CDF9777B’

Siit saame PerformanceSourceInternalID – jätame meelde 272221

 

Reaalsed Perf data andmed on laiali umbes 60’s PerformanceData_xx nimelises tabelis, kuid õnneks on olemas siiski vaade, mis need kokku tõmbab (UNION’iga).

Lõpuks

SELECT *  FROM [OperationsManager].[dbo].[PerformanceDataAllView] where PerformanceSourceInternalId = ‘272221’ order by TimeSampled

Voilaa.

Meeles peab pidama veel paari nüanssi:

1- Ajad on GMT.

2- Kui sample value ei muutu, siis uusi kirjeid ei lisata. Ehk-  kuigi jälgitakse a la iga  minuti tagant, siis reaalne lisamine baasi toimub alles siis kui muudatus toimub ( mis võib olla vabalt miinimum tund)