Aracılığıyla paylaş


Azure Spring Apps yönetilen bileşen günlüklerini gerçek zamanlı olarak akışla aktarma

Notlar

Temel, Standardve Enterprise planları 17 Mart 2025'te kullanımdan kaldırma dönemine girdi. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Standart tüketim ve ayrılmış planı 30 Eylül 2024'te emeklilik dönemine girdi ve Mart 2025 sonuna kadar tamamen kapatılacak. Daha fazla bilgi için bkz. Azure Spring Apps Standard tüketimi ve ayrılmış planı Azure Container Apps'e geçirme.

Bu makale şunlar için geçerlidir: ❎ Temel/Standart ✅ Kurumsal

Bu makalede, sorun giderme için yönetilen bileşenlerin gerçek zamanlı günlüklerini almak için Azure CLI'nin nasıl kullanılacağı açıklanmaktadır. Azure Spring Apps'te tanılama verilerini analiz etmek için tanılama ayarlarını da kullanabilirsiniz. Daha fazla bilgi için Tanılama ayarlarıyla günlükleri ve ölçümleri analiz etme bölümüne bakın. Akış günlüğü hakkında daha fazla bilgi için bkz. Azure Spring Apps uygulama konsolu günlüklerini gerçek zamanlı yayınlama ve Azure Spring Apps iş günlüklerini gerçek zamanlı yayınlama.

Önkoşullar

  • Azure CLI, Azure Spring Apps uzantısı sürüm 1.24.0 veya üzeri ile birlikte. Uzantıyı yüklemek için aşağıdaki komutu kullanabilirsiniz: az extension add --name spring.

Desteklenen yönetilen bileşenler

Aşağıdaki tabloda, şu anda desteklenen yönetilen bileşenler ve bunların alt bileşenleri listelenmektedir:

Yönetilen bileşen Alt bileşenler
Uygulama Yapılandırma Hizmeti application-configuration-service
flux-source-controller (ACS 2. Nesil sürümünde desteklenir)
Spring Cloud Gateway spring-cloud-gateway
spring-cloud-gateway-operator
Spring Cloud Config Server config-server

Tüm alt bileşenleri listelemek için aşağıdaki komutu kullanabilirsiniz:

az spring component list
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name>

Azure rolü atama

Yönetilen bileşenlerin günlük akışını sağlamak için size ilgili Azure rollerinin atanmış olması gerekir. Aşağıdaki tabloda gerekli roller ve bu rollere izin verilen işlemler listelenmiştir:

Yönetilen bileşen Gerekli rol Operasyonlar
Uygulama Yapılandırma Hizmeti Azure Spring Apps Uygulama Yapılandırma Hizmeti Günlük Okuyucu Rolü Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action
Spring Cloud Gateway Azure Spring Apps Spring Cloud Gateway Günlük Okuyucusu Rolü Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action
Spring Cloud Config Server Azure Spring Apps Spring Cloud Config Server Günlük Okuyucusu Rolü Microsoft.AppPlatform/Spring/configService/logstream/action

Azure portalını kullanarak bir Azure rolü atamak için aşağıdaki adımları kullanın:

  1. Azure portalını açın.

  2. Azure Spring Apps hizmet örneğinizi açın.

  3. Gezinti bölmesinde Erişim Denetimi (IAM) öğesini seçin.

  4. Erişim Denetimi (IAM) sayfasında Ekle'yi ve ardından Rol ataması ekle'yi seçin.

    Rol ataması ekle seçeneğinin vurgulandığı Erişim Denetimi (IAM) sayfasını gösteren Azure portalının ekran görüntüsü.

  5. Rol Atama Ekle sayfasında Ad listesinde hedef rolü arayıp seçin ve sonra İleri'yi seçin.

    Uygulama Yapılandırma Hizmeti Günlük Okuyucusu Rolü adının vurgulandığı Rol ataması ekle sayfasını gösteren Azure portalının ekran görüntüsü.

  6. Üyeler'i seçin ve ardından kullanıcı adınızı arayın ve seçin.

  7. Gözden geçir + ata'yı seçin.

