Como obter a quantidade de espaço livre em disco com o CloudWatch?

11

É possível obter a quantidade de espaço livre em disco (df) com o CloudWatch? Em caso afirmativo, qual métrica representa o espaço livre em disco?

Jan Deinhard
fonte

Respostas:

7

Atualizar

Enquanto isso, a AWS fornece seus próprios scripts de amostra para monitorar o uso de memória e espaço em disco nas instâncias do Amazon EC2 executando Linux, pelo menos, consulte Novos scripts de monitoramento do Amazon CloudWatch :

Você pode executar esses scripts em suas instâncias e configurá-los para relatar métricas de uso de memória e espaço em disco ao Amazon CloudWatch. Depois que as métricas são enviadas ao CloudWatch, você pode visualizar gráficos, calcular estatísticas e definir alarmes sobre eles no console do CloudWatch ou por meio da API do CloudWatch .

[...]

Para saber mais sobre como usar os scripts, incluindo instalação, instalação e configuração, visite " Scripts de monitoramento do Amazon CloudWatch para Linux " no Guia do desenvolvedor do Amazon CloudWatch.

Observe, porém, que muitas soluções populares de monitoramento de terceiros fornecem amostras respectivas ou soluções completas para monitoramento de uso de memória e espaço em disco também, portanto, geralmente não é necessário reinventar a roda. Os scripts fornecidos pela AWS também são bastante decentes e abrangentes, ou seja, cobrem o caso de uso mais detalhadamente do que a maioria dos scripts personalizados personalizados.


Resposta inicial

Não, isso ainda não é possível. Consulte as respostas da equipe da AWS na pergunta relacionada cloudwatch para uso de memória , que também cobre o motivo disso:

[...] No momento, você não precisa implantar nada na AMI para monitorar sua instância. Métricas como utilização de memória e espaço em disco exigem que analisemos o sistema operacional em execução na instância e é por isso que não temos essas métricas valiosas.

Estamos procurando maneiras de fornecer mais informações sobre seu sistema operacional e aplicativos e teremos mais detalhes à medida que estabelecemos os planos.

Duvido que essa funcionalidade surja tão cedo, já que a funcionalidade necessária de agente de plataforma cruzada está prontamente disponível em alguns outros fornecedores que já oferecem soluções de monitoramento dedicadas, e essa tarefa é quase simples - com certeza seria uma grande vitória ter suporte para isso integrado à AWS diretamente, é claro.

Steffen Opel
fonte
"Embora isso não mude o que foi declarado na minha resposta inicial ..." - sua resposta original dizia que a AWS não podia relatar o uso do disco, mas agora os scripts da AWS relatam o uso do disco. Portanto, a resposta à pergunta do OP mudou.
steampowered
3

Aqui está uma versão melhor do mesmo script que recupera os volumes anexados a uma instância e relata o uso de cada volume.

observe a subestação de / dev / xvd para / dev / sd

Observe também que você precisa das ferramentas ec2-api e das ferramentas do cloudwatch instaladas junto com um certificado para que elas funcionem

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

Eu montei um script bash para fazer isso usando as métricas personalizadas do cloudwatch

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

substitua XXXX pelos seus próprios 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

coloque isso em um trabalho cron e você terá uma métrica na qual poderá colocar alarmes. Decidi usar porcentagens e pontos de montagem específicos da instância, em vez de monitorar o volume propriamente dito, pois atendia às minhas necessidades. Costumo redimensionar e alternar volumes mais do que estou reiniciando instâncias. Sua milhagem pode variar.

marstonstudio
fonte
1

Insatisfeitos com os scripts de amostra da Amazon ou os vários scripts de terceiros que usam suas ferramentas de linha de comando baseadas em Perl, escrevemos nosso próprio script em Python: aws-cloudwatch-linux-metrics .

Arquivo único, não possui dependências e é executado em qualquer interpretador Python.

Ele lê dados diretamente do /procsistema de arquivos e relata a utilização do espaço em disco, além de outras métricas do sistema que não são observáveis ​​de fora:

  • Média de carga da CPU
  • Conexões de rede (TCP e UDP)
  • Utilização do espaço em disco
  • Utilização de memória

Ele relata essas métricas com relação ao ID da instância e ao ID da imagem.

malte
fonte
Olá, seu projeto github se foi #
Roco CTZ / 04/18
0

Algum tempo depois da pergunta, a AWS forneceu aos scripts opções para relatar o uso do disco.

Você pode executar esse script no crontab para relatar o espaço em disco disponível para o CloudWatch. Não se esqueça de incluir o caminho do disco.

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

Os Documentos fornecem uma lista completa de opções e mais um exemplo aqui .

a vapor
fonte