Trasmettere log di diagnostica di Azure a un hub eventiStream Azure Diagnostic Logs to an event hub

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 della regola di autorizzazione dell'hub eventi in un'impostazione di diagnostica tramite i cmdlet di Azure PowerShell o l'interfaccia della riga di comando di Azure 2.0.Azure diagnostic logs can be streamed in near real time to any application using the built-in “Export to Event Hubs” option in the Portal, or by enabling the Event Hub Authorization Rule ID in a diagnostic setting via the Azure PowerShell Cmdlets or Azure CLI 2.0.

Che cosa si può fare con i log di diagnostica e Hub eventiWhat you can do with diagnostics logs and Event Hubs

Ecco alcuni esempi di come è possibile usare la funzionalità di trasmissione per i log di diagnostica:Here are just a few ways you might use the streaming capability for Diagnostic Logs:

  • Trasmettere log a sistemi di registrazione e telemetria di terze parti: è possibile trasmettere tutti i log di diagnostica a un singolo hub eventi per inviare pipe di dati registro a uno strumento SIEM o di analisi dei log di terze parti.Stream logs to 3rd party logging and telemetry systems – You can stream all of your diagnostic logs to a single event hub to pipe log data to a third-party SIEM or log analytics tool.
  • 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.View service health by streaming “hot path” data to PowerBI – Using Event Hubs, Stream Analytics, and PowerBI, you can easily transform your diagnostics data in to near real-time insights on your Azure services. 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.This documentation article gives a great overview of how to set up Event Hubs, process data with Stream Analytics, and use PowerBI as an output. Ecco alcuni suggerimenti per la configurazione dei log di diagnostica:Here are a few tips for getting set up with diagnostic logs:

    • 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-.An event hub for a category of diagnostic logs is created automatically when you check the option in the portal or enable it through PowerShell, so you want to select the event hub in the namespace with the name that starts with 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:The following SQL code is a sample Stream Analytics query that you can use to parse all the log data in to a PowerBI table:

      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.Build a custom telemetry and logging platform – If you already have a custom-built telemetry platform or are just thinking about building one, the highly scalable publish-subscribe nature of Event Hubs allows you to flexibly ingest diagnostic logs. Vedere la guida all'uso di Hub eventi in una piattaforma di telemetria su scala globale di Dan Rosanova.See Dan Rosanova’s guide to using Event Hubs in a global scale telemetry platform here.

Abilitare la trasmissione dei log di diagnosticaEnable streaming of diagnostic logs

È possibile abilitare la trasmissione dei log di diagnostica a livello di codice tramite il portale o tramite le API REST di Monitoraggio di Azure.You can enable streaming of diagnostic logs programmatically, via the portal, or using the Azure Monitor REST APIs. 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.Either way, you create a diagnostic setting in which you specify an Event Hubs namespace and the log categories and metrics you want to send in to the namespace. Nello spazio dei nomi per ogni categoria di log abilitata viene creato un hub eventi.An event hub is created in the namespace for each log category you enable. Una categoria di log di diagnostica è un tipo di log che una risorsa può raccogliere.A diagnostic log category is a type of log that a resource may collect.

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.Enabling and streaming diagnostic logs from Compute resources (for example, VMs or Service Fabric) requires a different set of steps.

Lo spazio dei nomi 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.The Event Hubs namespace does not have to be in the same subscription as the resource emitting logs as long as the user who configures the setting has appropriate RBAC access to both subscriptions.

Nota

L'invio delle metriche multidimensionali tramite impostazioni di diagnostica non è attualmente supportato.Sending multi-dimensional metrics via diagnostic settings is not currently supported. Le metriche con dimensioni sono esportate come metriche a singola dimensione di tipo flat e aggregate a livello di valori di dimensione.Metrics with dimensions are exported as flattened single dimensional metrics, aggregated across dimension values.

Ad esempio: la metrica 'Messaggi in ingresso' su un hub eventi può essere esplorata e rappresentata in un grafico a livello di singola coda.For example: The 'Incoming Messages' metric on an Event Hub can be explored and charted on a per queue level. Tuttavia, in caso di esportazione tramite impostazione di diagnostica, la metrica verrà rappresentata come tutti i messaggi in ingresso in tutte le code nell'hub eventi.However, when exported via diagnostic settings the metric will be represented as all incoming messages across all queues in the Event Hub.