Bir bileşendeki tüm örnekleri listeleme

Bir bileşendeki tüm örnekleri listelemek için aşağıdaki komutu kullanın:

az spring component instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --component <component-name>

Örneğin, ACS 2. Nesil sürümündeki tüm örneklerini listelemek için flux-source-controller aşağıdaki komutu kullanın:

az spring component instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --component flux-source-controller

Kuyruk günlüklerini görüntüleme

Bu bölümde kuyruk günlükleri oluşturmak için Azure CLI'yi kullanma örnekleri verilmiştir.

Belirli bir örneğin kuyruk günlüklerini görüntüleme

Belirli bir örneğin kuyruk günlüklerini görüntülemek için, sonraki bölümde gösterildiği gibi az spring component logs komutunu -i/--instance bağımsız değişkeniyle birlikte kullanın.

Application-configuration-service örneği için kuyruk günlüklerini görüntüleme

application-configuration-service için kuyruk günlüklerini görüntülemek üzere aşağıdaki komutu kullanın:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name application-configuration-service \
    --instance <instance-name>

ACS 2. Nesil için komut, aşağıdaki örneğe benzer günlükleri döndürür:

...
2023-12-18T07:09:54.020Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8090 (https)
2023-12-18T07:09:54.116Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting service [Tomcat]
2023-12-18T07:09:54.117Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting Servlet engine: [Apache Tomcat/10.1.12]
2023-12-18T07:09:54.522Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Initializing Spring embedded WebApplicationContext
2023-12-18T07:09:54.524Z  INFO  16715 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 14100 ms
2023-12-18T07:09:56.920Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8090 (https) with context path ''
2023-12-18T07:09:57.528Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2023-12-18T07:09:57.529Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting service [Tomcat]
2023-12-18T07:09:57.529Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Starting Servlet engine: [Apache Tomcat/10.1.12]
2023-12-18T07:09:57.629Z  INFO  16715 --- [main] org.apache.juli.logging.DirectJDKLog     : Initializing Spring embedded WebApplicationContext
2023-12-18T07:09:57.629Z  INFO  16715 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 603 ms
2023-12-18T07:09:57.824Z  INFO  16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
2023-12-18T07:09:58.127Z  INFO  16715 --- [main] o.springframework.boot.StartupInfoLogger : Started ReconcilerApplication in 21.005 seconds (process running for 22.875)
...

flux-source-controller örneği için kuyruk günlüklerini görüntüleme

flux-source-controller için kuyruk günlüklerini görüntülemek üzere aşağıdaki komutu kullanın:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name flux-source-controller \
    --instance <instance-name>

Komutu aşağıdaki örneğe benzer günlükleri döndürür:

