Observabilidad de servicios - Token Digital
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
Los logs son generados desde los servicios utilizando la librería SL4J.
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 donde se registra el log, por ejemplo,
ffss-token-aggregation-service
.request_id: UUID generado desde el consumidor que representa de manera única la solicitud.
client_id: Id del servicio 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 |
---|---|---|---|
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. |
ffss-token-service | ERROR | Excepciones o errores | Registro de excepciones y errores encontrados durante operaciones de base de datos. |
ffss-token-service | ERROR | Comunicación con base de datos | Registro de fallas en la comunicación con base de datos. |
ffss-token-service | WARN | Autorizaciones no válidos | Registro de excepciones y errores referentes a validación de dispositivo o cuenta |
ffss-token-service | WARN | Token no válido | Registro de excepciones y errores referentes a validación de TOTP |
ffss-token-activation-service | ERROR | Comunicación con base de datos | Registro de fallas en la comunicación con base de datos. |
ffss-hsm-adapter | ERROR | Comunicación con proveedores | Registro de fallas en comunicación con Cloud HSM |
Reporte de métricas
Métricas de uso de servicios
Servicio | Tipo de Métrica | Variable | Objetivo |
---|---|---|---|
ffss-token-aggregation-service | Tiempo de respuesta | tiempo | Medir el tiempo de respuesta del servicio para identificar posibles problemas de rendimiento. |
ffss-token-aggregation-service | Tasa de solicitudes | contador | Contar la cantidad de solicitudes recibidas en un período de tiempo para monitorear la carga del servicio. |
ffss-token-service | 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. |
ffss-token-service | Enrolamientos exitosos | contador | Contar la cantidad de enrolamientos exitosos realizados |
ffss-token-service | Validaciones de token rechazadas | contador | Contar la cantidad de validaciones de TOTP rechazadas |
ffss-token-activation-service | Solicitudes de código de activación | tiempo | Contar el número de veces que se solicita el código de activación |
ffss-token-activation-service | Enrolamientos | tiempo | Contar el número de veces que se usa el código de activación generado ara enrolar cuenta. |
fss-hsm-adapter | Tasa de errores en HSM | contador | Contar la cantidad de errores o problemas al interactuar con Cloud HSM. |
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 |
---|---|
Clientes activos | Determina el número de clientes que usan el token digital |
Tasa de crecimiento de clientes | Permite proyectar el futuro aprovisionamiento de servicios |
Número de transacciones | Permite proyectar el futuro consumo de servicios |