Conteúdo


Conheça detalhes de suas aplicações Cloud Foundry Node.JS dentro da IBM Cloud Bluemix com o App Management utilities

Comments

Acompanhar a saúde de uma aplicação, esteja ela on-premise ou em Cloud faz parte da rotina de uma equipe de operações.

Nos times atuais, já com uma nova mentalidade de DevOps, uma boa caixa de ferramentas pode fazer a diferença na entrega ágil de um software com qualidade, bem como a manutenção depois da entrega.

Tecnologias mais maduras e a mais tempo no mercado, como Java, já possuem um rico conjunto de ferramentas e empresas por trás dessas necessidades.

O desafio torna-se um pouco maior com tecnologias mais recentes como Node.JS. Nesse artigo iremos juntos explorar uma dessas ferramentas chamada de App Management utilities em uma aplicação Node.JS dentro da IBM Cloud (Bluemix).

Para aproveitar melhor o contéudo desse artigo espera-se que tenha um conhecimento inicial de IBM Bluemix e de Node.JS

Serviços de monitoramento dentro da IBM Cloud (Bluemix)

A plataforma IBM Bluemix oferece algumas ótimas ferramentas para você acompanhar o desempenho da sua aplicação em diferentes níveis de detalhes.

Estão disponíveis serviços como o IBM Cloud Monitoring, Availability Monitoring e Monitoring and Analytics, como mostrado na Figura 1.

Figura1
Figura1

Figura 1 – Serviços de monitoração

https://console.bluemix.net/catalog/services/availability-monitoring

https://console.bluemix.net/catalog/services/monitoring

https://console.bluemix.net/catalog/services/monitoring-and-analytics

Os objetivos e capacidades desses serviços listados acima variam indo desde de testes de performance simulados através de requests a partir de diferentes locais no mundo até diagnostico de código para identificar causa-raiz de problemas na sua aplicação, entre outras funcionalidades.

Utilizar alguns desses serviços acima de forma combinada ou isolada é o caminho mais fácil e completo para monitorar e entender o comportamento das suas aplicações seja através de um rico conjunto de analytics ou um mecanismo de alertas para possíveis problemas, porem dependendo do que esta sendo usado, ainda durante o ciclo de vida de uma aplicação podem existir situações onde ferramentas adicionais de desenvolvimento e depuração são necessárias. É nesse momento que vamos utilizar a força do App Management utilities.

App Management utilities

Os App Management utilities são um conjunto de utilitários para desenvolvimento e gerenciamento de aplicações, as quais podem ser habilitadas para os runtimes Node.JS e Liberty (Java).

Os utilitários são:

Devconsole – Permite realizar operações como restart e acesso a um shell

Health Center (hc) – Permite analisar a performance de uma aplicação

Shell – É um acesso ao shell da aplicação através de um cliente Web. Permite editar arquivos, executar comandos dentro do escopo da aplicação.

Inspector – Habilita interface de debug do Node Inspector para a sua aplicação, com isso você pode adicionar breakpoints e depurar sua aplicação em execução dentro do IBM Bluemix

Trace – Permite que você mude dinamicamente o nível do log da sua aplicação se estivar usando log4js ou bunyan.

