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.

  • 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
      • Error
      • Krytyczne

Kanał działa jak filtr i umożliwia wybranie określonych poziomów dziennika do wysłania do docelowego ujścia. Można na przykład zbierać pełne dzienniki i wysyłać je do magazynu, ale wysyłać tylko błędy do ujścia.

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. Ujście na najwyższym poziomie działa jako ustawienie globalne, a ten określony w poszczególnych elementach działa jak przesłonięcie tego ustawienia globalnego.

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ż pełne 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

  • Tylko typ dziennika kanałów, 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 tego, co jest zbierane 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 obiektów 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