Spring Boot Actuator هو مشروع فرعي من Spring Boot يوفر ميزات جاهزة للإنتاج لمساعدتك في مراقبة تطبيقك وإدارته. فهو يوفر مجموعة من نقاط النهاية المضمنة التي تتيح لك الحصول على رؤى حول سلامة تطبيقك ومقاييسه وبيئته، بالإضافة إلى التحكم فيه ديناميكيًا.
يوفر Spring Boot Actuator العديد من نقاط النهاية الجاهزة التي يمكن استخدامها لمراقبة التطبيق الخاص بك والتفاعل معه. يمكن الوصول إلى نقاط النهاية هذه عبر HTTP أو JMX أو باستخدام Spring Boot Admin.
لاستخدام Actuator في تطبيق Spring Boot، تحتاج إلى إضافة تبعية Actuator إلى ملف pom.xml الخاص بك:
org.springframework.boot spring-boot-starter-actuator
إذا كنت تستخدم Gradle، أضف ما يلي إلى ملف build.gradle الخاص بك:
implementation 'org.springframework.boot:spring-boot-starter-actuator'
افتراضيًا، يتم تمكين عدد قليل فقط من نقاط النهاية. يمكنك تمكين نقاط نهاية إضافية في ملف application.yml الخاص بك:
management: endpoints: web: exposure: include: "*" # This exposes all available endpoints endpoint: health: show-details: always # Show detailed health information
بمجرد إعداد Actuator، يمكنك الوصول إلى نقاط النهاية المختلفة التي يوفرها. فيما يلي بعض نقاط النهاية شائعة الاستخدام:
توفر نقطة النهاية /actuator/health معلومات حول صحة التطبيق الخاص بك:
GET http://localhost:8080/actuator/health
مثال للرد:
{ "status": "UP", "components": { "db": { "status": "UP", "details": { "database": "H2", "result": 1 } }, "diskSpace": { "status": "UP", "details": { "total": 499963174912, "free": 16989374464, "threshold": 10485760, "exists": true } } } }
توفر نقطة النهاية /actuator/metrics مقاييس مختلفة تتعلق بتطبيقك:
GET http://localhost:8080/actuator/metrics
مثال للرد:
{ "names": [ "jvm.memory.used", "jvm.gc.pause", "system.cpu.usage", "system.memory.usage", "http.server.requests" ] }
للحصول على تفاصيل مقياس محدد:
GET http://localhost:8080/actuator/metrics/jvm.memory.used
مثال للرد:
{ "name": "jvm.memory.used", "description": "The amount of used memory", "baseUnit": "bytes", "measurements": [ { "statistic": "VALUE", "value": 5.1234567E7 } ], "availableTags": [ { "tag": "area", "values": [ "heap", "nonheap" ] }, { "tag": "id", "values": [ "PS Eden Space", "PS Survivor Space", "PS Old Gen", "Metaspace", "Compressed Class Space" ] } ] }
توفر نقطة النهاية /actuator/env معلومات حول خصائص البيئة:
GET http://localhost:8080/actuator/env
مثال للرد:
{ "activeProfiles": [], "propertySources": [ { "name": "systemProperties", "properties": { "java.runtime.name": { "value": "Java(TM) SE Runtime Environment" }, "java.vm.version": { "value": "25.181-b13" } } }, { "name": "systemEnvironment", "properties": { "PATH": { "value": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }, "HOME": { "value": "/root" } } } ] }
توفر نقطة النهاية /actuator/info معلومات حول التطبيق:
GET http://localhost:8080/actuator/info
لتخصيص المعلومات، قم بإضافة خصائص في application.yml الخاص بك:
info: app: name: My Spring Boot Application description: This is a sample Spring Boot application version: 1.0.0
افتراضيًا، يمكن الوصول إلى جميع نقاط نهاية المشغل بدون مصادقة. لتأمين نقاط النهاية هذه، يمكنك استخدام Spring Security. أضف تبعية Spring Security إلى pom.xml الخاص بك:
org.springframework.boot spring-boot-starter-security
قم بتحديث application.yml الخاص بك لتقييد الوصول:
management: endpoints: web: exposure: include: "*" # Expose all endpoints endpoint: health: show-details: always # Show detailed health information spring: security: user: name: admin # Default username password: admin # Default password # Restrict actuator endpoints to authenticated users management: endpoints: web: exposure: include: "*" endpoint: health: show-details: always security: enabled: true roles: ACTUATOR
إنشاء فئة تكوين الأمان لتكوين أمان HTTP:
import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/actuator/**").hasRole("ACTUATOR") .anyRequest().authenticated() .and() .httpBasic(); } }
باستخدام هذا التكوين، يمكن فقط للمستخدمين المصادقين الذين لديهم دور ACTUATOR الوصول إلى نقاط نهاية Actuator.
يمكنك إنشاء نقاط نهاية مشغل مخصصة لعرض معلومات إضافية أو وظائف خاصة بتطبيقك. فيما يلي مثال لإنشاء نقطة نهاية مخصصة:
import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.stereotype.Component; @Endpoint(id = "custom") @Component public class CustomEndpoint { @ReadOperation public String customEndpoint() { return "Custom Actuator Endpoint"; } }
الوصول إلى نقطة النهاية المخصصة الخاصة بك على:
GET http://localhost:8080/actuator/custom
يوفر Spring Boot Actuator مجموعة قوية من الأدوات لمساعدتك في مراقبة التطبيق الخاص بك وإدارته. من خلال الاستفادة من نقاط النهاية المضمنة والقدرة على إنشاء نقاط نهاية مخصصة، يمكنك الحصول على رؤى قيمة حول أداء التطبيق الخاص بك وسلامته. قم بتأمين نقاط النهاية هذه باستخدام Spring Security للتأكد من أن المستخدمين المصرح لهم فقط هم من يمكنهم الوصول، وسيكون لديك تطبيق جاهز للإنتاج يسهل إدارته ومراقبته.
يعد Actuator جزءًا أساسيًا من أي تطبيق Spring Boot، مما يتيح لك إبقاء إصبعك على اطلاع دائم ببيئة تشغيل التطبيق الخاص بك والاستجابة بسرعة للمشكلات عند ظهورها. ابدأ باستخدام Spring Boot Actuator اليوم لتعزيز إمكانية مراقبة تطبيقك وقدراته التشغيلية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3