Spring Boot Actuator هو مُكوِّن فرعي من Spring Boot، يُوفّر خصائص مُراقبة وإدارة تطبيقات Spring Boot قيد التشغيل. يسمح لكَ بِمُتابعة ومُراقبة تطبيقك، وجمع البيانات، وحركة المرور، وحالة قاعدة البيانات دون الحاجة إلى إضافة أيّة أسطر برمجية.
بمجرد تكوين مشروعك باستخدام Spring Actuator، ستتوفر لديكَ نقاط نهاية مُعيّنة لإدارة ومُتابعة تطبيقك. في حال احتجتَ إلى ضوابط إضافية، يُمكنكَ إضافة نقاط نهاية جديدة.
تكوين Actuator في Spring Boot
لاستخدام Actuator، ما عليكَ سوى إضافة تبعية spring-boot-starter-actuator
إلى ملف pom.xml
(Maven) أو build.gradle
(Gradle).
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
بعد إضافة التبعية وإعادة تشغيل تطبيقك، سيتم تفعيل Actuator.
يُوفّر Spring Boot Actuator نقاط نهاية للوصول إلى معلومات حول تطبيقك. يُمكن الوصول إلى هذه النقاط عبر HTTP.
بعض نقاط النهاية المهمة تتضمن:
- /health: تُوفّر معلومات حول “صحة” تطبيقك، مثل حالة اتصال قاعدة البيانات. لا تتطلب هذه النقطة مصادقة افتراضيًا.
- /info: تعرض معلومات مُخصصة حول تطبيقك، مثل الإصدار والوصف.
- /metrics: تُوفّر معلومات “قياسات” تطبيقك في الوقت الحالي، مثل استخدام الذاكرة وعدد المُعالجات.
- /loggers: تعرض وتسمح بتغيير إعدادات سجلّات تطبيقك.
يتم جمع معلومات حول حالة التطبيق من خلال beans التي تُطبّق واجهة HealthIndicator
المُكوّنة في السياق.
على سبيل المثال، قد تُعيد نقطة النهاية /health
معلومات بسيطة مثل:
{
"status": "UP"
}
بالإضافة إلى استخدام نقاط النهاية الافتراضية، يُمكنكَ تخصيص وإنشاء نقاط نهاية جديدة. يشمل التخصيص تغيير id
، وحالة enabled
(تفعيل/تعطيل)، و sensitive
(درجة الحساسية – هل تحتاج إلى مصادقة أم لا) لنقطة النهاية.
لإنشاء نقطة نهاية جديدة، يجب عليكَ تنفيذ واجهة Endpoint<T>
وتحديد منطق المُعالجة لتلك النقطة.
يدعم Spring Boot Actuator العديد من التقنيات المُختلفة، بما في ذلك Spring MVC و JMX. كما أنه يتكامل مع Spring Security لتأمين الوصول إلى نقاط النهاية. يُعد تكوين الأمان لـ Actuator أمرًا بالغ الأهمية لمنع الوصول غير المُصرّح به إلى معلومات تطبيقك الحساسة.
يُمكنكَ تكوين نقاط النهاية من خلال ملفات الخصائص أو YAML. على سبيل المثال، لتغيير مُعرّف نقطة النهاية /beans
إلى /springbeans
والسماح بالوصول دون مصادقة:
endpoints.beans.id=springbeans
endpoints.beans.sensitive=false
endpoints.beans.enabled=true