Azure Spring Apps-toepassingsconsolelogboeken in realtime streamen

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Java ✔️ C#

Dit artikel is van toepassing op: ✔️ Basic/Standard ✔️ Enterprise

In dit artikel wordt beschreven hoe u logboekstreaming in de Azure CLI inschakelt om realtime toepassingsconsolelogboeken op te halen voor probleemoplossing. U kunt ook diagnostische instellingen gebruiken om diagnostische gegevens te analyseren in Azure Spring Apps. Zie Logboeken en metrische gegevens analyseren met diagnostische instellingen voor meer informatie.

Zie Stream Azure Spring Apps Managed Component Logs in realtime voor streaminglogboeken van beheerde onderdelen in Azure Spring Apps.

Vereisten

De Azure CLI gebruiken om tail-logboeken te produceren

In deze sectie vindt u voorbeelden van het gebruik van de Azure CLI om tail-logboeken te produceren. Gebruik de volgende opdrachten om de standaardnaam van de resourcegroep en het cluster in te stellen om herhaaldelijk de naam van de resourcegroep en de naam van het service-exemplaar op te geven:

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

De resourcegroep en servicenaam worden weggelaten in de volgende voorbeelden.

Het tail-logboek voor een app weergeven met één exemplaar

Als een app met de naam auth-service slechts één exemplaar heeft, kunt u het logboek van het app-exemplaar weergeven met de volgende opdracht:

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

De opdracht retourneert logboeken die vergelijkbaar zijn met de volgende voorbeelden, waarbij auth-service de naam van de toepassing is.

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

...

Het tail-logboek voor een app met meerdere exemplaren weergeven

Als er meerdere exemplaren bestaan voor de app met de naam auth-service, kunt u het exemplaarlogboek weergeven met behulp van de -i/--instance optie.

Voer eerst de volgende opdracht uit om de namen van de app-exemplaren op te halen:

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

De opdracht produceert resultaten die vergelijkbaar zijn met de volgende uitvoer:

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

Vervolgens kunt u logboeken van een app-exemplaar streamen met behulp van de -i/--instance optie, als volgt:

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

U kunt ook details van app-exemplaren ophalen vanuit Azure Portal. Nadat u Apps hebt geselecteerd in het linkernavigatiedeelvenster van uw Azure Spring Apps-service, selecteert u App-exemplaren.

Continu nieuwe logboeken streamen

az spring app logs Standaard worden alleen bestaande logboeken afgedrukt die naar de app-console worden gestreamd en vervolgens afgesloten. Als u nieuwe logboeken wilt streamen, voegt u het -f/--follow argument toe, zoals wordt weergegeven in het volgende voorbeeld:

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

Wanneer u het --follow argument gebruikt om direct logboeken achter te laten, verzendt de Azure Spring Apps-logboekstreamingservice elke minuut heartbeat-logboeken naar de client, tenzij uw toepassing voortdurend logboeken schrijft. Heartbeat-logboekberichten gebruiken de volgende indeling: 2020-01-15 04:27:13.473: No log from server.

Gebruik de volgende opdracht om alle opties voor logboekregistratie te controleren die worden ondersteund:

az spring app logs --help

Gestructureerde JSON-logboeken opmaken

Notitie

Voor het opmaken van gestructureerde JSON-logboeken is springextensie versie 2.4.0 of hoger vereist.

Gestructureerde toepassingslogboeken worden weergegeven in JSON-indeling, wat moeilijk te lezen kan zijn. U kunt het --format-json argument gebruiken om logboeken in JSON-indeling op te maken in een beter leesbare indeling. Zie het gestructureerde toepassingslogboek voor Azure Spring Apps voor meer informatie.

In het volgende voorbeeld ziet u hoe u het --format-json argument gebruikt:

# 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

Het --format-json argument accepteert ook een optionele aangepaste indeling met de syntaxis van de notatietekenreeks. Zie Tekenreekssyntaxis opmaken voor meer informatie.

In het volgende voorbeeld ziet u hoe u de syntaxis van de notatietekenreeks gebruikt:

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

De standaardindeling die wordt gebruikt, is:

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

Een Azure Spring Apps-app-logboek streamen in een exemplaar van een virtuele netwerkinjectie

Voor een Azure Spring Apps-exemplaar dat is geïmplementeerd in een aangepast virtueel netwerk, hebt u standaard toegang tot logboekstreaming vanuit een particulier netwerk. Zie Azure Spring Apps implementeren in een virtueel netwerk voor meer informatie

Met Azure Spring Apps hebt u ook toegang tot realtime-app-logboeken vanuit een openbaar netwerk met behulp van Azure Portal of de Azure CLI.

Notitie

Als u het eindpunt voor logboekstreaming op het openbare netwerk inschakelt, wordt een openbaar binnenkomend IP-adres aan uw virtuele netwerk toegevoegd. Wees voorzichtig als dit een probleem voor u is.

Gebruik de volgende stappen om een eindpunt voor logboekstreaming in te schakelen op het openbare netwerk:

  1. Selecteer het Azure Spring Apps-service-exemplaar dat is geïmplementeerd in uw virtuele netwerk en selecteer vervolgens Netwerken in het navigatiemenu.

  2. Selecteer het tabblad Vnet-injectie .

  3. Schakel de status van Dataplane-resources in het openbare netwerk in om een streaming-eindpunt voor logboeken in te schakelen op het openbare netwerk. Dit duurt enkele minuten.

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

Nadat u het openbare eindpunt van de logboekstream hebt ingeschakeld, hebt u toegang tot het app-logboek vanuit een openbaar netwerk, net zoals u een normaal exemplaar zou openen.

Verkeer naar het openbare eindpunt voor logboekstreaming beveiligen

Logboekstreaming maakt gebruik van dezelfde sleutel als het testeindpunt dat wordt beschreven in Een faseringsomgeving instellen in Azure Spring Apps om de verbindingen met uw implementaties te verifiëren. Hierdoor hebben alleen gebruikers die leestoegang tot de testsleutels hebben toegang tot logboekstreaming.

Beveilig het eindpunt door netwerkverkeer naar uw service te filteren met een netwerkbeveiligingsgroep om de beveiliging van uw toepassingen te waarborgen wanneer u een openbaar eindpunt voor hen beschikbaar maakt. Zie Zelfstudie: Netwerkverkeer filteren met een netwerkbeveiligingsgroep met behulp van Azure Portal voor meer informatie. Een netwerkbeveiligingsgroep bevat beveiligingsregels waarmee binnenkomend netwerkverkeer naar, of uitgaand netwerkverkeer van, diverse typen Azure-resources kan worden toegestaan of geweigerd. Voor elke regel kunt u de bron en het doel, de poort en het protocol opgeven.

Notitie

Als u geen toegang hebt tot app-logboeken in het exemplaar van het virtuele netwerkinjectie vanaf internet nadat u een openbaar eindpunt voor de logboekstream hebt ingeschakeld, controleert u uw netwerkbeveiligingsgroep om te zien of u dergelijk binnenkomend verkeer hebt toegestaan.

In de volgende tabel ziet u een voorbeeld van een basisregel die we aanbevelen. U kunt opdrachten zoals nslookup met het eindpunt <service-name>.private.azuremicroservices.io gebruiken om het doel-IP-adres van een service op te halen.

Prioriteit Name Poort Protocol Bron Doel Bewerking
100 Naam van de regel 80 TCP Internet IP-adres van service Toestaan
110 Naam van de regel 443 TCP Internet IP-adres van service Toestaan

Volgende stappen