使用boto3推送指标时,AWS CloudWatch警报处于“数据不足”状态

时间:2019-11-14 06:10:48

标签: python amazon-web-services amazon-ec2 boto3 amazon-cloudwatch

警报长时间处于不足状态。

指标图

enter image description here

这是创建警报的代码:

import boto3

# Create CloudWatch client
cloudwatch = boto3.client('cloudwatch')

# Create alarm
cloudwatch.put_metric_alarm(
    AlarmName='Web_Server_CPU_Utilization',
    ComparisonOperator='GreaterThanThreshold',
    EvaluationPeriods=1,
    MetricName='CPUUtilization',
    Namespace='AWS/EC2',
    Period=60,
    Statistic='Average',
    Threshold=70.0,
    ActionsEnabled=False,
    AlarmDescription='Alarm when server CPU exceeds 70%',
    Dimensions=[
        {
          'Name': 'InstanceId',
          'Value': 'INSTANCE_ID'
        },
    ],
    Unit='Seconds'
)

还尝试为自定义指标创建指标警报,但这存在不同的问题。

所有预定义指标都在AWS namespaces中,而自定义指标都在Custom namespaces中。

尝试给出Namespace='Custom/EC2'Namespace='EC2'Namespace='Custom/EC2'Namespace='AWS/EC2'Namespace='Custom/Custom'

但是其中任何一种情况。它并没有推动受人尊敬的指标。

enter image description here

3 个答案:

答案 0 :(得分:1)

您是否在EC2实例中启用了detailed monitoring

  

默认情况下,您的实例已启用基本监视。您可以   (可选)启用详细监视。启用后详细   监控,Amazon EC2控制台显示实例的监控图,周期为1分钟。

您要在60秒内配置警报,并在1个数据点上警报,因此,如果度量标准不是每分钟发布一次the alarm will go into insufficient data。您可以在EC2实例中启用详细监视,也可以将警报时间更改为300秒。

答案 1 :(得分:0)

您如何推动自定义指标?您是使用自己的脚本还是CloudWatch代理之一?

如果是CloudWatch代理,请检查代理的日志。 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html#CloudWatch-Agent-troubleshooting-loginfo

如果使用某些SDK(例如boto3),则打印响应或添加调试 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/boto3.html

我尝试过AWS CLI-

  • 错误

saws> aws cloudwatch put-metric-data --namespace AWS/EC2 --metric-name Sufyan --value 32 --region ap-southeast-2

An error occurred (InvalidParameterValue) when calling the PutMetricData operation: The value AWS/ for parameter Namespace is invalid.

  • 工作正常

saws> aws cloudwatch put-metric-data --namespace Custom/EC2 --metric-name Test --value 32 --region ap-southeast-2

答案 2 :(得分:0)

尝试发送不带put_metric_alarm属性的Unit请求。事实是,如果您基于指标创建警报,则不应定义维度或单位属性。