Also, wie Roman empfohlen, hat SCOM zwei DBs. Betriebs- und Data Warehouse. Ein MP, der Leistungsdaten sammelt, sollte die gesammelten Daten explizit in einer DB oder in beiden speichern. Normalerweise würden Sie erwarten, dass die Daten von einem gut entworfenen MP in beiden DB gespeichert werden. Der Hauptunterschied zwischen den DBs besteht darin, dass die Betriebs-DB fast "Echtzeit" -Daten (10-20 Minuten-Intervall) speichert, die DW-DB jedoch stündliche und tägliche aggregierte Daten hat.
Von hier aus kann ich Ihnen ein paar Beispiele auf beiden DBs geben.
Operational DB:
Diese Abfrage listet alle verfügbaren Objektnamen, deren Instanzen und entsprechenden Zähler für einen bestimmten Windows-Computer, jedoch können Sie die Abfrage für andere Klassen ändern:
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
Wenn Sie dann PerformanceSourceInternalId
erhalten, können Sie die tatsächlichen Daten extrahieren, indem Sie die folgende Abfrage ausführen:
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))
Hinweis: Alle Zeitstempel in den beiden DBs sind in UTC, so dass die letzte Abfrage sie zurück in die lokale Zeit übersetzt.
Data Warehouse-Datenbank:
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)
Diese Abfrage wählen Sie die Prozessorleistung für einen Windows-Computer mit Windows 2008 R2 + (ändern Processor Information -> Prozessor für frühere Windows-Versionen). Sie können die Namen in andere verfügbare Zähler ändern und entweder vPerfHourly
oder vPerfDaily
für stündliche oder tägliche Aggregation verwenden.
Mit freundlichen Grüßen.