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
- Azure CLI met de Azure Spring Apps-extensie, versie 1.0.0 of hoger. U kunt de extensie installeren met behulp van de volgende opdracht:
az extension add --name spring
- Een exemplaar van Azure Spring Apps met een actieve toepassing. Zie quickstart: Uw eerste toepassing implementeren in Azure Spring Apps voor meer informatie.
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:
Selecteer het Azure Spring Apps-service-exemplaar dat is geïmplementeerd in uw virtuele netwerk en selecteer vervolgens Netwerken in het navigatiemenu.
Selecteer het tabblad Vnet-injectie .
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.
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 |