Monitorar Sistemas Virtuais no IBM SmartCloud Application Workload Service

Ligue seus padrões de sistema virtual a um servidor do IBM Tivoli Monitoring

O IBM® SmartCloud Application Workload Service é um dos serviços disponíveis na oferta Plataforma como Serviço da IBM no IBM SmartCloud Enterprise. O Workload Service utiliza a tecnologia do IBM Workload Deployer como apoio para implementar aplicativos virtuais e sistemas virtuais no IBM SmartCloud Enterprise. No momento em que este artigo foi escrito, o IBM Workload Deployer não fornecia monitoramento para padrões de sistema virtual. Caso queira ligar seus padrões de sistema virtual a um servidor do IBM Tivoli® Monitoring, este tutorial mostra como.

Revathi Subramanian, Senior Software Engineer, IBM Corporation

Author photoRevathi Subramanian é Senior Software Engineer em pesquisa IBM. Suas áreas de pesquisa incluem a arquitetura orientada a serviços, computação em nuvem e estruturas SaaS. Revathi já trabalhou com diversas equipes de desenvolvimento da IBM, incluindo WebSphere, Lotus, Rational e Tivoli, para promover a adoção de tecnologias de pesquisa em produtos e compromissos de serviço.



09/Nov/2012

Antes de Iniciar

Padrões de sistema virtual são padrões de topologia do sistema que podem ser desenvolvidos com as imagens virtuais que são incluídas no catálogo do Workload Deployer. No contexto do Workload Service, o catálogo do Workload Deployer basicamente inclui um conjunto selecionado de imagens virtuais do catálogo de imagens do SmartCloud. Essas imagens virtuais podem ser reunidas para formar um padrão de sistema virtual. Além disso, as partes da imagem virtual podem ser customizadas por meio de pacotes de scripts.

Neste tutorial, ensinaremos como ligar seus sistemas virtuais ao seu servidor de monitoramento compartilhado.

Pré-requisitos e requisitos do sistema

Este tutorial pressupõem que você tenha direito à família de ofertas do IBM SmartCloud Application Services. Em particular, é preciso ter uma instância dedicada do Workload Service e alguma familiaridade com padrões de sistema virtual.

É preciso ter um IBM Tivoli Monitoring Server configurado no IBM SmartCloud Enterprise. Há uma versão pré-release do Tivoli Monitoring V6.2.2.1 no SmartCloud. Crie uma instância dedicada desse servidor efetuando o login no portal do IBM SmartCloud e selecionando a imagem circulada da janela Add Instance, como mostra a Figura 1.

Figura 1. Incluindo a instância da pré-release do Tivoli Monitoring 6.2.2.1 no Tivoli Monitoring Server
Incluindo a instância da pré-release do Tivoli Monitoring 6.2.2.1 no Tivoli Monitoring Server

Pense nesse Tivoli Monitoring Server como um servidor compartilhado que pode monitorar uma série de seus sistemas virtuais. Assim que uma instância do Tivoli Monitoring Server for posicionada, observe o endereço IP da instância do Tivoli Monitoring e acesse o Tivoli Enterprise Portal nesta url: http://<YOUR_ITM_IP>:1920///cnp/kdh/lib/cnp.html.

Sobre este tutorial

Este tutorial utiliza pacotes de scripts para customizar as imagens virtuais do IBM Workload Deployer a fim de que essas instâncias de imagens virtuais possam ser monitoradas pelo servidor do seu Tivoli Monitoring de forma automatizada e repetida. As quatro etapas mostradas na Figura 2 são utilizadas para arquivar o monitoramento de sistemas virtuais.

Figura 2. Etapas para arquivar o monitoramento de sistemas virtuais
Etapas para arquivar o monitoramento de sistemas virtuais

Etapa 1: Criar pacotes de scripts para instalar e configurar o agente do S.O. do software Tivoli Monitoring

Um pacote de scripts é um arquivo zip que contém um conjunto de scripts que são chamados a partir de um executável principal, juntamente com os artefatos que ajudam na execução do script. Por exemplo, veja este pacote de script, itmOS4SCAS.zip. Ele possui três arquivos:

  • cbscript.json: Contém os metadados para configurar o pacote de scripts
  • itm.sh: O principal executável
  • li6263-lz.tar: Um grande archive tar
