¿Cómo obtener la cantidad de espacio libre en disco con CloudWatch?

11

¿Es posible obtener la cantidad de espacio libre en disco (df) con CloudWatch? Si es así, ¿qué métrica representa el espacio libre en disco?

Jan Deinhard
fuente

Respuestas:

7

Actualizar

Mientras tanto, AWS proporciona sus propios scripts de muestra para monitorear el uso de memoria y espacio en disco en sus instancias de Amazon EC2 que ejecutan Linux al menos, consulte Nuevos scripts de monitoreo de Amazon CloudWatch :

Puede ejecutar estos scripts en sus instancias y configurarlos para informar las métricas de uso de memoria y espacio en disco a Amazon CloudWatch. Una vez que las métricas se envían a CloudWatch, puede ver gráficos, calcular estadísticas y configurar alarmas en ellos en la consola de CloudWatch o mediante la API de CloudWatch .

[...]

Para obtener más información sobre cómo usar los scripts, incluida la instalación, configuración y configuración, visite " Scripts de monitoreo de Amazon CloudWatch para Linux " en la Guía del desarrollador de Amazon CloudWatch.

Sin embargo, tenga en cuenta que muchas soluciones populares de monitoreo de terceros proporcionan muestras respectivas o soluciones completas para el monitoreo del uso de memoria y espacio en disco, por lo que generalmente no es necesario reinventar la rueda. Sin embargo, las secuencias de comandos proporcionadas por AWS son bastante decentes y extensas, es decir, cubren el caso de uso más exhaustivo que la mayoría de las secuencias de comandos únicas personalizadas que flotan.


Respuesta inicial

No, esto no es posible (todavía). Consulte las respuestas del personal de AWS sobre la pregunta relacionada cloudwatch para el uso de memoria , que también cubre la razón de esto:

[...] En este momento, no necesita desplegar nada en su AMI para monitorear su instancia. Las métricas como la utilización de la memoria y el espacio en disco requieren que analicemos el sistema operativo que se ejecuta en la instancia y es por eso que no tenemos estas valiosas métricas.

Estamos buscando formas de proporcionar más información sobre su sistema operativo y aplicaciones y tendremos más detalles a medida que fortalezcamos los planes.

Sin embargo, dudo que esta funcionalidad surja pronto, ya que la funcionalidad requerida del agente multiplataforma ya está disponible en un par de otros proveedores que ya ofrecen soluciones de monitoreo dedicadas, y esta tarea es casi simple: definitivamente sería una gran victoria tener soporte para esto integrado en AWS directamente, por supuesto.

Steffen Opel
fuente
"Si bien esto no cambia lo que se indicó en mi respuesta inicial ..." - su respuesta original decía que AWS no podía informar el uso del disco, pero ahora los scripts de AWS sí informan el uso del disco. Entonces la respuesta a la pregunta de OP cambió.
impulsado por vapor el
3

Aquí hay una mejor versión del mismo script que recupera los volúmenes adjuntos a una instancia e informa el uso de cada volumen.

tenga en cuenta la sustitución de / dev / xvd para / dev / sd

también tenga en cuenta que necesita las herramientas ec2-api y las herramientas de cloudwatch instaladas junto con un certificado para que funcionen

#!/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
fuente
2

Creé un script bash para hacer esto usando las métricas personalizadas de cloudwatch

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

reemplace XXXX con sus propios valores

#!/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

pon esto en un trabajo cron, y tendrás una métrica en la que puedes poner alarmas. Decidí ir con porcentajes y puntos de montaje específicos de la instancia en lugar de monitorear el volumen en sí porque se ajustaba a mis necesidades. Tiendo a cambiar el tamaño y cambiar los volúmenes más de lo que estoy reiniciando instancias. Su experiencia puede ser diferente.

marstonstudio
fuente
1

Insatisfecho con los scripts de muestra de Amazon o los diversos scripts de terceros que usan sus herramientas de línea de comandos basadas en Perl, escribimos nuestro propio script en Python: aws-cloudwatch-linux-metrics .

Archivo único, no tiene dependencias y se ejecuta en cualquier intérprete de Python.

Lee datos directamente del /procsistema de archivos e informa sobre la utilización del espacio en disco además de otras métricas del sistema que no son observables desde el exterior:

  • Promedio de carga de la CPU
  • Conexiones de red (TCP y UDP)
  • Utilización de espacio en disco
  • Utilización de la memoria

Informa estas métricas con respecto a la identificación de la instancia y la identificación de la imagen.

malta
fuente
Hola, tu proyecto github se ha ido
Roco CTZ
0

Algún tiempo después de que se hizo la pregunta, AWS proporcionó scripts con opciones para informar el uso del disco.

Puede ejecutar este script en crontab para informar el espacio en disco disponible a CloudWatch. No olvide incluir la ruta del disco.

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

Los documentos dan una lista completa de opciones más ejemplos aquí .

vapor accionado
fuente