Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

462
Vistas
Configure la cola de mensajes fallidos de SQS para generar una alarma de vigilancia en la nube al recibir un mensaje

Estaba trabajando con Dead letter Queue en Amazon SQS. Quiero que cada vez que la cola reciba un mensaje nuevo, debería generar una alarma de CloudWatch. El problema es que configuré una alarma en la métrica: number_of_messages_sent de la cola, pero esta métrica no funciona como se esperaba en el caso de las colas de mensajes fallidos, como se menciona en la documentación de Amazon SQS Dead-Letter Queues - Amazon Simple Queue Service .

Ahora, algunas sugerencias sobre esto fueron usar number_of_messages_visible , pero no estoy seguro de cómo configurar esto en una alarma. Entonces, si configuro que el valor de esta metric>0 , entonces esto no es lo mismo que recibir un nuevo mensaje en la cola. Si hay un mensaje antiguo, el valor de la métrica siempre será >0 . Puedo hacer algún tipo de expresión matemática para obtener el delta en esta métrica durante un período definido (digamos un minuto), pero estoy buscando una solución mejor.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Luché con el mismo problema y la respuesta para mí fue usar NumberOfMessagesSent en su lugar. Entonces podría establecer mis criterios para los nuevos mensajes que llegaron durante mi período de tiempo configurado. Esto es lo que funcionó para mí en CloudFormation.

Tenga en cuenta que las alarmas individuales no ocurren si la alarma permanece en un estado de alarma debido a fallas constantes. Puede configurar otra alarma para detectarlos. es decir: Alarma cuando ocurren 100 errores en 1 hora usando el mismo método.

Actualizado: debido a que las métricas para NumberOfMessagesReceived y NumberOfMessagesSent dependen de cómo se pone en cola el mensaje, ideé una nueva solución para nuestras necesidades utilizando la métrica ApproximateNumberOfMessagesDelayed después de agregar un retraso a la configuración de dlq. Si está agregando los mensajes a la cola manualmente, NumberOfMessagesReceived funcionará. De lo contrario, use ApproximateNumberOfMessagesDelayed después de configurar un retraso.

 MyDeadLetterQueue: Type: AWS::SQS::Queue Properties: MessageRetentionPeriod: 1209600 # 14 days DelaySeconds: 60 #for alarms DLQthresholdAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: "Alarm dlq messages when we have 1 or more failed messages in 10 minutes" Namespace: "AWS/SQS" MetricName: "ApproximateNumberOfMessagesDelayed" Dimensions: - Name: "QueueName" Value: Fn::GetAtt: - "MyDeadLetterQueue" - "QueueName" Statistic: "Sum" Period: 300 DatapointsToAlarm: 1 EvaluationPeriods: 2 Threshold: 1 ComparisonOperator: "GreaterThanOrEqualToThreshold" AlarmActions: - !Ref MyAlarmTopic
over 4 years ago · Santiago Trujillo Denunciar

0

Tuvimos el mismo problema y lo solucionamos usando 2 métricas y creando una expresión matemática.

 ConsentQueue: Type: AWS::SQS::Queue Properties: QueueName: "queue" RedrivePolicy: deadLetterTargetArn: Fn::GetAtt: - "DLQ" - "Arn" maxReceiveCount: 3 # after 3 tries the event will go to DLQ VisibilityTimeout: 65 DLQ: Type: AWS::SQS::Queue Properties: QueueName: "DLQ" DLQAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: "SQS failed" AlarmName: "SQSAlarm" Metrics: - Expression: "m2-m1" Id: "e1" Label: "ChangeInAmountVisible" ReturnData: true - Id: "m1" Label: "MessagesVisibleMin" MetricStat: Metric: Dimensions: - Name: QueueName Value: !GetAtt DLQ.QueueName MetricName: ApproximateNumberOfMessagesVisible Namespace: "AWS/SQS" Period: 300 # evaluate maximum over period of 5 min Stat: Minimum Unit: Count ReturnData: false - Id: "m2" Label: "MessagesVisibleMax" MetricStat: Metric: Dimensions: - Name: QueueName Value: !GetAtt DLQ.QueueName MetricName: ApproximateNumberOfMessagesVisible Namespace: "AWS/SQS" Period: 300 # evaluate maximum over period of 5 min Stat: Maximum Unit: Count ReturnData: false ComparisonOperator: GreaterThanOrEqualToThreshold Threshold: 1 DatapointsToAlarm: 1 EvaluationPeriods: 1

El período es importante, por lo que el mínimo y el máximo se evalúan durante un período más largo. Gráfico de expresión matemática de AWS

over 4 years ago · Santiago Trujillo Denunciar

0

Utilicé la función matemática métrica RATE para activar una alarma cada vez que llega un mensaje a la cola de mensajes fallidos.

Seleccione dos métricas ApproximateNumberOfMessagesVisible y ApproximateNumberOfMessagesNotVisible para su cola de mensajes fallidos.

Configure la expresión métrica como RATE(m1+m2) , establezca el umbral en 0 y seleccione el operador de comparación como GreaterThanThreshold .

m1+m2 es el número total de mensajes en la cola en un momento dado. Cada vez que llega un nuevo mensaje a la cola, la tasa de esta expresión irá por encima de cero. Asi es como funciona.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda