
يمكنك التحكم في تطبيقات Spring Boot وإدارتها من خلال واجهة مستخدم لطيفة أعلى نقاط النهاية لـ Spring Boot Actuator.
محرك التمهيد الربيع
المشغل عبارة عن وحدة Spring التمهيد التي تضيف نقاط REST / JMX النهائية إلى التطبيق الخاص بك حتى تتمكن من تتبعها وإدارتها بسهولة في بيئة الإنتاج. تقدم نقاط النهاية الفحوصات الصحية ، والرصد المتري ، والوصول إلى السجلات ، ومقالب الخيوط ، ومقالب الكومة ، والمعلومات البيئية ، وأكثر من ذلك. تحدث المؤلف بالتفصيل عن المشغل في المقالة التالية:
المحرك: مراقبة إنتاج الحذاء الربيعي وإدارته
مراقبة وإدارة تطبيقك قيد التشغيل باستخدام Spring Boot Actuator 2.x. جمع المقاييس أو التحقق من صحة التطبيق.
ملاحظة من قبل المترجم. هناك مقال مماثل عن حبري:
مقدمة في التمهيد الحذاء الربيعالربيع التمهيد المشرف
يعد المحرك أداة رائعة وقوية ، بالإضافة إلى ذلك ، فإن نقاط النهاية الخاصة به سهلة الاستخدام وسهلة الاستخدام مع تطبيق آخر - يمكنك فقط استخدام مكالمة خدمة REST. ومع ذلك ، فإن استخدام مشغل ليست مريحة للغاية بالنسبة للشخص. من الأسهل بالنسبة للمستخدم أن يتمتع بواجهة مستخدم جيدة يمكنك استخدامها لعرض جميع بيانات المراقبة وإدارة تطبيقك. هذا هو بالضبط ما يخدم Spring Boot Admin. إنه يوفر لك طبقة واجهة مستخدم مريحة أعلى نقاط النهاية في المحرك مع بعض الميزات الإضافية أعلى ذلك.
Spring Boot Admin ليست وحدة نمطية مقدمة من فريق Spring ، لقد تم إنشاؤها بواسطة شركة تدعى
Codecentric . ومع ذلك ، فإن
كودها متاح للجمهور على
جيثب وهو مجاني.
العميل والخادم
على عكس المشغل ، يتكون Spring Boot Admin من جزأين - العميل والخادم.
يحتوي جزء الخادم على واجهة مستخدم المسؤول ويعمل بشكل مستقل عن التطبيقات المراقبة. يوجد جزء العميل في التطبيق الذي يتم مراقبته ، والذي يتم تسجيله في جزء الخادم.
وبالتالي ، حتى إذا كان تطبيقنا لا يعمل أو لا يعمل بشكل صحيح ، فإن خادم المراقبة لا يزال يعمل. تخيل الآن أن لديك العديد من التطبيقات (مثل Spring Boot microservices) ، ويمكن لكل منها العمل في عدة حالات. من خلال مراقبة المشغل التقليدية ، يعد هذا أمرًا صعبًا ، نظرًا لأنك تحتاج إلى الوصول إلى كل منها على حدة ، وتحتاج إلى تتبع عدد الحالات ومكان تشغيلها.
عند استخدام Spring Boot Admin ، يتم تسجيل كل مثيل للتطبيق المراقبة (العميل) على الخادم بعد إطلاقه. ثم لديك نقطة واحدة (خادم المسؤول) حيث يمكنك التحقق من كل منهم.

شفرة المصدر
يمكن العثور على الكود المصدري للتطبيق النهائي في
مستودع جيثب هذا .
إعداد الخادم
دعونا أولاً نلقي نظرة على كيفية تكوين Spring Boot Admin Server. لنبدأ بتطبيق Spring Boot الجديد. يمكنك إنشائه بسهولة باستخدام
Spring Initializr . تأكد من تمكين وحدة
الويب .
بعد إنشاء المشروع ، أول ما نحتاج إليه هو إضافة تبعية Spring Boot Admin Server:
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.1.0</version> </dependency>
لاحظ أنه على الرغم من أن هذا المشروع لم يتم إنشاؤه بواسطة Pivotal ، يمكنك العثور على وحدات العميل والخادم الخاصة ببرنامج Spring Boot Admin في Spring Initializr. بعد ذلك ، نحتاج إلى تمكين "خادم المسؤول" عن طريق التعليق التوضيحي لفئة التطبيق الرئيسية الخاصة بنا باستخدام التعليقات التوضيحية
EnableAdminServer :

