如何将指标数据从 aws cloudwatch 获取到 csv

Rya*_*ari 10 amazon-web-services amazon-cloudwatch

我一直在做项目,我想从 cloudwatch 导出指标数据,比如 CPU 利用率和网络输出数据,有没有办法获取这些数据?并将其转换为 csv?

mma*_*oor 22

导出 CloudWatch 指标

您不能直接执行此操作,但以下是分步说明:

先决条件

  1. AWS CLI(命令行界面)从这里
  2. jq是一个轻量级且灵活的命令行 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
Run Code Online (Sandbox Code Playgroud)

--metric-name 的有效选项取决于--name-space参数。对于 AWS/EC2,可以通过运行以下 CLI 命令查看完整列表:

aws cloudwatch list-metrics --namespace "AWS/EC2"
Run Code Online (Sandbox Code Playgroud)

--statistics 的有效选项是:

SampleCount
Average
Sum
Minimum
Maximum
Run Code Online (Sandbox Code Playgroud)

--start-time--end-time指定范围。

--period返回数据点的粒度(以秒为单位)。

--region测量 CloudWatch 指标的区域(us-east-1、us-west-2 等)

数据输出将类似于以下内容:

{
    "Label": "CPUUtilization",
    "Datapoints": []
}
Run Code Online (Sandbox Code Playgroud)

要将其转换为 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'
Run Code Online (Sandbox Code Playgroud)

选项 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
Run Code Online (Sandbox Code Playgroud)

使用 jq 读取 json 到 csv:

jq -r '.Datapoints[] | [.Timestamp, .Minimum, .Unit] | @csv' data.json
Run Code Online (Sandbox Code Playgroud)

输出

下面是输出的样子:

"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"
Run Code Online (Sandbox Code Playgroud)


Joh*_*ein 6

没有将 Amazon CloudWatch 指标导出为 CSV的内置功能

有 API 调用可用于提取指标,但您需要编写一个程序来调用 API、接收指标并将其以合适的格式存储。

有一些项目可以帮助解决这个问题,例如:

如果您正在寻找这些类型的工具,请确保它们指的是 CloudWatch指标,而不是CloudWatch Logs(这是不同的东西)。