Strömma Azure Spring Apps-programkonsolloggar i realtid

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 beskriver hur du aktiverar loggströmning i Azure CLI för att få loggar för programkonsolen i realtid för felsökning. Du kan också använda diagnostikinställningar för att analysera diagnostikdata i Azure Spring Apps. Mer information finns i Analysera loggar och mått med diagnostikinställningar.

Information om strömmande loggar för hanterade komponenter i Azure Spring Apps finns i Strömma hanterade komponentloggar i Azure Spring Apps i realtid.

Förutsättningar

Använda Azure CLI för att skapa svansloggar

Det här avsnittet innehåller exempel på hur du använder Azure CLI för att skapa tail logs. Om du vill undvika att upprepade gånger ange namnet på resursgruppen och tjänstinstansen använder du följande kommandon för att ange standardnamnet för resursgruppen och klustret:

az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>

Resursgruppen och tjänstnamnet utelämnas i följande exempel.

Visa tail-loggen för en app med en enda instans

Om en app med namnet auth-service bara har en instans kan du visa loggen för appinstansen med följande kommando:

az spring app logs --name <application-name>

Kommandot returnerar loggar som liknar följande exempel, där auth-service är programnamnet.

...
2020-01-15 01:54:40.481  INFO [auth-service,,,] 1 --- [main] o.apache.catalina.core.StandardService  : Starting service [Tomcat]
2020-01-15 01:54:40.482  INFO [auth-service,,,] 1 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.22]
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/uaa]  : Initializing Spring embedded WebApplicationContext
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.s.web.context.ContextLoader  : Root WebApplicationContext: initialization completed in 7203 ms

...

Visa tail-loggen för en app med flera instanser

Om det finns flera instanser för appen med namnet auth-servicekan du visa instansloggen -i/--instance med hjälp av alternativet .

Kör först följande kommando för att hämta appinstansnamnen:

az spring app show --name auth-service --query properties.activeDeployment.properties.instances --output table

Kommandot ger resultat som liknar följande utdata:

Name                                         Status    DiscoveryStatus
-------------------------------------------  --------  -----------------
auth-service-default-12-75cc4577fc-pw7hb  Running   UP
auth-service-default-12-75cc4577fc-8nt4m  Running   UP
auth-service-default-12-75cc4577fc-n25mh  Running   UP

Sedan kan du strömma loggar för en appinstans med hjälp -i/--instance av alternativet enligt följande:

az spring app logs --name auth-service --instance auth-service-default-12-75cc4577fc-pw7hb

Du kan också få information om appinstanser från Azure-portalen. När du har valt Appar i det vänstra navigeringsfönstret i Azure Spring Apps-tjänsten väljer du AppInstanser.

Strömma kontinuerligt nya loggar

Som standard az spring app logs skriver endast ut befintliga loggar som strömmas till appkonsolen och avslutas sedan. Om du vill strömma nya loggar lägger du till -f/--follow argumentet enligt följande exempel:

az spring app logs --name auth-service --follow

När du använder --follow argumentet för att skugga snabbloggar skickar Azure Spring Apps loggströmningstjänst pulsslagsloggar till klienten varje minut såvida inte programmet skriver loggar hela tiden. Pulsslagsloggmeddelanden använder följande format: 2020-01-15 04:27:13.473: No log from server.

Använd följande kommando för att kontrollera alla loggningsalternativ som stöds:

az spring app logs --help

Formatera JSON-strukturerade loggar

Kommentar

Formatering av JSON-strukturerade loggar kräver spring extension version 2.4.0 eller senare.

Strukturerade programloggar visas i JSON-format, vilket kan vara svårt att läsa. Du kan använda --format-json argumentet för att formatera loggar i JSON-format till ett mer läsbart format. Mer information finns i Strukturerad programlogg för Azure Spring Apps.

I följande exempel visas hur du --format-json använder argumentet:

