Senden von Cloud Services-, Virtual Machines- oder Service Fabric-Diagnosedaten an Application InsightsSend Cloud Service, Virtual Machine, or Service Fabric diagnostic data to Application Insights

Cloud Services, Virtual Machines, VM-Skalierungsgruppen und Service Fabric verwenden die Azure-Diagnoseerweiterung zum Sammeln von Daten.Cloud services, Virtual Machines, Virtual Machine Scale Sets and Service Fabric all use the Azure Diagnostics extension to collect data. Die Azure-Diagnose sendet die Daten an Azure Storage-Tabellen.Azure diagnostics sends data to Azure Storage tables. Sie können jedoch auch alle oder einen Teil der Daten mithilfe der Azure-Diagnoseerweiterung 1.5 oder höher an andere Speicherorte weiterleiten.However, you can also pipe all or a subset of the data to other locations using Azure Diagnostics extension 1.5 or later.

Dieser Artikel beschreibt, wie Daten der Azure-Diagnoseerweiterung an Application Insights gesendet werden.This article describes how to send data from the Azure Diagnostics extension to Application Insights.

Erläuterung der DiagnosekonfigurationDiagnostics configuration explained

Mit der Azure-Diagnoseerweiterung 1.5 wurden Senken eingeführt, die zusätzliche Speicherorte darstellen, an die Sie Diagnosedaten senden können.The Azure diagnostics extension 1.5 introduced sinks, which are additional locations where you can send diagnostic data.

Beispielkonfiguration einer Senke für 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"
                    }
                ]
            }
        }
    ]
}
  • Das Attribut Sink Name ist ein Zeichenfolgenwert, der die Senke eindeutig identifiziert.The Sink name attribute is a string value that uniquely identifies the sink.

  • Das Element ApplicationInsights gibt den Instrumentierungsschlüssel der Application Insights-Ressource an, an die die Azure-Diagnosedaten gesendet werden.The ApplicationInsights element specifies instrumentation key of the Application insights resource where the Azure diagnostics data is sent.

    • Wenn Sie keine vorhandene Application Insights-Ressource besitzen, finden Sie weitere Informationen zum Erstellen einer Ressource sowie zum Abrufen des Instrumentierungsschlüssels unter Erstellen einer neuen Application Insights-Ressource.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.
    • Wenn Sie einen Clouddienst mit dem Azure SDK 2.8 und höher entwickeln, wird dieser Instrumentierungsschlüssel automatisch aufgefüllt.If you are developing a Cloud Service with Azure SDK 2.8 and later, this instrumentation key is automatically populated. Der Wert basiert auf der Dienstkonfigurationseinstellung APPINSIGHTS_INSTRUMENTATIONKEY, die beim Verpacken des Clouddienstprojekts festgelegt wird.The value is based on the APPINSIGHTS_INSTRUMENTATIONKEY service configuration setting when packaging the Cloud Service project. Weitere Informationen finden Sie unter Verwenden von Application Insights mit Cloud Services.See Use Application Insights with Cloud Services.
  • Das Element Channels enthält ein oder mehrere Channel-Elemente.The Channels element contains one or more Channel elements.

    • Das Attribut Name gibt diesen Kanal eindeutig an.The name attribute uniquely refers to that channel.
    • Mit dem Attribut logLevel können Sie den Protokolliergrad angeben, den der Kanal zulässt.The loglevel attribute lets you specify the log level that the channel allows. Die verfügbaren Protokolliergrade in der Reihenfolge ihrer Ausführlichkeit:The available log levels in order of most to least information are:
      • AusführlichVerbose
      • InformationInformation
      • WarnungWarning
      • FehlerError
      • KritischCritical

Ein Kanal verhält sich wie ein Filter und ermöglicht es Ihnen, bestimmte Protokolliergrade auszuwählen, die an die Zielsenke gesendet werden.A channel acts like a filter and allows you to select specific log levels to send to the target sink. Beispielsweise könnten Sie ausführliche Protokolle sammeln und an den Speicher senden, aber nur Fehler an die Senke.For example, you could collect verbose logs and send them to storage, but send only Errors to the sink.

Die folgende Abbildung zeigt diese Beziehung.The following graphic shows this relationship.

Öffentliche Diagnosekonfiguration

Die folgende Abbildung fasst die Konfigurationswerte und deren Funktionsweise zusammen.The following graphic summarizes the configuration values and how they work. Sie können in die Konfiguration mehrere Senken auf unterschiedlichen Ebenen der Hierarchie einschließen.You can include multiple sinks in the configuration at different levels in the hierarchy. Die Senke der obersten Ebene verhält sich wie eine globale Einstellung, und die für das einzelne Element angegebene Senke verhält sich wie eine Korrektur der globalen Einstellung.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.

Konfiguration von Diagnosesenken mit Application Insights

Vollständiges Beispiel für eine SenkenkonfigurationComplete sink configuration example

Hier sehen Sie ein vollständiges Beispiel für eine öffentliche Konfigurationsdatei, die Folgendes ausführt:Here is a complete example of the public configuration file that

  1. Sendet alle Fehler an Application Insights (angegeben im Knoten DiagnosticMonitorConfiguration)sends all errors to Application Insights (specified at the DiagnosticMonitorConfiguration node)
  2. Sendet zudem ausführliche Protokolle für die Anwendungsprotokolle (angegeben im Knoten 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"
                        }
                    ]
                }
            }
        ]
    }
}

In der vorherigen Konfiguration haben die folgenden Zeilen die folgende Bedeutung:In the previous configuration, the following lines have the following meanings:

Senden aller Daten, die von der Azure-Diagnose gesammelt werdenSend all the data that is being collected by Azure diagnostics

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

Ausschließliches Senden von Fehlerprotokollen an die Application Insights-SenkeSend only error logs to the Application Insights sink

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

Senden von ausführlichen Anwendungsprotokollen an Application InsightsSend Verbose application logs to Application Insights

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

EinschränkungenLimitations

  • Nur Kanäle werden protokolliert, keine Leistungsindikatoren.Channels only log type and not performance counters. Wenn Sie einen Kanal mit einem Leistungsindikatorelement angeben, wird es ignoriert.If you specify a channel with a performance counter element, it is ignored.
  • Der Protokolliergrad für einen Kanal darf den Protokolliergrad für die von der Azure-Diagnose erfassten Daten nicht überschreiten.The log level for a channel cannot exceed the log level for what is being collected by Azure diagnostics. Beispiel: Sie können keine Anwendungsprotokollfehler im Element „Logs“ sammeln und können nicht versuchen, ausführliche Protokolle an die Application Insight-Senke zu senden.For example, you cannot collect Application Log errors in the Logs element and try to send Verbose logs to the Application Insight sink. Das scheduledTransferLogLevelFilter-Attribut muss immer mindestens genauso viele Protokolle sammeln wie die Protokolle, die Sie an eine Senke senden möchten.The scheduledTransferLogLevelFilter attribute must always collect equal or more logs than the logs you are trying to send to a sink.
  • Sie können keine von der Azure-Diagnoseerweiterung gesammelten Blobdaten an Application Insights senden.You cannot send blob data collected by Azure diagnostics extension to Application Insights. Beispiel: Alle Daten unter dem Knoten Directories.For example, anything specified under the Directories node. Bei Absturzabbildern wird das tatsächliche Absturzabbild weiterhin an den Blobspeicher gesendet, und es wird nur eine Benachrichtigung, dass das Absturzabbild generiert wurde, an Application Insights gesendet.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.

Nächste SchritteNext Steps