Udostępnij za pośrednictwem


Wysyłanie danych diagnostycznych usługi w chmurze, maszyny wirtualnej lub usługi Service Fabric do usługi Application Insights

Usługi w chmurze, maszyny wirtualne, zestawy skalowania maszyn wirtualnych i usługa Service Fabric używają rozszerzenia Diagnostyka Azure do zbierania danych. Diagnostyka platformy Azure wysyła dane do tabel usługi Azure Storage. Można jednak również przekazać wszystkie lub podzestaw danych do innych lokalizacji przy użyciu rozszerzenia Diagnostyka Azure 1.5 lub nowszego.

W tym artykule opisano sposób wysyłania danych z rozszerzenia Diagnostyka Azure do usługi Application Insights.

Objaśniono konfigurację diagnostyki

Rozszerzenie diagnostyki platformy Azure 1.5 wprowadziło ujścia, które są dodatkowymi lokalizacjami, w których można wysyłać dane diagnostyczne.

Przykładowa konfiguracja ujścia dla usługi 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"
                    }
                ]
            }
        }
    ]
}
  • Atrybut Nazwa ujścia jest wartością ciągu, która jednoznacznie identyfikuje ujście.

  • Element ApplicationInsights określa klucz instrumentacji zasobu usługi Application Insights, w którym są wysyłane dane diagnostyczne platformy Azure.

    • Jeśli nie masz istniejącego zasobu usługi Application Insights, zobacz Tworzenie nowego zasobu usługi Application Insights.
    • Jeśli tworzysz usługę w chmurze przy użyciu zestawu Azure SDK 2.8 lub nowszego, ten klucz instrumentacji zostanie wypełniony automatycznie. Wartość jest oparta na ustawieniu konfiguracji usługi APPINSIGHTS_INSTRUMENTATIONKEY podczas pakietowania projektu usługi w chmurze, zobacz Używanie Application Insights z usługami w chmurze.
  • Element Kanały zawiera co najmniej jeden element kanału .

    • Atrybut name unikatowo odwołuje się do tego kanału.
    • Atrybut loglevel umożliwia określenie poziomu dziennika, na który zezwala kanał. Dostępne poziomy dziennika w kolejności od większości do najmniejszych informacji to:
      • Pełne informacje
      • Informacja
      • Ostrzeżenie
      • Błąd
      • Krytyczne

Kanał działa jak filtr i umożliwia wybranie określonych poziomów logów do wysłania do docelowego odbiornika. Na przykład można zbierać szczegółowe logi i wysyłać je do magazynu, ale przesyłać tylko błędy do końcowego punktu danych.

Poniższa ilustracja przedstawia tę relację.

Konfiguracja publiczna diagnostyki

Poniższa grafika zawiera podsumowanie wartości konfiguracji i sposobu ich działania. W konfiguracji można uwzględnić wiele ujściów na różnych poziomach w hierarchii. Na najwyższym poziomie zlew działa jako ustawienie globalne, a to, które jest określone w poszczególnych elementach, działa jak jego nadpisanie.

Konfiguracja ujścia diagnostyki za pomocą usługi Application Insights

Przykład pełnej konfiguracji ujścia

Oto pełny przykład pliku konfiguracji publicznej, który:

  1. Wysyła wszystkie błędy do usługi Application Insights (określonej w węźle DiagnosticMonitorConfiguration ).
  2. Wysyła również szczegółowe dzienniki poziomu dla dzienników aplikacji (określone w węźle Dzienniki).
<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"
                        }
                    ]
                }
            }
        ]
    }
}

W poprzedniej konfiguracji następujące wiersze mają następujące znaczenie:

Wysyłanie wszystkich danych zbieranych przez diagnostykę platformy Azure

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

Wysyłanie tylko dzienników błędów do ujścia usługi Application Insights

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

Wysyłanie pełnych dzienników aplikacji do usługi Application Insights

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

Ograniczenia

  • Kanały rejestrują tylko typ, a nie liczniki wydajności. Jeśli określisz kanał z elementem licznika wydajności, zostanie on zignorowany.
  • Poziom dziennika dla kanału nie może przekroczyć poziomu dziennika dla danych zbieranych przez diagnostykę platformy Azure. Na przykład nie można zebrać błędów dziennika aplikacji w elemecie Logs i spróbować wysłać pełne dzienniki do ujścia usługi Application Insights. Atrybut scheduledTransferLogLevelFilter musi zawsze zbierać dzienniki równe lub więcej niż dzienniki, które próbujesz wysłać do ujścia.
  • Nie można wysyłać danych typu blob zebranych przez rozszerzenie diagnostyki platformy Azure do usługi Application Insights. Na przykład wszystkie elementy określone w węźle Katalogi . W przypadku zrzutów awaryjnych rzeczywisty zrzut awaryjny jest wysyłany do magazynu obiektów blob i wysyłane jest tylko powiadomienie o wygenerowaniu zrzutu awaryjnego do usługi Application Insights.

Następne kroki