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.
- Jeśli nie masz istniejącego zasobu usługi Application Szczegółowe informacje, zobacz Create a new Application Szczegółowe informacje resource (Tworzenie nowego zasobu usługi Application Szczegółowe informacje), aby uzyskać więcej informacji na temat tworzenia zasobu i pobierania klucza instrumentacji.
- 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 tworzenia pakietów projektu usługi w chmurze. Zobacz Use Application Szczegółowe informacje with Cloud Services (Używanie Szczegółowe informacje aplikacji 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
- 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ę.
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.
Przykład pełnej konfiguracji ujścia
Oto pełny przykład pliku konfiguracji publicznej, który
- wysyła wszystkie błędy do Szczegółowe informacje aplikacji (określone w węźle DiagnosticMonitorConfiguration)
- 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
- Dowiedz się, jak wyświetlać informacje diagnostyczne platformy Azure w usłudze Application Szczegółowe informacje.
- Użyj programu PowerShell , aby włączyć rozszerzenie diagnostyki platformy Azure dla aplikacji.
- Włączanie rozszerzenia diagnostyki platformy Azure dla aplikacji przy użyciu programu Visual Studio