使用AWS CloudWatch监测Lambda运行,并通过SNS发送通知
在运行Amazon AWS的众多服务时,一旦某个服务出现了故障,我们肯定想要第一时间得到通知。 或者当某项服务的资源使用超过某个阀值时,我们可能想要赋予其更多资源。 要实现类似的功能,我们可以使用SNS(Simple Notification Servivce)。下面通过一个简单的例子来说明如何使用AWS CloudWatch监测Lambda运行,并通过SNS发送通知。
创建SNS Topic及其订阅
在任何消息系统中,最常见的方式就是设定一个主题(Topic),然后添加一些订阅者(Subscription)。这样一旦有任何新的消息发送到Topic,所有的订阅者都会收到消息推送。下面说说如何在SNS中设置Topic和Subscription。
首先再AWS SNS中创建一个Topic
接下来我们分别创建两个订阅:Email和短信。先来看看Email方式的订阅:
创建结束后,需要打开自己的邮箱进行确认。
接下来创建一个通过短信方式的订阅。
我们可以看到,除Email和短信外,订阅消息的方式还有很多种。这样当消息抵达队列中时,可以调用一个HTTP/HTTPS的地址,可以触发一个Lambda,可以转发到Amazon的消息队列中。
创建一个当Lambda发生错误时触发的消息
在CloudWatch中创建一个Alarm:
这时候需要选择一个Metric,这里选择“Lamba - errors”这个Metric。依次类推,我还添加了另一个Alarm,当Lambda的调用次数超过0次时,触发Alarm。当然,这只是为了测试。在实际使用中,应根据自己的需要调整这个阀值。
同时还要设定一些触发条件,比如当错误数超过某个数字时会触发,或者当Lambda被调用的次数超过某个阀值时会触发。
接下里需要配置,当Alarm被触发时需要做的动作。这里我选择的是发送通知到前面创建好的Topic,也就是“Lambda-errors”:
对于某些资源,还可以触发”Autoscaling“,这样在资源不足的情况下就可以非常快速的升级配置,实现更快的响应率。可以说这里的这些Action非常灵活,可以符合众多应用需求。
由于我设定的第二个Alarm是当Lambda被调用次数超过0次时会触发Alaram,因此在调用一次Lambda后很快就收到了消息提示。
由此可以看到,通过这种方式,可以有效的监测各项AWS服务,一旦出现问题,可以及时以各种方式通知相关的订阅者。
Comments