Analysera loggar och mått med diagnostikinställningar

Kommentar

Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.

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.

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-portalen 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 tre 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änd bladet Loggar

  1. I Azure-portalen 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

    • Om du vill visa loggar anger du en enkel fråga som:
    AppPlatformLogsforSpring
    | limit 50
    
    • Om du vill visa mått anger du en enkel fråga som:
    AzureMetrics
    | limit 50
    
  4. Om du vill visa sökresultatet väljer du Kör.

Använda Log Analytics

  1. I den vänstra rutan i Azure-portalen väljer du Log Analytics.

  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

    • om du vill visa loggar anger du en enkel fråga som:
    AppPlatformLogsforSpring
    | limit 50
    
    • om du vill visa mått anger du en enkel fråga som:
    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:

    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-portalen 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-portalen 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 genereras av en viss 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.

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 enligt nedan:

AppPlatformLogsforSpring
| extend Log = array_strcat(split(Log, '\\n'), '\n')

Du kanske kan använda samma strategi för andra Java-loggbibliotek.

Nästa steg