我正在API网关后面使用AWS Lambda。
在我的日志中(来自lambda),我有类似的东西
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li><a href="http://www.google.com" target="_blank">Google</a></li>
<li><a href="#2">Second Link</a></li>
<li><a href="#3">Third Link</a></li>
<li><a href="#4">Third Link</a></li>
</ul>
当“ statusCode = 500”发生时,是否有办法触发警报?
答案 0 :(得分:1)
您可以在Cloudwatch日志组上创建指标过滤器,该过滤器的模式类似于here。指标筛选器将日志出现次数转换为数值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>
答案 1 :(得分:0)
您可以使用云监视订阅过滤器仅针对匹配的正则表达式模式进行过滤,然后使用SNS发送警报或通知(您需要其他lambda使用者来发送sns)。
更好的方法
由于日志是由Lambda生成的,因此最好将错误代码作为来自lambda代码的自定义cloudwatch指标发布。解决方案将针对自定义指标创建警报。
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html