Как получить объем свободного дискового пространства с CloudWatch?

11

Можно ли получить объем свободного дискового пространства (df) с помощью CloudWatch? Если да, то какой показатель представляет свободное дисковое пространство?

Ян Дейнхард
источник

Ответы:

7

Обновить

В то же время AWS предоставляет свои собственные примеры сценариев для мониторинга использования памяти и дискового пространства на ваших экземплярах Amazon EC2 под управлением Linux, как минимум, см. Новые сценарии Amazon CloudWatch Monitoring :

Вы можете запускать эти сценарии в своих экземплярах и настраивать их для отчета о показателях использования памяти и дискового пространства в Amazon CloudWatch. После того, как метрики отправлены в CloudWatch, вы можете просматривать графики, рассчитывать статистику и устанавливать для них сигналы тревоги в консоли CloudWatch или через API CloudWatch .

[...]

Чтобы узнать больше об использовании сценариев, включая установку, настройку и настройку, посетите раздел «Сценарии мониторинга Amazon CloudWatch для Linux » в Руководстве разработчика по Amazon CloudWatch.

Однако обратите внимание, что многие популярные сторонние решения для мониторинга уже предоставляют соответствующие примеры или полноценные решения для мониторинга использования памяти и дискового пространства, поэтому обычно не нужно изобретать велосипед. Скрипты, предоставляемые AWS, также довольно приличны и обширны, то есть охватывают сценарий использования более тщательно, чем большинство пользовательских сценариев.


Начальный ответ

Нет, это невозможно (пока). См. Ответы сотрудников AWS на связанный с этим вопрос cloudwatch для использования памяти , который также объясняет причину этого:

[...] Прямо сейчас вам не нужно развертывать что-либо в вашем AMI для мониторинга вашего экземпляра. Такие метрики, как использование памяти и дисковое пространство, требуют, чтобы мы изучили ОС, работающую в данном экземпляре, и поэтому у нас нет этих ценных метрик.

Мы ищем способы обеспечить более глубокое понимание вашей ОС и приложений, и у нас будет больше деталей, когда мы уточним планы.

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

Штеффен Опель
источник
«Хотя это не меняет того, что было указано в моем первоначальном ответе…» - в вашем первоначальном ответе говорилось, что AWS не может сообщать об использовании диска, но теперь сценарии AWS сообщают об использовании диска. Таким образом, ответ на вопрос ОП изменился.
steampowered
3

Вот лучшая версия того же сценария, который извлекает тома, подключенные к экземпляру, и сообщает об использовании каждого тома.

обратите внимание на подстановку / dev / xvd для / dev / sd

Также обратите внимание, что вам нужны инструменты ec2-api и инструменты cloudwatch, а также сертификат для их работы.

#!/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
marstonstudio
источник
2

Я собрал 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, и у вас будет метрика, на которую вы можете ставить сигналы тревоги. Я решил использовать проценты и конкретные точки монтирования экземпляра вместо того, чтобы отслеживать сам том, потому что он соответствовал моим потребностям. Я склонен изменять размеры и переключаться между томами больше, чем перезагружаю экземпляры. Ваш пробег может варьироваться.

marstonstudio
источник
1

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

Один файл, не имеет зависимостей и работает на любом интерпретаторе Python.

Он считывает данные прямо из /procфайловой системы и сообщает об использовании дискового пространства в дополнение к другим системным показателям, которые не наблюдаются извне:

  • Средняя загрузка процессора
  • Сетевые подключения (TCP и UDP)
  • Использование дискового пространства
  • Использование памяти

Он сообщает об этих показателях как с идентификатором экземпляра, так и с идентификатором изображения.

Malthe
источник
Привет, ваш проект GitHub ушел
Roco CTZ
0

Через некоторое время после того, как вопрос был задан, AWS предоставил сценарии с опциями для отчета об использовании диска.

Вы можете запустить этот скрипт в crontab, чтобы сообщить о доступном дисковом пространстве в CloudWatch. Не забудьте указать путь к диску.

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

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

на паровой тяге
источник