繁体   English   中英

AWS Lambda日志

[英]AWS Lambda logs

我在API Gateway后面使用AWS Lambda。

在我的日志中(来自lambda),我有类似

Timestamp | Request received ...
Timestamp | Request received ...
Timestamp | Response sent statusCode=200 ...
Timestamp | Request received ...
Timestamp | Response sent statusCode=200  ...
Timestamp | Response sent statusCode=510  ...
Timestamp | Request received ...
Timestamp | Request received ...
Timestamp | Response sent statusCode=500  ...
Timestamp | Response sent statusCode=200  ...

当“ statusCode = 500”发生时,是否有办法触发警报?

您可以使用所需的模式在cloudwatch日志组上创建指标筛选器,类似于此处所述。 指标筛选器将日志出现次数转换为数值CloudWatch指标。 有了cloudwatch指标后,您可以基于该指标创建具有所需阈值的警报,并执行警报操作以触发SNS主题以获取警报。

1.创建一个指标过滤器:

aws logs put-metric-filter \
  --log-group-name /aws/lambda/myfunction \
  --filter-name MyAppErrorCount \
  --filter-pattern 'statusCode=500' \
  --metric-transformations \
    metricName=ErrorCount,metricNamespace=MyNamespace,metricValue=1,defaultValue=0

2.创建一个SNS主题并获取其arn(Amazon资源名称)。

3.根据指标创建警报,同时指定SNS主题arn通知:

<YOUR_ACCOUNT_ID>替换为您的AWS账户ID,将<TOPIC_NAME>替换为您的主题名称,以及以下命令中的region等其他值:

aws cloudwatch put-metric-alarm --alarm-name MyAppErrorAlarm \
 --metric-name ErrorCount \
 --namespace MyNamespace \
 --period 300 \
 --evaluation-periods 1 \
 --threshold 0 \
 --comparison-operator GreaterThanThreshold \
 --statistic Sum \
 --alarm-actions arn:aws:sns:us-east-1:<YOUR_ACCOUNT_ID>:<TOPIC_NAME>

您可以使用云监视订阅过滤器仅针对匹配的正则表达式模式进行过滤,然后使用SNS发送警报或通知(您需要其他lambda使用者来发送sns)。

更好的方法

由于日志是由Lambda生成的,因此最好将错误代码作为来自lambda代码的自定义cloudwatch指标发布。 解决方案将针对自定义指标创建警报。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM