التشغيل السريع: مراقبة التطبيقات من طرف إلى طرف

إشعار

يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.

تنطبق هذه المقالة على:❌ Basic/Standard ✔️ Enterprise

يوضح لك هذا التشغيل السريع كيفية مراقبة التطبيقات التي تقوم بتشغيل خطة Azure Spring Apps Enterprise باستخدام Application Insights وLog Analytics.

إشعار

يمكنك مراقبة أحمال عمل Spring من طرف إلى طرف باستخدام أي أداة ومنصة من اختيارك، بما في ذلك App Insights أو Log Analytics أو New Relic أو Dynatrace أو AppDynamics أو Elastic أو Splunk. لمزيد من المعلومات، راجع العمل مع أدوات المراقبة الأخرى لاحقا في هذه المقالة.

المتطلبات الأساسية

تحديث التطبيقات

يجب توفير سلسلة الاتصال Application Insights يدويا لتطبيقات خدمة الطلب (ASP.NET الأساسية) وخدمة Cart (python). تصف الإرشادات التالية كيفية توفير هذه سلسلة الاتصال وزيادة معدل أخذ العينات إلى Application Insights.

إشعار

حاليا فقط buildpacks لتطبيقات Java وNodeJS تدعم تقرير عن حالة النظام Application Insights.

  1. إنشاء متغيرات للاحتفاظ بأسماء الموارد باستخدام الأوامر التالية. تأكد من استبدل العناصر النائبة بقيمتك الخاصة. يجب أن يتراوح طول اسم مثيل خدمة Azure Spring Apps بين 4 و32 حرفا ويمكن أن يحتوي فقط على أحرف صغيرة وأرقام وواصلات. يجب أن يكون الحرف الأول من اسم الخدمة حرفاً ويجب أن يكون الحرف الأخير إما حرفاً أو رقماً.

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

    إشعار

    بشكل افتراضي، يكون APP_INSIGHTS_NAME هو نفسه AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. استخدم الأوامر التالية لاسترداد سلسلة الاتصال Application Insights وتعيينه في 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. استخدم الأمر التالي لتحديث معدل أخذ العينات لربط Application Insights لزيادة كمية البيانات المتاحة:

    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. استخدم الأوامر التالية لإعادة تشغيل التطبيقات لإعادة تحميل التكوين:

    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. إذا قمت بتكوين تسجيل الدخول الأحادي، فاستخدم الأوامر التالية لإعادة تشغيل التطبيقات لإعادة تحميل تكوين تطبيق خدمة الهوية:

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

    بالنسبة لتطبيقات Java وNodeJS، ستسمح إعادة التشغيل بتطبيق معدل أخذ العينات الجديد. بالنسبة للتطبيقات غير Java، ستسمح إعادة التشغيل لهم بالوصول إلى مفتاح الأجهزة المضاف حديثا من Key Vault.

عرض السجلات

هناك طريقتان لمشاهدة السجلات على Azure Spring Apps: تدفق السجل للسجلات في الوقت الحقيقي لكل مثيل تطبيق أو Log Analytics للسجلات المجمعة مع إمكانية الاستعلام المتقدمة

استخدام دفق السجل

إنشاء نسبة استخدام الشبكة في التطبيق عن طريق الانتقال عبر التطبيق وعرض الكتالوج ووضع الطلبات. استخدم الأوامر التالية لإنشاء نسبة استخدام الشبكة بشكل مستمر، حتى يتم إلغاؤها:

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

استخدم الأمر التالي للحصول على أحدث 100 سطر من سجلات وحدة تحكم التطبيق من تطبيق خدمة الكتالوج:

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

بإضافة --follow الخيار ، يمكنك الحصول على تدفق السجل في الوقت الحقيقي من تطبيق. استخدم الأمر التالي لمحاولة دفق السجل لتطبيق خدمة الكتالوج:

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

تلميح

يمكنك استخدام سجلات --help تطبيق az spring لاستكشاف المزيد من المعلمات ووظائف دفق السجل.

استخدام "Log Analytics"

انتقل إلى مدخل Microsoft Azure وافتح مثيل Log Analytics الذي قمت بإنشائه. يمكنك العثور على مثيل Log Analytics في نفس مجموعة الموارد حيث قمت بإنشاء مثيل خدمة Azure Spring Apps.

في صفحة Log Analytics، حدد جزء Logs وقم بتشغيل أي من نماذج الاستعلامات التالية ل Azure Spring Apps.

اكتب استعلام Kusto التالي وشغله لمشاهدة سجلات التطبيق:

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

ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:

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

اكتب استعلام Kusto التالي وشغله لمشاهدة catalog-service سجلات التطبيق:

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

ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:

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

اكتب استعلام Kusto التالي وقم بتشغيله لمشاهدة الأخطاء والاستثناءات التي طرحها كل تطبيق:

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

ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:

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

اكتب استعلام Kusto التالي وقم بتشغيله لمشاهدة الكل في المكالمات الواردة إلى Azure Spring Apps:

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

اكتب استعلام Kusto التالي وقم بتشغيله لمشاهدة جميع السجلات من بوابة تكوين Spring Cloud المدارة التي تديرها Azure Spring Apps:

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

ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:

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

اكتب استعلام Kusto التالي وقم بتشغيله لمشاهدة جميع السجلات من سجل خدمة Spring Cloud المدار الذي تديره Azure Spring Apps:

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

ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:

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

استخدام التتبع

في مدخل Microsoft Azure، افتح مثيل Application Insights الذي أنشأته Azure Spring Apps وابدأ في مراقبة تطبيقات Spring Boot. يمكنك العثور على مثيل Application Insights في نفس مجموعة الموارد حيث قمت بإنشاء مثيل خدمة Azure Spring Apps.

انتقل إلى جزء خريطة التطبيق، والذي سيكون مشابها للقطة الشاشة التالية:

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

انتقل إلى جزء Performance ، والذي سيكون مشابها للقطة الشاشة التالية:

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

انتقل إلى جزء Performance/Dependencies . هنا يمكنك مشاهدة رقم الأداء للتبعيات، خاصة استدعاءات SQL، على غرار ما هو موضح في لقطة الشاشة التالية:

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

انتقل إلى جزء Performance/Roles . هنا يمكنك مشاهدة مقاييس الأداء للمثيلات أو الأدوار الفردية، على غرار ما هو موضح في لقطة الشاشة التالية:

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

حدد استدعاء SQL لمشاهدة المعاملة الشاملة في السياق، على غرار ما هو موضح في لقطة الشاشة التالية:

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

انتقل إلى جزء Failures/Exceptions . هنا يمكنك مشاهدة مجموعة من الاستثناءات، على غرار ما هو موضح في لقطة الشاشة التالية:

Screenshot of Azure portal showing application failures graphed.

عرض القياسات

انتقل إلى جزء Metrics . هنا يمكنك مشاهدة المقاييس التي ساهمت بها تطبيقات Spring Boot ووحدات Spring Cloud والتبعيات. يظهر المخطط في لقطة الشاشة التالية http_server_requests وذاكرة كومة الذاكرة المستخدمة:

Screenshot of Azure portal showing metrics over time graph.

يسجل Spring Boot عددا كبيرا من المقاييس الأساسية: JVM وCPU وTomcat وLogback وما إلى ذلك. يتيح التكوين التلقائي ل Spring Boot تقرير عن حالة النظام للطلبات التي تتم معالجتها بواسطة Spring MVC. وحدات تحكم ProductController REST وقد PaymentController تم وضع علامة عليها بواسطة @Timed التعليق التوضيحي ل Micrometer على مستوى الفئة.

acme-catalog يحتوي التطبيق على المقياس المخصص التالي ممكن: : @Timedstore.products

acem-payment يحتوي التطبيق على المقياس المخصص التالي ممكن: : @Timedstore.payment

يمكنك مشاهدة هذه المقاييس المخصصة في جزء المقاييس ، كما هو موضح في لقطة الشاشة التالية.

Screenshot showing custom metrics instrumented by Micrometer.

انتقل إلى جزء Live Metrics . هنا يمكنك مشاهدة المقاييس المباشرة على الشاشة مع زمن انتقال < منخفض 1 ثانية، كما هو موضح في لقطة الشاشة التالية:

Screenshot showing the live metrics of all applications.

العمل مع أدوات المراقبة الأخرى

تدعم خطة Azure Spring Apps Enterprise أيضا تصدير المقاييس إلى أدوات أخرى، بما في ذلك الأدوات التالية:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

يمكنك إضافة المزيد من الروابط إلى منشئ في Tanzu Build Service باستخدام الأمر التالي:

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>

تنظيف الموارد

إذا كنت تخطط لمواصلة العمل بالبدايات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها. يمكنك حذف مجموعة الموارد عند انتهاء حاجتك إليها، وهذا يؤدي إلى حذف الموارد الموجودة في مجموعة الموارد. لحذف مجموعة الموارد باستخدام Azure CLI، استخدم الأوامر التالية:

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

الخطوات التالية

تابع إلى أي من قوالب التشغيل السريع الاختيارية التالية: