【问题标题】:Not able to fetch the value of DiskSpaceUtilization Metric from the Cloudwatch with AWS Lambda无法使用 AWS Lambda 从 Cloudwatch 获取 DiskSpaceUtilization Metric 的值
【发布时间】:2019-11-01 01:08:08
【问题描述】:

我正在尝试借助 lambda 函数从 Cloudwatch 获取我的 EC2 实例的已用磁盘空间(百分比)。它不返回任何值。

当我尝试指定文件系统和挂载路径时,它显示错误 -

参数验证失败:\nMetricDataQueries[0].MetricStat.Metric.Dimensions[0] 中的未知参数:\"Filesystem\",必须是以下之一:名称、值", "errorType": "ParamValidationError"

这是完整的代码。

import boto3
import datetime


def lambda_handler(event, context):
   client = boto3.client('cloudwatch')
   response = client.get_metric_data(

       MetricDataQueries=[
           {
               'Id': 'd1',
               'MetricStat': {
                   'Metric': {
                       'Namespace': 'cloudwatch',
                       'MetricName': 'DiskSpaceUtilization',
                       'Dimensions': [
                           {
                               'Name': 'InstanceId',
                               'Value': '*****************',
                               'Filesystem': '/****/****'
                           },
                       ]
                   },
                   'Period': 300,
                   'Stat': 'Maximum',
                   'Unit': 'Percent'
               },
               'ReturnData': True
           },
       ],
       StartTime=datetime.datetime.utcnow() - datetime.timedelta(seconds=600),
       EndTime=datetime.datetime.utcnow(),
       ScanBy='TimestampDescending',
       MaxDatapoints=60

   )
   return response

我希望输出为 DiskSpaceUtilization - x%。

但目前的输出是

  "MetricDataResults": [
    {
      "Id": "d1",
      "Label": "DiskSpaceUtilization",
      "Timestamps": [],
      "Values": [],
      "StatusCode": "Complete"
    }
  ],

【问题讨论】:

    标签: python-3.x aws-lambda amazon-cloudwatch


    【解决方案1】:

    文件系统是一个单独的维度,改变这个:

    'Dimensions': [
        {
            'Name': 'InstanceId',
            'Value': '*****************',
            'Filesystem': '/****/****'
        },
    ]
    

    对此:

    'Dimensions': [
        {
            'Name': 'InstanceId',
            'Value': '*****************'
        },
        {
            'Name': 'Filesystem',
            'Value': '/****/****'
        }
    ]
    

    然后看看你会得到什么(修复这个问题后可能还有其他问题)。

    【讨论】:

    • 感谢您的快速回复。我已按照您的建议作为文件系统通过 - 能够成功运行 lambda - 但仍然给出上述输出没有任何价值。 :(
    • ` 'Dimensions': [ { 'Name': 'InstanceId', 'Value': 'i-******' }, { 'Name': 'Filesystem', 'Value ': '/***/***' }, { '名称': 'MountPath', '值': '/' }, ] `
    • 仔细检查命名空间、指标名称和所有维度。然后尝试移除该单元。检查 lambda 函数是否与指标位于同一区域。如果没有任何帮助,请在 CloudWatch 仪表板中绘制指标图表,打开图表上的“源”选项卡并使用源更新您的答案(只需删除您不希望公开的部分,就像以前一样)。
    • 谢谢。但这并没有太大帮助。尝试更改命名空间、维度和其他(尝试其他可能性)以及。这是源代码,{ "view": "timeSeries", "stacked": false, "metrics": [ [ "CWAgent", "disk_used", "path", "/", "InstanceId", "**** ***”、“ImageId”、“********”、“InstanceType”、“t2.micro”、“device”、“xvda1”、“fstype”、“xfs”]]、“region ": "eu-west-1" }
    • 来自您的来源:命名空间是CWAgent,指标名称是disk_used,您需要为维度名称/值设置所有这些:"path", "/", "InstanceId", "*******", "ImageId", "********", "InstanceType", "t2.micro", "device", "xvda1", "fstype", "xfs"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2022-11-30
    • 1970-01-01
    • 2021-05-03
    • 2021-07-26
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多