Figura 3. Conteúdo do pacote de scripts
Conteúdo do pacote de scripts

Shell script para instalar o agente do S.O. Linux

Vejamos o principal executável, itm.sh, um shell script que instalará o Linux® Agente do S.O. em uma máquina virtual que é parte de um sistema virtual.

Lista 1. Shell script para instalar o agente do S.O. Linux
#! /bin/sh

SCRIPT_LOCATION=/tmp
LOG_LOCATION=/tmp/SCAS_scriptpkg_logs
if [ ! -e $LOG_LOCATION ]; then
	mkdir -p $LOG_LOCATION
fi
export LOGFILE=$LOG_LOCATION/itmAgentInstall.log
. /etc/virtualimage.properties     #1
echo "Begin Linux OS Agent Install" > $LOGFILE
echo "Incoming TEMS_SERVER: $TEMS_IP" >> $LOGFILE  #1
echo "Checking if IBM JDK is installed" >> $LOGFILE
# Install IBM JDK if needed
if [ ! -e /opt/IBM/ibm-java-i386-60 ]; then #2
	echo "IBM JDK not installed. Prereq failed. Returning 
	without installing ITM" >> $LOGFILE
	exit 1
fi
echo "IBM JDK Installed, setting JAVA_HOME" >> $LOGFILE
export JAVA_HOME=/opt/IBM/ibm-java-i386-60

#Check SELinux. Must be disabled for install    #3
SELinux_changed=false 
if [ "`cat /selinux/enforce`" -eq "0" ]; then
    echo "SELinux is not enforced. Nothing to do." >> $LOGFILE
else
   echo "SELinux is enforced. Temporarily turning off enforcement" >> $LOGFILE
   echo 0 >/selinux/enforce
   SELinux_changed=true
fi

#Extract Linux Agent Installer, Configure and Run it. 
ITM_DIR=/opt/IBM/ITM
mkdir -p /tmp/ITM
pushd /tmp/ITM
echo "Extracting li6263-lz.tar to /tmp/ITM" >> $LOGFILE
tar -xvf ${SCRIPT_LOCATION}/li6263-lz.tar    #4
echo "Setting TEMS_IP to ${TEMS_IP}" >> $LOGFILE
cat silent_config.txt | sed -e "s/<TEMS_IP>/${TEMS_IP}/" > 
                                                              silent_config.txt.tmp
cat silent_config.txt.tmp > silent_config.txt
echo "Installing lz" >> $LOGFILE
./silentInstall.sh
popd


