Trasmettere log di diagnostica di Azure a Hub eventi

I log di diagnostica di Azure possono essere trasmessi quasi in tempo reale a qualsiasi applicazione con l'opzione "Esporta in hub eventi" incorporata nel portale oppure abilitando l'ID regola del bus di servizio in un'impostazione di diagnostica tramite i cmdlet di Azure PowerShell o l'interfaccia della riga di comando di Azure.

Che cosa si può fare con i log di diagnostica e Hub eventi

Ecco alcuni esempi di come è possibile usare la funzionalità di trasmissione per i log di diagnostica:

  • Trasmettere log a sistemi di telemetria e registrazione di terze parti : in futuro, la funzionalità di trasmissione di Hub eventi diventerà il meccanismo di invio dei log di diagnostica a soluzioni di analisi di log e SIEM di terze parti.
  • Visualizzare lo stato di integrità del servizio mediante la trasmissione di dati sul "percorso critico" a Power BI : Hub eventi, analisi di flusso e Power BI permettono di trasformare facilmente i dati di diagnostica in informazioni quasi in tempo reale sui servizi di Azure. Questo articolo della documentazione offre un'utile panoramica della configurazione di Hub eventi, dell'elaborazione di dati con analisi di flusso e dell'uso di Power BI come output. Ecco alcuni suggerimenti per la configurazione dei log di diagnostica:

    • Un hub eventi per una categoria di log di diagnostica viene creato automaticamente quando si seleziona l'opzione nel portale o lo si abilita tramite PowerShell. Nello spazio dei nomi del bus di servizio è quindi consigliabile selezionare gli hub eventi il cui nome inizia con insights-.
    • Il codice SQL di esempio seguente è una query di esempio di analisi di flusso che è possibile usare per analizzare tutti i dati di log in una tabella di Power BI:

      SELECT
      records.ArrayValue.[Properties you want to track]
      INTO
      [OutputSourceName – the PowerBI source]
      FROM
      [InputSourceName] AS e
      CROSS APPLY GetArrayElements(e.records) AS records
      
  • Compilare una piattaforma di registrazione e telemetria personalizzata : se è disponibile una piattaforma di telemetria personalizzata o si intende crearne una, le caratteristiche di pubblicazione-sottoscrizione altamente scalabili di Hub eventi offrono grande flessibilità per l'inserimento dei log di diagnostica. Vedere la guida all'uso di Hub eventi in una piattaforma di telemetria su scala globale di Dan Rosanova.

Abilitare la trasmissione dei log di diagnostica

È possibile abilitare la trasmissione dei log di diagnostica a livello di codice, tramite il portale o tramite l'API REST di Monitoraggio di Azure. In ognuno di questi casi, si sceglie uno spazio dei nomi di Hub eventi e viene creato un hub eventi nello spazio dei nomi per ogni categoria di log abilitata. Una categoria di log di diagnostica è un tipo di log che una risorsa può raccogliere. Per selezionare le categorie di log da raccogliere per una determinata risorsa è possibile usare il pannello Diagnostica del portale di Azure.

Categorie di log nel portale

Avviso

Per abilitare la trasmissione dei log di diagnostica da risorse di calcolo, ad esempio le macchine virtuali o Service Fabric, è necessario seguire una procedura diversa.

Lo spazio dei nomi del bus di servizio o di Hub eventi non deve trovarsi nella stessa sottoscrizione della risorsa che crea i log, purché l'utente che configura l'impostazione disponga dell'accesso RBAC appropriato a entrambe le sottoscrizioni.

Tramite i cmdlet di PowerShell

Per abilitare la trasmissione tramite i cmdlet di Azure PowerShell, è possibile usare il cmdlet Set-AzureRmDiagnosticSetting con i parametri seguenti:

Set-AzureRmDiagnosticSetting -ResourceId [your resource Id] -ServiceBusRuleId [your Service Bus rule id] -Enabled $true

