¿Cómo comunicar retrasos en el procesamiento basado en la cola a los miembros del equipo no técnicos?

13

Soy responsable de un conjunto de trabajos de procesamiento de colas SQS con una política de escalado en la ApproximateNumberOfMessagesVisiblemétrica CloudWatch. Estos trabajos pueden no mantenerse al día con la cantidad de mensajes enviados por varias razones:

  • La degradación del servicio reduce la capacidad de los mensajes que pueden procesarse.
  • AutoScaling límite máximo alcanzado mientras la profundidad de la cola continúa aumentando.
  • La interrupción de S3 afecta a otros servicios ( AutoScalingservicios) de AWS dependientes que el trabajo de procesamiento de colas utiliza para mantenerse al día con la demanda.

Al analizar interrupciones con miembros del equipo no técnicos, me gustaría comunicar retrasos específicos del procesamiento de la cola que pueden traducirse en degradaciones visibles para el cliente. ¿Cómo puedo hacer esto con las colas SQS?

Anthony Neace
fuente

Respuestas:

15

Al igual que con cualquier comunicación de interrupción, un lector no técnico buscará principalmente comprender:

  • ¿Cuán largo era?
  • Que tan malo fue

Las métricas de Amazon CloudWatch proporcionan las siguientes métricas para las colas SQS que pueden ayudar a responder estas preguntas:

  • NumberOfMessagesSent: el número de mensajes agregados a una cola.
  • NumberOfMessagesReceived: el número de mensajes devueltos por las llamadas a la acción de la API ReceiveMessage.
  • ApproximateNumberOfMessagesVisible: el número de mensajes disponibles para recuperar de la cola.

Cuando se grafican correctamente, estas métricas pueden ser poderosas ayudas visuales para describir los retrasos en el procesamiento de la cola. Aquí hay un par de ejemplos de una interrupción que experimenté donde la capacidad del trabajo para procesar mensajes en cola se degradó severamente:

NumberOfMessagesSent & NumberOfMessagesReceived

  • Tipo de gráfico: gráfico de línea
  • Estadística: suma
  • Período: 5 minutos

NumberOfMessagesSent & NumberOfMessagesReceived

Esto representa gráficamente el contraste entre los mensajes enviados y recibidos, lo que ayuda a aislar qué componente de procesamiento es responsable del retraso. En este gráfico, la métrica recibida cae dramáticamente mientras que la métrica enviada continúa en su tendencia normal, por lo que podemos inferir que el problema radica en el componente de lectura de la cola en lugar del componente de escritura de la cola.

¿Responde esto cuánto tiempo / qué tan malo fue el evento? Si; describe los procesos impactados con el tiempo.

NumberOfMessagesReceived & ApproximateNumberOfMessagesVisible

  • Tipo de gráfico: gráfico de área apilada
  • Estadística: suma
  • Período: 5 minutos

NumberOfMessagesReceived & ApproximateNumberOfMessagesVisible

Esto representa gráficamente la profundidad de la cola sobre los mensajes recibidos, lo que ayuda a mostrar hasta qué punto se hizo una copia de seguridad de la cola y cómo se recuperó. En este gráfico, podemos ver que la profundidad de la cola retrocedió dramáticamente mientras el componente de lectura de la cola tenía problemas, y comenzó a recuperarse cuando el componente de lectura de la cola comenzó a leer mensajes nuevamente.

¿Responde esto cuánto tiempo / qué tan malo fue el evento? Si; describe mensajes impactados con el tiempo.


Discusión gráfica

En ambos gráficos, el procesamiento de colas generalmente se puede considerar saludable cuando las líneas se superponen y no saludable cuando las líneas divergen. Este es un patrón fácil de enseñar a un miembro del equipo no técnico, y puede ayudarlo a diseminar rápidamente dónde y cómo hay problemas cuando se presentan estos gráficos.

Para comunicar más puntos específicos en gráficos, simplemente puede anotarlos:

Ambas gráficas anteriores con anotaciones.

Consejos de gráficos:

  • Etiquetar unidades y ejes.
  • Use colores consistentes para combinar métricas en los gráficos. Tenga en cuenta que NumberOfMessagesReceived es naranja en ambos gráficos; Esto ayudará a visualizar la misma métrica en diferentes gráficos.
  • Alinee verticalmente los gráficos que describen métricas similares para que sean más fáciles de comparar a lo largo del tiempo.

Nota: He formateado estos gráficos para su presentación en StackExchange, por lo que no es necesariamente como los presentaría en una interrupción post mortem. He eliminado explícitamente los valores del eje izquierdo aquí para ocultarlos de StackExchange; querrás mantenerlos en tus autopsias.


Consejos adicionales

  • Empoderar a su equipo: después de entrenar a los miembros de su equipo para leer estos gráficos, no hay razón para mantenerlos ocultos. Considere configurar un Panel de CloudWatch y dar a los miembros de su equipo no técnico acceso de IAM de solo lectura a CloudWatch , para que puedan ver estos gráficos en cualquier momento.
  • Configurar notificaciones: considere configurar las alarmas de Cloudwatch en función de la métrica AproximateNumberOfMessagesVisible si excede algún valor alto acordado, y suscriba a los miembros del equipo para notificarles sobre posibles problemas. Las alarmas de Cloudwatch tienen campos de descripción que se envían junto con los correos electrónicos de notificación; asegúrese de incluir una descripción legible por humanos para ayudar a sus miembros no técnicos a difundir la alarma.
  • Explora otros datos: Por el comentario de Evgeny , explorar otros datos más allá de lo que ofrece CloudWatch y pensar en cómo se puede transmitir esos datos a su equipo. Su ejemplo del uso de la vida útil del mensaje en la cola para crear un histograma es un gran ejemplo de este pensamiento creativo, y puede lograrse registrando los tiempos de envío y recepción de mensajes en su aplicación. Puede obtener el mensaje Enviada fecha y hora a través del atributo SentTimeStamp en cada mensaje de la cola de la respuesta de la API ReceiveMessage. Más detalles aquí .
Anthony Neace
fuente
1
También es muy útil mirar datos desde diferentes puntos de vista, no solo los proporcionados por CloudWatch. Por ejemplo, si puede mostrar un histograma de cuánto tiempo permanece cada mensaje en la cola, que muestra que algunos mensajes permanecen durante el tiempo X mientras que otros permanecen durante el tiempo X * 2. Y durante las interrupciones, el histograma mueve sus puntos altos hacia X * 4 o algo ... extremadamente poderoso de ver.
Evgeny
44
Además, solo quiero decir: esta es una respuesta absolutamente increíble.
Evgeny
Gracias @Evgeny! Esa es una gran idea y he agregado otro consejo a la respuesta basado en ella, con crédito a su comentario.
Anthony Neace