Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda AWS中SQS队列的实时监控_Aws Lambda_Amazon Sqs_Grafana - Fatal编程技术网

Aws lambda AWS中SQS队列的实时监控

Aws lambda AWS中SQS队列的实时监控,aws-lambda,amazon-sqs,grafana,Aws Lambda,Amazon Sqs,Grafana,实时监控发送到SQS队列的消息总数的最佳方法是什么 我目前设置了一个Grafana仪表板来监视SQS队列,但它似乎每两分钟刷新一次。我希望设置一些几乎实时更新的内容,例如每秒刷新一次 我使用的队列每分钟消耗大约6000条消息 我的同事已经构建了一些实时监控上传到S3存储桶的东西,使用lambda填充PostgreSQL数据库,并使用Grafana查询 这是实现这一目标的最佳方式吗?有没有更有效的方法?SQS不是事件驱动的-它必须被轮询。因此,每次将消息放入队列或从队列中删除消息时,都不会发生事件

实时监控发送到SQS队列的消息总数的最佳方法是什么

我目前设置了一个Grafana仪表板来监视SQS队列,但它似乎每两分钟刷新一次。我希望设置一些几乎实时更新的内容,例如每秒刷新一次

我使用的队列每分钟消耗大约6000条消息

我的同事已经构建了一些实时监控上传到S3存储桶的东西,使用lambda填充PostgreSQL数据库,并使用Grafana查询


这是实现这一目标的最佳方式吗?有没有更有效的方法?

SQS不是事件驱动的-它必须被轮询。因此,每次将消息放入队列或从队列中删除消息时,都不会发生事件。对于S3到Lambda,每次创建或删除对象时都会实时发送一个事件


您可以更改SQS的轮询间隔,并以自己喜欢的速度进行轮询。但要知道,投票是有代价的。每个月前100万个请求都是免费的。

我不确定您想要实现什么(我会在我的想法之后进行说明),但您肯定有几种方法可以实现这一点。每一种都有积极和消极的一面

  • 在您生成或使用消息的每个地方,增加或减少cloudwatch指标(或datadog、librato等)。它仍然是基于轮询的,但您可以将粒度降低(即使使用Cloudwatch)到15-60秒。这里最大的问题是它容易出错(如果SQS消息超时并重新处理会发生什么情况?)

  • 创建辅助队列。进入该队列的每条消息都是“添加”或“删除”消息。附加lambda、container、autoscale组以处理队列并更新RDS或DynamoDB表中的指标。根据需要查询表

  • 使用不同的队列处理系统而不是SQS。我见过RabbitMQ和Sensu在非常大的环境中使用,它们每分钟可以轻松处理6000条消息


  • 请记住,除了队列中的消息数量,还有更多的指标。我最近非常喜欢ApproximateAgeOfOldestMessage,因为它指示消息处理过程中是否没有错误。下面是一篇关于最有用的SQS指标的博客文章。这是一款名为

    的产品,谢谢你的帮助——看起来lambda不是正确的选择。