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.

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

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

Testando sem postar os dados pro CloudWatch:

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

CloudWatch Management Console_metricas_de_memoria
 

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

— preencher com o seguinte:

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.

  • Alexandre Cardoso

    Da hora, BP! Parabéns pelo post e pela Rivendel. Abs

    • blpsilva

      Muito obrigado Alexandre! 🙂

  • Madson Cardoso

    Muito bom o artigo! Estou usando New Relic, mas vou precisar usar o Cloudwatch também.

    • blpsilva

      Fala Mike Charlie, vale a pena sim! Se precisar de ajuda me avisa 🙂

21