Streaming log komponen terkelola Azure Spring Apps secara real time
Catatan
Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.
Artikel ini berlaku untuk:❌ Basic/Standard ✔️ Enterprise
Artikel ini menjelaskan cara menggunakan Azure CLI untuk mendapatkan log real time komponen terkelola untuk pemecahan masalah. Anda juga dapat menggunakan pengaturan diagnostik untuk menganalisis data diagnostik di Azure Spring Apps. Untuk informasi selengkapnya, lihat Menganalisis log dan metrik dengan pengaturan diagnostik. Untuk informasi selengkapnya tentang log streaming, lihat Mengalirkan log konsol aplikasi Azure Spring Apps secara real time dan Mengalirkan log pekerjaan Azure Spring Apps secara real time.
Prasyarat
- Azure CLI dengan ekstensi Azure Spring Apps, versi 1.24.0 atau yang lebih tinggi. Anda dapat menginstal ekstensi dengan menggunakan perintah berikut:
az extension add --name spring
.
Komponen terkelola yang didukung
Tabel berikut mencantumkan komponen terkelola yang saat ini didukung, bersama dengan subkomponennya:
Komponen terkelola | Subkomponen |
---|---|
Layanan Konfigurasi Aplikasi | application-configuration-service flux-source-controller (Didukung dalam versi ACS Gen2) |
Spring Cloud Gateway | spring-cloud-gateway spring-cloud-gateway-operator |
Spring Cloud Config Server | config-server |
Anda bisa menggunakan perintah berikut untuk mencantumkan semua subkomponen:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Menetapkan peran Azure
Untuk mengalirkan log komponen terkelola, Anda harus memiliki peran Azure yang relevan yang ditetapkan untuk Anda. Tabel berikut mencantumkan peran yang diperlukan dan operasi yang perannya diberikan izin:
Komponen terkelola | Peran yang diperlukan | Operasional |
---|---|---|
Layanan Konfigurasi Aplikasi | Peran Pembaca Log Layanan Konfigurasi Aplikasi Azure Spring Apps | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud Gateway | Peran Pembaca Log Azure Spring Apps Spring Cloud Gateway | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Spring Cloud Config Server | Peran Pembaca Log Server Konfigurasi Azure Spring Apps Spring Cloud | Microsoft.AppPlatform/Spring/configService/logstream/action |
Gunakan langkah-langkah berikut untuk menetapkan peran Azure menggunakan portal Azure:
Buka portal Microsoft Azure.
Buka instans layanan Azure Spring Apps Anda.
Di panel navigasi, pilih Kontrol Akses (IAM).
Pada halaman Kontrol Akses (IAM), pilih Tambahkan lalu pilih Tambahkan penetapan peran.
Pada halaman Tambahkan penetapan peran, di daftar Nama , cari dan pilih peran target lalu pilih Berikutnya.
Pilih Anggota lalu cari dan pilih nama pengguna Anda.
Pilih Tinjau + tetapkan.
Mencantumkan semua instans dalam komponen
Gunakan perintah berikut untuk mencantumkan semua instans dalam komponen:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Misalnya, untuk mencantumkan semua instans untuk flux-source-controller
dalam versi ACS Gen2, gunakan perintah berikut:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Menampilkan log ekor
Bagian ini menyediakan contoh penggunaan Azure CLI untuk menghasilkan log ekor.
Melihat log ekor untuk instans tertentu
Untuk melihat log ekor untuk instans tertentu, gunakan az spring component logs
perintah dengan -i/--instance
argumen , seperti yang ditunjukkan di bagian berikutnya.
Melihat log ekor untuk instans layanan konfigurasi aplikasi
Gunakan perintah berikut untuk melihat log ekor untuk application-configuration-service
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name application-configuration-service \
--instance <instance-name>
Untuk ACS Gen2, perintah mengembalikan log yang mirip dengan contoh berikut:
...
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)
...
Melihat log ekor untuk instans pengontrol sumber fluks
Gunakan perintah berikut untuk melihat log ekor untuk flux-source-controller
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name flux-source-controller \
--instance <instance-name>
Perintah mengembalikan log yang mirip dengan contoh berikut:
...
{"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"}
...
Melihat log ekor untuk instans spring-cloud-gateway
Gunakan perintah berikut untuk melihat log ekor untuk spring-cloud-gateway
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name spring-cloud-gateway \
--instance <instance-name>
Perintah mengembalikan log yang mirip dengan contoh berikut:
...
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)
...
Melihat log ekor untuk instans spring-cloud-gateway-operator
Gunakan perintah berikut untuk melihat log ekor untuk spring-cloud-gateway-operator
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name spring-cloud-gateway-operator \
--instance <instance-name>
Perintah mengembalikan log yang mirip dengan contoh berikut:
...
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)
...
Melihat log ekor untuk instans config-server
Gunakan perintah berikut untuk melihat log ekor untuk config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
Perintah mengembalikan log yang mirip dengan contoh berikut:
...
{"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)"}
...
Melihat log ekor untuk semua instans dalam satu perintah
Untuk melihat log ekor untuk semua instans, gunakan --all-instances
argumen , seperti yang ditunjukkan dalam perintah berikut. Nama instans adalah awalan dari setiap baris log. Ketika ada beberapa instans, log dicetak dalam batch untuk setiap instans, sehingga log dari satu instans tidak diselingi dengan log instans lain.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Streaming log baru terus menerus
Secara default, az spring component logs
hanya mencetak log yang ada yang dialirkan ke konsol lalu keluar. Jika Anda ingin melakukan streaming log baru, tambahkan -f/--follow
argumen .
Saat Anda menggunakan -f/--follow
opsi untuk membuntuti log instan, layanan streaming log Azure Spring Apps mengirimkan log heartbeat ke klien setiap menit kecuali komponen menulis log secara konstan. Pesan log heartbeat menggunakan format berikut: 2023-12-18 09:12:17.745: No log from server
.
Mengalirkan log untuk instans tertentu
Gunakan perintah berikut untuk mengalirkan log untuk instans tertentu:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Mengalirkan log untuk semua instans
Gunakan perintah berikut untuk mengalirkan log untuk semua instans:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
Saat Anda mengalirkan log untuk beberapa instans dalam komponen, log dari satu instans saling terkait dengan log orang lain.
Mengalirkan log dalam instans injeksi jaringan virtual
Untuk instans Azure Spring Apps yang disebarkan di jaringan virtual kustom, Anda dapat mengakses streaming log secara default dari jaringan privat. Untuk informasi selengkapnya, lihat Menyebarkan Azure Spring Apps dalam jaringan virtual
Azure Spring Apps juga memungkinkan Anda mengakses log komponen terkelola real time dari jaringan publik.
Catatan
Mengaktifkan titik akhir streaming log di jaringan publik menambahkan IP masuk publik ke jaringan virtual Anda. Pastikan untuk berhati-hati jika ini menjadi perhatian Anda.
Gunakan langkah-langkah berikut untuk mengaktifkan titik akhir streaming log di jaringan publik:
Pilih instans layanan Azure Spring Apps yang disebarkan di jaringan virtual Anda lalu pilih Jaringan di menu navigasi.
Pilih tab injeksi Vnet.
Alihkan status sumber daya Dataplane di jaringan publik ke Aktifkan untuk mengaktifkan titik akhir streaming log di jaringan publik. Proses ini memakan waktu beberapa menit.
Setelah mengaktifkan titik akhir publik aliran log, Anda dapat mengakses log komponen terkelola dari jaringan publik sama seperti Anda akan mengakses instans normal.
Mengamankan lalu lintas ke titik akhir publik streaming log
Streaming log untuk komponen terkelola menggunakan Azure RBAC untuk mengautentikasi koneksi ke komponen. Akibatnya, hanya pengguna yang memiliki peran yang tepat yang dapat mengakses log.
Untuk memastikan keamanan komponen terkelola saat Anda mengekspos titik akhir publik untuk komponen tersebut, amankan titik akhir dengan memfilter lalu lintas jaringan ke layanan Anda dengan grup keamanan jaringan. Untuk informasi selengkapnya, lihat Tutorial: Memfilter lalu lintas jaringan dengan grup keamanan jaringan menggunakan portal Azure. Kelompok keamanan jaringan berisi aturan keamanan yang memungkinkan atau menolak lalu lintas jaringan masuk ke, atau, lalu lintas jaringan keluar dari, beberapa jenis sumber daya Azure. Untuk setiap aturan, Anda dapat menentukan sumber dan tujuan, port, dan protokol.
Catatan
Jika Anda tidak dapat mengakses log komponen terkelola di instans injeksi jaringan virtual dari internet setelah mengaktifkan titik akhir publik aliran log, periksa grup keamanan jaringan Anda untuk melihat apakah Anda telah mengizinkan lalu lintas masuk tersebut.
Tabel berikut ini memperlihatkan contoh aturan dasar yang kami rekomendasikan. Anda dapat menggunakan perintah seperti nslookup
dengan titik <service-name>.private.azuremicroservices.io
akhir untuk mendapatkan alamat IP target layanan.
Prioritas | Nama | Port | Protokol | Sumber | Tujuan | Tindakan |
---|---|---|---|---|---|---|
100 | Nama aturan | 80 | TCP | Internet | Alamat IP layanan | Izinkan |
110 | Nama aturan | 443 | TCP | Internet | Alamat IP layanan | Izinkan |