Observabilidad de servicios - Mirror Strategy

Los servicios del proyecto estarán reportando su estado mediante dos vías: reporte de logs y reporte de métricas.

Reporte de logs

Estados reportados en los logs

Para el monitoreo de logs el Equipo de Observabilidad indicó que se toman en cuenta los siguientes niveles:

  • CRITICAL: Problemas críticos que impiden el funcionamiento de la aplicación.

  • ERROR: Errores en la aplicación que deben recibir atención inmediata.

  • WARN: eventos que requieren atención pero no generan alertas.

  • INFO: Información sobre eventos sin acciones específicas.

Los logs generados serian enviados en un formato JSON con la siguiente estructura:

{ "severity": "info", "timestamp": "1585961710", "environment": "prd", "host": "AWWEB02", "service_id": "your-awesome-api", "request_id": "69f3a771-120a-4e0b-a432-b5ae781b8a95", "client_id": "b265aca6-60f8-4b59-bb68-f011bcc6993d", "x_forwarded_for": "201.103.53.49", "operation": "received_request", "message": { "headers": { "Connection": "Keep-Alive", "Content-Type:": "text/json; charset=utf-8" }, "mode": "cors", "credentials": {}, "method": "POST", "referrer": "201.103.53.49", "url": "https://api.myblog.com/v1/posts", "body": { "title": "How to ride a bike", "content": "Its easy, just pedal.", "category": "sports" } } }

 

Los campos reportados son los siguientes:

  • severity: Nivel de gravedad del registro: debug | info | warning | error | critical.

  • timestamp: Marca de tiempo UNIX que representa el momento en que se registró el log.

  • environment: Entorno en el que se registra el log: dev | stg | prd.

  • host: Dirección IP o nombre del servidor (o contenedor) donde se registra el log.

  • service_id: Identificador único del servicio, por ejemplo ffss-account-aggregation-service.

  • request_id: UUID generado por API Gateway o Lambda Context que representa de manera única la solicitud.

  • client_id: Id del cliente que originó la solicitud.

  • x_forwarded_for: Lista de direcciones IP por las que ha pasado la solicitud. En una API pública, generalmente solo contiene la dirección IP del usuario que originó la solicitud.

  • operation: Operación realizada, por ejemplo: received_request (solicitud recibida), sent_response (respuesta enviada), sent_request (solicitud enviada), received_response (respuesta recibida), event (evento), exception (excepción).

  • message: Detalles del contenido que dan propósito al log.

  • metadata: [opcional] Si es necesario para tu aplicación, puedes incluir un objeto con metadatos sobre el log.

Tipos de logs reportados por los servicios

Servicio

Nivel

Tipo

Descripción

Servicio

Nivel

Tipo

Descripción

Todos

INFO

Información general

Registro de inicio del servicio

Todos

INFO

Trazabilidad de llamados

Registro de llamados a servicios

Todos

ERROR

Errores de validación

Registros de errores o problemas de validación de datos.

Todos

ERROR

Comunicación entre servicios

Registro de fallas en la comunicación entre servicios.

Servicios de Mirror

ERROR

Excepciones o errores

Registro de excepciones y errores encontrados durante operaciones de base de datos.

Servicios de Mirror

ERROR

Comunicación con base de datos

Registro de fallas en la comunicación entre servicios.

Servicios de Mirror

WARN

Inconsistencia en Mirror

Si el feature flag se encuentra desactivado y durante una lectura el valor que arroje el proveedor difiere del valor almacenado

Balance Mirror

WARN

Inconsistencia en saldo

Si después de una escritura el saldo proyectado difiere del saldo almacenado

Servicios de gateway

ERROR

Comunicación con proveedores

Registro de fallas en comunicación con el proveedor

Reporte de métricas

Métricas de uso de servicios

Servicio

Tipo de Métrica

Variable

Objetivo

Servicio

Tipo de Métrica

Variable

Objetivo

Servicios de Agregación

Tiempo de respuesta

tiempo

Medir el tiempo de respuesta del servicio para identificar posibles problemas de rendimiento.

Servicios de Agregación

Tasa de solicitudes

contador

Contar la cantidad de solicitudes recibidas en un período de tiempo para monitorear la carga del servicio.

Servicios de Mirror

Duración de consultas a bases de datos

tiempo

Medir el tiempo que toman las consultas a bases de datos para identificar posibles cuellos de botella.

Servicios de Mirror

Sincronizaciones de bases de datos

contador

Contar la cantidad de veces que se sincroniza el la base de datos con el proveedor

Servicios de gateway

Tiempo de respuesta a servicios externos

tiempo

Medir el tiempo de respuesta al interactuar con servicios externos para identificar cuellos de botella.

Servicios de gateway

Tasa de errores en adaptadores

contador

Contar la cantidad de errores o problemas al interactuar con adaptadores externos para monitorear la estabilidad.

Servicios de gateway

Latencia en solicitudes externas

tiempo

Medir la latencia en las solicitudes externas para identificar posibles problemas de rendimiento.

Métricas del negocio

Estas métricas no son generadas mediante los servicios aunque si determinan su capacidad y proyección.

Métrica

Descripción

Métrica

Descripción

Clientes activos

Determina el número de clientes que usan el servicio

Tasa de crecimiento de clientes

Permite proyectar el futuro aprovisionamiento de servicios

Número de llamados a los servicios por cliente activo

Permite identificar el costo del servicio (En el caso de Fiserv para menos de 30 llamados por cliente activo no tiene costo adicional)

Número de transacciones

Permite proyectar el futuro consumo de servicios

https://fintechdigital.atlassian.net/browse/SPMS-432