Skicka molntjänst, virtuell dator eller Service Fabric-diagnostikdata till Application Insights

Molntjänster, virtuella datorer, VM-skalningsuppsättningar och Service Fabric använder alla Azure Diagnostics-tillägget för att samla in data. Azure-diagnostik skickar data till Azure Storage-tabeller. Du kan dock även skicka alla eller en delmängd av data till andra platser med hjälp av Azure Diagnostics-tillägget 1.5 eller senare.

Den här artikeln beskriver hur du skickar data från Azure Diagnostics-tillägget till Application Insights.

Förklarad diagnostikkonfiguration

Azure Diagnostics-tillägget 1.5 introducerade mottagare, som är ytterligare platser där du kan skicka diagnostikdata.

Exempel på konfiguration av en mottagare för 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"
                    }
                ]
            }
        }
    ]
}
  • Attributet Mottagarnamn är ett strängvärde som unikt identifierar mottagaren.

  • ApplicationInsights-elementet anger instrumentationsnyckeln för application insights-resursen där Azure-diagnostikdata skickas.

    • Om du inte har någon befintlig Application Insights-resurs kan du läsa Skapa en ny Application Insights-resurs för mer information om hur du skapar en resurs och hämtar instrumentationsnyckeln.
    • Om du utvecklar en molntjänst med Azure SDK 2.8 och senare fylls den här instrumentationsnyckeln i automatiskt. Värdet baseras på konfigurationsinställningen APPINSIGHTS_INSTRUMENTATIONKEY tjänst när molntjänstprojektet paketeras. Se Använda Application Insights med Cloud Services.
  • Elementet Kanaler innehåller ett eller flera kanalelement .

    • Namnattributet refererar unikt till kanalen.
    • Med loglevel-attributet kan du ange den loggnivå som kanalen tillåter. De tillgängliga loggnivåerna i ordning efter mest eller minst information är:
      • Utförlig
      • Information
      • Varning
      • Fel
      • Kritiskt

En kanal fungerar som ett filter och låter dig välja specifika loggnivåer som ska skickas till målmottagaren. Du kan till exempel samla in utförliga loggar och skicka dem till lagring, men bara skicka fel till mottagaren.

Följande bild visar den här relationen.

Diagnostics Public Configuration

Följande bild sammanfattar konfigurationsvärdena och hur de fungerar. Du kan inkludera flera mottagare i konfigurationen på olika nivåer i hierarkin. Mottagaren på den översta nivån fungerar som en global inställning och den som anges i det enskilda elementet fungerar som en åsidosättning till den globala inställningen.

Diagnostics Sinks Configuration with Application Insights

Exempel på fullständig konfiguration av mottagare

Här är ett fullständigt exempel på den offentliga konfigurationsfilen som

  1. skickar alla fel till Application Insights (anges på noden DiagnosticMonitorConfiguration )
  2. skickar också utförliga nivåloggar för programloggarna (anges på noden Loggar ).
<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"
                        }
                    ]
                }
            }
        ]
    }
}

I den föregående konfigurationen har följande rader följande betydelser:

Skicka alla data som samlas in av Azure-diagnostik

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

Skicka endast felloggar till Application Insights-mottagare

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

Skicka utförliga programloggar till Application Insights

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

Begränsningar

  • Kanaler loggar endast typ och inte prestandaräknare. Om du anger en kanal med ett prestandaräknareelement ignoreras den.
  • Loggnivån för en kanal får inte överskrida loggnivån för det som samlas in av Azure-diagnostik. Du kan till exempel inte samla in programloggfel i log-elementet och försöka skicka utförliga loggar till Application Insight-mottagare. Attributet scheduledTransferLogLevelFilter måste alltid samla in lika med eller flera loggar än de loggar som du försöker skicka till en mottagare.
  • Du kan inte skicka blobdata som samlas in av Azure-diagnostiktillägget till Application Insights. Till exempel allt som anges under noden Kataloger . För Kraschdumpar skickas den faktiska kraschdumpen till Blob Storage och endast ett meddelande om att kraschdumpen genererades skickas till Application Insights.

Nästa steg