Amazon CloudWatch - Monitoreo de registros
Introducción
CloudWatch es una herramienta nativa de AWS para monitorear métricas de performance, análisis de estado y detección de errores.
Todos los servicios que corren en AWS escriben en logs sus conexiones, tiempos de respuesta y excepciones. Estos registros de interpretan y convierten en paneles de control y alarmas.
Descripción
El monitoreo consta de dos partes: un set de paneles de control con métricas e información relevante en tiempo real y un set de alarmas para algunas de estas métricas. Si bien los umbrales se configuran en base a los estándares de monitoreo de Spin y las pruebas en entorno de QA, el mantenimiento queda a cargo del equipo de soporte y debe ser ajustado de manera de generar eventos solo cuando sea requerido. Un monitoreo pasivo puede significar un riesgo, pero un monitoreo agresivo termina por generar acostumbramiento a las alarmas.
A continuación, se detallan los registros de servicios:
· /giftcard-service
· /mobile-giftcard-service
· /incomm-gateway-service
Objetivo
El propósito de la implementación de los monitores que se detallan en este documento es el de dotar al equipo de soporte con las herramientas necesarias para garantizar la disponibilidad del servicio y, en caso de ser necesario, agilizar la solución de problemas.
Paneles de control
Tiempo de respuesta
Lista de transacciones
Códigos de retorno
Tasa de transacciones por hora
Volúmen de transacciones por marca
fields @timestamp, @message
| filter log like 'provider' and log like 'name'
| parse log '"provider":{*}' as purchase
| parse purchase '"name":*,' as brand
| filter ispresent(brand)
| display brand, purchase
| stats count(purchase) by brand
fields @timestamp, @message
| filter log like 'provider' and log like 'name'
| parse log '"provider":{*}' as purchase
| parse purchase '"name":*,' as brand
| filter ispresent(brand)
| display brand, purchase
| stats count(purchase) by brand
Detalle de transacciones
fields @timestamp, @message
| filter log like 'status' and log like 'SpinRetrofitHttpLoggingInterceptor'
| parse log '*{*,*,*,*{*},*{*},*,*,*}' as a,b,user,d,e,product,h,provider,stat,tID,created
| parse user '"userId":"*"' as userId
| parse product '"name":"*",' as productName
| parse provider '"name":"*",' as providerName
| parse product '"amount":*,' as amount
| parse stat '"status":"*"' as status
| parse tID '"traceId":"*"' as traceId
| parse created '"createdAt":"*"' as createdAt
| filter ispresent(status)
| display createdAt,userId,providerName,productName,amount,status,traceId
Errores mobile-giftcard-service
Transacciones incompletas
fields @timestamp, @message
| filter log like 'status' and log like 'SpinRetrofitHttpLoggingInterceptor'
| parse log '*{*,*,*,"args":[{*}],*}' as header,msg,code,description,args,stat
| parse msg '"message":"*"' as summary
| parse code '"code":"*"' as error
| parse stat '"status":"*"' as status
| parse args '"arg":"*"' as argument
| parse args '"value":"*"' as value
| filter ispresent(summary)
| display @timestamp,error,summary,argument,value,status
Transmisiones en la última hora
Conexiones a MongoDB
Alarmas
Las alarmas requeridas quedan cubiertas por las ya implementadas por Spin para el monitoreo de los componentes de infraestructura (jobs, streamers, queues,etc).
Se implementaron dos alarmas complementarias que cubren puntos débiles: una para medir el tiempo de respuesta de Incomm y una para medir el flujo de consultas total.
Tiempo de respuesta
Nombre: | incomm-response-time |
Tipo Alarma: | métrica |
Límite: | value > 1 para 1 puntos de datos dentro de 15 minutos |
Espacio de nombres: | incomm-response-time |
Nombre de la métrica: | value |
Estadística: | Suma |
Período: | 15 minutos |
Puntos de datos para la alarma: | 1 de 1 |
Tratamiento de datos faltantes: | Tratar los datos que faltan como faltantes |
Percentiles con pocas muestras: | evaluate |
ARN: | arn:aws:cloudwatch:us-east-1:549923646310:alarm:incomm-response-time |
Flujo Entrante
Nombre: | incomingBytes-mobile-giftcard-service |
Tipo: | Alarma métrica |
Límite: | IncomingBytes <= 0 para 1 puntos de datos dentro de 30 minutos |
Espacio de nombres: | AWS/Logs |
Nombre de la métrica: | IncomingBytes |
LogGroupName: | /aws/eks/qa-eks-master-cluster/mobile-giftcard-service |
Estadística: | Suma |
Período: | 1800 |
Puntos de datos para la alarma: | 1 de 1 |
Tratamiento de datos faltantes: | Tratar los datos que faltan como faltantes |
Percentiles con pocas muestras: | evaluate |
ARN: | arn:aws:cloudwatch:us-east-1:549923646310:alarm:incomingBytes-mobile-giftcard-service |
Nombre: | incomingBytes-giftcard-service |
Tipo: | Alarma métrica |
Límite: | IncomingBytes <= 0 para 1 puntos de datos dentro de 30 minutos |
Espacio de nombres: | AWS/Logs |
Nombre de la métrica: | IncomingBytes |
LogGroupName: | /aws/eks/qa-eks-master-cluster/giftcard-service |
Estadística: | Suma |
Período: | 1800 |
Puntos de datos para la alarma: | 1 de 1 |
Tratamiento de datos faltantes: | Tratar los datos que faltan como faltantes |
Percentiles con pocas muestras: | evaluate |
ARN: | arn:aws:cloudwatch:us-east-1:549923646310:alarm:incomingBytes-giftcard-service |