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.
- Als u een cloudservice ontwikkelt met Azure SDK 2.8 en hoger, wordt deze instrumentatiesleutel automatisch ingevuld. De waarde is gebaseerd op de configuratie-instelling van de APPINSIGHTS_INSTRUMENTATIONKEY-service 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.
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.
Voorbeeld van een volledige sinkconfiguratie
Hier volgt een volledig voorbeeld van het openbare configuratiebestand dat:
- Alle fouten worden verzonden naar Application Insights (opgegeven op het knooppunt DiagnosticMonitorConfiguration ).
- Verzendt ook uitgebreide logboeken 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 met Azure Diagnostics worden verzameld
<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
- Meer informatie over het weergeven van diagnostische gegevens van Azure in Application Insights.
- Gebruik PowerShell om de Diagnostische Azure-extensie voor uw toepassing in te schakelen.
- Gebruik Visual Studio om de Diagnostische Azure-extensie voor uw toepassing in te schakelen.