Analysera loggar och mått med diagnostikinställningar
Kommentar
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.
Den här artikeln gäller för: ✔️ Java ✔️ C#
Den här artikeln gäller för: ✔️ Basic/Standard ✔️ Enterprise
Den här artikeln visar hur du analyserar diagnostikdata i Azure Spring Apps.
Med hjälp av diagnostikfunktionen i Azure Spring Apps kan du analysera loggar och mått med någon av följande tjänster:
- Använd Azure Log Analytics. Det finns en fördröjning vid export av loggar till Log Analytics.
- Spara loggar på ett lagringskonto för granskning eller manuell inspektion. Du kan ange kvarhållningstiden (i dagar).
- Strömma loggar till din händelsehubb för inmatning av en tjänst från tredje part eller en anpassad analyslösning.
Välj den loggkategori och måttkategori som du vill övervaka.
Dricks
Om du bara vill strömma loggarna kan du använda Azure CLI-kommandot az spring app logs.
Loggar
Loggas | beskrivning |
---|---|
ApplicationConsole | Konsollogg för alla kundprogram. |
SystemLoggar | De tillgängliga LogType värdena är ConfigServer (endast Basic/Standard), ServiceRegistry (alla planer), ApiPortal (endast Enterprise-plan), ApplicationConfigurationService (endast Enterprise-plan), SpringCloudGateway (endast Enterprise-plan) och SpringCloudGatewayOperator (endast Enterprise-plan) |
IngressLogs | Ingressloggar för alla kundens program, endast åtkomstloggar. |
BuildLogs | Skapa loggar för alla kundens program för varje byggfas. |
Kommentar
För att skydda ditt program mot potentiella läckage av autentiseringsuppgifter maskeras allt logginnehåll med autentiseringsuppgifter eller annan känslig information med ***
. Till exempel hanteras alla logginnehåll med följande mönster som känslig information och motsvarande värden maskeras:
dbpass
,password
,key
,secret
,sig
ochsignature
följt av:
eller=
. Dessa mönster visas vanligtvis i URL-parametrar och nyttolastdumpar. Till exempelhttps://somestorage.blob.core.windows.net?sv=2021-08-06&st=2024-04-30T10%3A01%3A19Z&se=2024-04-30T11%3A01%3A19Z&sr=b&sp=r&sig=xxxxxxxxxxxxxx
blirhttps://somestorage.blob.core.windows.net?sv=2021-08-06&st=2024-04-30T10%3A01%3A19Z&se=2024-04-30T11%3A01%3A19Z&sr=b&sp=r&sig=***
- JWT-tokenliknande kodade strängar i formatet:
eyJxxxxxx.eyJxxxxxx
Om du hittar maskerade värden i loggarna måste du uppdatera programkoden för att eliminera läckage av autentiseringsuppgifter.
Mått
En fullständig lista över mått finns i avsnittet Alternativ för användarmått i Mått för Azure Spring Apps.
För att komma igång aktiverar du en av dessa tjänster för att ta emot data. Mer information om hur du konfigurerar Log Analytics finns i Kom igång med Log Analytics i Azure Monitor.
Konfigurera diagnostikinställningar
I Azure Portal går du till din Azure Spring Apps-instans.
Välj alternativet Diagnostikinställningar och välj sedan Lägg till diagnostikinställning.
Ange ett namn för inställningen och välj sedan var du vill skicka loggarna. Du kan välja valfri kombination av följande alternativ:
- Arkivera till ett lagringskonto
- Strömma till en händelsehubb
- Skicka till Log Analytics
- Skicka till partnerlösning
Välj vilken loggkategori och måttkategori du vill övervaka och ange sedan kvarhållningstiden (i dagar). Kvarhållningstiden gäller endast för lagringskontot.
Välj Spara.
Kommentar
Det kan finnas ett mellanrum på upp till 15 minuter mellan när loggar eller mått genereras och när de visas i ditt lagringskonto, din händelsehubb eller Log Analytics. Om Azure Spring Apps-instansen tas bort eller flyttas kommer åtgärden inte att överlappa resurserna för diagnostikinställningar . Diagnostikinställningarnas resurser måste tas bort manuellt innan åtgärden mot dess överordnade, Azure Spring Apps-instansen. Om en ny Azure Spring Apps-instans etableras med samma resurs-ID som den borttagna, eller om Azure Spring Apps-instansen flyttas tillbaka, fortsätter resurserna för tidigare diagnostikinställningar att utöka den.
Visa loggar och mått
Det finns olika metoder för att visa loggar och mått enligt beskrivningen under följande rubriker.
Använda fönstret Loggar
I Azure Portal går du till din Azure Spring Apps-instans.
Öppna fönstret Loggsökning genom att välja Loggar.
I sökrutan Tabeller använder du någon av följande frågor:
Om du vill visa loggar anger du en fråga, till exempel följande exempel:
AppPlatformLogsforSpring | limit 50
Om du vill visa mått anger du en fråga, till exempel följande exempel:
AzureMetrics | limit 50
Om du vill visa sökresultatet väljer du Kör.
Använda Log Analytics
Välj Log Analytics i den vänstra rutan i Azure Portal.
Välj den Log Analytics-arbetsyta som du valde när du lade till diagnostikinställningarna.
Öppna fönstret Loggsökning genom att välja Loggar.
I sökrutan Tabeller använder du någon av följande frågor:
Om du vill visa loggar anger du en fråga, till exempel följande exempel:
AppPlatformLogsforSpring | limit 50
Om du vill visa mått anger du en fråga, till exempel följande exempel:
AzureMetrics | limit 50
Om du vill visa sökresultatet väljer du Kör.
Du kan söka i loggarna för det specifika programmet eller instansen genom att ange ett filtervillkor, som du ser i följande exempel:
AppPlatformLogsforSpring | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName" | limit 50
Kommentar
==
är skiftlägeskänsligt, men=~
inte.
Mer information om det frågespråk som används i Log Analytics finns i Azure Monitor-loggfrågor. Om du vill köra frågor mot alla dina Log Analytics-loggar från en centraliserad klient kan du läsa Azure Data Explorer.
Använda ditt lagringskonto
- I Azure Portal hittar du Lagringskonton i den vänstra navigeringspanelen eller sökrutan.
- Välj det lagringskonto som du valde när du lade till diagnostikinställningarna.
- Om du vill öppna fönstret Blobcontainer väljer du Blobar.
- Om du vill granska programloggar söker du efter en container med namnet insights-logs-applicationconsole.
- Om du vill granska programmått söker du efter en container med namnet insights-metrics-pt1m.
Mer information om hur du skickar diagnostikinformation till ett lagringskonto finns i Lagra och visa diagnostikdata i Azure Storage.
Använda din händelsehubb
I Azure Portal hittar du Event Hubs i den vänstra navigeringspanelen eller sökrutan.
Sök efter och välj den händelsehubb som du valde när du lade till diagnostikinställningarna.
Om du vill öppna fönstret Händelsehubblista väljer du Händelsehubbar.
Om du vill granska programloggar söker du efter en händelsehubb med namnet insights-logs-applicationconsole.
Om du vill granska programmått söker du efter en händelsehubb med namnet insights-metrics-pt1m.
Mer information om hur du skickar diagnostikinformation till en händelsehubb finns i Strömma Azure Diagnostics-data i den heta sökvägen med hjälp av Event Hubs.
Analysera loggarna
Azure Log Analytics körs med en Kusto-motor så att du kan köra frågor mot loggarna för analys. En snabb introduktion till att köra frågor mot loggar med kusto finns i Log Analytics-självstudien.
Programloggar innehåller viktig information och utförliga loggar om programmets hälsa, prestanda med mera. I nästa avsnitt finns några enkla frågor som hjälper dig att förstå programmets aktuella och tidigare tillstånd.
Visa programloggar från Azure Spring Apps
Om du vill granska en lista över programloggar från Azure Spring Apps, sorterade efter tid med de senaste loggarna som visas först, kör du följande fråga:
AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| sort by TimeGenerated desc
Visa loggposter som innehåller fel eller undantag
Om du vill granska osorterade loggposter som nämner ett fel eller undantag kör du följande fråga:
AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| where Log contains "error" or Log contains "exception"
Använd den här frågan för att hitta fel eller ändra frågetermerna för att hitta specifika felkoder eller undantag.
Visa antalet fel och undantag som rapporterats av ditt program under den senaste timmen
Kör följande fråga för att skapa ett cirkeldiagram som visar antalet fel och undantag som loggats av ditt program under den senaste timmen:
AppPlatformLogsforSpring
| where TimeGenerated > ago(1h)
| where Log contains "error" or Log contains "exception"
| summarize count_per_app = count() by AppName
| sort by count_per_app desc
| render piechart
Visa ingressloggposter som innehåller en specifik värd
Om du vill granska loggposter som genererats av en specifik värd kör du följande fråga:
AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and Host == "ingress-asc.test.azuremicroservices.io"
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated
Använd den här frågan för att hitta svar Status
, RequestTime
och andra egenskaper för den här specifika värdens ingressloggar.
Visa ingressloggposter för ett specifikt requestId
Om du vill granska loggposter för ett visst requestId
värde <request_ID> kör du följande fråga:
AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and ReqId == "<request_ID>"
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated
Visa kompileringsloggposter för en specifik app
Om du vill granska loggposter för en specifik app under byggprocessen kör du följande fråga:
AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>"
| sort by TimeGenerated
Visa kompileringsloggposter för en specifik app i en specifik byggfas
Kör följande fråga om du vill granska loggposter för en specifik app i en specifik byggfas. <app-name>
Ersätt platshållaren med programnamnet. <build-stage>
Ersätt platshållaren med något av följande värden, som representerar stegen i byggprocessen: prepare
, , restore
detect
, analyze
, build
, export
eller completion
.
AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>" and ContainerName == "<build-stage>"
| sort by TimeGenerated
Visa VMware Spring Cloud Gateway-loggar i Enterprise-planen
Om du vill granska loggposter för VMware Spring Cloud Gateway-loggar i Enterprise-planen kör du följande fråga:
AppPlatformSystemLogs
| where LogType == "SpringCloudGateway"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId
| limit 100
En annan komponent, med namnet Spring Cloud Gateway Operator, styr livscykeln för Spring Cloud Gateway och vägar. Om du stöter på problem med att vägen inte börjar gälla kontrollerar du loggarna för den här komponenten. Om du vill granska loggposter för VMware Spring Cloud Gateway-operatören i Enterprise-planen kör du följande fråga:
AppPlatformSystemLogs
| where LogType == "SpringCloudGatewayOperator"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId
| limit 100
Visa programkonfigurationstjänsten för Tanzu-loggar i Enterprise-planen
Om du vill granska loggposter för Application Configuration Service för Tanzu-loggar i Enterprise-planen kör du följande fråga:
AppPlatformSystemLogs
| where LogType == "ApplicationConfigurationService"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId
| limit 100
Visa Tanzu Service Registry-loggar i Enterprise-planen
Om du vill granska loggposter för Tanzu Service Registry-loggar i Enterprise-planen kör du följande fråga:
AppPlatformSystemLogs
| where LogType == "ServiceRegistry"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId
| limit 100
Visa API-portalen för VMware Tanzu-loggar i Enterprise-planen
Om du vill granska loggposter för API-portalen för VMware Tanzu-loggar i Enterprise-planen kör du följande fråga:
AppPlatformSystemLogs
| where LogType == "ApiPortal"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId
| limit 100
Läs mer om att köra frågor mot programloggar
Azure Monitor har omfattande stöd för att köra frågor mot programloggar med hjälp av Log Analytics. Mer information om den här tjänsten finns i Kom igång med loggfrågor i Azure Monitor. Mer information om hur du skapar frågor för att analysera dina programloggar finns i Översikt över loggfrågor i Azure Monitor.
Praktiska startpunkter i Azure Portal
Använd följande steg för att navigera till Log Analytics-fönstret med fördefinierade frågor:
Gå till sidan Översikt för din Azure Spring Apps-tjänstinstans och välj sedan Appar i navigeringsfönstret.
Leta upp målappen och välj sedan snabbmenyn.
I snabbmenyn i popup-fönstret väljer du Visa loggar.
Den här åtgärden navigerar dig till Log Analytics-fönstret med fördefinierade frågor.
Det finns andra startpunkter för att visa loggar. Du hittar även knappen Visa loggar för hanterade komponenter som Build Service och Service Registry.
Vanliga frågor och svar
Hur gör jag för att konvertera Java-stackspårningar med flera rader till en enda rad?
Det finns en lösning för att konvertera dina stackspårningar med flera rader till en enda rad. Du kan ändra Java-loggutdata för att formatera om stackspårningsmeddelanden och ersätta nya radtecken med en token. Om du använder Java Logback-biblioteket kan du formatera om stackspårningsmeddelanden genom att lägga till %replace(%ex){'[\r\n]+', '\\n'}%nopex
följande:
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
level: %level, message: "%logger{36}: %msg", exceptions: "%replace(%ex){'[\r\n]+', '\\n'}%nopex"%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
Du kan sedan ersätta token med nya tecken i Log Analytics, som du ser i följande exempel:
AppPlatformLogsforSpring
| extend Log = array_strcat(split(Log, '\\n'), '\n')
Du kanske kan använda samma strategi för andra Java-loggbibliotek.