#Check if Linux Agent is running     #5
$ITM_DIR/bin/itmcmd agent stop lz
sleep 10
export installDir=$ITM_DIR
export CANDLEHOME=$installDir
chmod -R 755 $installDir/*

update_environment( ) 
    {         
  echo "Updating environment variable parameters"  >> $LOGFILE   
			export ENV_FILE=$CANDLEHOME/config/lz.ini
			cat ${ENV_FILE}| sed 's/'KDC_FAMILIES'/'#KDC_FAMILIES'/' > 
                                                ${ENV_FILE}.tmp
			cat ${ENV_FILE}.tmp> ${ENV_FILE}
			rm -f ${ENV_FILE}.tmp
			echo -e "`cat ${ENV_FILE}` "\\n"KDC_FAMILIES=ip.pipe 
                            port:1918 ip.spipe 
			            use:n sna use:n HTTP:1920"> ${ENV_FILE}
			echo -e "`cat ${ENV_FILE}` "\\n"IRA_DEBUG_EVENTEXPORT=Y "> 
                            ${ENV_FILE}
			echo -e "`cat ${ENV_FILE}` "\\n"IRA_DEBUG_PRIVATE_SITUATION=Y "> 
			            ${ENV_FILE}	
		
		echo "environment variable updated successfully"  >> $LOGFILE
		}

############function to update iptables######

update_iptables( ) 
	       {         
	    echo "Updating iptables"   
			export IP_FILE=/etc/sysconfig/iptables >> $LOGFILE
			cat ${IP_FILE}| sed 's/COMMIT/#ITM IPTABLES CONFIGURATIONS/' > 
                      ${IP_FILE}.tmp
			cat ${IP_FILE}.tmp> ${IP_FILE}
			cat ${IP_FILE}| sed 's/-A RH-Firewall-1-INPUT -j REJECT 
                      --reject-with 
			          icmp-host-prohibited/#-A RH-Firewall-1-INPUT -j REJECT 
			          --reject-with icmp-host-prohibited/' > ${IP_FILE}.tmp
			cat ${IP_FILE}.tmp> ${IP_FILE}
			
			rm -f ${IP_FILE}.tmp

			echo -e "`cat ${IP_FILE}` "\\n"-A INPUT -m tcp -p tcp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A INPUT -m udp -p udp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A OUTPUT -m tcp -p tcp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A OUTPUT -m udp -p udp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A RH-Firewall-1-INPUT 
			      -j REJECT --reject-with icmp-host-prohibited"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"COMMIT"> ${IP_FILE}	
		
			/sbin/service iptables restart
		
		echo "updating iptables"  >> $LOGFILE
		}


############function to start itm agent######
		start_itmagent() 
		{
		echo "Restarting ITM agent" >> $LOGFILE	
		$CANDLEHOME/bin/itmcmd agent start lz			
		echo "ITM agent started successfully" >> $LOGFILE
		}

echo "calling functions " >>  $LOGFILE 	

update_environment    #6
update_iptables       #7
start_itmagent        #8

echo "functions called successfully" >>  $LOGFILE
if $SELinux_changed ; then    #9
   echo "Reinstating SELinux enforcement" >> $LOGFILE
   echo 1 >/selinux/enforce
fi

As observações acima explicam os números destacados na seção do código acima.

#1. Pacotes de script podem utilizar determinadas variáveis durante sua execução. Os valores para essas variáveis podem ser inseridos pelo usuário do Workload Service no momento da implementação do sistema virtual ou podem ser os valores definidos durante o tempo de design do padrão. Essas variáveis são colocadas em um arquivo denominado /etc/virtualimage.properties. Em nosso exemplo, $TEMS_IP é uma variável que se torna conhecida ao principal executável por meio de /etc/virtualimage.properties.

#2. Antes de instalar o agente do S.O. Linux, o principal executável verifica se o Java está instalado, pois ele é um pré-requisito. Caso ele não seja encontrado em um caminho específico, o script sai sem instalar o agente Tivoli Monitoring.

#3. Antes de instalar o agente do S.O. Linux, o principal executável verifica se o SELinux (Secure Enhanced Linux) está impingido. O modo impingido não é suportado pelo IBM Tivoli Monitoring. Quanto à documentação do Tivoli Monitoring, é preciso estar em modo permissivo ou desativado para instalar ou configurar o Tivoli Monitoring. No entanto, após a instalação e/ou configuração for executada, o SELinux pode ser ativado novamente. Portanto, o script temporariamente desliga a execução do SELinux .

#4. Em seguida, o respectivo binário li6263-lz.tar é extraído para um local conhecido. O arquivo de configuração de instalação silenciosa é atualizado com o endereço IP do servidor do seu Tivoli Monitoring para que o agente Linux, assim que estiver instalado, possa ser configurado para se conectar ao seu servidor.

#5. O Agente Linux é iniciado automaticamente pelo programa de instalação silenciosa. Ele é interrompido pelo itm.sh para que determinadas mudanças de configuração possam ser feitas.

#6. As variáveis do ambiente do Tivoli Monitoring são atualizadas.

#7. As regras do firewall são atualizadas na MV na qual o agente do S.O. Linux está sendo executado, para que o agente possa se conectar ao servidor de monitoramento na porta 1918.

#8. O agente Tivoli Monitoring é reiniciado após as mudanças acima.

#9. Caso o SELinux tenha sido desligado pelo script, é religado.

O descritor de metadados para o pacote de scripts

Agora, vejamos o cbscript.json, o descritor de metadados para o pacote de scripts. Esse descritor pode ser utilizado para preencher todas as informações necessárias para configurar um pacote de scripts quando for incluído ao catálogo do Workload Deployer. Como pode ver, os metadados para o seu pacote de scripts inclui informações, como o local no qual o pacote de scripts deve ser copiado, o local para os logs a partir da execução do pacote de scripts, além de qualquer definição de variável/propriedade para o script (no nosso caso, há somente uma variável: TEMS_IP).

Lista 2. Descrição dos metadados para o pacote de scripts
[
{
       name": Install and configure ITM OS agent",
       command": sh /tmp/itm.sh",
       commandargs": " ,
       log": /tmp/SCAS_scriptpkg_logs",
       location": /tmp",
       timeout": 3600000,
       version": 1.0",
       path": default_data/Script_Packages/itmOS4SCAS/itmOS4SCAS.zip",
       keys":
       [
           {
               scriptkey": TEMS_IP",
               scriptvalue": ",
               scriptdefaultvalue": 170.224.x.y"
           }
       ]
}
]

Dessa forma, você está pronto com o seu pacote de scripts que é capaz de instalar e configurar um agente do S.O. Linux do software Tivoli Monitoring em qualquer máquina virtual. Juntamente com o itmOS4SCAS.zip, é possível efetuar o download de outro pacote de scripts que instala o Java Runtime em qualquer imagem virtual. Esse pacote de scripts é denominado jdk4SCAS.zip.


Etapa 2: Importar os pacotes de scripts no catálogo do IWD

Agora, é preciso incluir seu pacote de scripts, itmOS4SCAS.zip, no catálogo do Workload Deployer. O pacote de scripts precisa estar no catálogo antes de poder anexá-lo aos padrões de sistema virtual.

Para importar o pacote de scripts, efetue o login no Workload Service.

  1. Clique em Catalog > Script Packages.
  2. Clique no sinal de mais do ícone Add para criar um novo pacote de scripts.
  3. Insira o nome InstallOSAgent.
  4. Clique em OK.
  5. Na página de detalhes InstallOSAgent, clique em Browse... no campo Script Package Files.
  6. Navegue até o arquivo itmOS4SCAS.zip em seu computador.
  7. Clique em Upload.
  8. Clique no ícone Refresh para exibir os detalhes do pacote de scripts.
  9. Grande parte das informações do pacote de scripts é oriunda do descritor do JSON, cbscript.json. Aceite os padrões para todas as demais propriedades. Observe que o campo Executes para o script é definido na criação do sistema virtual. Isso pressupõe que o script será executado automaticamente assim que as máquinas virtuais tenham sido criadas no sistema virtual.
  10. Insira os valores para qualquer variável do ambiente. Neste caso, a variável TEMS_IP é definida como um valor padrão de 170.224.x.y. Mude esse valor para o endereço IP do seu servidor do ITM. Haverá outra chance de alterar esse valor antes de implementar seu sistema virtual.

De forma semelhante, é possível criar outro pacote de scripts denominado InstallJava e importar o jdk4SCAS.zip para o catálogo do Workload Deployer.


Etapa 3: Associar os pacotes de scripts às partes da imagem virtual

É hora de anexar os pacotes de scripts a um padrão de sistema virtual.

Efetue o login no Workload Service:

  1. Clique em Patterns >Virtual Systems.
  2. Clique no sinal de mais do ícone Add para criar um novo padrão de sistema virtual. Insira o nome WebSphereWithMonitoring.
  3. Clique em OK.
  4. No painel à direita, selecione o ícone Edit para exibir o Pattern Editor.
  5. No painel à esquerda, na seleção Parts, arraste a parte do IBM WebSphere® Application Server v7.0 para IWD e solte-o na tela.
  6. No painel à esquerda, selecione Script Packages.
  7. Arraste o pacote de scripts InstallJava e solte-o na parte superior do WebSphere que já está na tela. Repita o procedimento para o pacote de scripts InstallOSAgent.
  8. Certifique-se de que a ordem dos scripts esteja correta. O InstallJava deve ser o primeiro na ordem de execução, seguido pelo InstallOSAgent, para que o Java possa ser instalado antes da instalação do Agente do S.O. Caso seja necessário alterar a ordem, clique no link Ordering no Pattern Editor.
  9. Na tela, clique no ícone Edit Parameter para o pacote de scripts InstallOSAgent. Isso abre uma janela. Insira ou edite o valor para a variável TEMS_IP (ela é o endereço IP do seu servidor de monitoramento). Caso não queira que esse valor seja alterado por ninguém na implementação, bloqueie o campo clicando no ícone de bloqueio ao lado de TEMS_IP na janela.
  10. Clique em Done Editing na parte superior da tela para salvar o padrão de sistema virtual e sair do Pattern Editor.

Etapa 4: Implementar o sistema virtual

Agora, implemente o sistema virtual e veja o resultado.

Efetue o login no Workload Service:

  1. Clique em Patterns > Virtual Systems.
  2. Selecione o padrão WebSphereWithMonitoring. Clique em Deploy.
  3. Na janela padrão Deploy, dê um nome ao seu sistema virtual, por exemplo, WASITM1.
  4. Clique em Configure virtual parts e, em seguida, selecione a parte do WebSphere.
  5. Insira ou edite qualquer valor necessário para o padrão e as variáveis do ambiente do pacote de scripts.
  6. Clique em OK.
  7. Clique em OK para implementar o padrão.

O sistema virtual passa por várias mudanças de estado antes de estar totalmente em funcionamento. Quando vir a seta verde no painel do sistema virtual, é possível visualizar seus detalhes e observar:

  • O endereço IP da máquina virtual do WebSphere Application Server
  • O nome do host da máquina virtual do WebSphere Application Server
  • O relatório de execução do script. A seção Script Packages da página de detalhes lista todos os scripts associados à imagem virtual. No nosso caso, deve haver dois scripts. Uma marcação verde deve ser exibida em cada script após a execução bem-sucedida. É possível clicar nos arquivos cloudburst_collect*.zip para visualizar os logs dos seus scripts.
    Figura 4. Resultados da execução do script no painel do sistema virtual
    Resultados da execução do script no painel do sistema virtual

Agora que o sistema virtual está em execução e os scripts foram executados com êxito, verifique se o agente do S.O. Linux em execução na MV do WebSphere Application Server conseguiu se conectar ao servidor de monitoramento compartilhado. Efetue o login no seu Tivoli Enterprise Portal nesta url: http://<YOUR_ITM_IP>:1920///cnp/kdh/lib/cnp.html. O nome do host da MV do seu WebSphere Application Server deve aparecer no Linux Managed Systems no Navigator.

Figura 5. Registro automático do Linux Managed System
Registro automático do Linux Managed System

Deve ser possível ver que o agente do S.O. Linux está se comunicando com o servidor de monitoramento e fornecendo dados de monitoramento sobre a CPU, Memória, Sistema de Arquivos e outras métricas de valor, como mostra a figura abaixo.

Figura 6. Agente do S.O. Linux no sistema virtual relatando dados monitorados
Agente do S.O. Linux no sistema virtual relatando dados monitorados

Conclusão

Este tutorial descreveu como monitorar sistemas virtuais utilizando o IBM SmartCloud Application Workload Service no IBM SmartCloud Enterprise.

É possível utilizar a mesma abordagem descrita neste artigo para instalar e configurar outros agentes de monitoramento em seus sistemas virtuais, como o IBM Tivoli Composite Application Manager para WebSphere Application Server, Optim Performance Manager. É possível utilizar a mesma instância do servidor do Tivoli Monitoring para monitorar diversos sistemas virtuais. Os próprios sistemas virtuais podem ser implementados a partir de diferentes instâncias do Workload Service. Em outras palavras, é possível configurar um único servidor dedicado do Tivoli Monitoring para todas as suas necessidades de monitoramento do sistema virtual.

O autor gostaria de agradecer a Prasad Vishnubhotla e Denis Ducharme pela revisão deste artigo.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

  • Participe da comunidade do developerWorks. Entre em contato com outros usuários do developerWorks e explore os blogs, fóruns, grupos e wikis voltados para desenvolvedores.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cloud computing, Tivoli
ArticleID=844774
ArticleTitle=Monitorar Sistemas Virtuais no IBM SmartCloud Application Workload Service
publish-date=11092012