use*_*177 2 bash sed aws-cli jq
我有一个 Amazon cloudwatch ELB延迟指标,如下所示。
{
"Datapoints": [
{
"Timestamp": "2016-10-18T12:11:00Z",
"Average": 0.25880099632013942,
"Minimum": 0.00071811676025390625,
"Maximum": 3.2039437294006352,
"Unit": "Seconds"
},
{
"Timestamp": "2016-10-18T12:10:00Z",
"Average": 0.25197337517680762,
"Minimum": 0.00063610076904296875,
"Maximum": 2.839790821075439,
"Unit": "Seconds"
},
{
"Timestamp": "2016-10-18T12:19:00Z",
"Average": 0.2287127116954388,
"Minimum": 0.00061678886413574219,
"Maximum": 1.416410446166992,
"Unit": "Seconds"
}
]
Run Code Online (Sandbox Code Playgroud)
}
我正在 shell 脚本中运行 'awscli' 以获取此信息,但数据未按时间顺序返回,时间戳采用 ISO 8601 UTC 格式。我需要根据时间戳对这个数组进行排序,以按时间顺序获取数据。
我的目标: 我有一个ELB更CloudWatch的指标数据RequestCount指标如下喜欢。
{
"Datapoints": [
{
"Timestamp": "2016-10-18T12:11:00Z",
"Sum": 217732.0,
"Unit": "Count"
},
{
"Timestamp": "2016-10-18T12:15:00Z",
"Sum": 227120.0,
"Unit": "Count"
},
]
Run Code Online (Sandbox Code Playgroud)
}
我希望根据时间戳对这些指标进行排序,并在每个时间戳的延迟和请求数量之间建立匹配。此外,我必须计算开始时间和结束时间之间的时间差,这可能无法从此处接收的格式中获得。
我正在使用 shell 脚本,但无法找到解决此问题的方法。任何帮助将非常感激。TIA
JMESPATH 有一个sort_by方法可以用于此 - 这里只是一个例子
aws cloudwatch get-metric-statistics \
--metric-name CPUUtilization \
--start-time 2016-10-01T23:18:00 --end-time 2016-10-19T23:18:00 --period 3600 \
--namespace AWS/EC2 --statistics Maximum \
--dimensions Name=InstanceId,Value=<YOURINSTANCE> \
--query 'sort_by(Datapoints,&Timestamp)[*]'
Run Code Online (Sandbox Code Playgroud)
如果想使用 jq 代替,您将使用 jq 的sort_by方法如下
aws cloudwatch get-metric-statistics \
--metric-name CPUUtilization \
--start-time 2016-10-01T23:18:00 --end-time 2016-10-19T23:18:00 --period 3600 \
--namespace AWS/EC2 --statistics Maximum \
--dimensions Name=InstanceId,Value=<YOURINSTANCE> \
| jq -r '.Datapoints | sort_by(.Timestamp)[]'
Run Code Online (Sandbox Code Playgroud)
如果你更喜欢 bash ,你可以使用 linux sort 命令
aws cloudwatch get-metric-statistics \
--metric-name CPUUtilization \
--start-time 2016-10-01T23:18:00 --end-time 2016-10-19T23:18:00 --period 3600 \
--namespace AWS/EC2 --statistics Maximum \
--dimensions Name=InstanceId,Value=<YOURINSTANCE> \
--output text \
| sort -k 3
Run Code Online (Sandbox Code Playgroud)
日期在第 3 列中,因此您将对此列进行排序 ( -k 3)
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |