Share via


Hızlı Başlangıç: Uygulamaları uçtan uca izleme

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

Bu makale şunlar için geçerlidir:❌ Temel/Standart ✔️ Kurumsal

Bu hızlı başlangıçta, Application Analizler ve Log Analytics kullanarak Azure Spring Apps Kurumsal planını çalıştıran uygulamaların nasıl izleneceği gösterilmektedir.

Not

Spring iş yüklerinizi Uygulama Analizler, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic veya Splunk gibi istediğiniz herhangi bir araç ve platformu kullanarak uçtan uca izleyebilirsiniz. Daha fazla bilgi için bu makalenin devamında yer alan Diğer izleme araçlarıyla çalışma bölümüne bakın.

Önkoşullar

Uygulamaları güncelleştirme

Uygulama Analizler bağlantı dizesi Sipariş Hizmeti (ASP.NET çekirdek) ve Sepet Hizmeti (python) uygulamalarına el ile sağlamanız gerekir. Aşağıdaki yönergelerde bu bağlantı dizesi sağlama ve Örnekleme oranını Uygulama Analizler artırma açıklanmaktadır.

Not

Şu anda yalnızca Java ve NodeJS uygulamaları için derleme paketleri Application Analizler izlemesini desteklemektedir.

  1. Aşağıdaki komutları kullanarak kaynak adlarını tutmak için değişkenler oluşturun. Yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın. Azure Spring Apps hizmet örneğinizin adı 4 ila 32 karakter uzunluğunda olmalıdır ve yalnızca küçük harf, sayı ve kısa çizgi içerebilir. Hizmet adının ilk karakteri bir harf, son karakter ise harf veya sayı olmalıdır.

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

    Not

    Varsayılan olarak, APP_INSIGHTS_NAME AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME aynıdır.

  2. Uygulama Analizler bağlantı dizesi almak ve Key Vault'ta ayarlamak için aşağıdaki komutları kullanın:

    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. Kullanılabilir veri miktarını artırmak üzere Uygulama Analizler bağlamasının örnekleme hızını güncelleştirmek için aşağıdaki komutu kullanın:

    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. Yapılandırmayı yeniden yüklemek üzere uygulamaları yeniden başlatmak için aşağıdaki komutları kullanın:

    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. Çoklu oturum açmayı yapılandırdıysanız, kimlik hizmeti uygulama yapılandırmasını yeniden yüklemek üzere uygulamaları yeniden başlatmak için aşağıdaki komutları kullanın:

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

    Java ve NodeJS uygulamaları için yeniden başlatma, yeni örnekleme hızının etkili olmasını sağlar. Java olmayan uygulamalar için yeniden başlatma, yeni eklenen İzleme Anahtarına Key Vault'tan erişmelerini sağlar.

Günlükleri görüntüleme

Azure Spring Apps'te günlükleri görmenin iki yolu vardır: uygulama örneği başına gerçek zamanlı günlüklerin günlük akışı veya gelişmiş sorgu özelliğine sahip toplu günlükler için Log Analytics

Günlük akışını kullanma

Uygulamada ilerleyerek, kataloğu görüntüleyerek ve siparişler vererek uygulamada trafik oluşturun. İptal edilene kadar sürekli trafik oluşturmak için aşağıdaki komutları kullanın:

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

Katalog Hizmeti uygulamasından uygulama konsolu günlüklerinin en son 100 satırını almak için aşağıdaki komutu kullanın:

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

seçeneğini ekleyerek --follow bir uygulamadan gerçek zamanlı günlük akışı alabilirsiniz. Katalog Hizmeti uygulaması için günlük akışını denemek için aşağıdaki komutu kullanın:

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

İpucu

Az spring uygulama günlüklerini --help kullanarak daha fazla parametre ve günlük akışı işlevi keşfedebilirsiniz.

Log Analytics kullanma

Azure portalına gidin ve oluşturduğunuz Log Analytics örneğini açın. Log Analytics örneğini, Azure Spring Apps hizmet örneğini oluşturduğunuz kaynak grubunda bulabilirsiniz.

Log Analytics sayfasında Günlükler bölmesini seçin ve Azure Spring Apps için aşağıdaki örnek sorgulardan herhangi birini çalıştırın.

Uygulama günlüklerini görmek için aşağıdaki Kusto sorgusunu yazın ve çalıştırın:

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

Bu sorgu, aşağıdaki ekran görüntüsünde gösterilenlere benzer sonuçlar üretir:

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

Uygulama günlüklerini görmek catalog-service için aşağıdaki Kusto sorgusunu yazın ve çalıştırın:

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

Bu sorgu, aşağıdaki ekran görüntüsünde gösterilenlere benzer sonuçlar üretir:

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

