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 log streaming aplikasi di Azure Spring Apps, lihat Mengalirkan log konsol aplikasi Azure Spring Apps secara real time.

Prasyarat

  • Azure CLI dengan ekstensi Azure Spring Apps, versi 1.19.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

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

Gunakan langkah-langkah berikut untuk menetapkan peran Azure menggunakan portal Azure:

  1. Buka portal Microsoft Azure.

  2. Buka instans layanan Azure Spring Apps Anda.

  3. Di panel navigasi, pilih Kontrol Akses (IAM).

  4. Pada halaman Kontrol Akses (IAM), pilih Tambahkan lalu pilih Tambahkan penetapan peran.

    Cuplikan layar portal Azure yang memperlihatkan halaman Kontrol Akses (IAM) dengan opsi Tambahkan penetapan peran disorot.

  5. Pada halaman Tambahkan penetapan peran, di daftar Nama , cari dan pilih peran target lalu pilih Berikutnya.

    Cuplikan layar portal Azure yang memperlihatkan halaman Tambahkan penetapan peran dengan nama Peran Pembaca Log Layanan Konfigurasi Aplikasi disorot.

  6. Pilih Anggota lalu cari dan pilih nama pengguna Anda.

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

  1. Pilih instans layanan Azure Spring Apps yang disebarkan di jaringan virtual Anda lalu pilih Jaringan di menu navigasi.

  2. Pilih tab injeksi Vnet.

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

    Cuplikan layar portal Azure yang memperlihatkan halaman Jaringan dengan tab injeksi Vnet dipilih dan bagian Pemecahan Masalah disorot.

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

Langkah berikutnya