Сценарии оболочки - выполнение операций над статистикой, извлеченной из json из aws статистики облачных часов с использованием bash - PullRequest
0 голосов
/ 25 февраля 2020

Я запускаю aws cli aws cloudwatch get-metric-statistics --metric-name CPUUtilization --start-time 2010-02-20T12:00:00 --end-time 2010-02-20T15:00:00 --period 60 --namespace AWS/EC2 --extended-statistics p80 --dimensions Name=InstanceId,Value=i-0b123423423 в al oop и извлекаю метрики из json (используя jq) в следующем формате примерно для 10-20 экземпляров.

Illustrative JSON

    {
      "Label": "CPUUtilization",
      "Datapoints": [
        {
          "Timestamp": "2020-02-20T12:15:00Z",
          "Unit": "Percent",
          "ExtendedStatistics": {
            "p80": 0.16587132264856133
          }
        },

Instance-ABC
19.514049550078127  
12.721997782508938  
13.318820949213313  
15.994192991030545  
18.13096421299414 

Instance-BCD
19.5140495 
12.7219977 
13.3188209
15.9941929  
18.1309642
13.3188209
15.9941929  
18.1309642 

Как я могу рассчитать и запускайте операции из значений в выводе выше, чтобы получить результаты, как показано ниже, используя Bash scripting

Instance above 70% 
Instance-ABC
Instance-BCD

Instances below 20% 
Instance-EFG
Instance-HIJ

В настоящее время я получаю статистику с:

for i in $(aws ec2 describe-instances | jq -r '.["Reservations"]|.[]|.Instances|.[]| .InstanceId' | sort -n); do
  echo "Instance $i"
  aws cloudwatch get-metric-statistics --metric-name CPUUtilization --start-time 2019-02-20T15:00:00T --end-time 2019-02-20T18:00:00 --period 60 --namespace AWS/EC2 --extended-statistics p80 --dimensions Name=InstanceId,Value=$i \
    | jq '.Datapoints[].ExtendedStatistics[]'
done
...