sábado, 24 de outubro de 2015

Contando ao new Relic que fiz deploy

  • Contando ao newRelic que fiz deploy

[ rondi@rondi ~]$ echo "Eae pessoal, apesar dos pesares, estou por aqui!

Como prometido anteriormente, mostrarei como falar ao newRelic que fiz deploy. Mas pra quê, serveria isso?

Pense em sua aplicação, pense que na maioria das startups e até empresas grandes, utilizam ferramentas de profiling e monitoramento para descobrir o que está errado e ou o que pode ser melhorado, principalmente quando precisamos de performance.

Bem, então, imagine, nas grandes companias e nas startups, o fluxo de bugs, correções, novas funcionalidades? Normalmente, em testes não pegamos lentidões, em ambientes de stages com pouca massa de dados, pode esconder um problema de indices, queries lentas e etc...

A cada atualização de sua aplicação, é possível enviar ao newrelic (ferramenta que escolhi como exemplo) um sinal para que ele possa "versionar" de acordo com sua release, e incluir nos gráficos, os intervalos entre uma atualização e outra. O ganho com isso é imenso, sendo que, de uma release para outra, você pode perceber latência, tempo de resposta, transactions e demais itens monitorados que possam ter sido afetados por uma má implementação.

Com isso, você pode ter um indício de qual atualização, pode ter afetado sua aplicação, e tentar resolve-lo de forma eficaz.


Bom, chega de teoria e Hands-ON!



Referência: Springtest


Primeiro, fiz algumas alterações para usar com elasticbeanstalk da aws: Saiba mais sobre beanstalk Aqui


Estaremos utilizando para isso:

  • Elastic Beanstalk
  • New Relic
  • Docker

É possível, usar de forma não automatizada, fica a seu critério :)

Baixe o script: Aqui
# Se preferir via comandos:

apt-get install git
git clone https://github.com/Rondineli/scripts /opt/scripts/
Pegue as chaves necessárias da api do newrelic em Account settings:
terá algo como:
k487d7862386t87hgpj8q098q090oij98inij99a 


Inclua o arquivo "newrelic_deploy.sh" em uma pasta scripts (opcional), em seu projeto que será feito o deploy.

Inclua esses parametros dentro de seu .ebextensions (pasta utilizada para configuração ambiente do elasticbeanstalk)

# NewRelic, AppSignal deploy notifications
container_commands:
  00_aws-eb-newrelic-deploynotify:
    command: MY_ENVIRONMENT=$(/opt/elasticbeanstalk/containerfiles/support/generate_env |grep MY_ENVIRONMENT|cut -d '=' -f 2) && NEWRELIC_APP_NAME=$(/opt/elasticbeanstalk/containerfiles/support/generate_env |grep NEWRELIC_APP_NAME|cut -d '=' -f 2) && NEWRELIC_API_KEY=$(/opt/elasticbeanstalk/containerfiles/support/generate_env |grep NEWRELIC_LICENSE_KEY|cut -d '=' -f 2) && /var/app/current/sripts/newrelic_deploy.sh -a "${NEWRELIC_APP_NAME}" -k "${NEWRELIC_API_KEY}" -r $(cat /var/app/current/version.txt) -d "${MY_ENVIRONMENT}"
    leader_only: true
    ignoreErrors: true


Crie um arquivo chamado "versions.txt", em seu pacote contendo a release/tag de seu deploy.
# se preferir e estiver usando o git:
git rev-parse HEAD > version.txt
 
Configure as variaveis ambientes no elasticbeanstalk, como nas imagens.
Para isso: Logue em seu console, abra a opção elasticbeanstalk, escolha seu ambiente, clique na lateral esquerda em "configurações" em seguida em software configuration.






Após incluir as variaveis, clique em "salvar".

Pronto, faça o deploy de seu pacote no beanstalk e verá a mágica:

Exemplo de como é versionado a aplicação:




Bom, pessoal, é isso, utilizei o console e não o aws-cli, pra tentar deixar mais didático e fazer um how-to com imagens. É possível executar o script direto com as informações, fica a seu critétio.

No próximo post, mostrarei como usar o docker hub e como subir uma aplicação django em alguns minutos.

Espero que possa ajudar, caso tenham dúvidas, queiram acrescentar algo, será um prazer :)

Boa noite :D





[ rondi@rondi ~]$ exit...




Nenhum comentário:

Postar um comentário