gpt4 book ai didi

python-3.x - 在 AWS Lambda Python 函数中解析 CloudWatch 警报

转载 作者:行者123 更新时间:2023-12-04 12:45:46 39 4
gpt4 key购买 nike

我正在研究 Lambda 函数,该函数将根据 CloudWatch 警报执行多项操作。

警报的 JSON 格式为:

{
'SignatureVersion': '1',
'Timestamp': '2018-03-08T16: 06: 27.163Z',
'MessageId': 'df82d564-1651-5dc6-a37a-867f779226ec',
'Message': '{
"AlarmName": "awsec2-i-08c38bb8af7962797-CPU-Utilization",
"AlarmDescription": "Created from EC2 Console",
"AWSAccountId": "111111111111",
"NewStateValue": "ALARM",
"NewStateReason": "Threshold Crossed: 1 datapoint [1.49999999999939 (08/03/18 16:04:00)] was greater than or equal to the threshold (1.0).",
"StateChangeTime": "2018-03-08T16:06:27.124+0000",
"Region": "EU (Ireland)",
"OldStateValue": "OK",
"Trigger": {
"MetricName": "CPUUtilization",
"Namespace": "AWS/EC2",
"StatisticType": "Statistic",
"Statistic": "AVERAGE",
"Unit": null,
"Dimensions": [
{
"name": "InstanceId",
"value": "i-08c38bb8af7962797"
}
],
"Period": 60,
"EvaluationPeriods": 1,
"ComparisonOperator": "GreaterThanOrEqualToThreshold",
"Threshold": 1.0,
"TreatMissingData": "",
"EvaluateLowSampleCountPercentile": ""
}
}',
'Type': 'Notification',
'TopicArn': 'arn:aws:sns:eu-west-1: 11111111111:test',
'Subject': 'ALARM: "awsec2-i-08c38bb8af7962797-CPU-Utilization" in EU (Ireland)'
}

我需要了解的是如何告诉我的函数仅提取 InstanceId 值并将其用作函数其余部分的变量。

最佳答案

Message 是作为字符串提供的 JSON。要访问字符串的内容,您需要使用 json.loads() 函数:

import json

alert = ... (from CloudWatch)

message = json.loads(alert['Message'])

[msg['value'] for msg in message['Trigger']['Dimensions'] if msg['name']=='InstanceId']

但是,请注意,这只会输出作为警报的维度 提供的InstanceId。并没有具体说这个实例引起了警报(但这是真的)。​​

例如,您可以根据 EC2 实例创建警报。如果平均 CPU 超过阈值,就会触发警报。但是,维度将与相关,而不是特定实例。

将其视为说“具有实例 i-xxx 过滤器的警报已被触发”,而不是说“实例 i-xxx 触发了警报”.

只要您的警报始终基于单个实例,那么 Dimension 就会是您所期望的。

关于python-3.x - 在 AWS Lambda Python 函数中解析 CloudWatch 警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178346/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com