Inviare i dati di diagnostica del servizio Cloud, della macchina virtuale o di Service Fabric ad Application InsightsSend Cloud Service, Virtual Machine, or Service Fabric diagnostic data to Application Insights

I servizi cloud, le macchine virtuali, il set di scalabilità di macchine virtuali e Service Fabric usano l'estensione Diagnostica di Azure per raccogliere i dati.Cloud services, Virtual Machines, Virtual Machine Scale Sets and Service Fabric all use the Azure Diagnostics extension to collect data. La diagnostica di Azure invia i dati alle tabelle di Archiviazione di Azure.Azure diagnostics sends data to Azure Storage tables. Tuttavia, è possibile anche inviare pipe o un subset di dati ad altri percorsi con l'estensione Diagnostica di Azure 1.5 o versione successiva.However, you can also pipe all or a subset of the data to other locations using Azure Diagnostics extension 1.5 or later.

In questo articolo viene descritto come inviare i dati dall'estensione Diagnostica di Azure ad Application Insights.This article describes how to send data from the Azure Diagnostics extension to Application Insights.

Descrizione della configurazione di DiagnosticaDiagnostics configuration explained

L'estensione Diagnostica di Azure 1.5 ha introdotto i sink, ovvero percorsi aggiuntivi a cui è possibile inviare i dati di diagnostica.The Azure diagnostics extension 1.5 introduced sinks, which are additional locations where you can send diagnostic data.

Esempio di configurazione di un sink per Application Insights:Example configuration of a sink for Application Insights:

<SinksConfig>
    <Sink name="ApplicationInsights">
      <ApplicationInsights>{Insert InstrumentationKey}</ApplicationInsights>
      <Channels>
        <Channel logLevel="Error" name="MyTopDiagData"  />
        <Channel logLevel="Verbose" name="MyLogData"  />
      </Channels>
    </Sink>
</SinksConfig>
"SinksConfig": {
    "Sink": [
        {
            "name": "ApplicationInsights",
            "ApplicationInsights": "{Insert InstrumentationKey}",
            "Channels": {
                "Channel": [
                    {
                        "logLevel": "Error",
                        "name": "MyTopDiagData"
                    },
                    {
                        "logLevel": "Error",
                        "name": "MyLogData"
                    }
                ]
            }
        }
    ]
}
  • L'attributo Sink name è un valore della stringa che identifica in modo univoco il sink.The Sink name attribute is a string value that uniquely identifies the sink.

  • L'elemento ApplicationInsights specifica la chiave di strumentazione della risorsa di Application Insights a cui verranno inviati i dati di Diagnostica di Azure.The ApplicationInsights element specifies instrumentation key of the Application insights resource where the Azure diagnostics data is sent.

  • L'elemento Channels contiene uno o più elementi Channel.The Channels element contains one or more Channel elements.

    • L'attributo name fa riferimento in modo univoco a tale canale.The name attribute uniquely refers to that channel.
    • L'attributo loglevel consente di specificare il livello di log consentito dal canale.The loglevel attribute lets you specify the log level that the channel allows. I livelli di log disponibili, in base al livello di dettaglio delle informazioni, sono:The available log levels in order of most to least information are:
      • DettagliatoVerbose
      • InformazioniInformation
      • AvvisoWarning
      • Tipi di erroreError
      • CriticoCritical

Un canale agisce da filtro e consente di selezionare specifici livelli di log da inviare al sink di destinazione.A channel acts like a filter and allows you to select specific log levels to send to the target sink. Ad esempio, l'utente può raccogliere log dettagliati inviarli alla risorsa di archiviazione, ma inviare solo gli errori al sink.For example, you could collect verbose logs and send them to storage, but send only Errors to the sink.

Il grafico seguente illustra questa relazione.The following graphic shows this relationship.

Configurazione pubblica di Diagnostica

Nel grafico seguente sono riepilogati i valori di configurazione e il relativo funzionamento.The following graphic summarizes the configuration values and how they work. È inoltre possibile includere più sink nella configurazione, a vari livelli della gerarchia.You can include multiple sinks in the configuration at different levels in the hierarchy. Il sink specificato al livello superiore svolge la funzione di impostazione globale, mentre quello specificato al livello di singolo elemento agisce da override dell'impostazione globale.The sink at the top level acts as a global setting and the one specified at the individual element acts like an override to that global setting.

Configurazione dei sink di diagnostica con Application Insights

Esempio di configurazione del sink completoComplete sink configuration example

Ecco un esempio completo del file di configurazione pubblico cheHere is a complete example of the public configuration file that

  1. invia tutti gli errori ad Application Insights (specificato nel nodo DiagnosticMonitorConfiguration)sends all errors to Application Insights (specified at the DiagnosticMonitorConfiguration node)
  2. invia anche i registri di livello Verbose per i log dell'applicazione (specificato nel nodo Log).also sends Verbose level logs for the Application Logs (specified at the Logs node).