...
{"level":"info","ts":"2023-12-18T07:07:54.615Z","logger":"controller-runtime.metrics","msg":"Metrics server is starting to listen","addr":":8080"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","logger":"setup","msg":"starting manager"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","msg":"Starting server","path":"/metrics","kind":"metrics","addr":"[::]:8080"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","msg":"Starting server","kind":"health probe","addr":"[::]:9440"}
{"level":"info","ts":"2023-12-18T07:07:54.817Z","logger":"runtime","msg":"attempting to acquire leader lease flux-system/source-controller-leader-election...\n"}
{"level":"info","ts":"2023-12-18T07:07:54.830Z","logger":"runtime","msg":"successfully acquired lease flux-system/source-controller-leader-election\n"}
...

Spring-cloud-gateway örneği için kuyruk günlüklerini görüntüleme

Kuyruk günlüklerini görüntülemek için spring-cloud-gateway için aşağıdaki komutu kullanın:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name spring-cloud-gateway \
    --instance <instance-name>

Komutu aşağıdaki örneğe benzer günlükleri döndürür:

...
2023-12-11T14:13:40.310Z  INFO 1 --- [           main] i.p.s.c.g.s.SsoDeactivatedConfiguration  : SSO is deactivated, setting up default security filters
2023-12-11T14:13:40.506Z  INFO 1 --- [           main] .h.HazelcastReactiveSessionConfiguration : Configuring Hazelcast as a session management storage
2023-12-11T14:13:51.008Z  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8443
2023-12-11T14:13:51.810Z  INFO 1 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 7 endpoint(s) beneath base path '/actuator'
2023-12-11T14:13:52.410Z  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8090
2023-12-11T14:13:52.907Z  INFO 1 --- [           main] i.p.s.c.g.r.h.HazelcastRateLimitsRemover : Removing Hazelcast map 'GLOBAL_RATE_LIMIT' with rate limit information
2023-12-11T14:13:52.912Z  INFO 1 --- [           main] i.p.s.cloud.gateway.GatewayApplication   : Started GatewayApplication in 36.084 seconds (process running for 38.651)
...

Spring-cloud-gateway-operator örneğinin son günlüklerini görüntüleme

spring-cloud-gateway-operator için kuyruk günlüklerini görüntülemek üzere aşağıdaki komutu kullanın:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name spring-cloud-gateway-operator \
    --instance <instance-name>

Komutu aşağıdaki örneğe benzer günlükleri döndürür:

...
2023-12-01T08:37:05.080Z  INFO 1 --- [           main] c.v.t.s.OperatorApplication              : Starting OperatorApplication v2.0.6 using Java 17.0.7 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2023-12-01T08:37:05.157Z  INFO 1 --- [           main] c.v.t.s.OperatorApplication              : No active profile set, falling back to 1 default profile: "default"
2023-12-01T08:37:14.379Z  INFO 1 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 1 endpoint(s) beneath base path '/actuator'
2023-12-01T08:37:15.274Z  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080
2023-12-01T08:37:15.366Z  INFO 1 --- [           main] c.v.t.s.OperatorApplication              : Started OperatorApplication in 11.489 seconds (process running for 12.467)
...

config-server örneği için kuyruk günlüklerini görüntüleme

Aşağıdaki komutu config-server için kuyruk günlüklerini görüntülemek amacıyla kullanın:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name config-server \
    --instance <instance-name>

Komutu aşağıdaki örneğe benzer günlükleri döndürür:

...
{"app":"config-server","ts":"2024-05-08T05:38:29.44Z","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","level":"INFO","class":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","method":"prepareWebApplicationContext","file":"ServletWebServerApplicationContext.java","line":291,"thread":"main","message":"Root WebApplicationContext: initialization completed in 3771 ms"}
{"app":"config-server","ts":"2024-05-08T05:38:31.058Z","logger":"com.microsoft.azure.spring.service.CloudConfigServerApplication","level":"INFO","class":"org.springframework.boot.StartupInfoLogger","method":"logStarted","file":"StartupInfoLogger.java","line":57,"thread":"main","message":"Started CloudConfigServerApplication in 6.888 seconds (process running for 8.986)"}
...

Tüm örneklerin kuyruk günlüklerini tek bir komutla görüntüleme

Tüm örneklerin kuyruk günlüklerini görüntülemek için, aşağıdaki komutta gösterildiği gibi `--all-instances` parametresini kullanın. Örnek adı, her günlük satırının ön ekidir. Birden çok örnek olduğunda günlükler her örnek için toplu olarak yazdırılır, bu nedenle bir örneğin günlükleri başka bir örneğin günlükleriyle kesişemez.

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --all-instances

Yeni günlükleri sürekli akışla aktarma

Varsayılan olarak, az spring component logs yalnızca konsola akışı yapılan mevcut günlükleri yazdırır ve ardından sonlandırır. Yeni günlükleri akışa almak istiyorsanız -f/--follow bağımsız değişkenini ekleyin.

Anlık günlükleri takip etme seçeneği -f/--follow kullanıldığında, bileşen sürekli olarak günlük yazmadığı sürece, Azure Spring Apps günlük akışı hizmeti dakikada bir istemciye sinyal günlükleri gönderir. Sinyal günlüğü iletileri şu biçimi kullanır: 2023-12-18 09:12:17.745: No log from server.

Belirli bir örnek için akış günlükleri

Belirli bir örneğin günlüklerinin akışını yapmak için aşağıdaki komutu kullanın:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --instance <instance-name> \
    --follow

Tüm örnekler için akış günlükleri

Tüm örneklerin günlüklerini yayınlamak için aşağıdaki komutu kullanın:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --all-instances \
    --follow

Bir bileşendeki birden çok örneğin günlüklerini akışla aktardığınızda, bir örneğin günlükleri başkalarının günlükleriyle kesişer.

Sanal ağ enjeksiyonu örneğindeki akış günlükleri

Özelleştirilmiş bir sanal ağda dağıtılan bir Azure Spring Apps örneği için günlük akışına varsayılan olarak özel sanal ağdan erişebilirsiniz. Daha fazla bilgi için bkz . Azure Spring Apps'i sanal ağda dağıtma

Azure Spring Apps, genel bir ağdan gerçek zamanlı yönetilen bileşen günlüklerine erişmenizi de sağlar.

Not

Genel ağda günlük akışı uç noktasının etkinleştirilmesi, sanal ağınıza gelen genel bir IP adresi ekler. Bu sizin için bir sorunsa dikkatli olun.

Açık ağ üzerinde bir günlük akışı uç noktasını etkinleştirmek için aşağıdaki adımları kullanın:

  1. Sanal ağınızda dağıtılan Azure Spring Apps hizmet örneğini seçin ve ardından gezinti menüsünden Ağ'ı seçin.

  2. Vnet enjeksiyonu sekmesini seçin.

  3. Genel ağda bir günlük akışı uç noktası etkinleştirmek için Genel ağdaki Veri Düzlemi kaynaklarının durumunu Etkinleştir olarak değiştirin. Bu işlem birkaç dakika sürer.

    Azure portalının, Vnet ekleme sekmesinin seçili ve Sorun Giderme bölümünün vurgulandığı Ağ sayfasını gösteren ekran görüntüsü.

Günlük akışı genel uç noktasını etkinleştirdikten sonra, yönetilen bileşen günlüklerine normal bir örneğe erişdiğiniz gibi genel bir ağdan erişebilirsiniz.

Günlük akışı genel uç noktasına trafiğin güvenliğini sağlama

Yönetilen bileşenler için günlük akışı, bileşenlere yönelik bağlantıların kimliğini doğrulamak için Azure RBAC kullanır. Sonuç olarak, günlüklere yalnızca uygun rollere sahip kullanıcılar erişebilir.

Bir genel uç nokta kullanıma sunduğunuzda yönetilen bileşenlerinizin güvenliğini sağlamak için, bir ağ güvenlik grubuyla hizmetinize yönelik ağ trafiğini filtreleyerek uç noktanın güvenliğini sağlayın. Daha fazla bilgi için bkz . Öğretici: Azure portalını kullanarak ağ güvenlik grubuyla ağ trafiğini filtreleme. Ağ güvenlik grupları, farklı Azure kaynaklarına gelen ya da bu kaynaklardan dışarı giden ağ trafiğine izin veren veya bu trafiği reddeden güvenlik kuralları içerir. Her kural için kaynak, hedef, bağlantı noktası ve protokol belirtebilirsiniz.

Not

Bir günlük akışı genel uç noktasını etkinleştirdikten sonra sanal ağ enjeksiyon örneğindeki yönetilen bileşen günlüklerine internetten erişemiyorsanız, bu tür giriş trafiğine izin verip vermediğinizi görmek için ağ güvenlik grubunuzu kontrol edin.

Aşağıdaki tabloda, önerdiğimiz temel bir kural örneği gösterilmektedir. Bir hizmetin hedef IP adresini almak için uç nokta nslookup ile gibi <service-name>.private.azuremicroservices.io komutları kullanabilirsiniz.

Öncelik Name Liman Protokol Kaynak Hedef Eylem
100 Kural adı 80 TCP İnternet Hizmet IP adresi İzin Ver
110 Kural adı 443 TCP İnternet Hizmet IP adresi İzin Ver

Sonraki adımlar