Wysyłanie danych diagnostycznych usługi w chmurze, maszyny wirtualnej lub usługi Service Fabric do usługi Application Szczegółowe informacje

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 Szczegółowe informacje.

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 Szczegółowe informacje aplikacji:

<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 Application Szczegółowe informacje 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ę.

Diagnostics Public Configuration

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.

Diagnostics Sinks Configuration with 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 Szczegółowe informacje aplikacji (określone w węźle DiagnosticMonitorConfiguration)
  2. Wysyła również pełne dzienniki na poziomie 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 Szczegółowe informacje aplikacji

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

Wysyłanie pełnych dzienników aplikacji do usługi Application Szczegółowe informacje

<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 Szczegółowe informacje. 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 aplikacji Szczegółowe informacje.

Następne kroki