Як отримати кількість вільного місця на диску за допомогою CloudWatch?


11

Чи можна отримати кількість вільного місця на диску (df) за допомогою CloudWatch? Якщо так, то який показник представляє вільний простір на диску?

Відповіді:


7

Оновлення

Тим часом AWS надає власні зразки скриптів для моніторингу пам’яті та використання дискового простору у ваших примірниках Amazon EC2, на яких працює Linux принаймні, див. Нові сценарії моніторингу Amazon CloudWatch :

Ви можете запускати ці сценарії у своїх екземплярах і налаштовувати їх на повідомлення про показники використання пам'яті та дискового простору в Amazon CloudWatch. Після подання показників до CloudWatch ви можете переглядати графіки, обчислювати статистику та встановлювати на них сигнали тривоги на консолі CloudWatch або через API CloudWatch .

[...]

Щоб дізнатися більше про використання скриптів, включаючи встановлення, налаштування та конфігурацію, відвідайте " Сценарії моніторингу Amazon CloudWatch для Linux " в Посібнику розробника Amazon CloudWatch.

Зауважте, що багато популярних сторонніх систем моніторингу надають відповідні зразки або повноцінні рішення для моніторингу використання пам'яті та дискового простору, тому зазвичай не потрібно винаходити колесо. Надані AWS сценарії є досить пристойними та обширними, хоча, тобто вони охоплюють випадок використання більш ретельно, ніж більшість призначених для користувача скриптів, що плавають навколо.


Початковий відповідь

Ні, це неможливо (поки що). Дивіться відповіді співробітників AWS на відповідний хвильовий годинник запитання щодо використання пам'яті , який також висвітлює причину цього:

[...] Зараз вам не потрібно нічого розгортати в AMI для моніторингу вашого примірника. Такі метрики, як використання пам'яті та дисковий простір, вимагають від нас вивчити ОС, що працює в екземплярі, і саме тому у нас немає цих цінних показників.

Ми розглядаємо способи надати більш детальну інформацію про вашу ОС та додатки, і будемо мати більше деталей, коли ми розроблятимемо плани.

Я сумніваюся, що ця функціональність з’явиться незабаром, хоча, оскільки потрібна функція агента крос-платформи легко доступна у кількох інших постачальників, які вже пропонують спеціальні рішення для моніторингу, і це завдання все-таки не просто - це, безумовно, буде величезний виграш підтримка цього вбудована в AWS безпосередньо.


"Хоча це не змінює те, що було сказано в моїй початковій відповіді ..." - у вашій оригінальній відповіді сказано, що AWS не може повідомити про використання диска, але тепер сценарії AWS повідомляють про використання диска. Тож відповідь на питання ОП змінилася.
парі

3

Ось краща версія того ж сценарію, яка витягує томи, приєднані до екземпляра, та повідомляє про використання кожного тома.

зверніть увагу на підстанцію / dev / xvd для / dev / sd

також зауважте, що вам потрібні інструменти ec2-api та інструменти хмарного перегляду, встановлені разом із сертифікатом, щоб зробити ці роботи

#!/bin/bash

export JAVA_HOME=
export AWS_CREDENTIAL_FILE=
export EC2_CERT=
export EC2_PRIVATE_KEY=
export EC2_HOME=
export AWS_CLOUDWATCH_HOME=

INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
VOLUME_LIST=$($EC2_HOME/bin/ec2-describe-volumes | grep ${INSTANCE_ID} | awk '{ print $2 ";" $4}')

for VOLUME_LINE in $(echo $VOLUME_LIST); do
        VOLUME_NAME=${VOLUME_LINE%;*}
        DEVICE_NAME=/dev/xvd${VOLUME_LINE#*;/dev/sd}
        USAGE=$(df $DEVICE_NAME | perl -ne 'print "$1" if /(\d+)\%/')
        $AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $USAGE -d "Volume=$VOLUME_NAME" -m UsedStoragePercentage -u Percent -n "NAMESPACE" --show-request
done

2

Я зібрав сценарій bash, щоб це зробити за допомогою спеціальної метрики хмарного перегляду

http://aws.typepad.com/aws/2011/05/amazon-cloudwatch-user-defined-metrics.html

замініть XXXX на власні значення

#!/bin/sh

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export AWS_CREDENTIAL_FILE=XXXX 
export AWS_CLOUDWATCH_HOME=XXXX

INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)

$AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $(df / | perl -ne 'print "$1" if /(\d+)\%/') -d "InstanceId=$INSTANCE_ID,Volume=root" -u Percent -m UsedStoragePercentage -n "XXXX" --show-request

покладіть це на роботу в cron, і у вас з'явиться показник, на який можна надіслати сигнали тривоги. Я вирішив піти з відсотками та конкретними точками кріплення замість моніторингу самого гучності, оскільки це відповідало моїм потребам. Я схильний змінювати розмір і змінювати обсяги більше, ніж я перезапускаю екземпляри. Ваш пробіг може відрізнятися.


1

Невдоволені зразковими сценаріями Amazon або різними сторонніми скриптами, які використовують свої інструменти командного рядка на основі Perl, ми написали власний скрипт у Python: aws-cloudwatch-linux-metrics .

Один файл, не має залежностей, працює на будь-якому інтерпретаторі Python.

Він читає дані прямо з /procфайлової системи та повідомляє про використання дискового простору на додаток до інших системних показників, які не можна спостерігати зовні:

  • Середнє завантаження процесора
  • Мережеві з'єднання (TCP та UDP)
  • Використання дискового простору
  • Використання пам'яті

Він повідомляє про ці показники щодо ідентифікатора екземпляра, і ідентифікатора зображення.


Привіт, ваш проект github пропав
Roco CTZ

0

Десь після того, як було задано запитання, AWS надала сценаріям варіанти з повідомленнями про використання диска.

Ви можете запустити цей скрипт у crontab, щоб повідомити про наявний простір на диску CloudWatch. Не забудьте включити шлях до диска.

*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron

Документи дають повний список варіантів плюс приклад тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.