es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Exponer métricas de mensajes de canal spring integration amqp/jms a prometheus.

Estoy intentando habilitar métricas para alimentar estadísticas de mensajes desde un gateway RabbitMq <=> MqSeries de spring-integration a Prometheus.

La documentación establece que el canal debe extender AbstractMessageChannel para que las métricas se apliquen. Dado que me siento bastante incómodo con los espacios de nombres, no estoy seguro si este es el caso aquí.
Además, no entiendo cómo agregar un MeterRegistryBean (¡y cuál!) para activar las métricas.
Y finalmente, no entiendo cómo usarlo.
Básicamente, como soy nuevo en la mayoría de los marcos implicados aquí, la documentación aquí carece de un ejemplo que podría ayudarme a entenderlo un poco mejor.

Así es como hago mi definición de canal (la manera “xml” no es una opción: ya está implementada de esta manera y no puedo cambiarla por ahora):

Cualquier idea sobre cómo puedo hacer eso?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para habilitar métricas para alimentar estadísticas de mensajes desde una puerta de enlace RabbitMQ <=> MqSeries de Spring-Integration hacia Prometheus, puede seguir los siguientes pasos:

    1. El canal que está utilizando debe extender AbstractMessageChannel. Esto se menciona en la documentación.
    2. Necesita agregar un MeterRegistryBean para activar las métricas. El MeterRegistryBean es responsable de administrar y mantener las métricas. Puede utilizar cualquier implementación de MeterRegistry, pero una ampliamente utilizada es Micrometer. Puede agregar el siguiente código a su configuración de Spring para agregar un MeterRegistryBean:

      @Bean
      public MeterRegistry meterRegistry() {
         return new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
      }
      

      Asegúrese de agregar la dependencia micrometer-registry-prometheus en su archivo pom.xml.

    3. Una vez que haya agregado el MeterRegistryBean, puede utilizar Micrometer para definir métricas en su código. Por ejemplo, puede definir un contador para el número de mensajes recibidos:

      @Autowired
      private MeterRegistry meterRegistry;
      
      private final Counter messagesReceived = meterRegistry.counter("messages_received");
      
      public void receiveMessage(String message) {
         // procesar mensaje
         messagesReceived.increment();
      }
      

      En este ejemplo, cada vez que se llama el método receiveMessage, el contador messagesReceived se incrementa en uno.

    4. Para exponer las métricas a Prometheus, necesita agregar un PrometheusScrapingEndpoint a su configuración de Spring. Puede hacerlo agregando el siguiente código:

      @Bean
      public PrometheusScrapingEndpoint prometheusScrapingEndpoint(MeterRegistry meterRegistry) {
         PrometheusScrapingEndpoint endpoint = new PrometheusScrapingEndpoint(meterRegistry);
         endpoint.setBasePath("/actuator/prometheus");
         return endpoint;
      }
      

      El PrometheusScrapingEndpoint expone las métricas en un formato que Prometheus puede rascar (“scrapear”). En este ejemplo, el endpoint se expone en /actuator/prometheus.

      Asegúrese de agregar las dependencias micrometer-registry-prometheus-autoconfigure y spring-boot-starter-actuator en su archivo pom.xml.

    5. Finalmente, necesita configurar Prometheus para rascar las métricas de su aplicación. Puede agregar la siguiente configuración a su archivo prometheus.yml:

      scrape_configs:
       - job_name: 'myjob'
         static_configs:
           - targets: ['myapp:8080']
      

      En este ejemplo, myapp es el nombre de su aplicación y 8080 es el puerto donde se está ejecutando.

Comments are closed.