背景
Amazon CloudWatch 告警支持邮箱和手机短信,但是不直接支持企业钉钉告警
需要自己创建钉钉告警模板,通过AWS Lambda --> AWS sns --> Amazon CloudWatch来实现企业钉钉告警
下面是具体实施步骤,亲测有效
具体可参考官方文档:https://aws.amazon.com/cn/blogs/china/enterprise-wechat-and-dingtalk-receiving-amazon-cloudwatch-alarms/
步骤
1、创建一个AWS sns主题
2、为创建的主题增加订阅
可以添加邮箱订阅,手机短信订阅或者Lambda订阅
3、创建钉钉机器人
记下Webhook
重点:要记下你的加密手段
4、创建AWS Lambda 函数
1)创建函数,选择python3.7
2)为Lambda添加触发器:选择上一步创建的SNS主题作为触发器
5、编辑环境变量
将钉钉的Webhook填入token的值中
6、创建具有运行时依赖项的函数(zip包)
具体请查看官方文档:https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/python-package-create.html
最后获得下图,包括requests依赖包和lambda_function.py
7、上传zip包
8、点击测试,测试成功,之后创建告警选择对应sns就会有对应的事件
测试的代码
{
"Records": [
{
"EventSource": "aws:sns",
"Sns": {
"MessageAttributes": {},
"SignatureVersion": "1",
"Type": "Notification",
"Message": "{\"AlarmName\":\"RC-[HIGH]-grafana-group unhealthy>1\",\"AlarmDescription\":\"Created from EC2 Console\",\"AWSAccountId\":\"xxxxxx\",\"NewStateValue\":\"ALARM\",\"NewStateReason\":\"Threshold Crossed: 1 out of the last 1 datapoints [1.0 (10/10/18 11:52:00)] was greater than or equal to the threshold (1.0) (minimum 1 datapoint for OK -> ALARM transition).\",\"StateChangeTime\":\"2018-10-10T11:53:08.426+0000\",\"Region\":\"China (Ningxia)\",\"OldStateValue\":\"OK\",\"Trigger\":{\"MetricName\":\"UnHealthyHostCount\",\"Namespace\":\"AWS/ApplicationELB\",\"StatisticType\":\"Statistic\",\"Statistic\":\"MAXIMUM\",\"Unit\":null,\"Dimensions\":[{\"name\":\"LoadBalancer\",\"value\":\"app/nx-rc-rancher-inner/0689e303d72560ff\"},{\"name\":\"TargetGroup\",\"value\":\"targetgroup/grafana-ec2-rc-ops/8xxxxx\"}],\"Period\":60,\"EvaluationPeriods\":1,\"ComparisonOperator\":\"GreaterThanOrEqualToThreshold\",\"Threshold\":1.0,\"TreatMissingData\":\"\",\"EvaluateLowSampleCountPercentile\":\"\"}}",
"UnsubscribeUrl": "https://sns.cn-northwest-1.amazonaws.com.cn/?Action=Unsubscribe&SubscriptionArn=arn:aws-cn:sns:cn-northwest-1:xxxxx:SMS-TEST:46a6b2a2-c594-4d56-ae2f-56243292bdc0",
"TopicArn": "arn:aws-cn:sns:cn-northwest-1:xxxxx:SMS-TEST",
"Signature": "YwtAajUhBLhS/Rtwv8dCCcKwVpglHX1hzLa0gnfRdaQ/EH5zdQk9tCAFDxvT/9z+7jiBnIZgZrNX2pCoYgU61ONYuEZ74chbxjwKfF43YxHeTIsuyPBcsTyXLsJhwE+Tem2aXRllmABC4yO0tbDIwTCSSNF8fMwlm5aOc4HO28VhVOLnuqRP1XnAglO7sJfhD6oWjN+vVvyydmkFxbC8NpxgTpuwAwT6zKsUEHWvzmhRe9bhuxwIdg/Agyip6zgGVs0rDLBbh0Tu61RgqgrDxbUp9JPklkbLR5i+ILBd110msHH8rX43KypYuzgjLtvab3YQuioqUotrdJE+/G8MeQ==",
"SigningCertUrl": "https://sns.cn-northwest-1.amazonaws.com.cn/SimpleNotificationService-23551b0f4cfca4c8a720c40328560ad3.pem",
"Timestamp": "2018-10-10T11:53:08.484Z",
"Subject": "OK: \"RC-[HIGH]-grafana-group unhealthy>1\" in China (Ningxia)",
"MessageId": "99cc6911-5be6-5ae1-bc5d-3d26b182f2ba"
},
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:aws-cn:sns:cn-northwest-1:415056052465:SMS-TEST:46a6b2a2-c594-4d56-ae2f-56243292bdc0"
}
]
}