【问题标题】:AWS CloudWatch alarm is in "insufficient data" state when metrics are pushed using boto3使用 boto3 推送指标时,AWS CloudWatch 警报处于“数据不足”状态
【发布时间】:2020-03-10 00:51:29
【问题描述】:

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

指标图表:

这是创建警报的代码:

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'

但任何一种情况。它没有推动尊重的指标。

【问题讨论】:

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


    【解决方案1】:

    尝试发送没有Unit 属性的put_metric_alarm 请求。问题是,如果您根据指标创建警报,则不应定义维度或单位属性。

    【讨论】:

      【解决方案2】:

      您如何推动自定义指标?您使用的是自己的脚本还是 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

      【讨论】:

      • 我正在使用我的自定义脚本来推送指标,使用它来推送数据aws cloudwatch put-metric-data --metric-name python_process_status --dimensions Instance='instanceid' --namespace "Custom" --value 100
      • 它仍然是预定义指标的数据不足,并且没有捕捉到自定义指标的指标
      • 我尝试了您粘贴的 cil,它对我有用,我可以在 CloudWatch 指标控制台上看到自定义指标(也可以使用 cli get-metric-statistics)。您还可以运行 - aws configure - 并继续按 Enter 键以确认配置的区域(默认为 us-east-1)。当您说 InsufficientData 时,您是在检查一些警报吗?确保警报指的是正确的指标的命名空间、MericName 和 Dimension/s。
      • 不是自定义metrics,是通过boto3自定义metrics的告警
      • 或者你可以给我提供用于 put metric alaram 的 aws cli 命令,这会很有帮助
      【解决方案3】:

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

      默认情况下,您的实例已启用基本监控。你可以 可选择启用详细监控。启用详细信息后 监控时,Amazon EC2 控制台会显示实例的 1 分钟周期的监控图表。

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

      【讨论】:

      • 你到底尝试了什么? :) 启用详细监控或增加警报周期?我的回答应该可以解决您的第一个问题(数据不足警报)。
      猜你喜欢
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2021-01-10
      相关资源
      最近更新 更多