Monitoramento AWS com New Relic e Cloudwatch

New Relic cloudwatch

Uma das coisas mais importantes para uma operação saudável de qualquer infraestrutura é a configuração do monitoramento. Utilizando Amazon Web Services, uma opção muito interessante e gratuita é o New Relic em conjunto com o CloudWatch.

New Relic

O New Relic é um serviço muito interessante, cuja proposta é de prover monitoramento profundo de aplicações web e mobile, sem exigir uma configuração custosa e trabalhosa. Na versão gratuita ele já dá um conjunto bem rico de funcionalidades, como:

  • Tempo de resposta e vazão para usuários finais, detalhando por camada
  • Tempo de resposta e vazão das aplicações, detalhando por componente
  • Monitoramento da disponibilidade das aplicações, com alertas e notificações
  • Mapeamento automático da topologia das aplicações
  • Monitoramento da disponibilidade dos servidores e do consumo dos recursos
  • Detecção de erros com alertas e análise

Dashboard

Temos a seguir uma amostra do Dashboard dele, com um único servidor configurado. Ele traz informações bem interessantes, como memória total, versão do kernel, visão detalhada de processos e recursos consumidos e há também uma visão por aplicações, que envolve o uso de agentes dentro do servidor. Também é possível criar dashboards customizados incluindo qualquer indicador importante do servidor ou das aplicações. Uma idéia interessante é monitorar as principais de transações de negócio das aplicações para sempre saber se elas estão se comportando adequadamente.

Dashboard_new_relic

Agentes

O que é muito interessante no New Relic é esse nível de detalhe sobre processos e aplicações, trazendo informações bem ricas em real-time. Neste servidor monitorado há um Apache servindo 2 WordPress e também um JIRA. Para acompanhar adequadamente cada aplicação importante é necessário instalar o agente adequado, mas esse processo é extremamente rápido e fácil! Nesta instância não demorei mais do que 2 minutos para instalar os agentes de Php e de Java. Podemos ver os guias de cada linguagem:

Alertas e Notificações

O New Relic possui um sistema de alertas bem detalhado, acompanhando muitos indicadores dos servidores e das aplicações. Podemos ver abaixo como estão configurados os limiares de alerta básicos do servidor.

new_relic_server_alerts_thresholds

Além dos alertas de recursos do servidor, há vários alertas sobre ocorrências nas aplicações. As possibilidades incluem disponibilidade, tempo de resposta, desempenho de threads, entre muitas outras opções.

Quando qualquer indicador monitorado chega ao limiar crítico é disparada uma notificação, que pode ser lançada para: PagerDuty, Campfire, HipChat, webhook, cliente iPhone ou qualquer conta de e-mail.

Uma das principais limitações do New Relic gratuito é a retenção dos dados somente por 24 horas, o que traz algumas dificuldades para acompanhamentos mais longos. Neste ponto é bem interessante usar o CloudWatch em conjunto com o New Relic.

CloudWatch

O CloudWatch é o serviço de monitoramento padrão dos Amazon Web Services, e traz uma gama enorme de métricas dos serviços da Amazon. O monitoramento básico é gratuito e traz muitas informações úteis de consumo dos recursos das instâncias, mas há também a opção do monitoramento detalhado, que traz algumas informações extras e uma frequência maior de atualização das métricas.

Métricas de memória e utilização de disco com Custom Metrics

Me surpreende o fato de ainda não estarem disponíveis por padrão as métricas de consumo de memória. Porém, não é difícil habilitá-las, assim como criar outras métricas customizadas de nossas aplicações. A documentação detalhada pode ser vista aqui. Por brevidade vamos descrever neste post só a configuração para Amazon Linux/CentOS.

Para habilitar as métricas de memória, devemos acessar a instância a ser monitorada e navegar para um diretório onde os scripts serão salvos, como /home-ec2-user/cloudwatch.

[ec2-user@ip-10-252-25-212 ~]$ mkdir cloudwatch ; cd cloudwatch
[ec2-user@ip-10-252-25-212 cloudwatch]$ wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip
[ec2-user@ip-10-252-25-212 cloudwatch]$ unzip CloudWatchMonitoringScripts-v1.1.0.zip
[ec2-user@ip-10-252-25-212 cloudwatch]$ rm CloudWatchMonitoringScripts-v1.1.0.zip
[ec2-user@ip-10-252-25-212 cloudwatch]$ cd aws-scripts-mon

