Odesílání diagnostických dat cloudové služby, virtuálního počítače nebo Service Fabric do aplikačního Přehledy

Cloudové služby, virtuální počítače, škálovací sady virtuálních počítačů a Service Fabric používají ke shromažďování dat rozšíření Azure Diagnostics. Diagnostika Azure odesílá data do tabulek Azure Storage. Pomocí rozšíření Azure Diagnostics 1.5 nebo novější můžete také všechna nebo podmnožina dat přenést do jiných umístění.

Tento článek popisuje, jak odesílat data z rozšíření Azure Diagnostics do služby Application Přehledy.

Vysvětlení konfigurace diagnostiky

Rozšíření Azure Diagnostics 1.5 zavedlo jímky, což jsou další umístění, kde můžete odesílat diagnostická data.

Příklad konfigurace jímky pro Přehledy aplikace:

<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"
                    }
                ]
            }
        }
    ]
}
  • Atribut název jímkyje řetězcová hodnota, která jednoznačně identifikuje jímku.

  • Prvek Application Přehledy určuje instrumentační klíč prostředku Application Insights, kde se odesílají diagnostická data Azure.

    • Pokud nemáte existující prostředek Přehledy aplikace, další informace o vytvoření prostředku a získání instrumentačního klíče najdete v tématu Vytvoření nového prostředku Přehledy aplikace.
    • Pokud vyvíjíte cloudovou službu se sadou Azure SDK 2.8 a novějším, naplní se tento instrumentační klíč automaticky. Hodnota je založena na nastavení konfigurace služby APPINSIGHTS_INSTRUMENTATIONKEY při balení projektu cloudové služby. Viz Použití aplikačních Přehledy s cloudovými službami.
  • Element Channels obsahuje jeden nebo více prvků kanálu .

    • Atribut name jednoznačně odkazuje na tento kanál.
    • Atribut loglevel umožňuje zadat úroveň protokolu, kterou kanál umožňuje. Dostupné úrovně protokolů v pořadí od většiny po nejmenší informace jsou:
      • Podrobnosti
      • Informační
      • Upozorňující
      • Error
      • Kritické

Kanál funguje jako filtr a umožňuje vybrat konkrétní úrovně protokolu, které se mají odeslat do cílové jímky. Můžete například shromažďovat podrobné protokoly a odesílat je do úložiště, ale odesílat do jímky pouze chyby.

Následující obrázek znázorňuje tuto relaci.

Diagnostics Public Configuration

Následující obrázek shrnuje hodnoty konfigurace a jejich fungování. Do konfigurace můžete zahrnout více jímek na různých úrovních hierarchie. Jímka na nejvyšší úrovni funguje jako globální nastavení a ten zadaný v jednotlivých elementech funguje jako přepsání daného globálního nastavení.

Diagnostics Sinks Configuration with Application Insights

Příklad úplné konfigurace jímky

Tady je úplný příklad veřejného konfiguračního souboru, který

  1. odešle všechny chyby do Přehledy aplikace (zadané v uzlu DiagnosticMonitorConfiguration).
  2. také odesílá podrobné protokoly na úrovni pro protokoly aplikace (zadané v uzlu Protokoly ).
<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"
                        }
                    ]
                }
            }
        ]
    }
}

V předchozí konfiguraci mají následující řádky následující významy:

Odeslání všech dat shromažďovaných diagnostikou Azure

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

Odesílání pouze protokolů chyb do jímky Přehledy aplikace

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

Odeslání podrobných aplikačních protokolů do aplikačního Přehledy

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

Omezení

  • Kanály pouze typ protokolu a ne čítače výkonu. Pokud zadáte kanál s prvkem čítače výkonu, bude ignorován.
  • Úroveň protokolu pro kanál nemůže překročit úroveň protokolu pro to, co shromažďuje diagnostika Azure. Například nelze shromáždit chyby protokolu aplikace v elementu Logs a pokusit se odeslat podrobné protokoly do jímky Application Insight. Atribut scheduledTransferLogLevelFilter musí vždy shromažďovat stejné nebo více protokolů než protokoly, které se pokoušíte odeslat do jímky.
  • Data objektů blob shromážděná rozšířením diagnostiky Azure nemůžete odesílat do aplikačního Přehledy. Například cokoli zadaného v uzlu Adresáře . V případě výpisů stavu systému se skutečný výpis stavu systému odešle do úložiště objektů blob a do aplikace Přehledy se odešle pouze oznámení o vygenerování výpisu stavu systému.

Další kroky