Condividi tramite


Eseguire query sui dati di istanza gestita SCOM di Monitoraggio di Azure dalle dashboard di Grafana con gestione Azure

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:

  1. Passare a Grafana e selezionare Aggiungi visualizzazione. È possibile scegliere il tipo di visualizzazione in base alle opzioni disponibili. Screenshot dell'opzione Aggiungi visualizzazione.
  2. In Opzioni pannello immettere Titolo e Descrizione. Screenshot delle opzioni del pannello.
  3. In Query selezionare Codice e immettere la query. Screenshot delle opzioni del codice.
  4. 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.