【问题标题】:DiskSpaceUtilization metrics for EC2 instance in python boto script showing empty responsepython boto脚本中EC2实例的DiskSpaceUtilization指标显示空响应
【发布时间】:2019-01-28 09:56:03
【问题描述】:

我想获取 DiskSpaceUtilization 指标的数据点,但 get_metrics_statitics 的响应为空。

get_metrics_statitics 函数非常适用于其他指标,例如 CPUUtilization、MemoryUtilization。但是相同的代码不适用于 DiskSpaceUtilization。

我尝试了以下代码:

import sys
from datetime import datetime as dt, timedelta
import boto3

metricdictionary = {}
metricdictionary['DiskSpaceUtilization'] = 'System/Linux,Percent'

ec2_resource = boto3.resource("ec2")
cloudwatch = boto3.client("cloudwatch")

date = dt.today() - timedelta(days=1)
year = date.year
month = date.month
day = date.day

response = cloudwatch.get_metric_statistics(Namespace='System/Linux', 
                            MetricName='DiskSpaceUtilization', 
                            Dimensions=[{'Name': 'InstanceId', 
                            'Value': 'i-0a22a230c4dae4195', }],                                
                            StartTime=dt(year, month, day, 00, 00, 00),
                            EndTime=dt(year, month, day, 23, 59, 59),
                            Period=3600, 
                            Statistics=['Average', 'Minimum', 'Maximum'],
                            Unit='Percent')

print response

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    这是因为除了 InstanceId 之外,您还需要指定两个额外的维度:FilesystemMountPath

    AWS Developer Forums 中报告了类似的问题。如果您不想对这两个维度进行硬编码,请查看注释:

    避免使用特定于实例的文件系统维度的一种方法是 修改 mon-put-instance-data.pl 脚本并注释掉 添加 Filesystem 和 MountPath 维度的部分,只留下 报告的磁盘指标的 InstanceId 维度。做这些的时候 修改,尝试从 带有 --verify --verbose 选项的命令行以查看将是什么数据 实际发送到 Amazon CloudWatch 服务。

    编辑:如果您想使用 Python 获得这两个维度,您可以执行类似的操作:

    #!/usr/bin/env python
    
    import subprocess
    
    mounts = {}
    
    for line in subprocess.check_output(['mount', '-l']).split('\n'):
        parts = line.split(' ')
        if len(parts) > 2:
            mounts[parts[2]] = parts[0]
    
    print mounts
    

    参考:https://askubuntu.com/questions/189987/get-device-with-mount-point

    【讨论】:

    • 我不想在 python 中使用 boto3 的磁盘空间利用率数据点,但我不知道实例有多少文件系统所以我如何获取文件系统,以便我可以修改 get_metrics_statitics 函数读取 DiskSpace 数据点。任何想法
    • 两种方式:(1)注释掉 mon-put-instance-data.pl 中的文件系统和挂载路径,正如我在帖子中所说的那样。 (2) 从当前实例中获取所有挂载点。这篇文章讲述了几种完成方法(例如 findmnt 或 /proc/mounts):unix.stackexchange.com/questions/24182/…
    • 您分享的帖子显示了在 linux 中安装文件系统,但我的问题是如何在 python 中使用 boto 安装文件系统。
    • boto API 似乎没有提供此信息...我查看了 official API documentation 以及一些 StackOverflow 线程(12)。但这是一个可以在 Python 中执行的简单命令。我会用代码更新线程。
    • 我在一台 EC2 服务器上运行它并读取生产中所有其他 EC2 服务器的 clouwatch 数据所以命令是“ mount -l ”应该在每个实例上运行以安装文件系统通过实例 ID。有什么方法可以通过他们的 instance-id 在远程服务器上运行命令。
    【解决方案2】:

    我修改了 get_metric_statistics 函数,它运行良好。对于磁盘空间利用率,我们需要添加额外的两个维度,即 FileSystem 和 Mountpath。

    response = cloudwatch.get_metric_statistics(Namespace=namesp, MetricName='DiskSpaceUtilization',
                                                                Dimensions=[
                                                                    {'Name': 'InstanceId', 'Value': instance['InstanceId'], },
                                                                    {'Name': 'Filesystem', 'Value': name_of_file_system},
                                                                    {'Name': 'MountPath', 'Value': MountPath_for_filesystem}
                                                                ],
                                                                StartTime=dt(year, month, day, 00, 00, 00),
                                                                EndTime=dt(year, month, day, 23, 59, 59),
                                                                Period=3600, Statistics=['Average', 'Minimum', 'Maximum'],
                                                                Unit='Percent')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2013-02-03
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      相关资源
      最近更新 更多