我一直在从事项目工作,我想从cloudwatch导出指标数据,例如CPU利用率和Network Out数据,有什么方法可以获取这些数据?并将其转换为CSV?

最佳答案

导出CloudWatch指标
您无法直接执行此操作,但以下是分步说明:
先决条件

  • 来自here的AWS CLI(命令行界面)
  • jq here的轻便灵活的命令行JSON处理器

  • 如何导出
    使用以下CLI:
    aws cloudwatch get-metric-statistics
    --namespace AWS/EC2 --metric-name CPUUtilization
    --dimensions Name=InstanceId,Value=i-xxxxxxxxxxxxxxxxx
    --statistics Average
    --start-time 2020-03-01T00:00:00
    --end-time 2020-03-31T23:59:00
    --period 3600
    --region us-east-1
    
    --metric-name 的有效选项取决于 --name-space 参数。对于AWS/EC2,可以通过运行以下CLI命令来查看完整列表:
    aws cloudwatch list-metrics --namespace "AWS/EC2"
    
    --statistics 的有效选项是:
    SampleCount
    Average
    Sum
    Minimum
    Maximum
    
    -开始时间-结束时间指定范围。
    -期间返回的数据点的粒度(以秒为单位)。
    --region 正在监视CloudWatch指标的区域(us-east-1,us-west-2等)
    数据输出如下所示:
    {
        "Label": "CPUUtilization",
        "Datapoints": []
    }
    
    要将其转换为CSV,我们将使用 jq 。为此,您有两个选择:
    选项1
    将所有aws cli输出通过管道传输到jq:
    aws cloudwatch get-metric-statistics
    --namespace AWS/EC2 --metric-name CPUUtilization
    --dimensions Name=InstanceId,Value=i-xxxxxxxxxxxxxxxxx
    --statistics Average
    --start-time 2020-03-01T00:00:00
    --end-time 2020-03-31T23:59:00
    --period 3600
    --region us-east-1
    | jq -r '.Datapoints[] | [.Timestamp, .Minimum, .Unit] | @csv'
    
    选项2
    将数据导出到JSON:
    aws cloudwatch get-metric-statistics
    --namespace AWS/EC2 --metric-name CPUUtilization
    --dimensions Name=InstanceId,Value=i-xxxxxxxxxxxxxxxxx
    --statistics Average
    --start-time 2020-03-01T00:00:00
    --end-time 2020-03-31T23:59:00
    --period 3600
    --region us-east-1 >> data.json
    
    使用jq将json读取到csv中:
    jq -r '.Datapoints[] | [.Timestamp, .Minimum, .Unit] | @csv' data.json
    
    输出量
    输出结果如下所示:
    "2020-03-24T11:00:00Z",0.327868852454245,"Percent"
    "2020-03-11T21:00:00Z",0.327868852454245,"Percent"
    "2020-03-15T04:00:00Z",0.322580645156596,"Percent"
    "2020-03-27T18:00:00Z",0.327868852478101,"Percent"
    

    08-07 21:02
    查看更多