L'ID regola del bus di servizio è una stringa nel formato seguente: {Service Bus resource ID}/authorizationrules/{key name}. Ad esempio, /subscriptions/{subscription ID}/resourceGroups/Default-ServiceBus-WestUS/providers/Microsoft.ServiceBus/namespaces/{Service Bus namespace}/authorizationrules/RootManageSharedAccessKey.

Tramite l'interfaccia della riga di comando di Azure

Per abilitare la trasmissione tramite l'interfaccia della riga di comando di Azure, è possibile usare il comando insights diagnostic set come segue:

azure insights diagnostic set --resourceId <resourceId> --serviceBusRuleId <serviceBusRuleId> --enabled true

Usare lo stesso formato per l'ID regola del bus di servizio, come illustrato per il cmdlet di PowerShell.

Tramite il portale di Azure

Per abilitare il flusso tramite il portale di Azure, passare alle impostazioni di diagnostica di una risorsa e selezionare Esporta in Hub eventi.

Esporta in hub eventi nel portale

Per eseguire la configurazione, selezionare uno spazio dei nomi di Hub eventi esistente. Se si trasmettono i log di diagnostica per la prima volta, nello spazio dei nomi selezionato viene creato l'hub eventi. Se esistono già risorse che trasmettono tale categoria di log a questo spazio dei nomi, l'hub eventi vi viene trasmesso. I criteri definiscono le autorizzazioni del meccanismo di trasmissione. Al momento, per trasmettere a un hub eventi sono necessarie autorizzazioni di gestione, invio e ascolto. È possibile creare o modificare i criteri di accesso condiviso per lo spazio dei nomi di Hub eventi nel portale nella scheda Configura relativa allo spazio dei nomi. Per aggiornare una di queste impostazioni di diagnostica, il client deve avere l'autorizzazione ListKey per la regola di autorizzazione di Hub eventi.

Come utilizzare i dati di log da Hub eventi

Di seguito è riportato un esempio di dati di output da Hub eventi:

{
    "records": [
        {
            "time": "2016-07-15T18:00:22.6235064Z",
            "workflowId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330013509921957/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Error",
            "operationName": "Microsoft.Logic/workflows/workflowActionCompleted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T17:58:55.048482Z",
                "endTime": "2016-07-15T18:00:22.4109204Z",
                "status": "Failed",
                "code": "BadGateway",
                "resource": {
                    "subscriptionId": "df602c9c-7aa0-407d-a6fb-eb20c8bd1192",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330013509921957",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "29a9862f-969b-4c70-90c4-dfbdc814e413",
                    "clientTrackingId": "08587330013509921958"
                }
            }
        },
        {
            "time": "2016-07-15T18:01:15.7532989Z",
            "workflowId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330012106702630/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Information",
            "operationName": "Microsoft.Logic/workflows/workflowActionStarted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T18:01:15.5828115Z",
                "status": "Running",
                "resource": {
                    "subscriptionId": "df602c9c-7aa0-407d-a6fb-eb20c8bd1192",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330012106702630",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "042fb72c-7bd4-439e-89eb-3cf4409d429e",
                    "clientTrackingId": "08587330012106702632"
                }
            }
        }
    ]
}
Nome dell'elemento Description
records Matrice di tutti gli eventi di log nel payload.
time Ora in cui si è verificato l'evento.
category Categoria di log per l'evento.
resourceId ID risorsa della risorsa che ha generato l'evento.
operationName Nome dell'operazione.
level Facoltativo. Indica il livello dell'evento di log.
properties Proprietà dell'evento.

Per un elenco di tutti i provider di risorse che supportano la trasmissione a Hub eventi, vedere questo articolo.

Eseguire lo streaming di dati dalle risorse di calcolo

È anche possibile eseguire lo streaming di log di diagnostica dalle risorse di calcolo usando l'agente di Diagnostica di Microsoft Azure. Per informazioni sulla configurazione, vedere questo articolo.

Passaggi successivi