Saltar a contenido

¿Qué es una transaction?

Una transaction describe un evento capturado por un agente de Elastic APM que monitorea un servicio. Las transactions ayudan a combinar varios Span en grupos lógicos y son el primer tramo de un servicio.

Si hablamos de un componente automatizado como una consulta a SQL utilizando la librería de Elastic.Apm.AspNetCoreAll (automatizada en en la librería de WebHost) la transaction se genera automáticamente y se puede obtener información llamando al APM consultando por la transacción actual.

Transaction

"CurrentTransaction" .

var transaction = Elastic.Apm.Agent.Tracer.CurrentTransaction;

Info

En caso de que no haya una transacción vigente devolverá NULL.


Transactions Custom

Hay casos en los que queremos trazar algún evento en particular de nuestro servicio, para eso podemos crear estas Customs transactions y así monitorear que esta pasando en ese momento del servicio.

Para este caso se genera un bloque de Código llamando al StartTransaction

var transaction = Elastic.Apm.Agent.Tracer.StartTransaction("MyTransaction", ApiConstants.TypeRequest);

Info

Toma como parámetros el name ("MyTransaction") y el tipo(ApiConstants.TypeRequest) datos que visualizaremos en la interfaz de elastic


El tipo de transaction no es mas que un agrupador para separar estas transacciones en grupos

Type

Span

Estos "tramos" se encuentran dentro de las transactions, se comportan de la misma manera, se accede a un Span con el "CurrentSpan" o se inician con un "CaptureSpan" en caso de querer generar un Custom Span.

En la captura se ve como se visualiza el Span dentro de la Transaction

Span

Estos Span entran mas en detalle del evento, en este ejemplo muestra la query realizada y capturada en la transaction

Info

Se generó en la librería de Andreni.Arq.AMQStreams una Custom transaction para capturar los eventos ya que no nos lo proveía la librería de Elastic sin integrar otras librerias especificas. Tenes en cuenta que se debe utilizar la ultima versión de la misma ya que desde el área de arquitectura ya tenemos cargada las configuraciones para que este funcionando.


Para buscar mas información sobre elastic, ejemplos y demás se puede acceder a la documentación oficial.

Documentacion Oficial