Métricas

Cada Conector expone una serie de métricas que pueden ser utilizadas para monitorear su salud y estadísticas.

MetricsAdapter elección

Por defecto, las métricas se exponen utilizando Cinnamon (también conocido como Akka Insights, también conocido como Lightbend Telemetry) sobre Prometeo.

Sin embargo, es posible utilizar un backend de Métricas diferente especificando el MetricsAdapter al crear cualquier tipo de conector, con:

.withMetricsAdapter(myMetricsAdapter)

Las opciones disponibles para MetricsAdapter are:

  • CinnamonMetricsAdapter(predeterminado): utiliza Cinnamon/Lightbend Telemetry/Akka Perspectivas

  • MicrometerMetricsAdapter: utiliza Micrometer, para la integración con Spring Boot métricas por ejemplo

Tenga en cuenta que, por razones técnicas, los nombres de las métricas difieren según el tipo de implementación utilizada. Consulte el tabla a continuación para más detalles.

Dónde se exponen las métricas

Al utilizar el predeterminado MetricsAdapter, la ubicación predeterminada donde se alojan las métricas del conector es localhost:9001. Si las estadísticas no se están mostrando, entonces asegúrese de que el agente de Telemetría de Lightbend esté en funcionamiento. Para más información, consulte el Documentación del Agente Cinnamon.

Al utilizar Micrometer, estos estarán disponibles como parte de Spring Boot Actuador Prometheus.

Desglose de Métricas del Conector

Cada conector tiene su propio conjunto de métricas en la tabla a continuación. Cada métrica está etiquetada con el nombre del conector relevante. Para distinguir qué métricas se relacionan con qué conector, utilice el connector sugerencia en el Prometheus exportador.

Nombre de la métrica (Cinnamon) Nombre de la métrica (Micrómetro) Tipo Descripción

application_ipf_requests_sent

ipf_requests_sent

Contador

Registra el número de mensajes enviados a través de un conector de envío.

application_ipf_requests_received

ipf_requests_received

Contador

Registra el número de mensajes recibidos a través de un conector de recepción.

application_ipf_correlations_saved

ipf_correlations_saved

Contador

El número de registros de correlación persistidos por el servicio de correlación.

application_ipf_correlations_found

ipf_correlations_found

Contador

El número de registros de correlación obtenidos del servicio de correlación

application_ipf_failed_correlations

ipf_failed_correlations

Histograma/Grabador

El número de búsquedas de correlación fallidas del servicio de correlación

application_ipf_failed_requests

ipf_failed_requests

Contador

El número de solicitudes de mensajes fallidos a través de un conector de envío

application_ipf_failed_receives

ipf_failed_receives

Contador

El número de mensajes fallidos recibidos a través de un conector de recepción.

application_ipf_response_times

ipf_response_times

Histograma/Grabador

Un complejo Recorder tipo que registra el min/máx/promedio y percentiles para los tiempos de respuesta de este conector

 El `[application_]ipf_response_times` la métrica se basa en el `CorrelationFound` y `RequestReplyCompleted` eventos del sistema para
SendConnectors y RequestReplySendConnectors respectivamente. Por lo tanto, solo se aplica a operaciones asíncronas de solicitud-respuesta con
un paso de correlación que tiene éxito, o una solicitud-respuesta sincrónica completada.

Métricas del Interruptor Automático

Las métricas del interruptor automático utilizan MeterRegistry implementaciones para publicar métricas. Esto puede configurarse a nivel de conector a través de ResiliencySettings:

ResiliencySettings.builder()
    .initialRetryWaitDuration(Duration.ofMillis(10))
    .maxAttempts(1)
    .resetTimeout(Duration.ofSeconds(1))
    .meterRegistry(SIMPLE_METER_REGISTRY)
    .build()

Alternativamente, esto puede ser configurado a través del SendingConnector interfaz. Esto permite establecer la implementación de meterRegistry a nivel de aplicación.

Por ejemplo, si deseamos que todos los sendingConnectors tengan la misma implementación de meterRegistry, podemos iterar y configurarlos con la API después de que ya hemos construido los conectores. Esto nos permite cambiar rápidamente las implementaciones sin necesidad de modificar cada definición de conector.