Como definir a política de dimensionamento automático com base na memória

1

Consegui definir a política de escalonamento automático e também testei tudo bem, estou usando o EC2 small instance para executar o aplicativo Ruby on Rails, já que o Rails é mais da plataforma Memory Intense Eu quero dimensionar as instâncias do EC2 com base na memória não na utilização da CPU. Eu pesquisei ontem, mas não consegui nenhum resultado que realmente me ajudasse.

Qualquer sugestão seria útil.

    
por Jeevan Dongre 10.01.2012 / 06:21

2 respostas

6

O dimensionamento automático no EC2 é baseado em acionadores do Cloudwatch. Por padrão, a Cloudwatch não coleta dados sobre o uso da memória (a razão oficial é algo para o efeito de tais métricas exigindo "uma olhada no sistema operacional em execução na instância")

A solução, portanto, é configurar uma métrica personalizada para monitorar o uso de memória anexar um alarme a essa métrica e, em seguida, basear sua diretiva de escala desse alarme.

A Amazon descreveu o procedimento razoavelmente bem em esta postagem no fórum .

Primeiramente, você tem um script que coletará os dados de 'free' (copiados da página acima):

#!/bin/bash

export AWS_CLOUDWATCH_HOME=/home/ec2-user/CloudWatch-1.0.12.1
export AWS_CREDENTIAL_FILE=$AWS_CLOUDWATCH_HOME/credentials
export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com
export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/jre

# get ec2 instance id
instanceid='wget -q -O - http://169.254.169.254/latest/meta-data/instance-id'

memtotal='free -m | grep 'Mem' | tr -s ' ' | cut -d ' ' -f 2'
memfree='free -m | grep 'buffers/cache' | tr -s ' ' | cut -d ' ' -f 4'
let "memused=100-memfree*100/memtotal"

mon-put-data --metric-name "FreeMemoryMBytes" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memfree" --unit "Megabytes"

mon-put-data --metric-name "UsedMemoryPercent" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memused" --unit "Percent"

O script pega o número da linha '- / + buffers / cache' na coluna 'free', como uma porcentagem de 'total' (na linha 'Mem') e configura 2 métricas - a porcentagem de memória usada e a memória total livre em MB.

Todas as ferramentas da API da AWS são muito lentas (relativamente falando). Se possível, use a API diretamente de algum idioma compatível (por exemplo, Ruby) e você terá um desempenho muito melhor do que o script acima.

Modifique o script acima para atender às suas necessidades (você provavelmente não precisa das duas métricas, etc.) e configure-o para ser executado a cada poucos minutos via cron. Lembre-se de que você recebe um número limitado de métricas e alarmes personalizados / detalhados gratuitamente, após o qual é um custo mensal.

Há também um projeto do Google Code - " Aws Missing Tools " que possui scripts para monitoramento uso de memória e algumas outras métricas que podem ser úteis.

Depois de configurar e operar sua métrica, crie um alarme para ela e continue com o escalonamento automático ( as-put-scaling-policy , etc) como faria com qualquer uma das métricas predefinidas.

    
por 10.01.2012 / 17:09
0

A Amazon acaba de atualizar ( fev, 2013 ) seus scripts do CloudWatch, agora você pode optar por assistir um pouco de informações:

  • Utilização de memória - Memória alocada por aplicativos e pelo sistema operacional, excluindo caches e buffers, em porcentagens.
  • Memória Usada - Memória alocada por aplicativos e pelo sistema operacional, excluindo caches e buffers, em megabytes.
  • Memória disponível - Memória do sistema disponível para aplicativos e sistema operacional, em megabytes.
  • Utilização de espaço em disco - uso do espaço em disco como porcentagens.
  • Espaço em disco usado - uso de espaço em disco em gigabytes.
  • Espaço em disco disponível - espaço em disco disponível em gigabytes.
  • Utilização de espaço de troca - troca o uso do espaço como uma porcentagem.
  • Espaço de troca usado - usa o espaço de swap em megabytes.

Você pode fazer o download dos CloudWatch Monitoring Scripts para Linux e também verificar a documentação completa.

Fonte de PR completo da AWS: link

    
por 02.03.2013 / 20:18