Trasmettere log di diagnostica di Azure a uno spazio dei nomi di Hub eventiStream Azure Diagnostic Logs to an Event Hubs Namespace

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.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 Service Bus Rule ID in a diagnostic setting via the Azure PowerShell Cmdlets or Azure CLI.

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 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.Stream logs to 3rd party logging and telemetry systems – Over time, Event Hubs streaming will become the mechanism to pipe your diagnostic logs in to third-party SIEMs and log analytics solutions.
  • 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 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.The Service Bus or 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.

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.

  5. Fare clic su Salva.Click Save.

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.After a few moments, the new setting appears in your list of settings for this resource, and diagnostic logs are streamed to that storage account 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] -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.The Service Bus Rule ID is a string with this format: {Service Bus resource ID}/authorizationrules/{key name}, for example, /subscriptions/{subscription ID}/resourceGroups/Default-ServiceBus-WestUS/providers/Microsoft.ServiceBus/namespaces/{Service Bus namespace}/authorizationrules/RootManageSharedAccessKey.

Tramite l'interfaccia della riga di comando di AzureVia Azure CLI

Per abilitare la trasmissione tramite l'interfaccia della riga di comando di Azure, è possibile usare il comando insights diagnostic set come segue:To enable streaming via the Azure CLI, you can use the insights diagnostic set command like this:

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.Use the same format for Service Bus 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 DescriptionDescription
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