اتصال Micrometer لتطبيق الويب Java

يستخدم Micrometer لجمع مقاييس تطبيق JVM ويسمح لك بتصدير البيانات إلى أنظمة مراقبة مختلفة. في هذه المقالة ، سأخبرك بكيفية توصيل Micrometer لتطبيقات الويب الربيعية وتصدير البيانات إلى Prometheus ( منشور جيد حوله ). نظرًا لأن طلبي مكتوب في برنامج Spring 3 ، فلا توجد إمكانية لاستخدام برنامج Spring التمهيد بدون ترقية. لذلك ، عليك أن تعمل بيديك.

بادئ ذي بدء ، نحن بحاجة إلى تبعيات Prometheus والعميل نفسه و servlet لتصدير البيانات:

pom.xml
<dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient</artifactId> <version>0.6.0</version> </dependency> <dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_servlet</artifactId> <version>0.6.0</version> </dependency> 


بعد ذلك ، أضف servlet export servlet إلى web.xml وحدد المسار الذي ستتوفر فيه المقاييس:

 <servlet> <servlet-name>prometheus</servlet-name> <servlet-class>io.prometheus.client.exporter.MetricsServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>prometheus</servlet-name> <url-pattern>/metrics</url-pattern> </servlet-mapping> 

لا تنس إضافة سياسة وصول إذا لزم الأمر:

 <http pattern="/metrics" security="none"/> 

ستتوفر الإحصاءات الآن على المضيف المحلي: 8080 / metrics ، لكن في الوقت الحالي ، هذه صفحة فارغة. لكي تظهر البيانات فيه ، تحتاج إلى تسجيل مجموعة من مقاييس التطبيق.

لاستخدام Micrometer ، أضف تبعيات:

pom.xml
 <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.1.3</version> </dependency> 


بعد ذلك ، تحتاج إلى تسجيل جامعي المقاييس اللازمة:

 @WebListener public class PrometheusInitListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT, CollectorRegistry.defaultRegistry, Clock.SYSTEM); new ClassLoaderMetrics().bindTo(meterRegistry); new JvmMemoryMetrics().bindTo(meterRegistry); new JvmGcMetrics().bindTo(meterRegistry); new ProcessorMetrics().bindTo(meterRegistry); new JvmThreadMetrics().bindTo(meterRegistry); } @Override public void contextDestroyed(ServletContextEvent sce) { } } 

تم الآن ، إذا انتقلنا إلى المضيف المحلي: 8080 / metrics ، فسنحصل على بيانات حول JVM.

يبدو شيء مثل هذا:



لدى بروميثيوس مكتبتها الخاصة لإحصاءات JVM لتطبيقات simpleclient_hotspot ، والتي تم تكوينها عن طريق استدعاء DefaultExports.initialize ()؛ في طريقة تهيئة مستمع الويب.

لتكوين مجموعة المقاييس في prometheus.yml ، أضف هدفًا:

 scrape_configs: - job_name: 'test-server' # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s metrics_path: /metrics static_configs: - targets: ['localhost:8080'] 

يمكن الاطلاع على المقاييس التي تم جمعها في بروميثيوس باستخدام لغة PromQL الخاصة. ميزة Micrometr هي أنه لا يمكنك كتابة أي شيء ، ولكن استخدام المكونات الإضافية الجاهزة لأنظمة التصور المتري.


عرض مقاييس التطبيق في Grafana ، البرنامج المساعد 4683

Source: https://habr.com/ru/post/ar442080/


All Articles