Przesyłanie strumieniowe dzienników konsoli aplikacji Usługi Azure Spring Apps w czasie rzeczywistym

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

Ten artykuł dotyczy: ✔️ Java ✔️ C#

Ten artykuł dotyczy: ✔️ Podstawowa/Standardowa ✔️ Enterprise

W tym artykule opisano sposób włączania przesyłania strumieniowego dzienników w interfejsie wiersza polecenia platformy Azure w celu uzyskania dzienników konsoli aplikacji w czasie rzeczywistym na potrzeby rozwiązywania problemów. Możesz również użyć ustawień diagnostycznych do analizowania danych diagnostycznych w usłudze Azure Spring Apps. Aby uzyskać więcej informacji, zobacz Analizowanie dzienników i metryk przy użyciu ustawień diagnostycznych.

Aby uzyskać dzienniki przesyłania strumieniowego składników zarządzanych w usłudze Azure Spring Apps, zobacz Stream Azure Spring Apps managed component logs in real time (Dzienniki składników zarządzanych w usłudze Azure Spring Apps w czasie rzeczywistym).

Wymagania wstępne

Tworzenie dzienników końcowych przy użyciu interfejsu wiersza polecenia platformy Azure

Ta sekcja zawiera przykłady użycia interfejsu wiersza polecenia platformy Azure do tworzenia dzienników końcowych. Aby uniknąć wielokrotnego określania nazwy grupy zasobów i wystąpienia usługi, użyj następujących poleceń, aby ustawić domyślną nazwę grupy zasobów i nazwę klastra:

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

W poniższych przykładach pominięto grupę zasobów i nazwę usługi.

Wyświetlanie dziennika tail dla aplikacji z pojedynczym wystąpieniem

Jeśli aplikacja o nazwie auth-service ma tylko jedno wystąpienie, możesz wyświetlić dziennik wystąpienia aplikacji za pomocą następującego polecenia:

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

Polecenie zwraca dzienniki podobne do poniższych przykładów, gdzie auth-service jest nazwą aplikacji.

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

...

Wyświetlanie dziennika końcowego aplikacji z wieloma wystąpieniami

Jeśli istnieje wiele wystąpień aplikacji o nazwie auth-service, możesz wyświetlić dziennik wystąpień przy użyciu -i/--instance opcji .

Najpierw uruchom następujące polecenie, aby uzyskać nazwy wystąpień aplikacji:

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

Polecenie generuje wyniki podobne do następujących danych wyjściowych:

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

Następnie możesz przesyłać strumieniowo dzienniki wystąpienia aplikacji przy użyciu -i/--instance opcji w następujący sposób:

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

Możesz również uzyskać szczegółowe informacje o wystąpieniach aplikacji w witrynie Azure Portal. Po wybraniu pozycji Aplikacje w okienku nawigacji po lewej stronie usługi Azure Spring Apps wybierz pozycję Wystąpienia aplikacji.

Ciągłe przesyłanie strumieniowe nowych dzienników

Domyślnie az spring app logs drukuje tylko istniejące dzienniki przesyłane strumieniowo do konsoli aplikacji, a następnie kończy działanie. Jeśli chcesz przesyłać strumieniowo nowe dzienniki, dodaj -f/--follow argument, jak pokazano w poniższym przykładzie:

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

Gdy używasz argumentu --follow do tworzenia natychmiastowych dzienników, usługa przesyłania strumieniowego dzienników usługi Azure Spring Apps wysyła dzienniki pulsu do klienta co minutę, chyba że aplikacja stale zapisuje dzienniki. Komunikaty dziennika pulsu używają następującego formatu: 2020-01-15 04:27:13.473: No log from server.

Użyj następującego polecenia, aby sprawdzić wszystkie obsługiwane opcje rejestrowania:

az spring app logs --help

Formatowanie dzienników strukturalnych JSON

Uwaga

Formatowanie dzienników strukturalnych JSON wymaga rozszerzenia spring w wersji 2.4.0 lub nowszej.

Dzienniki aplikacji ze strukturą są wyświetlane w formacie JSON, co może być trudne do odczytania. Argumentu można użyć --format-json do formatowania dzienników w formacie JSON w formacie bardziej czytelnym. Aby uzyskać więcej informacji, zobacz Ustrukturyzowany dziennik aplikacji dla usługi Azure Spring Apps.