Eseguire lo streaming dei log di diagnostica usando il portaleStream diagnostic logs using the portal

  1. Nel portale passare a Monitoraggio di Azure e fare clic su Impostazioni di diagnosticaIn the portal, navigate to Azure Monitor and click on Diagnostic Settings

    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.Optionally filter the list by resource group or resource type, then click on the resource for which you would like to set a diagnostic setting.

  3. Se non esiste un'impostazione sulla risorsa selezionata, viene chiesto di creare un'impostazione.If no settings exist on the resource you have selected, you are prompted to create a setting. Fare clic su "Attiva diagnostica".Click "Turn on diagnostics."

    Aggiungi impostazione di diagnostica - Nessuna impostazione esistente

    Se esistono già impostazioni sulla risorsa, verrò visualizzato un elenco di impostazioni già configurate per questa risorsa.If there are existing settings on the resource, you will see a list of settings already configured on this resource. Fare clic su "Add diagnostic setting" (Aggiungi impostazione di diagnostica).Click "Add diagnostic setting."

    "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.Give your setting a name and check the box for Stream to an event hub, then select an Event Hubs namespace.

    "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.The namespace selected will be where the event hub is created (if this is your first time streaming diagnostic logs) or streamed to (if there are already resources that are streaming that log category to this namespace), and the policy defines the permissions that the streaming mechanism has. Al momento, per trasmettere a un hub eventi sono necessarie autorizzazioni di gestione, invio e ascolto.Today, streaming to an event hub requires Manage, Send, and Listen permissions. È 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.You can create or modify Event Hubs namespace shared access policies in the portal under the Configure tab for your namespace. Per aggiornare una di queste impostazioni di diagnostica, il client deve avere l'autorizzazione ListKey per la regola di autorizzazione di Hub eventi.To update one of these diagnostic settings, the client must have the ListKey permission on the Event Hubs authorization rule. È anche possibile specificare un nome per l'hub di eventi, se lo si desidera.You can also optionally specify an event hub name. Se si specifica un nome per l'hub eventi, i log vengono indirizzati a tale hub anziché a un hub eventi appena creato per ogni categoria di log.If you specify an event hub name, logs are routed to that event hub rather than to a newly created event hub per log category.

  5. Fare clic su Save.Click Save.

Dopo qualche istante, la nuova impostazione viene visualizzata nell'elenco delle impostazioni per questa risorsa e vengono trasmessi i log di diagnostica a tale hub eventi non appena vengono generati nuovi dati di eventi.After a few moments, the new setting appears in your list of settings for this resource, and diagnostic logs are streamed to that event hub as soon as new event data is generated.

Tramite i cmdlet di PowerShellVia PowerShell Cmdlets

Per abilitare la trasmissione tramite i cmdlet di Azure PowerShell, è possibile usare il cmdlet Set-AzureRmDiagnosticSetting con i parametri seguenti:To enable streaming via the Azure PowerShell Cmdlets, you can use the Set-AzureRmDiagnosticSetting cmdlet with these parameters:

Set-AzureRmDiagnosticSetting -ResourceId [your resource ID] -EventHubAuthorizationRuleId [your Event Hub namespace auth rule ID] -Enabled $true

L'ID della regola di autorizzazione dell'hub eventi è una stringa nel formato seguente: {Event Hub namespace resource ID}/authorizationrules/{key name}, ad esempio /subscriptions/{subscription ID}/resourceGroups/{resource group}/providers/Microsoft.EventHub/namespaces/{Event Hub namespace}/authorizationrules/RootManageSharedAccessKey.The Event Hub Authorization Rule ID is a string with this format: {Event Hub namespace resource ID}/authorizationrules/{key name}, for example, /subscriptions/{subscription ID}/resourceGroups/{resource group}/providers/Microsoft.EventHub/namespaces/{Event Hub namespace}/authorizationrules/RootManageSharedAccessKey. Non è attualmente possibile selezionare un nome di hub eventi specifico con PowerShell.You cannot currently select a particular event hub name with PowerShell.

Tramite l'interfaccia della riga di comando di Azure 2.0Via Azure CLI 2.0

Per abilitare lo streaming tramite l'interfaccia della riga di comando di Azure 2.0, è possibile usare il comando az monitor diagnostic-settings create.To enable streaming via the Azure CLI 2.0, you can use the az monitor diagnostic-settings create command.

az monitor diagnostic-settings create --name <diagnostic name> \
    --event-hub <event hub name> \
    --event-hub-rule <event hub rule ID> \
    --resource <target resource object ID> \
    --logs '[
    {
        "category": <category name>,
        "enabled": true
    }
    ]'

È possibile aggiungere altre categorie al log di diagnostica aggiungendo dizionari alla matrice JSON passata come parametro --logs.You can add additional categories to the diagnostic log by adding dictionaries to the JSON array passed as the --logs parameter.

L'argomento --event-hub-rule usa lo stesso formato per l'ID della regola di autorizzazione dell'hub eventi, come illustrato per il cmdlet di PowerShell.The --event-hub-rule argument uses the same format as the Event Hub Authorization Rule ID as explained for the PowerShell Cmdlet.

Come utilizzare i dati di log da Hub eventiHow do I consume the log data from Event Hubs?

Di seguito è riportato un esempio di dati di output da Hub eventi:Here is sample output data from Event Hubs:

{
    "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'elementoElement Name DESCRIZIONEDescription
recordsrecords Matrice di tutti gli eventi di log nel payload.An array of all log events in this payload.
timetime Ora in cui si è verificato l'evento.Time at which the event occurred.
categorycategory Categoria di log per l'evento.Log category for this event.
ResourceIdresourceId ID risorsa della risorsa che ha generato l'evento.Resource ID of the resource that generated this event.
operationNameoperationName Nome dell'operazione.Name of the operation.
levellevel facoltativo.Optional. Indica il livello dell'evento di log.Indicates the log event level.
propertiesproperties Proprietà dell'evento.Properties of the event.

Per un elenco di tutti i provider di risorse che supportano la trasmissione a Hub eventi, vedere questo articolo.You can view a list of all resource providers that support streaming to Event Hubs here.

Eseguire lo streaming di dati dalle risorse di calcoloStream data from Compute resources

È anche possibile eseguire lo streaming di log di diagnostica dalle risorse di calcolo usando l'agente di Diagnostica di Microsoft Azure.You can also stream diagnostic logs from Compute resources using the Windows Azure Diagnostics agent. Per informazioni sulla configurazione, vedere questo articolo.See this article for how to set that up.

Passaggi successiviNext steps