مراقبة تطبيقات Java: مراجعة للأدوات والمكتبات
في التطوير الحديث، أصبحت مراقبة تطبيقات Java ممارسة إلزامية. بدونها، من المستحيل فهم كيفية تصرف النظام تحت الحمل، وأين تظهر الاختناقات، وكيفية الاستجابة بسرعة للأعطال. في هذه المقالة، سنستعرض المكتبات والأدوات الرئيسية لجمع المقاييس والتتبع وتصور حالة تطبيقات Java: Micrometer وPrometheus Java Client وJMX وJava Flight Recorder.
1. Micrometer — واجهة موحدة للمقاييس
Micrometer هو المعيار الفعلي لجمع المقاييس في نظام Spring البيئي وخارجه. يوفر واجهة برمجة تطبيقات موحدة (API) يمكن استخدامها مع أنظمة خلفية مختلفة: Prometheus وDatadog وGraphite وInfluxDB وغيرها.
الإمكانيات الرئيسية:
- دعم العدادات (
Counter) والمؤقتات (Timer) والمدرجات التكرارية (Histogram) وأجهزة القياس (Gauge). - تكامل تلقائي مع Spring Actuator.
- إعداد مرن للعلامات (tags) لتصفية المقاييس.
مثال على استخدام Micrometer مع Prometheus:
// أضف التبعية في ملف pom.xml:// <dependency>// <groupId>io.micrometer</groupId>// <artifactId>micrometer-registry-prometheus</artifactId>// </dependency>
import io.micrometer.core.instrument.MeterRegistry;import io.micrometer.core.instrument.Counter;import io.micrometer.prometheus.PrometheusMeterRegistry;import io.micrometer.prometheus.PrometheusConfig;
public class MetricsExample { private final Counter requestCounter;
public MetricsExample() { PrometheusMeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT); requestCounter = Counter.builder("http.requests.total") .description("إجمالي طلبات HTTP") .tag("method", "GET") .register(registry); }
public void handleRequest() { requestCounter.increment(); }
public String scrapeMetrics() { return registry.scrape(); // يعيد المقاييس بتنسيق Prometheus }}يتيح Micrometer التبديل بسهولة بين أنظمة المراقبة دون تغيير الكود.
2. Prometheus Java Client — جمع مباشر للمقاييس
Prometheus Java Client هي المكتبة الرسمية لتصدير المقاييس بتنسيق Prometheus. إنها أقل تجريدًا من Micrometer، ولكنها تمنح تحكمًا كاملاً في جمع البيانات.
المكونات الرئيسية:
CollectorRegistry— سجل جميع المقاييس.CounterوGaugeوHistogramوSummary— أنواع المقاييس.- خادم HTTP مدمج لنقطة النهاية
/metrics.
مثال باستخدام خادم HTTP بسيط:
import io.prometheus.client.Counter;import io.prometheus.client.exporter.HTTPServer;import io.prometheus.client.hotspot.DefaultExports;
public class PrometheusExample { static final Counter requests = Counter.build() .name("requests_total") .help("إجمالي الطلبات.") .register();
public static void main(String[] args) throws Exception { DefaultExports.initialize(); // يضيف مقاييس JVM (الذاكرة، GC، الخيوط) HTTPServer server = new HTTPServer(8080); // نقطة النهاية /metrics
while (true) { requests.inc(); Thread.sleep(1000); } }}المكتبة مثالية للحالات التي تحتاج فيها إلى إعداد المراقبة بسرعة دون تبعيات إضافية.
3. JMX (Java Management Extensions)
JMX هي آلية مدمجة لإدارة ومراقبة JVM. تسمح بالحصول على معلومات حول الذاكرة والخيوط والفئات، بالإضافة إلى إدارة