Cloudwatch日志警报 - 如何在电子邮件通知中包含错误/异常/堆栈跟踪数据

Bha*_*waj 23 amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs

我刚刚在我的ec2实例上配置了Cloudwatch日志,到目前为止我很喜欢它.我还为某些关键字设置了警报,例如"ERROR".虽然电子邮件警报似乎工作正常,但我想知道是否有办法微调警报电子邮件,使其简洁明了.具体来说,我期待

  1. 删除警报电子邮件中的所有样板文本.

  2. 包括有关触发警报的错误/异常的一些信息.这可能就像包含生成警报的日志语句一样简单.

现在,警报电子邮件看起来像

您收到此电子邮件是因为您在美国东部 - 弗吉尼亚州西部地区的Amazon CloudWatch警报"应用错误警报"已进入警报状态,因为"阈值已交叉:1个数据点(1.0)大于或等于阈值(1.0)".在"2017年2月7日星期二16:39:43 UTC".

在AWS管理控制台中查看此警报:https://console.aws.amazon.com/cloudwatch/home? region = us-east-1#s = Alert & alarm = App-Error-Alarm

警报详细信息: - 名称:应用程序错误警报 - 说明:app.log中的错误 - 状态更改:INSUFFICIENT_DATA - >警报 - 状态更改原因:阈值已交叉:1个数据点(1.0)大于或等于阈值( 1.0). - 时间戳:2017年2月7日星期二16:39:43 UTC - AWS账户:<>

阈值: - 当度量标准为GreaterThanOrEqualToThreshold 1.0 300秒时,警报处于ALARM状态.

受监视的度量标准: - MetricNamespace:LogMetrics - MetricName:ERROR - 维度: - 周期:300秒 - 统计:总和 - 单位:未指定

状态更改操作: - 确定: - ALARM:[arn:aws:sns:us-east-1:<>:support] - INSUFFICIENT_DATA:

我喜欢它

警报:应用程序错误警报

关键字:"ERROR"

原因:错误2017-02-07 07:31:47,375 [SimpleAsyncTaskExecutor-5] com.app.server.rest.Watcher:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

它的短小,甜美,瞬间告诉我它是否需要我立即注意.可以这样不作为建议编写代码做了这里

Igo*_*nov 9

之所以出现此问题,是因为您配置了警报,并且该警报是针对聚合数据而不是特定日志记录的。您为某些度量标准配置(使用ERROR关键字的日志记录数)。

您可以改用日志订阅,并将与过滤器匹配的所有日志记录流式传输到自定义Lambda函数。您可以使用它来将通知发送到电子邮件或Slack。

要配置日志流,请在AWS控制台中转到Lambda,然后从名为“ cloudwatch-logs-process-data”的蓝图创建新功能。它具有基本结构,可以轻松地根据您的需求进行自定义。

在此处输入图片说明

  • 成本呢?似乎它会在每条日志消息上触发该功能 (3认同)
  • 如果我们有许多 Lambda,并且我们希望收到其中任何一个记录的任何错误的 SNS 通知,该怎么办?我们是否需要为每个日志组提供一个 CloudWatch 订阅的 Lambda? (2认同)
  • @FábioPaiva 否,仅适用于与过滤器匹配的日志记录。例如所有错误 (2认同)

Rod*_*o M 5

您可以使用AWS 实验室提供的Cloudwatch 日志自定义警报包自定义 Cloudwatch 警报。

当您收到警报时,您需要足够的信息来决定是否需要立即关注。您还希望根据操作需要自定义警报文本。CloudWatch Logs 自定义警报是一项 Lambda 函数,可帮助在警报期间从 CloudWatch Logs 读取日志并通过 SES 发送自定义电子邮件。

这些包允许使用 Lambda SNS 端点,然后可以根据您的操作要求自定义警报通知。