Sdílet prostřednictvím


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

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 Application Insights.

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

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

    • Pokud nemáte existující prostředek Application Insights, přečtěte si téma Vytvoření nového prostředku Application Insights.
    • 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žená na nastavení konfigurace služby APPINSIGHTS_INSTRUMENTATIONKEY při balení projektu cloudové služby, viz Použití Application Insights se službami Cloud Services.
  • 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.

Veřejná konfigurace diagnostiky

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í.

Konfigurace diagnostických jímek pomocí 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 Application Insights (zadané v uzlu DiagnosticMonitorConfiguration ).
  2. Odesílá také 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, která diagnostika Azure shromažďuje

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

Odesílání pouze protokolů chyb do jímky Application Insights

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

Odeslání podrobných aplikačních protokolů do Application Insights

<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 nemůžete shromažďovat 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.
  • Do Application Insights nemůžete odesílat data objektů blob shromážděná rozšířením diagnostiky Azure. Například cokoli zadaného v uzlu Adresáře . V případě výpisů stavu systému se skutečné výpisy stavu systému odešlou do úložiště objektů blob a do Application Insights se odešle pouze oznámení o vygenerování výpisu stavu systému.

Další kroky