Как получить использование памяти EC2 с помощью командной строки (aws cli) - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь получить использование памяти EC2 с помощью aws cli и вижу, что EC2MemoryUtilization недоступно в качестве показателя.Я установил агент cloudwatch в экземпляре ec2 и создал панель мониторинга для mem_used_percent.

Теперь я хочу использовать память, используемую точками данных программно.Я мог найти для CPUUtilization, но я не могу найти что-либо для использования памяти.

Любая помощь в этом отношении полезна.Спасибо!

1 Ответ

0 голосов
/ 14 декабря 2018

Этот скрипт на python передает метрики системной памяти в cloudwatch в пользовательском пространстве имен.Запланируйте выполнение сценария в crontab каждую 1 минуту или 5 минут для построения показателей системной памяти по времени.Убедитесь, что роль IAM, назначенная виртуальной машине, имеет достаточные привилегии для помещения данных метрики в cloudwatch.

#!/usr/bin/env python
import psutil
import requests
import json
import os
import boto3

get_memory = psutil.virtual_memory()
free_memory = get_memory.free/(1024*1024*1024)
print "Free Memory: ", free_memory, "GB"


headers = {'content-type': 'application/json'}
req = requests.get(url='http://169.254.169.254/latest/meta-data/iam/security-credentials/cloudwatch_access', headers=headers)
res = json.loads(req.text)

AccessKeyId = res['AccessKeyId']
SecretAccessKey = res['SecretAccessKey']
Token = res['Token']
Region = "ap-south-1"

os.environ["AWS_ACCESS_KEY_ID"] = AccessKeyId
os.environ["AWS_SECRET_ACCESS_KEY"] = SecretAccessKey
os.environ["AWS_SESSION_TOKEN"] = Token
os.environ["AWS_DEFAULT_REGION"] = Region

namespace = 'mynamespace'
dimension_name = 'my_dimension_name'
dimension_value = 'my_dimension_value'

cloudwatch = boto3.client('cloudwatch')
cloudwatch.put_metric_data(
  MetricData=[
    {
      'MetricName': 'Free Memory',
      'Dimensions': [
        {
          'Name': dimension_name,
          'Value': dimension_value
        },
      ],
      'Unit': 'Gigabytes',
      'Value': free_memory
    },
  ],
  Namespace=namespace
)
...