# Raw JSON log
$ az spring app logs --name auth-service
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Disable delta property : false"}
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Single vip registry refresh property : null"}

# Formatted JSON log
$ az spring app logs --name auth-service --format-json
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Disable delta property : false
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Single vip registry refresh property : null

Argumentet --format-json accepterar också ett valfritt anpassat format med formatsträngssyntax. Mer information finns i Formatera strängsyntax.

I följande exempel visas hur du använder formatsträngssyntax:

# Custom format
$ az spring app logs --name auth-service --format-json="{message}{n}"
Disable delta property : false
Single vip registry refresh property : null

Standardformatet som används är:

{timestamp} {level:>5} [{thread:>15.15}] {logger{39}:<40.40}: {message}{n}{stackTrace}

Strömma en Azure Spring Apps-applogg i en instans av virtuell nätverksinmatning

För en Azure Spring Apps-instans som distribueras i ett anpassat virtuellt nätverk kan du som standard komma åt loggströmning från ett privat nätverk. Mer information finns i Distribuera Azure Spring Apps i ett virtuellt nätverk

Med Azure Spring Apps kan du också komma åt apploggar i realtid från ett offentligt nätverk med hjälp av Azure-portalen eller Azure CLI.

Kommentar

När du aktiverar loggströmningsslutpunkten i det offentliga nätverket läggs en offentlig inkommande IP-adress till i det virtuella nätverket. Var försiktig om detta är ett problem för dig.

Använd följande steg för att aktivera en slutpunkt för loggströmning i det offentliga nätverket:

  1. Välj den Azure Spring Apps-tjänstinstans som distribuerats i ditt virtuella nätverk och välj sedan Nätverk på navigeringsmenyn.

  2. Välj fliken Vnet-inmatning .

  3. Växla status för Dataplane-resurser i det offentliga nätverket för att aktivera en logguppspelningsslutpunkt i det offentliga nätverket. Den här processen tar några minuter.

    Screenshot of the Azure portal that shows the Networking page with the Vnet injection tab selected and the Troubleshooting section highlighted.

När du har aktiverat loggströmmens offentliga slutpunkt kan du komma åt apploggen från ett offentligt nätverk precis som du skulle ha åtkomst till en normal instans.

Skydda trafik till den offentliga slutpunkten för loggströmning

Loggströmning använder samma nyckel som testslutpunkten som beskrivs i Konfigurera en mellanlagringsmiljö i Azure Spring Apps för att autentisera anslutningarna till dina distributioner. Därför kan endast användare som har läsåtkomst till testnycklarna komma åt loggströmning.

Skydda slutpunkten genom att filtrera nätverkstrafik till din tjänst med en nätverkssäkerhetsgrupp för att säkerställa säkerheten för dina program när du exponerar en offentlig slutpunkt för dem. Mer information finns i Självstudie: Filtrera nätverkstrafik med en nätverkssäkerhetsgrupp med hjälp av Azure-portalen. En nätverkssäkerhetsgrupp innehåller säkerhetsregler som tillåter eller nekar inkommande nätverkstrafik till, eller utgående nätverkstrafik från, flera typer av Azure-resurser. För varje regel kan du ange källa och mål, port och protokoll.

Kommentar

Om du inte kan komma åt apploggar i den virtuella nätverksinmatningsinstansen från Internet när du har aktiverat en offentlig loggströmslutpunkt kontrollerar du nätverkssäkerhetsgruppen för att se om du tillät sådan inkommande trafik.

I följande tabell visas ett exempel på en grundläggande regel som vi rekommenderar. Du kan använda kommandon som nslookup med slutpunkten <service-name>.private.azuremicroservices.io för att hämta mål-IP-adressen för en tjänst.

Prioritet Namn Port Protokoll Källa Mål Action
100 Regelnamn 80 TCP Internet Tjänstens IP-adress Tillåt
110 Regelnamn 443 TCP Internet Tjänstens IP-adress Tillåt

Nästa steg