Diagnostische gegevens van Cloud Service, Virtual Machine of Service Fabric verzenden naar Application Insights

Cloudservices, virtuele machines, virtuele-machineschaalsets en Service Fabric gebruiken allemaal de Azure Diagnostics-extensie om gegevens te verzamelen. Azure Diagnostics verzendt gegevens naar Azure Storage-tabellen. U kunt echter ook alle of een subset van de gegevens doorsluisen naar andere locaties met behulp van de Azure Diagnostics-extensie 1.5 of hoger.

In dit artikel wordt beschreven hoe u gegevens verzendt van de Azure Diagnostics-extensie naar Application Insights.

Uitleg over diagnostische configuratie

De Azure Diagnostics-extensie 1.5 heeft sinks geïntroduceerd. Dit zijn extra locaties waar u diagnostische gegevens kunt verzenden.

Voorbeeldconfiguratie van een sink voor 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"
                    }
                ]
            }
        }
    ]
}
  • Het kenmerk Sink-naam is een tekenreekswaarde die de sink uniek identificeert.

  • Het ApplicationInsights-element specificeert instrumentatiesleutel van de Application Insights-resource waarin de diagnostische gegevens van Azure worden verzonden.

    • Als u geen bestaande Application Insights-resource hebt, raadpleegt u Een nieuwe Application Insights-resource maken voor meer informatie over het maken van een resource en het ophalen van de instrumentatiesleutel.
    • Als u een cloudservice ontwikkelt met Azure SDK 2.8 en hoger, wordt deze instrumentatiesleutel automatisch ingevuld. De waarde is gebaseerd op de APPINSIGHTS_INSTRUMENTATIONKEY-serviceconfiguratie-instelling bij het verpakken van het Cloud Service-project. Zie Application Insights gebruiken met Cloud Services.
  • Het element Kanalen bevat een of meer kanaalelementen .

    • Het naamkenmerk verwijst uniek naar dat kanaal.
    • Met het kenmerk loglevel kunt u het logboekniveau opgeven dat het kanaal toestaat. De beschikbare logboekniveaus in volgorde van de meeste tot de minste informatie zijn:
      • Uitgebreid
      • Gegevens
      • Waarschuwing
      • Fout
      • Kritiek

Een kanaal fungeert als een filter en stelt u in staat om specifieke logboekniveaus te selecteren die naar de doelsink moeten worden verzonden. U kunt bijvoorbeeld uitgebreide logboeken verzamelen en naar de opslag verzenden, maar alleen fouten naar de sink verzenden.

In de volgende afbeelding ziet u deze relatie.

Diagnostics Public Configuration

In de volgende afbeelding ziet u een overzicht van de configuratiewaarden en de werking ervan. U kunt meerdere sinks opnemen in de configuratie op verschillende niveaus in de hiërarchie. De sink op het hoogste niveau fungeert als een globale instelling en de sink die op het afzonderlijke element is opgegeven, fungeert als een onderdrukking voor die globale instelling.

Diagnostics Sinks Configuration with Application Insights

Voorbeeld van een volledige sinkconfiguratie

Hier volgt een volledig voorbeeld van het openbare configuratiebestand dat

  1. verzendt alle fouten naar Application Insights (opgegeven op het knooppunt DiagnosticMonitorConfiguration )
  2. verzendt ook uitgebreide logboeken op niveau voor de toepassingslogboeken (opgegeven op het knooppunt Logboeken ).
<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 de vorige configuratie hebben de volgende regels de volgende betekenissen:

Alle gegevens verzenden die worden verzameld door Diagnostische gegevens van Azure

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

Alleen foutlogboeken verzenden naar de Application Insights-sink

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

Uitgebreide toepassingslogboeken verzenden naar Application Insights

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

Beperkingen

  • Kanalen alleen logboektype en niet prestatiemeteritems. Als u een kanaal met een prestatiemeteritem opgeeft, wordt dit genegeerd.
  • Het logboekniveau voor een kanaal kan het logboekniveau niet overschrijden voor wat wordt verzameld door Diagnostische gegevens van Azure. U kunt bijvoorbeeld geen toepassingslogboekfouten verzamelen in het element Logboeken en uitgebreide logboeken verzenden naar de Application Insight-sink. Het kenmerk scheduledTransferLogLevelFilter moet altijd gelijke of meer logboeken verzamelen dan de logboeken die u naar een sink wilt verzenden.
  • U kunt geen blobgegevens verzenden die zijn verzameld door de diagnostische Azure-extensie naar Application Insights. Bijvoorbeeld alles wat is opgegeven onder het knooppunt Directory's . Voor crashdumps wordt de werkelijke crashdump verzonden naar blobopslag en wordt alleen een melding verzonden dat de crashdump is gegenereerd naar Application Insights.

Volgende stappen