<WadCfg>
  <DiagnosticMonitorConfiguration overallQuotaInMB="4096"
       sinks="ApplicationInsights.MyTopDiagData"> <!-- All info below sent to this channel -->
    <DiagnosticInfrastructureLogs />
    <PerformanceCounters>
      <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
    </PerformanceCounters>
    <WindowsEventLog scheduledTransferPeriod="PT1M">
      <DataSource name="Application!*" />
    </WindowsEventLog>
    <Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose"
            sinks="ApplicationInsights.MyLogData"/> <!-- This specific info sent to this channel -->
  </DiagnosticMonitorConfiguration>

<SinksConfig>
    <Sink name="ApplicationInsights">
      <ApplicationInsights>{Insert InstrumentationKey}</ApplicationInsights>
      <Channels>
        <Channel logLevel="Error" name="MyTopDiagData"  />
        <Channel logLevel="Verbose" name="MyLogData"  />
      </Channels>
    </Sink>
  </SinksConfig>
</WadCfg>
"WadCfg": {
    "DiagnosticMonitorConfiguration": {
        "overallQuotaInMB": 4096,
        "sinks": "ApplicationInsights.MyTopDiagData", "_comment": "All info below sent to this channel",
        "DiagnosticInfrastructureLogs": {
        },
        "PerformanceCounters": {
            "PerformanceCounterConfiguration": [
                {
                    "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
                    "sampleRate": "PT3M"
                },
                {
                    "counterSpecifier": "\\Memory\\Available MBytes",
                    "sampleRate": "PT3M"
                }
            ]
        },
        "WindowsEventLog": {
            "scheduledTransferPeriod": "PT1M",
            "DataSource": [
                {
                    "name": "Application!*"
                }
            ]
        },
        "Logs": {
            "scheduledTransferPeriod": "PT1M",
            "scheduledTransferLogLevelFilter": "Verbose",
            "sinks": "ApplicationInsights.MyLogData", "_comment": "This specific info sent to this channel"
        }
    },
    "SinksConfig": {
        "Sink": [
            {
                "name": "ApplicationInsights",
                "ApplicationInsights": "{Insert InstrumentationKey}",
                "Channels": {
                    "Channel": [
                        {
                            "logLevel": "Error",
                            "name": "MyTopDiagData"
                        },
                        {
                            "logLevel": "Verbose",
                            "name": "MyLogData"
                        }
                    ]
                }
            }
        ]
    }
}

Nella configurazione precedente, le righe riportate di seguito hanno i significati seguenti:In the previous configuration, the following lines have the following meanings:

Inviare tutti i dati raccolti dalla diagnostica di AzureSend all the data that is being collected by Azure diagnostics

<DiagnosticMonitorConfiguration overallQuotaInMB="4096" sinks="ApplicationInsights">
"DiagnosticMonitorConfiguration": {
    "overallQuotaInMB": 4096,
    "sinks": "ApplicationInsights",
}

Inviare solo i log di errore al sink di Application InsightsSend only error logs to the Application Insights sink

<DiagnosticMonitorConfiguration overallQuotaInMB="4096" sinks="ApplicationInsights.MyTopDiagdata">
"DiagnosticMonitorConfiguration": {
    "overallQuotaInMB": 4096,
    "sinks": "ApplicationInsights.MyTopDiagData",
}

Inviare i log Verbose dell'applicazione ad Application InsightsSend Verbose application logs to Application Insights

<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" sinks="ApplicationInsights.MyLogData"/>
"DiagnosticMonitorConfiguration": {
    "overallQuotaInMB": 4096,
    "sinks": "ApplicationInsights.MyLogData",
}

LimitazioniLimitations

  • Unico tipo di log Channels e non per i contatori delle prestazioni.Channels only log type and not performance counters. Se si specifica un canale con un elemento contatore delle prestazioni, verrà ignorato.If you specify a channel with a performance counter element, it is ignored.
  • Il livello di log per un canale non può superare il livello di log relativo a quanto raccolto da Diagnostica di Azure.The log level for a channel cannot exceed the log level for what is being collected by Azure diagnostics. Ad esempio, non è possibile raccogliere errori di log applicazioni nell'elemento Los e provare a inviare log Verbose al sink di Application Insight.For example, you cannot collect Application Log errors in the Logs element and try to send Verbose logs to the Application Insight sink. L'attributo scheduledTransferLogLevelFilter deve sempre raccogliere un numero di log pari o superiore al numero di log che si sta tentando di inviare a un sink.The scheduledTransferLogLevelFilter attribute must always collect equal or more logs than the logs you are trying to send to a sink.
  • Non è possibile inviare ad Application Insights dati BLOB raccolti dall'estensione Diagnostica di Azure.You cannot send blob data collected by Azure diagnostics extension to Application Insights. Ad esempio qualsiasi elemento specificato nel nodo Directories.For example, anything specified under the Directories node. Per i dump di arresto anomalo, il dump effettivo di arresto anomalo viene inviato all'archiviazione BLOB e ad Application Insights viene inviata solo una notifica che attesta la creazione del dump di arresto anomalo.For Crash Dumps the actual crash dump is sent to blob storage and only a notification that the crash dump was generated is sent to Application Insights.

Fasi successiveNext Steps