التشغيل السريع: مراقبة التطبيقات من طرف إلى طرف
إشعار
يعد 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. لمزيد من المعلومات، راجع العمل مع أدوات المراقبة الأخرى لاحقا في هذه المقالة.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
- فهم وتنفيذ قسم المتطلبات في خطة المؤسسة في Azure Marketplace.
- إصدار Azure CLI 2.45.0 أو أعلى.
- Git.
- ملحق خطة Azure Spring Apps Enterprise. استخدم الأمر التالي لإزالة الإصدارات السابقة وتثبيت أحدث ملحق لخطة المؤسسة. إذا قمت بتثبيت الملحق
spring-cloud
مسبقًا، قم بإلغاء تثبيته لتجنب عدم تطابق التكوين والإصدار.az extension add --upgrade --name spring az extension remove --name spring-cloud
- الموارد التي يجب مراقبتها، مثل تلك التي تم إنشاؤها في عمليات التشغيل السريع التالية:
تحديث التطبيقات
يجب توفير سلسلة الاتصال Application Insights يدويا لتطبيقات خدمة الطلب (ASP.NET الأساسية) وخدمة Cart (python). تصف الإرشادات التالية كيفية توفير هذه سلسلة الاتصال وزيادة معدل أخذ العينات إلى Application Insights.
إشعار
حاليا فقط buildpacks لتطبيقات Java وNodeJS تدعم تقرير عن حالة النظام Application Insights.
إنشاء متغيرات للاحتفاظ بأسماء الموارد باستخدام الأوامر التالية. تأكد من استبدل العناصر النائبة بقيمتك الخاصة. يجب أن يتراوح طول اسم مثيل خدمة 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.
استخدم الأوامر التالية لاسترداد سلسلة الاتصال 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}
استخدم الأمر التالي لتحديث معدل أخذ العينات لربط 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}
استخدم الأوامر التالية لإعادة تشغيل التطبيقات لإعادة تحميل التكوين:
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
إذا قمت بتكوين تسجيل الدخول الأحادي، فاستخدم الأوامر التالية لإعادة تشغيل التطبيقات لإعادة تحميل تكوين تطبيق خدمة الهوية:
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
ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:
اكتب استعلام Kusto التالي وشغله لمشاهدة catalog-service
سجلات التطبيق:
AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log
ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:
اكتب استعلام 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
ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:
اكتب استعلام 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
ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:
اكتب استعلام Kusto التالي وقم بتشغيله لمشاهدة جميع السجلات من سجل خدمة Spring Cloud المدار الذي تديره Azure Spring Apps:
AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log
ينتج عن هذا الاستعلام نتائج مشابهة لتلك المعروضة في لقطة الشاشة التالية:
استخدام التتبع
في مدخل Microsoft Azure، افتح مثيل Application Insights الذي أنشأته Azure Spring Apps وابدأ في مراقبة تطبيقات Spring Boot. يمكنك العثور على مثيل Application Insights في نفس مجموعة الموارد حيث قمت بإنشاء مثيل خدمة Azure Spring Apps.
انتقل إلى جزء خريطة التطبيق، والذي سيكون مشابها للقطة الشاشة التالية:
انتقل إلى جزء Performance ، والذي سيكون مشابها للقطة الشاشة التالية:
انتقل إلى جزء Performance/Dependencies . هنا يمكنك مشاهدة رقم الأداء للتبعيات، خاصة استدعاءات SQL، على غرار ما هو موضح في لقطة الشاشة التالية:
انتقل إلى جزء Performance/Roles . هنا يمكنك مشاهدة مقاييس الأداء للمثيلات أو الأدوار الفردية، على غرار ما هو موضح في لقطة الشاشة التالية:
حدد استدعاء SQL لمشاهدة المعاملة الشاملة في السياق، على غرار ما هو موضح في لقطة الشاشة التالية:
انتقل إلى جزء Failures/Exceptions . هنا يمكنك مشاهدة مجموعة من الاستثناءات، على غرار ما هو موضح في لقطة الشاشة التالية:
عرض القياسات
انتقل إلى جزء Metrics . هنا يمكنك مشاهدة المقاييس التي ساهمت بها تطبيقات Spring Boot ووحدات Spring Cloud والتبعيات. يظهر المخطط في لقطة الشاشة التالية http_server_requests وذاكرة كومة الذاكرة المستخدمة:
يسجل Spring Boot عددا كبيرا من المقاييس الأساسية: JVM وCPU وTomcat وLogback وما إلى ذلك.
يتيح التكوين التلقائي ل Spring Boot تقرير عن حالة النظام للطلبات التي تتم معالجتها بواسطة Spring MVC.
وحدات تحكم ProductController
REST وقد PaymentController
تم وضع علامة عليها بواسطة @Timed
التعليق التوضيحي ل Micrometer على مستوى الفئة.
acme-catalog
يحتوي التطبيق على المقياس المخصص التالي ممكن: : @Timedstore.products
acem-payment
يحتوي التطبيق على المقياس المخصص التالي ممكن: : @Timedstore.payment
يمكنك مشاهدة هذه المقاييس المخصصة في جزء المقاييس ، كما هو موضح في لقطة الشاشة التالية.
انتقل إلى جزء Live Metrics . هنا يمكنك مشاهدة المقاييس المباشرة على الشاشة مع زمن انتقال < منخفض 1 ثانية، كما هو موضح في لقطة الشاشة التالية:
العمل مع أدوات المراقبة الأخرى
تدعم خطة 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 ..."
الخطوات التالية
تابع إلى أي من قوالب التشغيل السريع الاختيارية التالية: