Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come eseguire query sui dati di monitoraggio dal database operativo e creare dashboard in Grafana con gestione Azure.
Da Grafana con gestione Azure collegato a istanza gestita SCOM di Monitoraggio di Azure, è possibile usare query SQL per ottenere i dati monitorati dal database operativo archiviato in istanza gestita di SQL di Azure.
Prerequisiti
Prima di eseguire query sui dati di monitoraggio dal portale di Grafana con gestione Azure, assicurarsi che istanza gestita SCOM sia collegata a Grafana con gestione Azure. Per altre informazioni, vedere Dashboard in Grafana con gestione Azure.
Alcune dashboard pronte per l'uso sono disponibili in istanza gestita Azure/SCOM/Dashboard operativa, che può essere importato e modificato in base ai requisiti nell'istanza di Grafana con gestione Azure.
Creare una dashboard in Grafana con gestione Azure
Per creare una dashboard, seguire questa procedura:
- Passare a Grafana e selezionare Aggiungi visualizzazione. È possibile scegliere il tipo di visualizzazione in base alle opzioni disponibili.
- In Opzioni pannello immettere Titolo e Descrizione.
- In Query selezionare Codice e immettere la query.
- Seleziona Esegui query.
Query di esempio
Di seguito sono riportate alcune query e dashboard di esempio utili per iniziare a usare Grafana con gestione Azure con istanza gestita SCOM:
- Stato di integrità del carico di lavoro
- Integrità del carico di lavoro e numero di nuovi avvisi
- Eventi principali nel carico di lavoro
- Avvisi principali dal carico di lavoro
- Query sui dati sulle prestazioni per il contatore del carico di lavoro
Le query seguenti consentono di creare eventi principali, di integrità e avvisi da un determinato oggetto del carico di lavoro/monitoraggio:
Nota
- Sostituire il <prefisso del nome del Management Pack> con il nome effettivo del Management Pack, ad esempio Microsoft.SQL% per il carico di lavoro SQL.
- Sostituire il <Tipo di oggetto del monitoraggio> con la classe del componente, ad esempio %.DbEngine per il ruolo del server SQL.
Stato di integrità del carico di lavoro
SELECT HealthState =
CASE
WHEN MEV.HealthState = 1 THEN 'Healthy'
WHEN MEV.HealthState = 2 THEN 'Warning'
WHEN MEV.HealthState = 3 THEN 'Critical'
ELSE 'Uninitialized'
END,
CAST(COUNT(*) AS DECIMAL(5, 2)) AS servers
FROM ${Database}.[dbo].[ManagedEntityGenericView] MEV
INNER JOIN ${Database}.[dbo].[ManagedTypeView] MTV ON MTV.Id = MEV.MonitoringClassId and MTV.name like '%.<Monitoring Object Type>'
INNER JOIN ${Database}.[dbo].[ManagementPackView] MPV ON MPV.Id = MTV.ManagementPackId and MPV.name like '<MP name Prefix>'
GROUP BY MEV.HealthState
ORDER BY MEV.HealthState
Integrità del carico di lavoro e numero di nuovi avvisi
SELECT MEV.Name
,HealthState =
CASE
WHEN MEV.HealthState = 1 THEN 'Healthy'
WHEN MEV.HealthState = 2 THEN 'Warning'
WHEN MEV.HealthState = 3 THEN 'Critical'
ELSE 'Uninitialized'
END
,NewAlerts = COUNT(AV.ResolutionState)
FROM ${Database}.[dbo].[ManagedEntityGenericView] MEV
INNER JOIN ${Database}.[dbo].[ManagedTypeView] MTV ON MTV.Id = MEV.MonitoringClassId and MTV.name like '%.<Monitoring Object Type>'
INNER JOIN ${Database}.[dbo].[ManagementPackView] MPV ON MPV.Id = MTV.ManagementPackId and MPV.name like '%<MP name prefix>%'
INNER JOIN ${Database}.[dbo].[AlertView] AV ON AV.MonitoringClassId = MTV.Id and AV.ResolutionState = 0 AND $__timeFilter(TimeRaised)
GROUP BY MEV.Name, HealthState, AV.ResolutionState
Eventi principali nel carico di lavoro
SELECT EventDescription = LT5.LTValue
,Count(*) Occurences
,AffectedSQLServers = Count(DISTINCT(EV.LoggingComputer))
FROM ${Database}.[dbo].[EventView] EV
INNER JOIN ${Database}.[dbo].[ManagedTypeView] MTV ON MTV.Id = EV.ClassId
INNER JOIN ${Database}.[dbo].[ManagementPackView] MPV ON MPV.Id = MTV.ManagementPackId and MPV.name like '%<MP Name Prefix>%'
INNER JOIN ${Database}.dbo.LocalizedText LT5 ON EV.EventNumberStringId = LT5.LTStringId AND LT5.LanguageCode = 'ENU'
WHERE $__timeFilter(TimeGenerated) AND LevelId < 3
GROUP BY Number, LT5.LTValue
ORDER BY Occurences, AffectedSQLServers DESC;
Avvisi principali dal carico di lavoro
SELECT AV.AlertStringName AS Alert
,Occurrence = COUNT(AV.ResolutionState)
,AffectedServers = COUNT(MEV.name)
FROM ${Database}.[dbo].[AlertView] AV
INNER JOIN ${Database}.[dbo].[ManagedTypeView] MTV ON MTV.Id = AV.MonitoringClassId and MTV.name like '%<Monitoring Object Type>'
INNER JOIN ${Database}.[dbo].[ManagementPackView] MPV ON MPV.Id = MTV.ManagementPackId and MPV.name like '%M<MP Name Prefix>%'
INNER JOIN ${Database}.[dbo].[ManagedEntityGenericView] MEV ON MTV.Id = MEV.MonitoringClassId
where AV.ResolutionState = 0 and $__timeFilter(TimeRaised)
GROUP BY AV.AlertStringName, AV.ResolutionState
Query sui dati sulle prestazioni per il contatore del carico di lavoro
SELECT PD.TimeSampled
,CASE
WHEN BME.Path IS NOT NULL AND BME.Path <> '' THEN CONCAT(BME.Path, '\', COALESCE(BME.Name, ''))
ELSE COALESCE(BME.Name, '') END AS TagetObjectPath
,ObjectName = PC.ObjectName
,CounterName = PC.CounterName
,Value = PD.SampleValue
FROM dbo.PerformanceDataAllView PD
INNER JOIN dbo.PerformanceSource PS ON PD.PerformanceSourceInternalId = PS.PerformanceSourceInternalId
INNER JOIN dbo.PerformanceCounter PC ON PS.PerformanceCounterId = PC.PerformanceCounterId and CounterName = 'Receive I/Os/sec'
INNER JOIN dbo.BaseManagedEntity BME ON PS.BaseManagedEntityId = BME.BaseManagedEntityId AND BME.IsDeleted = 0
INNER JOIN [dbo].[ManagedTypeView] MTV ON MTV.Id = BME.BaseManagedTypeId
INNER JOIN [dbo].[ManagementPackView] MPV ON MPV.Id = MTV.ManagementPackId and MPV.name like 'Microsoft.SQL%'
Passaggi successivi
Risolvere i problemi relativi all'istanza gestita SCOM di Monitoraggio di Azure.