【问题标题】:What is the best possible way to send alerts to slack on lambda function failures?在 lambda 函数失败时向 slack 发送警报的最佳方法是什么?
【发布时间】:2020-10-29 19:19:32
【问题描述】:
据我所知,有多种方法可以做到这一点。我知道的一些方法是
- 监控 cloudwatch 事件并在 lambda 失败时触发 cloud watch 警报。使用云手表警报,我们可以触发 sns/slack。
使用第一种方法,我无法使用单个警报来监控我的 lambda。因为如果我有 100 个 lambda,则很难确定哪个 lambda 实际失败了。
- 使用目标。我们可以在失败时异步触发 sns 或其他 lambda 函数。
还有其他方法可以收到有关 lambda 失败的通知吗?如果是这样,哪种方法最好?
【问题讨论】:
标签:
amazon-web-services
aws-lambda
amazon-cloudwatch
amazon-sns
【解决方案1】:
不确定“我不能使用单个警报来监控我的 lambda”是什么意思,通常每个 lambda 都有一个警报。这是一个很好的做法,因为每个 lambda 可能有一组不同的特征,因此您的监控指标可能会因一个而异。这也对您有所帮助,因为每个警报都可以有不同的名称,例如 service-stage-region-alarm-myFunction,因此很容易识别。如果您使用无服务器或 SAM 等框架,则可以轻松地为每个 lambda 生成一个警报,并且使用 terraform 或 cloudformation 等工具是一项合理的任务。
如果您希望每个错误触发一个通知,则第二种方法可能是一种有效的方法。这可能不是您想要的,因为在交通繁忙的情况下,您不希望收到数百条具有相同错误的消息。它也不适用于同步 lambdas(如附加到 APIGateway 的那些)。
【解决方案2】:
@RoberMP 列出了非常好的要点。延长他;
创建具有不同配置、阈值和限制的单个警报后,您可能不想在每次故障后触发 SNS/Slack。
如果您不想用这些警报制造太多噪音,您可以将您的第一种方法与composite alarms 结合起来。
使用复合警报可以帮助您减少警报噪音。如果您设置了复合警报来通知您状态变化,但将基础指标警报设置为不自行发送通知,则仅当复合警报的警报状态发生变化时才会通知您。