المراقبة في Spring Boot
يجب أن يفعل تطبيق الإنتاج أكثر من مجرد التشغيل؛ بل يجب أن يكون قابلاً للمراقبة وسهل الإصلاح عند حدوث فشل. أنت بحاجة إلى فحوصات الحالة (health checks)، والمقاييس (metrics)، والسجلات (logs)، وإجراءات واضحة للتعامل مع الحوادث.
يستخدم Spring Boot أداة Actuator لتوفير هذه الميزات. توفر لك Actuator نقاط نهاية (endpoints) مثل health و metrics و info. يمكنك عرض هذه البيانات عبر HTTP أو JMX.
المجالات الرئيسية للمراقبة:
• التوافر: تحقق من وقت التشغيل (uptime)، والجاهزية (readiness)، والحيوية (liveness). • الأداء: تتبع أوقات الاستجابة، وزمن التأخير (latency)، ومعدل الإنتاجية (throughput). • الأخطاء: راقب أخطاء HTTP 4xx/5xx والرسائل الفاشلة. • JVM: راقب الـ heap، والذاكرة، والمعالج (CPU)، والخيوط (threads). • قاعدة البيانات: تتبع مجموعات الاتصال (connection pools) والاستعلامات البطيئة. • Kafka: راقب تأخر المستهلك (consumer lag) ومعدلات إعادة المحاولة.
جمع المقاييس
يستخدم Spring Boot أداة Micrometer لجمع المقاييس. يمكنك استخدام سجل Prometheus لعرض هذه المقاييس. يتضمن الإعداد الشائع ما يلي:
Spring Boot App → Prometheus → Grafana
يتيح لك ذلك تصور بيانات التطبيق عبر لوحات التحكم (dashboards).
أفضل ممارسات تسجيل السجلات (Logging)
تساعدك السجلات في فهم ما حدث أثناء الفشل. استخدم تسجيل JSON المهيكل في بيئة الإنتاج لجعل السجلات قابلة للقراءة آلياً.
افعل:
- سجل معرفات الأعمال مثل orderId أو customerId.
- استخدم معرفات الارتباط (correlation IDs) لربط السجلات من طلب واحد.
- قم بتضمين تتبعات المكدس (stack traces) للاستثناءات.
- استخدم سجلات مهيكلة.
لا تفعل:
- لا تسجل كلمات المرور، أو الرموز (tokens)، أو البيانات الشخصية.
- لا تسجل الكثير من البيانات داخل الحلقات التكرارية (loops).
- لا تستخدم System.out.println.
- لا تخفِ الأخطاء باستخدام كتل catch فارغة.
الاستقرار التشغيلي
يعني الدعم التشغيلي الحفاظ على استقرار الخدمة بعد نشرها. يجب أن تركز على:
- دعم الحوادث للتحقيق في المشكلات.
- لوحات التحكم والتنبيهات لاكتشاف المشكلات مبكراً.
- أدلة التشغيل (Runbooks) لتوجيه خطوات الاسترداد.
- استراتيجيات التراجع (Rollback) للإصدارات الفاشلة.
خدمة Spring Boot القوية هي خدمة سهلة المراقبة، وسهلة التصحيح (debug)، وسهلة الاسترداد.
المصدر: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220