Lembrete: Existe uma pequena variação na forma de usar esses utilitários com base na versão do Node.JS. Estou considerando para esse artigo a versão 6.10 do Node.JS, que é a versão default dentro do Node.js buildpack 3.12 na data em que este artigo foi escrito. (https://console.bluemix.net/docs/runtimes/nodejs/updates.html#latest_updates)

Vamos à prática

Pegue um atalho e crie uma aplicação de exemplo usando o Boilerplate Node.js Cloudant DB Starter, disponível no catálogo do Bluemix na seção Boilerplates, conforme a figura 2.

Figura1
Figura1

Figura 2 – Criando um app de exemplo

Foi escolhido para esse artigo o nome app-post-app-utilities para a aplicação, mas lembre-se que quando você for colocar isso em prática, deverá escolher outro nome, e não se esqueça também de alterar qualquer referencia ao nome app-post-app-utilities para o novo nome que você escolheu.

Com a aplicação no ar, agora temos que habilitar os utilitários do App Management, para isso devemos ir para o terminal de comando da sua estação de trabalho, e preparar uma variável de ambiente com os utilitários que temos interesse em habilitar do App Management Utilities. Usaramos o CLI do Cloud Foundry (cf) nesse momento.

Lembre-se de fazer o login no IBM Bluemix pelo terminal utilizando o comando cf login.

A variável que devemos inicializar é BLUEMIX_APP_MGMT_ENABLE. Vamos inicializá-la com os utilitários que pretendemos usar. A linha de comando abaixo então define uma variável de ambiente chamada BLUEMIX_APP_MGMT_ENABLE para a aplicação app-post-app-utilities com o valor devconsole+shell+inspector+hc

cf set-env app-post-app-utilities BLUEMIX_APP_MGMT_ENABLE
                devconsole+shell+inspector+hc

O CF cli irá apresentar uma saída parecida com a Figura 3, logo após o envio do comando.

Figura3
Figura3

Figura 3 – Saída no terminal do cf set-env

A partir desse momento, a variável BLUEMIX_APP_MGMT_ENABLE teve seu valor definido e está vinculada a aplicação de exemplo como podemos confirmar através da interface gráfica do Bluemix na tab Environment variables conforme a Figura 4.

Figura4
Figura4

Figura 4 – Environment variables na interface gráfica do Bluemix

O próximo passo é fazer um restage da aplicação para que o Cloud Foundry tome conhecimento do que acabamos de habilitar, e então prepare os utilitários que queremos usar. Essa preparação consiste em instalar os App Management utilities junto com a aplicação durante a operação de restage.

Para fazer o restage simplesmente envie pela linha de comando:

cf restage app-post-app-utilities

Através dos logs do Bluemix você perceberá que os utilitários foram instalados junto com a sua aplicação.

cf logs app-post-app-utilities --recent
Figura5
Figura5

Figura 5 – Log indicando instalação do App Management utilities

Developer Console

Espere a aplicação ficar no ar novamente, e então já poderemos conhecer o UI do Developer Console, simplesmente adicionando /bluemix-debug/manage na URL (rota) padrao da sua aplicação, conforme as Figuras 6 e 7.

Para usar a nova ferramenta que você acabou de instalar você ainda terá que fazer o login usando suas credenciais do Bluemix.

Figura6
Figura6

Figura 6 – Developer Console

Faça o login com as suas credenciais, e na sequencia você será apresentado com a página do Developer Console, onde pode-se reiniciar a aplicação (Figura 7) ou abrir um shell (tty.js) conforme indicado na Figura 8.

Figura7
Figura7

Figura 7 – Developer Console – Restart

Figura8
Figura8

Figura 8 – Shell window

Estamos na metade do caminho, ainda temos que conhecer o health center e o inspector (node inspector) para testar. Faremos isso na sequencia.

Health Center Eclipse Plug-in

Com o bom e velho Eclipse iremos instalar um plugin para a parte do Health Center.

Utilizando o Eclipse Neon, realizei os seguintes passos, conforme a Figura 9.

1-Fiz uma pesquisa no Eclipse Marketplace por Health Center

2-Instalei o plugin IBM Monitoring and Diagnostic Tool – Health Center

Figura9
Figura9

Figura 9 – Eclipse Health Center Plugin

Uma vez que o Health Center client plugin esta instalado no Eclipse, iremos configura-lo.

Escolha uma perspectiva do Eclipse relacionada com o Health Center, conforme a Figura 10.

Figura10
Figura10

Figura 10 – Perspectivas do Eclipse

Em seguida, através do menu File->New Connection, iremos preparar a conexão com a aplicação que esta em funcionando na nuvem do IBM Bluemix.

Selecione a tab Bluemix, e configure de acordo com o seu ambiente no Bluemix, ou seja, o nome da aplicação no Bluemix que você ira monitorar, a URL (API endpoint do Bluemix na região onde esta a aplicação), a organização e space. Observe o exemplo da Figura 11.

Figura11
Figura11

Figura 11 – Configurando o Eclipse Plugin Health Center para o IBM Cloud Bluemix

Apos clicar em next, o assistente irá buscar um agente na aplicação que foi instrumentada e que esta em funcionamento no IBM Bluemix. Lembre-se que fizemos isso antes (habilitar o agente) quando definimos a variável de ambiente BLUEMIX_APP_MGMT_ENABLE e fizemos o restage da aplicação.

Figura12
Figura12

Figura 12 – Agente do Health Center na aplicação

Selecione o agente encontrado e agora na ultima etapa da configuração do Health Center e clique em Finish conforme a Figura 12, agora o Eclipse estará configurado para monitorar a aplicação como podemos ver no lindo gráfico apresentado na Figura 13, onde pode-se ver a utilização da CPU na nuvem por nossa aplicação de exemplo app-post-app-utilities. Como o mesmo Health Center client também pode ser utilizado para aplicações Java (o que não é o nosso caso aqui), você poderá notar que alguns tipos de status estão desabilitados para a nossa aplicação Node.JS

Figura13
Figura13

Figura 13 – Health Center – CPU Status

A parte do Health Center plugin que faz o Profiling da aplicação vem desativada por default. Vamos habilita-la agora e ver mais detalhes ainda da aplicação que esta em funcionamento no Bluemix, para isso basta ir no menu Monitored System do Eclipse e escolher a opção Data Collection Settings conforme as Figuras 14 e 15.

Figura14
Figura14

Figura 14 – Habilitar o Profiling no Health Center

Figura15
Figura15

Figura 15 - Habilitar o Profiling no Health Center

Agora você já pode selecionar a opção Method Profiling na view de status e divertir-se vendo os métodos que foram executados na aplicação, como apresentado na Figura 16.

Figura16
Figura16

Figura 16 – Method Profiling

Inspector

Ainda nos resta falar do ultimo utilitário. Chegou o momento de usar o Inspector, que é uma interface de debugging que funciona dentro do navegador Chrome. Ele é muito útil para tarefas de depuração e investigação de problemas no código. Funções como definir breakpoints, executar passo a passo, inspecionar escopos e variáveis estão incluídas nessa ferramenta.

Para configurar o Inspector é necessário saber qual a URL para ativá-lo dentro do Chrome, e o caminho não é muito difícil. Consulte o log da aplicação no Bluemix com o comando cf logs, e então encontre uma linha que comece com chrome-devtools://devtools. A Figura 17 indica a linha que queremos.

cf logs  app-post-app-utilities --recent

Figura17
Figura17

Figura 17 – Log com informações do Chrome devtools

A linha extraída do log é parecida com a linha abaixo. Analisando com atenção essa linha, há informações sobre um IP e porta local (127.0.0.1:9229)

 chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/fd7e2e49-a984-4bf2-a560-0b689ad72568

São exatamente essas informações que devemos usar para configurar o port forwarding entre o Inspector que esta local e a aplicação remota que esta no IBM Bluemix.

No terminal, execute o comando cf ssh abaixo para criar esse túnel e fazer o port forward necessário para o Inspector funcionar. Lembre-se de usar o nome da sua aplicação.

cf ssh -N -T -L 9229:127.0.0.1:9229 app-post-app-utilities

Feito isso, abra o navegador Chrome, e cole a URL que foi obtida do log iniciando com chrome-devtools. O navegador irá carregar com informações referentes ao código fonte da aplicação, como apresentado na Figura 18.

Nesse exemplo foi definido um breakpoint na linha 146, e fazendo uma atualização ou interagindo na pagina da aplicação de exemplo, a janela do Inspector irá acionar o breakpoint, e então podemos avaliar estados internos e executar passo a passo essa aplicação de forma remota uma vez que a ela esta no IBM Bluemix. Você pode ir muito mais longe no Inspector, agora é com você. A Figura 18 tem mais detalhes.

Figura18
Figura18

Figura 18 - Inspector

Conclusão

Chegamos no final. Você agora conhece um bom conjunto de ferramentas para ajudar a monitorar e entender o comportamento da sua aplicação Node.JS. Um time ou uma empresa preocupado em ter agilidade precisa sempre de uma boa caixa de ferramentas, além da metodologia e disciplina.

Obs.: Tenha em mente que você não quer enviar para produção a aplicação com esses utilitários instalados junto com ela, então antes de preparar sua app para produção execute o comando abaixo e faça o restage

cf set-env app-post-app-utilities BLUEMIX_APP_MGMT_INSTALL false

Recursos

Mais detalhes aqui

https://console.bluemix.net/docs/manageapps/app_mng.html#app_management

https://www.ibm.com/developerworks/java/jdk/tools/healthcenter/getting_started.html

https://www.ibm.com/support/knowledgecenter/en/SS3KLZ/com.ibm.java.diagnostics.healthcenter.doc/homepage/plugin-homepage-hc.html


Recursos para download


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cloud computing
ArticleID=1049059
ArticleTitle=Conheça detalhes de suas aplicações Cloud Foundry Node.JS dentro da IBM Cloud Bluemix com o App Management utilities
publish-date=08292017