Можно ли получить объем свободного дискового пространства (df) с помощью CloudWatch? Если да, то какой показатель представляет собой свободное место на диске?
AWS тем временем предоставляет собственные примеры сценариев для мониторинга использования памяти и дискового пространства на ваших инстансах Amazon EC2 под управлением Linux по крайней мере, см. Новые скрипты мониторинга Amazon CloudWatch:
Вы можете запустить эти сценарии на своих инстансах и настроить их так, чтобы они отображали метрики использования памяти и дискового пространства в Amazon CloudWatch. После отправки показателей в CloudWatch вы можете просматривать графики, вычислять статистику и устанавливать для них сигналы тревоги в консоли CloudWatch или через CloudWatch API.
[...]
Чтобы узнать больше о том, как использовать сценарии, включая установку, настройку и настройку, посетите "Сценарии мониторинга Amazon CloudWatch для Linux"в Руководстве разработчика Amazon CloudWatch.
Однако обратите внимание, что многие популярные сторонние решения для мониторинга уже предоставляют соответствующие образцы или полноценные решения для мониторинга использования памяти и дискового пространства, поэтому обычно не нужно изобретать колесо. Сценарии, предоставляемые AWS, также довольно приличны и обширны, то есть они охватывают вариант использования более тщательно, чем большинство нестандартных одноразовых сценариев, которые распространяются.
Нет, это невозможно (пока). См. Ответы сотрудников AWS на соответствующий вопрос облачные часы для использования памяти, что также объясняет причину этого:
[...] Прямо сейчас вам не нужно ничего развертывать в AMI для мониторинга вашего экземпляра. Такие показатели, как использование памяти и дисковое пространство, требуют от нас изучения ОС, запущенной в экземпляре, и поэтому у нас нет этих ценных показателей.
Мы ищем способы получить более полное представление о вашей ОС и приложениях и будем получать более подробную информацию по мере утверждения планов.
Я сомневаюсь, что эта функциональность появится в ближайшее время, поскольку необходимая функциональность кроссплатформенного агента легко доступна у пары других поставщиков, уже предлагающих специализированные решения для мониторинга, и эта задача почти проста - это определенно будет огромной победой. поддержка этого, конечно же, встроена в AWS напрямую.
Вот лучшая версия того же сценария, который извлекает тома, прикрепленные к экземпляру, и сообщает об использовании каждого тома.
обратите внимание на подстановку / 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
Я собрал bash-скрипт, чтобы сделать это, используя собственные метрики Cloudwatch.
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, и у вас будет метрика, на которую можно установить будильник. Я решил использовать проценты и точки монтирования для конкретных экземпляров, а не контролировать сам том, потому что это соответствовало моим потребностям. Я больше склонен изменять размер и переключать тома, чем перезапускаю экземпляры. Ваш пробег может отличаться.
Недовольные образцами сценариев Amazon или различными сторонними сценариями, использующими их инструменты командной строки на основе Perl, мы написали наш собственный сценарий на Python: aws-cloudwatch-linux-metrics.
Один файл, не имеет зависимостей и работает на любом интерпретаторе Python.
Считывает данные прямо из /proc
файловая система и отчеты использование дискового пространства в дополнение к другим системным метрикам, которые не наблюдаются извне:
Он сообщает эти метрики как для идентификатора экземпляра, так и для идентификатора изображения.
Через некоторое время после того, как вопрос был задан, AWS предоставила сценарии с параметрами для отчета об использовании диска.
Вы можете запустить этот сценарий в crontab, чтобы сообщить о доступном дисковом пространстве в CloudWatch. Не забудьте указать путь к диску.
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron
Документы дают полный список опций плюс пример здесь.