Trasmettere log di diagnostica di Azure a uno spazio dei nomi di 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, Stream Analytics 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:

    • Viene creato automaticamente un hub eventi per una categoria di log di diagnostica quando si seleziona l'opzione nel portale o lo si abilita tramite PowerShell. Nello spazio dei nomi del bus di servizio è quindi consigliabile selezionare l'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 le API REST di Monitoraggio di Azure. In entrambi i casi, si crea un'impostazione di diagnostica in cui specificare uno spazio dei nomi dell'hub eventi e le categorie di log e le metriche che si vuole inviare nello spazio dei nomi. Nello spazio dei nomi per ogni categoria di log abilitata viene creato un hub eventi. Una categoria di log di diagnostica è un tipo di log che una risorsa può raccogliere.

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.

Eseguire lo streaming dei log di diagnostica usando il portale

  1. Nel portale passare a Monitoraggio di Azure e fare clic su Impostazioni di diagnostica

    Sezione relativa al monitoraggio di Monitoraggio di Azure

  2. Facoltativamente filtrare l'elenco in base al tipo di risorsa o al gruppo di risorse, quindi fare clic sulla risorsa per cui si vuole specificare un'impostazione di diagnostica.

  3. Se non esiste un'impostazione sulla risorsa selezionata, viene chiesto di creare un'impostazione. Fare clic su "Attiva diagnostica".

    Aggiungi impostazione di diagnostica - Nessuna impostazione esistente

    Se esistono già impostazioni sulla risorsa, verrò visualizzato un elenco di impostazioni già configurate per questa risorsa. Fare clic su "Add diagnostic setting" (Aggiungi impostazione di diagnostica).

    "Add diagnostic setting" (Aggiungi impostazione di diagnostica) - impostazioni esistenti

  4. Assegnare un nome all'impostazione, selezionare la casella per Streaming in un hub eventi, quindi selezionare uno spazio dei nomi di Hub eventi.

    "Add diagnostic setting" (Aggiungi impostazione di diagnostica) - impostazioni esistenti

    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.

  5. Fare clic su Salva.

Dopo qualche istante, la nuova impostazione viene visualizzata nell'elenco delle impostazioni per questa risorsa e viene eseguito lo streaming dei log di diagnostica in tale account di archiviazione non appena vengono generati nuovi dati di eventi.

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.

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