Cloudservice, virtuele machine of diagnostische gegevens Service Fabric verzenden naar Application Insights

Cloudservices, Virtual Machines, Virtual Machine Scale Sets en Service Fabric gebruiken allemaal de Azure Diagnostics-extensie om gegevens te verzamelen. Diagnostische gegevens van Azure verzendt gegevens naar Azure Storage tabellen. U kunt echter ook alle of een subset van de gegevens doorspijpen naar andere locaties met behulp Azure Diagnostics extensie 1.5 of hoger.

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

Uitleg over diagnostische configuratie

In de Azure Diagnostics-extensie 1.5 zijn 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 Sinknaam is een tekenreekswaarde die de sink uniek identificeert.

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

    • Als u geen bestaande Application Insights-resource hebt, zie Een nieuwe Application Insights-resource maken voor meer informatie over het maken van een resource en het verkrijgen 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 Toepassingstoepassing Insights 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 meest tot de minste informatie zijn:
      • Uitgebreid
      • Informatie
      • Waarschuwing
      • Fout
      • Kritiek

Een kanaal fungeert als een filter en stelt u in staat specifieke logboekniveaus te selecteren die u naar de doel-sink wilt verzenden. U kunt bijvoorbeeld uitgebreide logboeken verzamelen en deze naar de opslag verzenden, maar alleen fouten naar de sink verzenden.

In de volgende afbeelding ziet u deze relatie.

Openbare configuratie van diagnostische gegevens

De volgende afbeelding geeft een overzicht van de configuratiewaarden en hoe ze werken. 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 instelling die is opgegeven bij het afzonderlijke element fungeert als een overschrijven van die globale instelling.

Configuratie van diagnose-sinks met application Insights

Volledig voorbeeld van sinkconfiguratie

Hier is 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 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 betekenis:

Alle gegevens verzenden die worden verzameld met diagnostische gegevens van Azure

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

Alleen foutlogboeken verzenden naar de sink Insights Application Insights verzenden

<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 kunnen alleen logboektype en geen prestatiemeters. Als u een kanaal met een prestatiemeterelement opgeeft, wordt dit genegeerd.
  • Het logboekniveau voor een kanaal mag niet groter zijn dan het logboekniveau 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 die worden verzameld door de diagnostische Azure-extensie verzenden naar Application Insights. Bijvoorbeeld alles wat is opgegeven onder het knooppunt Directories. Voor crashdumps wordt de daadwerkelijke crashdump verzonden naar blobopslag en wordt er alleen een melding verzonden dat de crashdump is gegenereerd naar Application Insights.

Volgende stappen