Her uygulama tarafından oluşturulan hataları ve özel durumları görmek için aşağıdaki Kusto sorgusunu yazın ve çalıştırın:

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

Bu sorgu, aşağıdaki ekran görüntüsünde gösterilenlere benzer sonuçlar üretir:

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

Azure Spring Apps'e gelen çağrıların tümünü görmek için aşağıdaki Kusto sorgusunu yazın ve çalıştırın:

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

Azure Spring Apps tarafından yönetilen yönetilen Spring Cloud Config Gateway'den tüm günlükleri görmek için aşağıdaki Kusto sorgusunu yazın ve çalıştırın:

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

Bu sorgu, aşağıdaki ekran görüntüsünde gösterilenlere benzer sonuçlar üretir:

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

Azure Spring Apps tarafından yönetilen yönetilen Spring Cloud Service Kayıt Defteri'nden tüm günlükleri görmek için aşağıdaki Kusto sorgusunu yazın ve çalıştırın:

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

Bu sorgu, aşağıdaki ekran görüntüsünde gösterilenlere benzer sonuçlar üretir:

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

İzlemeyi kullanma

Azure portalında Azure Spring Apps tarafından oluşturulan Application Analizler örneğini açın ve Spring Boot uygulamalarını izlemeye başlayın. Application Analizler örneğini, Azure Spring Apps hizmet örneğini oluşturduğunuz kaynak grubunda bulabilirsiniz.

Aşağıdaki ekran görüntüsüne benzer şekilde Uygulama haritası bölmesine gidin:

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

Aşağıdaki ekran görüntüsüne benzer şekilde Performans bölmesine gidin:

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

Performans/Bağımlılıklar bölmesine gidin. Burada, aşağıdaki ekran görüntüsünde gösterilene benzer şekilde bağımlılıkların performans numarasını, özellikle SQL çağrılarını görebilirsiniz:

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

Performans/Roller bölmesine gidin. Burada, aşağıdaki ekran görüntüsünde gösterilene benzer şekilde tek tek örneklerin veya rollerin performans ölçümlerini görebilirsiniz:

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

Bağlam içinde uçtan uca işlemi görmek için aşağıdaki ekran görüntüsünde gösterilene benzer bir SQL çağrısı seçin:

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

Hatalar/Özel Durumlar bölmesine gidin. Burada, aşağıdaki ekran görüntüsünde gösterilene benzer bir özel durum koleksiyonu görebilirsiniz:

Screenshot of Azure portal showing application failures graphed.

Ölçümleri görüntüleme

Ölçümler bölmesine gidin. Burada Spring Boot uygulamalarının, Spring Cloud modüllerinin ve bağımlılıklarının katkılarıyla yapılan ölçümleri görebilirsiniz. Aşağıdaki ekran görüntüsünde http_server_requests ve Kullanılan Yığın Belleği gösterilmektedir:

Screenshot of Azure portal showing metrics over time graph.

Spring Boot çok sayıda çekirdek ölçümü kaydeder: JVM, CPU, Tomcat, Logback vb. Spring Boot otomatik yapılandırması, Spring MVC tarafından işlenen isteklerin izlemesini sağlar. REST denetleyicileri ProductController ve PaymentController sınıf düzeyinde Mikrometre ek açıklaması tarafından @Timed izlenmiştir.

Uygulama acme-catalog şu özel ölçümü etkinleştirmiştir: : @Timedstore.products

Uygulama acem-payment şu özel ölçümü etkinleştirmiştir: : @Timedstore.payment

Bu özel ölçümleri aşağıdaki ekran görüntüsünde gösterildiği gibi Ölçümler bölmesinde görebilirsiniz.

Screenshot showing custom metrics instrumented by Micrometer.

Canlı Ölçümler bölmesine gidin. Burada, aşağıdaki ekran görüntüsünde gösterildiği gibi 1 saniyelik düşük gecikme süresine < sahip canlı ölçümleri ekranda görebilirsiniz:

Screenshot showing the live metrics of all applications.

Diğer izleme araçlarıyla çalışma

Azure Spring Apps Kurumsal planı, aşağıdaki araçlar da dahil olmak üzere ölçümleri diğer araçlara dışarı aktarmayı da destekler:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Aşağıdaki komutu kullanarak Tanzu Derleme Hizmeti'ndeki bir oluşturucuya daha fazla bağlama ekleyebilirsiniz:

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>

Kaynakları temizleme

Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Artık gerekli olmadığında kaynak grubunu silin; bu da kaynak grubundaki kaynakları siler. Azure CLI kullanarak kaynak grubunu silmek için aşağıdaki komutları kullanın:

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

Sonraki adımlar

Aşağıdaki isteğe bağlı hızlı başlangıçlardan herhangi birine geçin: