إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يقدم المكون المدار من قبل مسؤول Spring واجهة إدارية لتطبيقات الويب Spring Boot التي تعرض نقاط نهاية وحدة التشغيل. كمكون مدار في Azure Container Apps، يمكنك بسهولة ربط تطبيق الحاوية الخاص بك ب Admin for Spring للتكامل والإدارة السلسين.
يوضح لك هذا البرنامج التعليمي كيفية إنشاء مكون مسؤول ل Spring Java وربطه بتطبيق الحاوية بحيث يمكنك مراقبة تطبيقات Spring وإدارتها بسهولة.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء مكون مسؤول ل Spring Java.
- اربط تطبيق الحاوية بمكون مسؤول ل Spring Java.
إذا كنت ترغب في دمج Admin for Spring مع Eureka Server for Spring، فشاهد دمج Admin for Spring مع خادم يوريكا ل Spring in Container Apps بدلا من ذلك.
هام
يستخدم هذا البرنامج التعليمي الخدمات التي يمكن أن تؤثر على فاتورة Azure. إذا قررت المتابعة، فتأكد من حذف الموارد المميزة في هذه المقالة لتجنب الفوترة غير المتوقعة.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب بالفعل، يمكنك إنشاء حساب مجانا.
- Azure CLI.
الاعتبارات
عند تشغيل مكون Admin for Spring في Container Apps، كن على دراية بالتفاصيل التالية:
| العنصر | الشرح |
|---|---|
| النطاق | تعمل المكونات في نفس البيئة مثل تطبيق الحاوية المتصل. |
| تغير الحجم | المكونات لا يمكن أن تتوسع. يتم تعيين خصائص minReplicas التحجيم و maxReplicas على 1. |
| الموارد | تم إصلاح تخصيص موارد الحاوية للمكونات. عدد أنوية المعالج هو 0.5، وحجم الذاكرة 1 جيجابايت. |
| التسعير | تندرج فوترة المكونات ضمن التسعير المستند إلى الاستهلاك. يتم احتساب الموارد التي تستهلكها المكونات المدارة بمعدلات النشاط أو الخمول، حسب استخدام الموارد. يمكنك حذف المكونات التي لم تعد قيد الاستخدام لإيقاف الفوترة. |
| Binding | تتصل تطبيقات الحاوية بمكون عبر ربط. تدخل الروابط التكوينات في متغيرات بيئة تطبيق الحاوية. بعد تأسيس الربط، يمكن لتطبيق الحاوية قراءة قيم التكوين من متغيرات البيئة والاتصال بالمكون. |
الإعداد
قبل بدء العمل مع مكون Admin for Spring، تحتاج إلى إنشاء الموارد المطلوبة.
-
Azure CLI - مدخل Microsoft Azure
تساعدك الأوامر التالية على إنشاء مجموعة الموارد وبيئة تطبيق الحاوية.
إنشاء متغيرات لدعم تكوين التطبيق الخاص بك. يتم توفير هذه القيم لك لأغراض هذا الدرس.
export LOCATION=eastus export RESOURCE_GROUP=my-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=admin export APP_NAME=sample-admin-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"المتغير الوصف LOCATIONموقع منطقة Azure حيث تقوم بإنشاء تطبيق الحاوية ومكون Java. ENVIRONMENTاسم بيئة تطبيق الحاوية لتطبيق العرض التوضيحي الخاص بك. RESOURCE_GROUPاسم مجموعة موارد Azure لتطبيق العرض التوضيحي الخاص بك. JAVA_COMPONENT_NAMEاسم مكون Java الذي تم إنشاؤه لتطبيق الحاوية. في هذه الحالة، يمكنك إنشاء مكون مسؤول ل Spring Java. IMAGEصورة الحاوية المستخدمة في تطبيق الحاوية. سجل الدخول إلى Azure باستخدام Azure CLI.
az loginقم بإنشاء مجموعة موارد.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"عند استخدام المعلمة
--query، يتم تصفية الاستجابة وصولا إلى رسالة نجاح أو فشل بسيطة.إنشاء بيئة تطبيق الحاوية.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
استخدام المكون
-
Azure CLI - مدخل Microsoft Azure
الآن بعد أن أصبحت لديك بيئة موجودة، يمكنك إنشاء تطبيق الحاوية الخاص بك وربطه بمثيل مكون Java لمكون Admin for Spring.
إنشاء مكون Admin for Spring Java.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1تحديث مكون المسؤول ل Spring Java.
az containerapp env java-component admin-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2
ربط تطبيق الحاوية الخاص بك إلى مكون المسؤول ل Spring Java
-
Azure CLI - مدخل Microsoft Azure
قم بإنشاء تطبيق الحاوية وربطه بالمكون Admin for Spring.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $JAVA_COMPONENT_NAME
تربط عملية الربط تطبيق الحاوية بمكون Admin for Spring Java. يمكن لتطبيق الحاوية الآن قراءة قيم التكوين من متغيرات البيئة، في المقام الأول الخاصية SPRING_BOOT_ADMIN_CLIENT_URL ، والاتصال بمكون Admin for Spring.
يقوم الربط أيضا بإدخال الخاصية التالية:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
تشير هذه الخاصية إلى أنه يجب على عميل مكون المسؤول ل Spring استخدام عنوان IP لمثيل تطبيق الحاوية عند الاتصال بخادم Admin for Spring.
اختياري: إلغاء ربط تطبيق الحاوية من مكون المسؤول ل Spring Java
-
Azure CLI - مدخل Microsoft Azure
لإزالة ربط من تطبيق حاوية، استخدم --unbind الخيار .
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
عرض لوحة المعلومات
هام
لعرض لوحة المعلومات، يحتاج حسابك على الأقل إلى Microsoft.App/managedEnvironments/write الدور في مورد البيئة المدارة. يمكنك تعيين Owner دور أو Contributor على المورد بشكل صريح. يمكنك أيضا اتباع الخطوات لإنشاء تعريف دور مخصص وتعيينه إلى حسابك.
إشعار
لوحة المعلومات غير متوفرة في Azure التي تديرها 21Vianet.
إنشاء تعريف الدور المخصص.
az role definition create --role-definition '{ "Name": "<ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'تأكد من استبدال العناصر النائبة بين الأقواس
<>بقيمك.تعيين الدور المخصص إلى حسابك على مورد البيئة المدارة.
احصل على معرف المورد للبيئة المدارة:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)تعيين الدور إلى حسابك.
قبل تشغيل هذا الأمر، استبدل العنصر النائب - كما هو موضح بواسطة الأقواس
<>- بمعرف المستخدم أو الخدمة الأساسي أو اسم الدور.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_IDإشعار
<USER_OR_SERVICE_PRINCIPAL_ID>يجب أن تكون القيمة هي الهوية التي تستخدمها للوصول إلى مدخل Microsoft Azure.<ROLE_NAME>القيمة هي الاسم الذي قمت بتعيينه في الخطوة 1.احصل على عنوان URL للوحة معلومات المسؤول ل Spring.
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsvيقوم هذا الأمر بإرجاع عنوان URL الذي يمكنك استخدامه للوصول إلى لوحة معلومات المسؤول ل Spring. باستخدام لوحة المعلومات، يمكنك أيضا رؤية تطبيق الحاوية، كما هو موضح في لقطة الشاشة التالية.
تنظيف الموارد
تؤثر الموارد التي تقوم بإنشائها في هذا البرنامج التعليمي على فاتورة Azure الخاصة بك. إذا كنت لا تخطط لاستخدام هذه الخدمات على المدى الطويل، فقم بتشغيل الأمر التالي لإزالة كل ما قمت بإنشائه في هذا البرنامج التعليمي.
az group delete --resource-group $RESOURCE_GROUP
Dependency
عند استخدام مكون المسؤول في تطبيق الحاوية الخاص بك، أضف التبعية التالية في ملف pom.xml الخاص بك. استبدل رقم الإصدار بأحدث إصدار متوفر على مستودع Maven.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
إشعار
لا تحتاج إلى إضافة تبعية عميل بدء تشغيل المسؤول لمسؤول Spring Boot إذا قمت بتمكين عامل Java في تطبيق الحاوية الخاص بك عن طريق تشغيل الأمر التالي في Azure CLI:
az containerapp update --enable-java-agent \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME
خصائص قابلة للتكوين
بدءا من Spring Boot 2، لا يتم عرض نقاط النهاية بخلاف health ولا info يتم كشفها بشكل افتراضي. يمكنك عرضها عن طريق إضافة التكوين التالي في ملف application.properties.
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
قائمة التكوين المسموح بها لمسؤولك ل Spring
توضح القائمة التالية تفاصيل خصائص مكون المسؤول التي يمكنك تكوينها لتطبيقك. لمزيد من المعلومات، راجع مسؤول Spring Boot.
| اسم الخاصية | الوصف | القيمة الافتراضية |
|---|---|---|
spring.boot.admin.server.enabled |
تمكين خادم مسؤول Spring Boot. | true |
spring.boot.admin.context-path |
بادئة المسار حيث يتم عرض الأصول الثابتة لخادم المشرف وواجهة برمجة التطبيقات. بالنسبة إلى Dispatcher-Servlet. | |
spring.boot.admin.monitor.status-interval |
الفاصل الزمني بالمللي ثانية للتحقق من حالة المثيلات. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
عمر الحالة بالمللي ثانية. لا يتم تحديث الحالة طالما لم تنته صلاحية الحالة الأخيرة. | 10,000 مللي ثانية |
spring.boot.admin.monitor.info-interval |
الفاصل الزمني بالمللي ثانية للتحقق من معلومات المثيلات. | 1m |
spring.boot.admin.monitor.info-lifetime |
مدة بقاء المعلومات بالدقائق. لا يتم تحديث المعلومات طالما لم تنته صلاحية المعلومات الأخيرة. | 1m |
spring.boot.admin.monitor.default-timeout |
المهلة الافتراضية عند تقديم الطلبات. يمكن تجاوز القيم الفردية لنقاط نهاية معينة باستخدام spring.boot.admin.monitor.timeout.*. |
10,000 |
spring.boot.admin.monitor.timeout.* |
أزواج قيمة المفتاح مع المهلة لكل endpointId. |
الإعدادات الافتراضية للقيمة default-timeout . |
spring.boot.admin.monitor.default-retries |
العدد الافتراضي لإعادة المحاولة للطلبات الفاشلة. لا تتم إعادة محاولة الطلبات التي تعدل البيانات (PUT، POST، PATCH، DELETE). يمكن تجاوز القيم الفردية لنقاط نهاية معينة باستخدام spring.boot.admin.monitor.retries.*. |
0 |
spring.boot.admin.monitor.retries.* |
أزواج قيمة المفتاح مع عدد مرات إعادة المحاولة لكل endpointId. لا تتم إعادة محاولة الطلبات التي تعدل البيانات (PUT، POST، PATCH، DELETE). |
الإعدادات الافتراضية للقيمة default-retries . |
spring.boot.admin.metadata-keys-to-sanitize |
قيم بيانات التعريف للمفاتيح المطابقة لأنماط regex هذه المستخدمة للتعقيم في جميع مخرجات JSON. بدءا من Spring Boot 3، يتم إخفاء جميع قيم المحرك بشكل افتراضي. لمزيد من المعلومات حول كيفية تكوين عملية إلغاء التعميم، راجع تعقيم القيم الحساسة. | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
بالنسبة لتطبيقات عميل Spring Boot 1.x، يقوم Spring Boot Admin بفحص نقاط النهاية المحددة باستخدام OPTIONS طلب. إذا كان المسار يختلف عن المعرف، يمكنك تحديد هذه القيمة ك id:path - على سبيل المثال، health:ping. |
"health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents" |
spring.boot.admin.instance-proxy.ignored-headers |
الرؤوس التي يجب عدم إعادة توجيهها عند تقديم طلبات إلى العملاء. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
عنوان الصفحة المعروضة. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
مدة الاستقصاء بالمللي ثانية لجلب بيانات ذاكرة التخزين المؤقت الجديدة. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
مدة الاستقصاء بالمللي ثانية لجلب بيانات مصدر بيانات جديدة. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
مدة الاستقصاء بالمللي ثانية لجلب بيانات gc جديدة. | 2500 |
spring.boot.admin.ui.poll-timer.process |
مدة الاستقصاء بالمللي ثانية لجلب بيانات عملية جديدة. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
مدة الاستقصاء بالمللي ثانية لجلب بيانات ذاكرة جديدة. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
مدة الاستقصاء بالمللي ثانية لجلب بيانات مؤشرات الترابط الجديدة. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
مدة الاستقصاء بالمللي ثانية لإحضار بيانات logfile جديدة. | 1000 |
spring.boot.admin.ui.enable-toasts |
تمكين الإعلامات المنبثقة أو تعطيلها. | false |
spring.boot.admin.ui.title |
قيمة عنوان نافذة المستعرض. | "" |
spring.boot.admin.ui.brand |
يتم عرض تعليمة HTML البرمجية في رأس التنقل والإعدادات الافتراضية لتسمية مسؤول Spring Boot. بشكل افتراضي، يتبع شعار Spring Boot Admin اسمه. | "" |
management.scheme |
القيمة التي يتم استبدالها في عنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل. | |
management.address |
القيمة التي يتم استبدالها في عنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل. | |
management.port |
القيمة التي يتم استبدالها في عنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل. | |
management.context-path |
القيمة التي يتم إلحاقها بعنوان URL للخدمة المستخدمة للوصول إلى نقاط نهاية وحدة التشغيل. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
القيمة التي يتم إلحاقها بعنوان URL للخدمة المستخدمة للتحقق من الصحة. تم تجاهله بواسطة EurekaServiceInstanceConverter. |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
DiscoveryClient تمكين الدعم لخادم المسؤول. |
true |
spring.boot.admin.discovery.converter.management-context-path |
القيمة التي يتم إلحاقها بالخدمة service-url المكتشفة عند management-url تحويل القيمة بواسطة DefaultServiceInstanceConverter. |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
القيمة التي يتم إلحاقها بالخدمة management-url المكتشفة عند health-url تحويل القيمة بواسطة DefaultServiceInstanceConverter. |
"health" |
spring.boot.admin.discovery.ignored-services |
الخدمات التي يتم تجاهلها عند استخدام الاكتشاف وغير المسجلة كتطبيق. يدعم أنماطا بسيطة مثل "foo*"و "*bar"و."foo*bar*" |
|
spring.boot.admin.discovery.services |
الخدمات المضمنة عند استخدام الاكتشاف والمسجلة كتطبيق. يدعم أنماطا بسيطة مثل "foo*"و "*bar"و."foo*bar*" |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
يتم تجاهل الخدمات إذا كانت تحتوي على عنصر بيانات تعريف واحد على الأقل يطابق الأنماط في هذه القائمة. يدعم أنماطا مثل "discoverable=false". |
|
spring.boot.admin.discovery.instances-metadata |
يتم تضمين الخدمات إذا كانت تحتوي على عنصر بيانات تعريف واحد على الأقل يطابق الأنماط في القائمة. يدعم أنماطا مثل "discoverable=true". |
التكوينات الشائعة
- تسجيل التكوينات ذات الصلة:
- logging.level.*
- logging.group.*
- أي تكوينات أخرى ضمن مساحة الاسم
logging.*. على سبيل المثال، لا تستخدمlogging.fileلكتابة ملفات السجل.
القيود
- لا تتوفر لوحة معلومات مسؤول Spring Boot في Azure التي يتم تشغيلها بواسطة 21Vianet.