Mulai cepat: Memantau aplikasi end-to-end

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

Mulai cepat ini menunjukkan kepada Anda cara memantau aplikasi yang menjalankan paket Azure Spring Apps Enterprise dengan menggunakan Application Insights dan Log Analytics.

Catatan

Anda dapat memantau beban kerja Spring anda secara menyeluruh dengan menggunakan alat dan platform apa pun pilihan Anda, termasuk App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic, atau Splunk. Untuk informasi selengkapnya, lihat Bekerja dengan alat pemantauan lainnya nanti di artikel ini.

Prasyarat

Memperbarui aplikasi

Anda harus memberikan string koneksi Application Insights secara manual ke aplikasi Order Service (ASP.NET core) dan Cart Service (python). Instruksi berikut menjelaskan cara memberikan string koneksi ini dan meningkatkan tingkat pengambilan sampel ke Application Insights.

Catatan

Saat ini hanya buildpack untuk aplikasi Java dan NodeJS yang mendukung instrumentasi Application Insights.

  1. Buat variabel untuk menahan nama sumber daya dengan menggunakan perintah berikut. Pastikan untuk mengganti placeholder dengan nilai Anda sendiri. Nama instans layanan Azure Spring Apps Anda harus panjangnya antara 4 dan 32 karakter dan hanya dapat berisi huruf kecil, angka, dan tanda hubung. Karakter pertama dari nama layanan harus berupa huruf dan karakter terakhir harus berupa huruf atau angka.

    export RESOURCE_GROUP="<resource-group-name>"
    export APP_INSIGHTS_NAME="<app-insights-name>"
    export KEY_VAULT_NAME="<key-vault-name>"
    export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME="<Azure-Spring-Apps-service-instance-name>"
    

    Catatan

    Secara default, APP_INSIGHTS_NAME sama dengan AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Gunakan perintah berikut untuk mengambil string koneksi Application Insights dan mengaturnya di Key Vault:

    export CONNECTION_STRING=$(az monitor app-insights component show \
        --resource-group ${RESOURCE_GROUP} \
        --app ${APP_INSIGHTS_NAME} \
        --query "connectionString" \
        --output tsv)
    
    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "ApplicationInsights--ConnectionString" \
        --value ${CONNECTION_STRING}
    
  3. Gunakan perintah berikut untuk memperbarui laju pengambilan sampel untuk pengikatan Application Insights untuk meningkatkan jumlah data yang tersedia:

    az spring build-service builder buildpack-binding set \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --builder-name default \
        --name default \
        --type ApplicationInsights \
        --properties sampling-rate=100 connection_string=${CONNECTION_STRING}
    
  4. Gunakan perintah berikut untuk memulai ulang aplikasi untuk memuat ulang konfigurasi:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name cart-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name order-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name catalog-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name frontend
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name payment-service
    
  5. Jika Anda telah mengonfigurasi akses menyeluruh, gunakan perintah berikut untuk memulai ulang aplikasi untuk memuat ulang konfigurasi aplikasi layanan identitas:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name identity-service
    

    Untuk aplikasi Java dan NodeJS, menghidupkan ulang akan memungkinkan laju pengambilan sampel baru berlaku. Untuk aplikasi non-Java, menghidupkan ulang akan memungkinkan mereka mengakses Kunci Instrumentasi yang baru ditambahkan dari Key Vault.

Menampilkan log

Ada dua cara untuk melihat log di Azure Spring Apps: streaming log log real-time per instans aplikasi atau Log Analytics untuk log agregat dengan kemampuan kueri tingkat lanjut

Menggunakan streaming log

Hasilkan lalu lintas dalam aplikasi dengan berpindah melalui aplikasi, melihat katalog, dan menempatkan pesanan. Gunakan perintah berikut untuk menghasilkan lalu lintas terus menerus, hingga dibatalkan:

export GATEWAY_URL=$(az spring gateway show \
    --resource-group ${RESOURCE_GROUP} \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --query "properties.url" \
    --output tsv)

export GATEWAY_URL=https://${GATEWAY_URL} 

cd azure-spring-apps-enterprise/load-test/traffic-generator
./gradlew gatlingRun-com.vmware.acme.simulation.GuestSimulation.java

Gunakan perintah berikut untuk mendapatkan 100 baris terbaru log konsol aplikasi dari aplikasi Catalog Service:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --lines 100

Dengan menambahkan --follow opsi , Anda bisa mendapatkan streaming log real-time dari aplikasi. Gunakan perintah berikut untuk mencoba streaming log untuk aplikasi Catalog Service:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --follow

Tip

Anda dapat menggunakan log --help aplikasi az spring untuk menjelajahi lebih banyak parameter dan fungsionalitas aliran log.

Gunakan Analitik Log

Navigasi ke portal Azure dan buka instans Log Analytics yang Anda buat. Anda dapat menemukan instans Analitik Log di grup sumber daya yang sama tempat Anda membuat instans layanan Azure Spring Apps.

Pada halaman Analitik Log, pilih panel Log dan jalankan salah satu kueri sampel berikut untuk Azure Spring Apps.

Ketik dan jalankan kueri Kusto berikut untuk melihat log aplikasi:

AppPlatformLogsforSpring
| where TimeGenerated > ago(24h)
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Kueri ini menghasilkan hasil yang mirip dengan yang diperlihatkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing example output from all application logs query.

Ketik dan jalankan kueri Kusto berikut untuk melihat catalog-service log aplikasi:

AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Kueri ini menghasilkan hasil yang mirip dengan yang diperlihatkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing example output from Catalog Service application logs.

Ketik dan jalankan kueri Kusto berikut untuk melihat kesalahan dan pengecualian yang dilemparkan oleh setiap aplikasi:

AppPlatformLogsforSpring
| where Log contains "error" or Log contains "exception"
| extend FullAppName = strcat(ServiceName, "/", AppName)
| summarize count_per_app = count() by FullAppName, ServiceName, AppName, _ResourceId
| sort by count_per_app desc
| render piechart

Kueri ini menghasilkan hasil yang mirip dengan yang diperlihatkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing example output from the Ingress Logs.

Ketik dan jalankan kueri Kusto berikut untuk melihat semua dalam panggilan masuk ke Azure Spring Apps:

AppPlatformIngressLogs
| project TimeGenerated, RemoteAddr, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Ketik dan jalankan kueri Kusto berikut untuk melihat semua log dari Spring Cloud Config Gateway terkelola yang dikelola oleh Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "SpringCloudGateway"
| project TimeGenerated,Log

Kueri ini menghasilkan hasil yang mirip dengan yang diperlihatkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing example output from the Spring Cloud Gateway Logs.

Ketik dan jalankan kueri Kusto berikut untuk melihat semua log dari Spring Cloud Service Registry terkelola yang dikelola oleh Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log

Kueri ini menghasilkan hasil yang mirip dengan yang diperlihatkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing example output from service registry logs.

Menggunakan pelacakan

Di portal Azure, buka instans Application Insights yang dibuat oleh Azure Spring Apps dan mulai pantau aplikasi Spring Boot. Anda dapat menemukan instans Application Insights di grup sumber daya yang sama tempat Anda membuat instans layanan Azure Spring Apps.

Navigasi ke panel Peta aplikasi, yang akan mirip dengan cuplikan layar berikut:

Screenshot of Azure portal showing the Application Map of Azure Application Insights.

Navigasi ke panel Performa , yang akan mirip dengan cuplikan layar berikut:

Screenshot of Azure portal showing the Performance pane of Azure Application Insights.

Navigasi ke panel Performa/Dependensi . Di sini Anda dapat melihat nomor performa untuk dependensi, terutama panggilan SQL, mirip dengan apa yang ditunjukkan pada cuplikan layar berikut:

Screenshot of Azure portal showing the Dependencies section of the Performance pane of Azure Application Insights.

Navigasi ke panel Performa/Peran . Di sini Anda dapat melihat metrik performa untuk instans atau peran individual, mirip dengan apa yang ditunjukkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing the Roles section of the Performance pane of Azure Application Insights.

Pilih panggilan SQL untuk melihat transaksi end-to-end dalam konteks, mirip dengan apa yang diperlihatkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing the end-to-end transaction of an S Q L call.

Navigasi ke panel Kegagalan/Pengecualian . Di sini Anda dapat melihat kumpulan pengecualian, mirip dengan apa yang diperlihatkan dalam cuplikan layar berikut:

Screenshot of Azure portal showing application failures graphed.

Melihat metrik

Navigasi ke panel Metrik . Di sini Anda dapat melihat metrik yang dikontribusikan oleh aplikasi Spring Boot, modul Spring Cloud, dan dependensi. Bagan dalam cuplikan layar berikut menunjukkan http_server_requests dan Memori Timbunan yang Digunakan:

Screenshot of Azure portal showing metrics over time graph.

Spring Boot mendaftarkan sejumlah besar metrik inti: JVM, CPU, Tomcat, Logback, dan sebagainya. Konfigurasi otomatis Spring Boot memungkinkan instrumentasi permintaan yang ditangani oleh Spring MVC. Pengontrol REST dan PaymentController telah diinstrumentasikan ProductController oleh @Timed anotasi Micrometer di tingkat kelas.

Aplikasi acme-catalog ini mengaktifkan metrik kustom berikut: @Timedstore.products

Aplikasi acem-payment ini mengaktifkan metrik kustom berikut: @Timedstore.payment

Anda dapat melihat metrik kustom ini di panel Metrik , seperti yang diperlihatkan dalam cuplikan layar berikut.

Screenshot showing custom metrics instrumented by Micrometer.

Navigasi ke panel Metrik Langsung. Di sini Anda dapat melihat metrik langsung di layar dengan latensi < rendah 1 detik, seperti yang ditunjukkan pada cuplikan layar berikut:

Screenshot showing the live metrics of all applications.

Bekerja dengan alat pemantauan lainnya

Paket Azure Spring Apps Enterprise juga mendukung ekspor metrik ke alat lain, termasuk alat berikut:

  • AppDinamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Anda dapat menambahkan lebih banyak pengikatan ke penyusun di Tanzu Build Service dengan menggunakan perintah berikut:

az spring build-service builder buildpack-binding create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --builder-name <builder-name> \
    --name <binding-name> \
    --type <ApplicationInsights|AppDynamics|ApacheSkyWalking|Dynatrace|ElasticAPM|NewRelic> \
    --properties <connection-properties>
    --secrets <secret-properties>

Membersihkan sumber daya

Jika Anda berencana untuk terus bekerja dengan mulai cepat dan tutorial berikutnya, biarkan sumber daya ini tetap di tempatnya. Jika tidak lagi diperlukan, hapus grup sumber daya yang juga akan menghapus sumber daya di grup sumber daya. Untuk menghapus grup sumber daya dengan menggunakan Azure CLI, gunakan perintah berikut:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Langkah berikutnya

Lanjutkan ke salah satu mulai cepat opsional berikut: