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. Mer information om strömmande loggar finns i Strömma Azure Spring Apps-jobbloggar i realtid och Strömma hanterade Azure Spring Apps-komponentloggar i realtid.
Förutsättningar
- Azure CLI med Azure Spring Apps-tillägget version 1.0.0 eller senare. Du kan installera tillägget med hjälp av följande kommando:
az extension add --name spring
- En instans av Azure Spring Apps med ett program som körs. Mer information finns i Snabbstart: Distribuera ditt första program till Azure Spring Apps.
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-service
kan 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:
Välj den Azure Spring Apps-tjänstinstans som distribuerats i ditt virtuella nätverk och välj sedan Nätverk på navigeringsmenyn.
Välj fliken Vnet-inmatning .
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.
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 |