هذا كل شيء. يمكنك الآن بدء تشغيل التطبيق الخاص بك وبعد فتح الصفحة ، سترى مثل هذه الشاشة:

الخادم قيد التشغيل ، لكن العملاء لم يتم تسجيلهم بعد. دعونا إصلاحه.
إعداد العميل
كما هو الحال مع إعداد الخادم ، تتمثل الخطوة الأولى في إضافة التبعية الصحيحة إلى تطبيق موجود:
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.1.0</version> </dependency>
فأنت بحاجة إلى تحديد عنوان URL الذي يتم تشغيل خادم المسؤول عليه. أضف هذا السطر إلى ملف
application.properties الخاص بك:
spring.boot.admin.client.url=http:
مضيفا المحرك
يجب أن تكون قادرًا الآن على بدء كل من العميل والخادم. فقط تأكد من عدم وجود تعارض في المنافذ ، حيث يستخدم كلا التطبيقين 8080 افتراضيًا. لأغراض الاختبار ، يمكنك تعيين
server.port = 0 في
التطبيق الخاص بك.
الخصائص بحيث يستخدم العميل منفذ عشوائي عند بدء التشغيل. وبالتالي ، يمكنك اختبار إطلاق مثيلات متعددة تعمل على منافذ مختلفة.
عند فتح واجهة مستخدم Admin Server ، سترى التطبيق الخاص بك. عند النقر فوق اسم التطبيق ، يجب أن تظهر صفحة تحتوي على معلومات حول التطبيق.

إذا رأيت شاشة شبيهة بالشاشة أعلاه مع الحد الأدنى من المعلومات ، فهذا يعني أن مشروعك لا يحتوي على مشغل. تذكر أن Spring Boot Admin يستخدم نقاط النهاية الخاصة بـ Actuator أسفل الغطاء. لحسن الحظ ، تحتاج فقط إلى إضافة تبعية بسيطة ، والتكوين التلقائي يعتني الباقي.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
ومع ذلك ، لا يتم عرض معظم نقاط النهاية افتراضيًا في المحرك. تحتاج إلى تغيير التكوين الخاص بك في
application.properties لفضح لهم:
management.endpoints.web.exposure.include=*
بعد توفير نقاط نهاية المشغل ، يجب أن ترى المزيد من المعلومات في واجهة المشرف:

يمكن العثور على دليل تفصيلي حول كيفية تكوين Spring Boot Actuator
في هذه المقالة .
ملاحظة من قبل المترجم. وفي
مقال عن حبري .
سلامة
الآن بعد أن أصبح كل شيء يعمل ، نحتاج إلى التأكد من أن نقاط النهاية الخاصة بالمشغل وواجهة الإدارة ليست في متناول الجميع.
سلامة العملاء
إذا كنت تستخدم Spring Security بالفعل ، فلن يعمل ما سبق لك ، لأن نقاط نهاية محرك الأقراص محمية بشكل افتراضي ولن يتمكن خادم المسؤول من الوصول إليها. إذا لم تكن تستخدم Spring Security بالفعل ، فأنت بحاجة أولاً إلى إضافة التبعية:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
لأغراض الاختبار ، يمكنك تعطيل أمان نقطة نهاية المشغّل مؤقتًا باستخدام
management.security.enabled = false . ومع ذلك ، نريد تمكين الأمن. إذا كنت تستخدم المصادقة الأساسية ، يمكنك ببساطة تحديد اسم المستخدم وكلمة المرور في ملف الخصائص. سيتم استخدام بيانات الاعتماد هذه بواسطة خادم المسؤول للمصادقة عند نقاط النهاية لمحرك العميل:
spring.boot.admin.client.instance.metadata.user.name=joe spring.boot.admin.client.instance.metadata.user.password=my-secret-password
بشكل افتراضي ، ما لم يتم تكوينه بطريقة أخرى ، يستخدم Spring Boot افتراضيًا مستخدم
المستخدم وكلمة المرور التي تم إنشاؤها تلقائيًا في كل مرة يتم فيها تشغيل التطبيق. يمكنك التحقق من كلمة المرور في وحدة التحكم أثناء بدء التشغيل. إذا كنت ترغب في تحديد اسم المستخدم وكلمة المرور المطلوبين لتطبيقك صراحة ، يمكنك تحديدهما في عقاراتك:
spring.security.user.name=joe spring.security.user.password=my-secret-password
أمان الخادم
كما هو الحال مع العميل ، نحتاج إلى إضافة تبعية Spring Security:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
الآن دعونا نقوم بتكوين اسم المستخدم وكلمة المرور المطلوبة لتسجيل الدخول إلى خادم المسؤول في
التطبيق الخاص بك.
الخصائص :
spring.security.user.name=admin spring.security.user.password=admin-password
الآن على عميلك تحتاج أيضًا إلى إضافة بيانات الاعتماد هذه ، وإلا فلن يتمكن من التسجيل على الخادم:
spring.boot.admin.client.username=admin spring.boot.admin.client.password=admin-password
عاد الآن إلى جانب الخادم. آخر ما نحتاج إليه هو إضافة تهيئة Spring Security لحماية واجهة مستخدم المسؤول:
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl("/"); http.authorizeRequests() .antMatchers("/assets/**").permitAll() .antMatchers("/login").permitAll() .anyRequest().authenticated().and() .formLogin().loginPage("/login") .successHandler(successHandler).and() .logout().logoutUrl("/logout").and() .httpBasic().and() .csrf() .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) .ignoringAntMatchers( "/instances", "/actuator/**" ); } }
سيوفر هذا الوصول إلى واجهة المسؤول فقط للمستخدمين المصادق عليهم باستخدام مصادقة HTTP الأساسية لتسجيل الدخول. صفحة تسجيل الدخول نفسها وموارد واجهة المستخدم الثابتة ، بما في ذلك javascript و HTML و CSS ، مفتوحة. خلاف ذلك ، لن تتمكن من تسجيل الدخول. ثم هناك حماية ضد تزوير طلبات المواقع المشتركة (CSRF ، طلب تزوير عبر المواقع) بناءً على ملفات تعريف الارتباط. يمكنك أن ترى أن بعض المسارات يتم تجاهلها في حماية CSRF - وذلك لأن Admin Server
ليس لديه الدعم المناسب في الوقت الحالي.
الآن بعد إعادة التشغيل ، سترى شاشة تسجيل دخول جميلة تحمي خادم المسؤول:

اكتشاف الغيمة
ليس عميل Spring Boot Admin هو الطريقة الوحيدة لتسجيل تطبيقاتك على الخادم. يدعم خادم الإدارة أيضًا خدمة Spring Cloud Service Discovery. يمكنك قراءة المزيد في
الوثائق الرسمية أو في مقال "
Spring Cloud Discovery مع Spring Boot Admin ".
إشعار
بمجرد بدء المراقبة ، تريد أن يتم إعلامك عندما يحدث خطأ ما. والخبر السار هو أن Spring Admin يوفر مجموعة واسعة من خيارات الإخطار.
إذا كانت هذه هي المرة الأولى التي تزور فيها صفحة Admin Server ، فإنها تطلب الإذن لعرض إشعارات الدفع على جهاز الكمبيوتر الخاص بك. كلما حدثت مشكلة ، ستتلقى رسالة منبثقة.

الإخطارات الأخرى تحتاج إلى إعداد سهل. هذا يعني عادةً توفير عدد قليل من الإدخالات في
application.properties الخاص بك. الخدمات التالية مدعومة حاليًا:
إعداد إشعارات البريد الإلكتروني
إذا كنت ترغب في تمكين إشعارات البريد الإلكتروني ، فستحتاج إلى إضافة تبعية Spring Spring إلى جانب الخادم الخاص بك:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
فأنت بحاجة إلى تحديد خادم SMTP الخاص بك ، والذي سيتم استخدامه لإرسال الإشعارات وبيانات الاعتماد عن طريق البريد الإلكتروني. تحديث
التطبيق الخاص بك. خصائص خادم المسؤول الخاص بك.
spring.mail.host=smtp.foo.com spring.mail.username=smtp-server-user spring.mail.password=smtp-server-password
ثم تحتاج إلى تحديد المستلمين والمرسلين.
# Sender email address spring.boot.admin.notify.mail.from="Spring Boot Admin <noreply@foo.com>" # Comma-delimited list of recipient email addresses spring.boot.admin.notify.mail.to=alice@foo.com,bob@bar.com # Comma-delimited list of carbon copy recipient email addresses spring.boot.admin.notify.mail.cc=joe@foo.com
استنتاج
يوفر Spring Boot Admin طبقة واجهة مستخدم مريحة ومفيدة أعلى نقاط النهاية الخاصة بالمحرك. علاوة على ذلك ، يسمح لك بالتحكم المركزي في تطبيقات متعددة مع مثيلات متعددة ، والتي لا تقدر بثمن عند العمل في السحابة ومع الخدمات المصغرة. ومع ذلك ، تأكد من أنك تحمي كلاً من العميل والخادم بشكلٍ كافٍ. لمزيد من المعلومات ، راجع
الوثائق الرسمية .