Envío de datos de diagnóstico de Cloud Services, Virtual Machines o Service Fabric a Application InsightsSend Cloud Service, Virtual Machine, or Service Fabric diagnostic data to Application Insights

Cloud Services, Virtual Machines, los conjuntos de escalado de máquinas virtuales y Service Fabric usan la extensión Azure Diagnostics para recopilar datos.Cloud services, Virtual Machines, Virtual Machine Scale Sets and Service Fabric all use the Azure Diagnostics extension to collect data. Esta extensión envía los datos a las tablas de Azure Storage.Azure diagnostics sends data to Azure Storage tables. Sin embargo, también puede canalizar todos los datos o un subconjunto de ellos a otras ubicaciones mediante la versión 1.5 o una posterior de la extensión Azure Diagnostics.However, you can also pipe all or a subset of the data to other locations using Azure Diagnostics extension 1.5 or later.

En este artículo se describe cómo enviar datos de la extensión Azure Diagnostics a Application Insights.This article describes how to send data from the Azure Diagnostics extension to Application Insights.

Explicación de la configuración de DiagnosticsDiagnostics configuration explained

La versión 1.5 de la extensión Azure Diagnostics introdujo los receptores, que son más ubicaciones donde puede enviar datos de diagnóstico.The Azure diagnostics extension 1.5 introduced sinks, which are additional locations where you can send diagnostic data.

Ejemplo de configuración de un receptor para 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"
                    }
                ]
            }
        }
    ]
}
  • El atributo name del receptor es un valor de cadena que identifica de forma única el receptor.The Sink name attribute is a string value that uniquely identifies the sink.

  • El elemento ApplicationInsights especifica la clave de instrumentación del recurso de Application Insights donde se enviarán los datos de Azure Diagnostics.The ApplicationInsights element specifies instrumentation key of the Application insights resource where the Azure diagnostics data is sent.

    • Si no tiene un recurso existente de Application Insights, consulte Creación de recursos en Application Insights para más información sobre cómo crear un recurso y obtener la clave de instrumentación.If you don't have an existing Application Insights resource, see Create a new Application Insights resource for more information on creating a resource and getting the instrumentation key.
    • Si está desarrollando un servicio en la nube con Azure SDK 2.8 y versiones posteriores, se rellena automáticamente esta clave de instrumentación.If you are developing a Cloud Service with Azure SDK 2.8 and later, this instrumentation key is automatically populated. El valor se basa en la configuración de servicio APPINSIGHTS_INSTRUMENTATIONKEY al empaquetar el proyecto de Cloud Services.The value is based on the APPINSIGHTS_INSTRUMENTATIONKEY service configuration setting when packaging the Cloud Service project. Consulte Usar Application Insights con Cloud Services.See Use Application Insights with Cloud Services.
  • El elemento Channels contiene uno o varios elementos Channel.The Channels element contains one or more Channel elements.

    • El atributo name identifica de forma única el atributo a ese canal.The name attribute uniquely refers to that channel.
    • Con el atributo loglevel se puede especificar el nivel de registro que permitirá el canal.The loglevel attribute lets you specify the log level that the channel allows. Estos son los niveles de registro disponibles, en orden de más a menos información:The available log levels in order of most to least information are:
      • VerboseVerbose
      • InformationInformation
      • AdvertenciaWarning
      • ErrorError
      • CríticoCritical

El canal actúa como filtro y permite seleccionar los niveles de registro específicos que enviar al receptor.A channel acts like a filter and allows you to select specific log levels to send to the target sink. Por ejemplo, podría recopilar registros detallados y enviarlos al almacenamiento, pero solo se envían los errores al receptor.For example, you could collect verbose logs and send them to storage, but send only Errors to the sink.

En el gráfico siguiente se muestra esta relación.The following graphic shows this relationship.

Configuración pública de diagnósticos

El gráfico siguiente resume los valores de configuración y cómo funcionan.The following graphic summarizes the configuration values and how they work. Puede incluir varios receptores en la configuración en distintos niveles de la jerarquía.You can include multiple sinks in the configuration at different levels in the hierarchy. El receptor del nivel superior de la jerarquía actúa como una configuración global y el especificado en los elementos individuales como una invalidación de esa configuración global.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.

Receptores de diagnósticos: configuración con Application Insights

Ejemplo completo de configuración de receptorComplete sink configuration example

Este es un ejemplo completo del archivo de configuración público queHere is a complete example of the public configuration file that

  1. envía todos los errores a Application Insights (se especifica en el nodo DiagnosticMonitorConfiguration).sends all errors to Application Insights (specified at the DiagnosticMonitorConfiguration node)
  2. Además, envía los registros de aplicación detallados (se especifica en el nodo Logs).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"
                        }
                    ]
                }
            }
        ]
    }
}

En la configuración anterior, las líneas siguientes tienen estos significados:In the previous configuration, the following lines have the following meanings:

Envía todos los datos que recopila Azure Diagnostics.Send all the data that is being collected by Azure diagnostics

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

Envía solo los registros de errores al receptor de Application Insights.Send only error logs to the Application Insights sink

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

Envía los registros de aplicación detallados a Application Insights.Send Verbose application logs to Application Insights

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

LimitacionesLimitations

  • Channels solo registra el tipo de registro y no los contadores de rendimiento.Channels only log type and not performance counters. Si especifica un canal con un elemento de contador de rendimiento, se pasará por alto.If you specify a channel with a performance counter element, it is ignored.
  • El nivel de registro de un canal no puede superar el nivel de registro de lo que va a recopilar con Azure Diagnostics.The log level for a channel cannot exceed the log level for what is being collected by Azure diagnostics. Por ejemplo, no puede recopilar errores de registro de aplicación del elemento Logs y tratar de enviar registros detallados al receptor de Application Insights.For example, you cannot collect Application Log errors in the Logs element and try to send Verbose logs to the Application Insight sink. El atributo scheduledTransferLogLevelFilter debe recopilar siempre un número de registros igual o superior a los registros que intenta enviar a un receptor.The scheduledTransferLogLevelFilter attribute must always collect equal or more logs than the logs you are trying to send to a sink.
  • No puede enviar datos de blob recopilados mediante la extensión Azure Diagnostics a Application Insights.You cannot send blob data collected by Azure diagnostics extension to Application Insights. Por ejemplo, nada de lo especificado en el nodo Directories.For example, anything specified under the Directories node. En el caso de volcados de memoria, el volcado real se sigue enviando al almacenamiento de blobs y solo se transmitirá a Application Insights una notificación de que el volcado de memoria se ha generado.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.

Pasos siguientesNext Steps