Aws Lambda 收集 CloudWatch 事件
Posted Simeone`s blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Aws Lambda 收集 CloudWatch 事件相关的知识,希望对你有一定的参考价值。
创建一个 Lambda
在 Lambda
控制台创建一个 python
的函数 collect_watch
,暂时不需要添加触发器。
import json
def lambda_handler(event, context):
print(json.dumps(event))
return {
\'statusCode\': 200,
\'body\': json.dumps(\'Hello from Lambda!\')
}
创建一个警报
在 CloudWatch
控制台创建一个警报,具体创建过程这里不赘述。
我创建了一个 CPU
暂用率的警报。
创建事件规则
在 CloudWatch
控制台左边的菜单栏选择 事件
下的 规则
,然后开始创建规则
选择 事件模式
服务名称选择 CloudWatch
;
事件类型选择 CloudWatch Alarm State Change
在右侧点击 添加目标
选择 Lambda函数
函数选择前面创建的 collect_watch
点击右下的配置详细信息
就创建完成了
去到 Lambda
控制台查看 collect_watch
的详细信息就会发现函数自动添加了一个 Event Bridge
触发器。
测试一下
在我添加警报的 ec2
实例上运行一个程序使 CPU
暂用率超过警报阈值触发警报,然后去 collect_watch
查看监控信息,查看输出日志,event
输出如下
{
"version": "0",
"id": "61f2d042-7c26-231c-c770-d402bae2ceb2",
"detail-type": "CloudWatch Alarm State Change",
"source": "aws.cloudwatch",
"account": "043138196711",
"time": "2021-05-28T07:52:30Z",
"region": "us-west-2",
"resources": [
"arn:aws:cloudwatch:us-west-2:043138196711:alarm:awsec2-i-0762fa32d4122cdaa-GreaterThanOrEqualToThreshold-CPUUtilization"
],
"detail": {
"alarmName": "awsec2-i-0762fa32d4122cdaa-GreaterThanOrEqualToThreshold-CPUUtilization",
"state": {
"value": "ALARM",
"reason": "Threshold Crossed: 1 out of the last 1 datapoints [99.6610169491529 (28/05/21 07:42:00)] was greater than or equal to the threshold (0.2) (minimum 1 datapoint for OK -> ALARM transition).",
"reasonData": "{\\"version\\":\\"1.0\\",\\"queryDate\\":\\"2021-05-28T07:52:30.143+0000\\",\\"startDate\\":\\"2021-05-28T07:42:00.000+0000\\",\\"statistic\\":\\"Maximum\\",\\"period\\":300,\\"recentDatapoints\\":[99.6610169491529],\\"threshold\\":0.2,\\"evaluatedDatapoints\\":[{\\"timestamp\\":\\"2021-05-28T07:42:00.000+0000\\",\\"sampleCount\\":5.0,\\"value\\":99.6610169491529}]}",
"timestamp": "2021-05-28T07:52:30.168+0000"
},
"previousState": {
"value": "OK",
"reason": "Threshold Crossed: 1 datapoint [0.10001852366388979 (28/05/21 07:17:00)] was not greater than or equal to the threshold (10.0).",
"reasonData": "{\\"version\\":\\"1.0\\",\\"queryDate\\":\\"2021-05-28T07:27:57.752+0000\\",\\"startDate\\":\\"2021-05-28T07:17:00.000+0000\\",\\"statistic\\":\\"Average\\",\\"period\\":300,\\"recentDatapoints\\":[0.10001852366388979],\\"threshold\\":10.0,\\"evaluatedDatapoints\\":[{\\"timestamp\\":\\"2021-05-28T07:17:00.000+0000\\",\\"sampleCount\\":5.0,\\"value\\":0.10001852366388979}]}",
"timestamp": "2021-05-28T07:27:57.769+0000"
},
"configuration": {
"description": "从 EC2 控制台创建",
"metrics": [
{
"id": "28bcd8fa-5994-44bf-4931-1f466f7c2b7b",
"metricStat": {
"metric": {
"namespace": "AWS/EC2",
"name": "CPUUtilization",
"dimensions": {
"InstanceId": "i-0762fa32d4122cdaa"
}
},
"period": 300,
"stat": "Maximum"
},
"returnData": true
}
]
}
}
}
以上是关于Aws Lambda 收集 CloudWatch 事件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Terraform 将 AWS Lambda 日志写入 CloudWatch 日志组
AWS 事件总线无法将日志写入来自 AWS Lambda 的自定义日志组上的 CloudWatch
如何将 AWS cloudwatch 事件添加到基于具有 terraform 的容器映像的 aws_lambda_function?
访问 AWS Lambda 的 Amazon CloudWatch 日志
javascript CloudWatch到AWS Lambda到Slack Channel Alerts和Charts。通过SNS主题通过Lambda函数将CloudWatch警报发布到Slack通