Métricas

Cada Conector expone una serie de métricas que pueden ser utilizadas para monitorear su estado 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, 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 sending connector

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 failed búsquedas de correlación desde el servicio de correlación

application_ipf_failed_requests

ipf_failed_requests

Contador

El número de failed solicitudes de mensaje a través de un sending connector

application_ipf_failed_receives

ipf_failed_receives

Contador

El número de failed mensaje recibido a través de un conector de recepción

application_ipf_response_times

ipf_response_times

Histograma/Grabador

Un complejo Recorder tipo que registra 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` system events para
SendConnectors y RequestReplySendConnectors respectivamente. Por lo tanto, solo se aplica a operaciones de solicitud-respuesta asíncronas 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.