Obter as credenciais de segurança em: https://portal.aws.amazon.com/gp/aws/securityCredentials

É necessário obter e preencher no arquivo awscred.template:

[ec2-user@ip-10-252-25-212 aws-scripts-mon]$ vim awscreds.template
AWSAccessKeyId=YourAccessKeyID
AWSSecretKey=YourSecretAccessKey
[ec2-user@ip-10-252-25-212 aws-scripts-mon]$ mv awscreds.template awscreds.conf

Testando sem postar os dados pro CloudWatch:

[ec2-user@ip-10-252-25-212 aws-scripts-mon]$ ./mon-put-instance-data.pl --mem-util --verify --verbose --aws-credential-file=/home/ec2-user/cloudwatch/aws-scripts-mon/awscreds.conf

Coletando todas as métricas de memória e a de utilização de disco e enviando-as pro CloudWatch:

[ec2-user@ip-10-252-25-212 aws-scripts-mon]$ ./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/ --aws-credential-file=/home/ec2-user/cloudwatch/aws-scripts-mon/awscreds.conf

CloudWatch Management Console_metricas_de_memoria
 

Configurar um script cron para enviar periodicamente as novas métricas para o CloudWatch

[ec2-user@ip-10-252-25-212 ~]$ crontab -e

— preencher com o seguinte:

*/5 * * * * ~/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/ --from-cron --aws-credential-file=/home/ec2-user/cloudwatch/aws-scripts-mon/awscreds.conf

Alertas do CloudWatch

Vamos ver como configurar no CloudWatch um conjunto de alertas parecido com o que veio de forma quase automática no New Relic.

CloudWatch Management Console_alarm_CPU_85
CloudWatch Management Console_alarm_CPU_85_action
disk_space_utilization_alarmdisk_space_utilization_alarm_action
resumo_alertas_criados

Mostramos estas 2 métricas e alarmes, mas o processo de criação de novos alarmes é bem semelhante. Dá pra ver que a quantidade de opções de notificação do CloudWatch também é mais limitada do que o New Relic, mas ele permite a criação de métricas customizadas e retém os dados por 2 semanas em vez de 24 horas.

Além disso, uma das principais funcionalidades AWS é o Autoscaling, e ele pode ser configurado utilizando métricas customizadas. Poderíamos mostrar aqui como fazer isto, mas fica para um próximo post 🙂

Conclusão

O New Relic e o CloudWatch em suas versões mais básicas trazem muitos dados interessantes, porém cada um tem suas limitações que atrapalham um pouco uma operação madura. Utilizá-los em conjunto reduz bastante estas limitações e facilita tanto uma análise profunda da situação atual como um acompanhamento de vários indicadores ao longo de um período maior. Ambos podem ser estendidos com métricas e dashboards customizados e ajudam demais na operação de qualquer sistema/infraestrutura.

Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.



Serviços e Plataformas Cloud


Com entrega de consultoria baseada nos principais métodos e práticas de mercado, os Especialistas Mandic Cloud evidenciam e aceleram os resultados e impacto de transformação da área de tecnologia nas empresas com planejamento, implantação/migração e sustentação de workloads com gerenciamento na nuvem com o uso de automação, melhores práticas em DevOps e Data Analytics (Engenharia de Dados) para a Transformação Digital de negócios nas principais plataformas de cloud do mercado:
Gestão AWS Brasil

com Especialistas certificados para te acompanhar de perto, em português. Amazon AWS

Virtualização de Servidores VMware

e Especialistas Mandic Cloud 24x7 que simplificam sua vida. VMware

Orquestração Cloud OpenStack

com Especialistas Full-stack para conectar sua empresa ao futuro. OpenStack Cloud

Microsoft Azure Cloud

e Especialistas em Clouds acelerando o acesso do seu negócio à nuvem corporativa. Microsoft Azure

Google Cloud Platform

e Especialistas DevOps construindo o futuro com Transformação Digital. Google Cloud Platform