Dela via


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, sigoch signature följt av : eller =. Dessa mönster visas vanligtvis i URL-parametrar och nyttolastdumpar. Till exempel https://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 blir https://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

  1. I Azure Portal går du till din Azure Spring Apps-instans.

  2. Välj alternativet Diagnostikinställningar och välj sedan Lägg till diagnostikinställning.

  3. 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
  4. 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.

  5. 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

  1. I Azure Portal går du till din Azure Spring Apps-instans.

  2. Öppna fönstret Loggsökning genom att välja Loggar.

  3. 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
      
  4. Om du vill visa sökresultatet väljer du Kör.

Använda Log Analytics

  1. Välj Log Analytics i den vänstra rutan i Azure Portal.

  2. Välj den Log Analytics-arbetsyta som du valde när du lade till diagnostikinställningarna.

  3. Öppna fönstret Loggsökning genom att välja Loggar.

  4. 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
    
  5. Om du vill visa sökresultatet väljer du Kör.

  6. 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

  1. I Azure Portal hittar du Lagringskonton i den vänstra navigeringspanelen eller sökrutan.
  2. Välj det lagringskonto som du valde när du lade till diagnostikinställningarna.
  3. Om du vill öppna fönstret Blobcontainer väljer du Blobar.
  4. Om du vill granska programloggar söker du efter en container med namnet insights-logs-applicationconsole.
  5. 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

  1. I Azure Portal hittar du Event Hubs i den vänstra navigeringspanelen eller sökrutan.

  2. Sök efter och välj den händelsehubb som du valde när du lade till diagnostikinställningarna.

  3. Om du vill öppna fönstret Händelsehubblista väljer du Händelsehubbar.

  4. Om du vill granska programloggar söker du efter en händelsehubb med namnet insights-logs-applicationconsole.

  5. 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, RequestTimeoch 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, , restoredetect, analyze, build, exporteller 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:

  1. Gå till sidan Översikt för din Azure Spring Apps-tjänstinstans och välj sedan Appar i navigeringsfönstret.

  2. Leta upp målappen och välj sedan snabbmenyn.

  3. I snabbmenyn i popup-fönstret väljer du Visa loggar.

    Skärmbild av Azure Portal som visar sidan Appar med snabbmenyalternativet Visa loggar markerat.

    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.

Nästa steg