مراقبة تطبيقات Kotlin: المقاييس والتنبيهات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مراقبة تطبيقات Kotlin: المقاييس والتنبيهات



في تطوير البرمجيات الحديثة، أصبحت المراقبة جزءًا لا يتجزأ من بيئة الإنتاج. بالنسبة لتطبيقات Kotlin التي تعمل على JVM، تتيح المراقبة المُهيأة بشكل صحيح ليس فقط تتبع حالة النظام في الوقت الفعلي، بل أيضًا منع الحوادث قبل أن تؤثر على المستخدمين. في هذه المقالة، سننظر في كيفية تنظيم جمع المقاييس وإعداد التنبيهات لتطبيقات Kotlin باستخدام أدوات حديثة مثل Micrometer و Prometheus.



لماذا نحتاج إلى مراقبة تطبيقات Kotlin؟



Kotlin، كونه لغة تعمل فوق JVM، يرث جميع إمكانيات المراقبة من نظام Java البيئي، لكنه يضيف ميزاته الخاصة — coroutines، ووظائف التوسعة، و null-safety. تساعد المراقبة في الإجابة على ثلاثة أسئلة رئيسية:



  • ماذا يحدث الآن؟ — الحمل الحالي، عدد الطلبات، استخدام الذاكرة.
  • ماذا حدث من قبل؟ — البيانات التاريخية لتحليل الاتجاهات وإيجاد الاختناقات.
  • ما الذي قد يسير بشكل خاطئ؟ — التنبؤ بالمشكلات بناءً على المقاييس.


بدون مراقبة، يعمل أي تطبيق "بشكل أعمى"، وحتى تسرب الذاكرة البسيط يمكن أن يؤدي إلى توقف الخدمة.



المقاييس الرئيسية لتطبيقات Kotlin



قبل إعداد الأدوات، من المهم فهم المقاييس الحيوية لتطبيقات JVM على Kotlin.



مقاييس JVM

هذه مجموعة أساسية تُظهر صحة الآلة الافتراضية:

  • استخدام ذاكرة heap و non-heap
  • عدد الخيوط (النشطة، الخفية، المحظورة)
  • وقت GC (Garbage Collection) وتكرار عمليات التجميع
  • تحميل CPU


مقاييس الأعمال

تعكس عمل التطبيق نفسه:

  • عدد طلبات HTTP (RPS — requests per second)
  • وقت الاستجابة (latency p50, p95, p99)
  • عدد الأخطاء (4xx, 5xx)
  • عمق قوائم الانتظار (إذا تم استخدام coroutines أو قوائم انتظار الرسائل)


مقاييس coroutines

نظرًا لأن Kotlin يستخدم coroutines بنشاط، فمن المفيد مراقبة:

  • عدد coroutines النشطة
  • وقت تنفيذ coroutines
  • عدد coroutines الملغاة


أدوات المراقبة: Micrometer + Prometheus



المكدس القياسي لمراقبة تطبيقات Kotlin يشمل Micrometer (مكتبة لجمع المقاييس) و Prometheus (نظام تخزين وإشعارات). يعمل Micrometer كواجهة أمامية تدعم العديد من الخلفيات (Prometheus, Datadog, Graphite وغيرها)، لكن Prometheus هو الخيار الأكثر شيوعًا.



إضافة التبعيات

لـ Gradle (build.gradle.kts):

dependencies {    implementation("io.micrometer:micrometer-core:1.12.0")    implementation("io.micrometer:micrometer-registry-prometheus:1.12.0")    implementation("io.ktor:ktor-server-metrics-micrometer:2.3.7")}


إعداد جمع المقاييس في Ktor

لننظر إلى مثال إعداد لتطبيق ويب على Ktor — إطار العمل الشائع لـ Kotlin:

import io.micrometer.prometheus.PrometheusMeterRegistryimport io.micrometer.prometheus.PrometheusConfigimport io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.routing.*import io.ktor.server.response.*import io.ktor.server.metrics.micrometer.*

fun main() { val meterRegistry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT)

embeddedServer(Netty, port = 8080) { install(MicrometerMetrics) { registry = meterRegistry // نضيف الوسوم القياسية meterRegistry.config().commonTags("application", "my-kotlin-app") }

routing { get("/metrics") { call.respond(meterRegistry.

المدونات

توصيات الكتب