我有一个发出两种类型消息的服务:
Type_1 / Type_2
(a unique Type_2 always follows a Type_1)
我一直在考虑使用AWS Lambda来发出接收 Type_1
消息与其后续相应的 Type_2
消息之间的延迟的指标(它们是1:1) . 例如:
1. Type_1 arrives
2. Type_2's corresponding Type_2 arrives
3. Lambda (Type_2.timestamp - Type_1.timestamp) = latency between the messages.
在Lambdas有没有简单的方法呢?我需要缓存所有 Type_1
消息,然后在他们的姐妹 Type_2
消息通过时抓取/区分它们 .
我的用例基本上是,如果 Type_2
需要太长时间(也就是超过1秒)来跟随其姐妹消息,我想在其上发出一些指标 .
2 回答
我假设你想要做自己的指标和警报,而不是使用Cloudwatch .
我的解决方案是:
Lambda检查消息类型 .
如果输入类型1,则将其存储在带有时间戳的数据库(例如DynamoDB,RDS等)中 .
如果输入类型2,则查询其对应的类型1消息的时间戳,并计算两者之间的差异 .
如果差异超过阈值,则启动警报 .
实现此目的的一种非常简单的方法是将
Type_1
的Type_1
写入S3上的id(例如s3://bucket-name/id/type_1.timestamp
),并让Type_2
函数从S3下载文件,计算delta并根据时间戳差异决定任何进一步的工作 .