W poniższym przykładzie pokazano, jak użyć argumentu --format-json :

# 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

Argument --format-json akceptuje również opcjonalny dostosowany format przy użyciu składni ciągu formatu. Aby uzyskać więcej informacji, zobacz Format String Syntax (Składnia ciągu formatu).

W poniższym przykładzie pokazano, jak używać składni ciągu formatu:

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

Używany format domyślny to:

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

Przesyłanie strumieniowe dziennika aplikacji Usługi Azure Spring Apps w wystąpieniu iniekcji sieci wirtualnej

W przypadku wystąpienia usługi Azure Spring Apps wdrożonego w niestandardowej sieci wirtualnej można domyślnie uzyskiwać dostęp do przesyłania strumieniowego dzienników z sieci prywatnej. Aby uzyskać więcej informacji, zobacz Wdrażanie usługi Azure Spring Apps w sieci wirtualnej

Usługa Azure Spring Apps umożliwia również dostęp do dzienników aplikacji w czasie rzeczywistym z sieci publicznej przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Uwaga

Włączenie punktu końcowego przesyłania strumieniowego dziennika w sieci publicznej powoduje dodanie publicznego przychodzącego adresu IP do sieci wirtualnej. Pamiętaj, aby zachować ostrożność, jeśli jest to dla Ciebie problemem.

Wykonaj następujące kroki, aby włączyć punkt końcowy przesyłania strumieniowego dziennika w sieci publicznej:

  1. Wybierz wystąpienie usługi Azure Spring Apps wdrożone w sieci wirtualnej, a następnie wybierz pozycję Sieć w menu nawigacji.

  2. Wybierz kartę Wstrzykiwanie sieci wirtualnej.

  3. Przełącz stan zasobów płaszczyzny danych w sieci publicznej, aby umożliwić włączenie punktu końcowego przesyłania strumieniowego dziennika w sieci publicznej. Ten proces trwa kilka minut.

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

Po włączeniu publicznego punktu końcowego strumienia dziennika możesz uzyskać dostęp do dziennika aplikacji z sieci publicznej, tak jak w przypadku normalnego wystąpienia.

Zabezpieczanie ruchu do publicznego punktu końcowego przesyłania strumieniowego dziennika

Przesyłanie strumieniowe dzienników używa tego samego klucza co punkt końcowy testu opisany w temacie Konfigurowanie środowiska przejściowego w usłudze Azure Spring Apps w celu uwierzytelniania połączeń z wdrożeniami. W związku z tym tylko użytkownicy, którzy mają dostęp do odczytu do kluczy testowych, mogą uzyskiwać dostęp do przesyłania strumieniowego dzienników.

Aby zapewnić bezpieczeństwo aplikacji podczas uwidaczniania publicznego punktu końcowego dla nich, należy zabezpieczyć punkt końcowy, filtrując ruch sieciowy do usługi za pomocą sieciowej grupy zabezpieczeń. Aby uzyskać więcej informacji, zobacz Samouczek: filtrowanie ruchu sieciowego za pomocą sieciowej grupy zabezpieczeń przy użyciu witryny Azure Portal. Sieciowa grupa zabezpieczeń zawiera reguły zabezpieczeń, które zezwalają na lub blokują przychodzący ruch sieciowy lub wychodzący ruch sieciowy dla kilku typów zasobów platformy Azure. Dla każdej reguły można określić źródło i obiekt docelowy, port i protokół.

Uwaga

Jeśli nie możesz uzyskać dostępu do dzienników aplikacji w wystąpieniu iniekcji sieci wirtualnej z Internetu po włączeniu publicznego punktu końcowego strumienia dziennika, sprawdź sieciową grupę zabezpieczeń, aby sprawdzić, czy dozwolony jest taki ruch przychodzący.

W poniższej tabeli przedstawiono przykład podstawowej reguły, którą zalecamy. Aby uzyskać docelowy adres IP usługi, możesz użyć poleceń, takich jak nslookup w przypadku punktu końcowego <service-name>.private.azuremicroservices.io .

Priorytet Nazwa Port Protokół Element źródłowy Element docelowy Akcja
100 Nazwa reguły 80 TCP Internet Adres IP usługi Zezwalaj
110 Nazwa reguły 443 TCP Internet Adres IP usługi Zezwalaj

Następne kroki