AWS Lambda 日志
AWS Lambda logs
我在 API 网关后面使用 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"发生时触发警报?
您可以使用云手表订阅过滤器仅过滤匹配的正则表达式模式,然后使用 SNS 发送警报或通知(您将需要额外的 lambda 消费者来发送 sns)。
更好的方法
由于日志是由 Lambda 生成的,因此最好将错误代码发布为来自 lambda 代码的自定义 cloudwatch 指标。针对自定义指标创建警报将是解决方案。
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html
您可以在 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>
替换为您的主题名称,以及以下命令中的区域等其他值:
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>
我在 API 网关后面使用 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"发生时触发警报?
您可以使用云手表订阅过滤器仅过滤匹配的正则表达式模式,然后使用 SNS 发送警报或通知(您将需要额外的 lambda 消费者来发送 sns)。
更好的方法
由于日志是由 Lambda 生成的,因此最好将错误代码发布为来自 lambda 代码的自定义 cloudwatch 指标。针对自定义指标创建警报将是解决方案。
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html
您可以在 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>
替换为您的主题名称,以及以下命令中的区域等其他值:
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>