Introdução
Ambientes de computação estão sempre em constante evolução, sendo que o momento está para o lado da computação distribuída e a área de gerenciamento também tem que estar em constante evolução para que não seja passada para trás. As plataformas centralizadas já possuem um bom grau de satisfação enquanto que as plataformas distribuídas apresentam grandes problemas de performance e segurança. Quando o ambiente é centralizado se a máquina que está executando um módulo falhar, todos os outros componentes que dependem deste módulo iram falhar, enquanto que no ambiente distribuído haverá uma degradação no desempenho dos módulos, porém continuaram executando normalmente.
O crescimento na utilização dos computadores tornou eminente o gerenciamento de aplicações, enquanto que para se gerenciar aplicações distribuídas nos mais diferentes locais, torna-se muito difícil o seu gerenciamento sem que haja a utilização de ferramentas de auxílio a tal tarefa, enquanto que em uma aplicação centralizada desenvolvida para vários usuários serão gerenciadas sem maiores problemas.
Gerenciamento de Aplicações
As funcionalidades necessárias para se conseguir gerenciar uma aplicação é necessário os seguintes itens:
A monitoração de uma aplicação pode ser:
Em um ambiente distribuído, o funcionamento e o desempenho das aplicações dependem do desempenho do sistema e da rede. Caso ocorra problemas com as aplicações, as dependências devem ser analisadas para que se possa analisar onde os problemas estam acontecendo. O problema no desempenho das aplicações que executam componentes remotas podem ser causadas por falhas na interface de rede, congestionamento nos links intermediários ou tempo de resposta alto, por isso a monitoração será necessária em todos os níveis.
Os gerenciamentos das aplicações eram feitos de modo indireto, com isso o gerenciamento era resumido a análise e monitoração do ambiente no qual as aplicações executavam, porém esta técnica de gerenciamento mostrou-se ineficiente em alguns casos, tornando-se necessário que as aplicações possuíssem seus próprios eventos e informações de gerenciamento para uma console, surgindo desta forma o gerenciamento direto de aplicações.
O uso de aplicações em atividades críticas do sistema, fizeram com que o gerenciamento das aplicações mudasse de indireto para direto.
Uma abordagem de gerenciamento de aplicações para ser completa terá que possuir as seguintes exigências:
Atualmente, quatro alternativas tendem a atender estas exigências :
A Integração do Gerenciamento de Redes e de Sistemas com a Correlação de Eventos utiliza a plataforma SNMP e os produtos convencionais para monitorar os arquivos de log, caches, discos e outros dispositivos, incluindo as próprias aplicações.
O funcionamento será o seguinte: o agente SNMP colhe os dados necessários ao gerenciamento provenientes da rede, do sistema e das aplicações, as aplicações por sua vez já disponibilizam informações de gerenciamento compatíveis com o SNMP, os dados são entregues a uma console de gerenciamento que realiza uma correlação nos eventos existentes para a descoberta de problemas. Os divulgadores desta alternativa são HP, IBM e Sun.
APIs para o Gerenciamento de Aplicações utilizam interfaces para a disponibilização de informações sobre a monitoração e controle para outras aplicações. Possui uma falta de mecanismos para a consulta de dados da rede e do sistema, ficando limitado ao gerenciamento de aplicações através de APIs. Os principais divulgadores desta alternativa são empresas como Tivoli, BMC Corp, HP e outros vendedores de produtos para gerenciamento de sistemas.
Gerenciamento de Servidores de Banco de Dados possuem facilidades para a monitoração e controle dos servidores de banco de dados de uma única console. As aplicações acessam estes bancos de dados e exibem informações sobre o seu funcionamento para uma console central de gerenciamento. Alguns fabricantes desta alternativa são: BMC Patrol e Compuwares Eco Tools, as quais promovem uma abordagem independente de banco de dados para o gerenciamento de servidores.
A Arquitetura de Gerenciamento de Aplicações possui ferramentas de desenvolvimento de aplicações que tem eventos e medidas de performance pré-definidas que são inseridas dentro das aplicações durante a sua execução. Os eventos e medidas de desempenho são propagados para uma console de gerenciamento. Os fabricantes das ferramentas de desenvolvimento de aplicações são os principais divulgadores desta técnica.
Tabelas de Comparação entre as Técnicas
Abordagem Exigência |
Gerenciamento convencional |
APIs para Gerenciamento de Aplicações |
Gerenciamento de Servidores de Banco de Dados |
Arquitetura para o Gerenciamento de Aplicações |
Geração de eventos específicos para aplicações |
Código para o evento deve ser escrito utilizando o protocolo |
Possibilita a geração eventos não sendo uma tarefa fácil |
São gerados apenas eventos específicos de BD |
Eventos podem ser gerados através das ferramentas de desenvolvimento |
Arquitetura para múltiplas aplicações |
Pode ser estendida para gerencia de múltiplas aplicações |
Estabelecem um padrão compreensível para este suporte |
Suportam múltiplas aplicações de BD |
Realiza este suporte via ferramentas de desenvolvimento |
Suporte para múltiplas consoles, PCs e agentes pré-construídos |
Utilizam protocolos padrões, indepen Dentemente de fabricantes que incluem este suporte. (SNMP) |
Cada API é associada um único fabricante de ferramentas de gerenciamento |
Fechados com uma tecnologia. A ênfase é dada aos produtos UNIX |
Projetada para suportar as maiores plataformas |
Arquitetura Escalonável |
Pode ser estendida para suportar vários dispositivos e recursos |
Não ataca a escalabilidade |
Projetada para cobrir múltiplos servidores de BD |
Projetada para suportar ambientes de larga escala. Incluem filtros de dados |
Disciplinas de gerenciamento abordadas |
Atacam geralmente o gerenciamento de falhas e configuração |
Utilizada principalmente para o gerenciamento de performance |
Tratam o gerenciamento de falhas e configuração |
Provê suporte para as 5 disciplinas, cobrindo apenas o gerenciamento de falhas, performance e configuração |
Tipo de monitoração |
Híbrido |
Embutido e manual |
Embutido e automático |
Híbrido |
Comparação entre abordagens para o gerenciamento de aplicações
SNMP(Simple Network Management Protocol)
Quando se começou a utilizar redes de computadores, o gerenciamento da rede era feito de uma maneira muito fácil, pois a área onde os seus componentes se encontravam era pequena geograficamente. Uma pessoa podia gerenciar todos os aspectos dessa rede. Com o passar do tempo, as redes foram aumentando e o seu gerenciamento se tornando mais difícil, muitas sub-redes foram incorporadas nas organizações, localizações ficaram inacessíveis por motivo da distância, então houve a necessidade de um controle maior em cima desse gerenciamento. Surgiu a partir de 1990 a publicasção de um protocolo preocupado com esse aspecto, o SNMP(Simple Network Management Protocol).
A arquitetura na qual o SNMP roda é muito simples, consiste dos seguintes elementos:
As estações de gerenciamento são computadores que rodam um software especial de gerenciamento e que contêm um ou mais processos que se comunicam com os diversos componentes da rede. Cada componentes deste possui um processo que faz seu gerenciamento. Esses processos são chamados agentes de gerenciamento. Esses agentes guardam variáveis que refletem o estado do componente. Se o componente for um roteador, uma de suas variáveis poderia ser a quantidade de pacotes que passou por ele, ou a velocidade de alguma linha de saída. Cada variável dessa é um objeto. O coleção de todos os possíveis objetos de uma rede é chamada de MIB(Management Information Base) ou Base de Informações de Gerenciamento. Cada agente de gerenciamento mantém uma base de gerenciamento local, que contém todos os objetos relacionados com o seu componente. Os componentes de uma rede podem ser hosts, roteadores, pontes, impressoras, hubs ou qualquer componente que possa comunicar status para o lado de fora. A comunicação entre as estações e os agentes é feita através de um protocolo que contém vários comandos. Comandos para receber valores, para atribuir valores e comandos de informação de acontecimentos. Um agente de um roteador que acabou de voltar de uma queda poderia enviar uma mensagem sem nenhuma solicitação informando seu estado. Os comandos se dividem em alguma classes:
Uma estação de gerenciamento que quer saber o valor de algum objeto, enviaria uma mensagem do tipo GET.REQUEST, e o agente ao receber esta mensagem retornaria uma resposta do tipo GET.RESPONSE. Cada mensagem enviada deve ter um formato e uma sintaxe para que possa ser entendida e executada.
Existem alguns componentes que não implementam o SNMP, ou por não terem o TCP/IP ou por serem antigos. A rede precisa de uma maneira de gerenciar esse tipo de componente, então levantou-se a idéia de agente de proxy. É um agente que roda fora do componente, mas tem a capacidade de gerenciá-lo. Esse agente fala tanto o SNMP quanto a língua desse componente. Então quando a estação de gerenciamento ou gerente quer saber alguma informação desse nó, ele se comunica com o agente de proxy que contém as informações requeridas.
Com a utilização do SNMP observou-se que alguns aspectos deixavam a desejar em termos de confiabilidade e eficiência. Do ponto de vista de segurança, muito pouco havia sido feito no SNMP. Ele não prevenia a rede que alguém escutasse alguma troca de mensagem, ou se passasse por um gerente para colher informações dos agentes. Então um comitê foi organizado, e em 1993 foi lançado o SNMP versão 2, que acrescentou alguns pontos de melhoria no SNMP:
Comando |
Descrição |
SNMPv1 |
SNMPv2 |
Get |
Pede um valor para o agente |
x |
x |
GetNext |
Pede o próximo valor |
x |
x |
GetBulk |
Pede os N próximos valores |
|
x |
Set |
Atribui valor a um objeto |
x |
x |
Trap |
O agente comunica que algum evento ocorreu |
x |
x |
Inform |
Um gerente comunica que algum evento ocorreu para outro gerente |
|
x |
Response |
O agente responde a uma requisição |
x |
x |
Existem alguns tipos de ameaças que o gerenciamento de redes tenta tratar. Aqui estão alguns deles:
MIB ( Management Information Base )
É uma estrutura de dados que fornece um conjunto formado por todos os objetos possíveis em uma rede. Objetos são as variáveis que cada dispositivo possui para descrever seu estado. Todo evento significativo é definido em módulo da MIB.
Todos os objetos da MIB SNMP serão identificados por um label em um determinado formato. Os objetos serão gerenciados pelo SNMP. Podem ser agrupados em categorias, as quais tem como objetivo oferecer uma base daquilo que uma estação de gerenciamento deva compreender.
Grupo NΊ Objetos Descrição
System 7 Nome, local e descrição do equipamento
Interfaces 23 Interfaces de rede e seu tráfego
AT 3 Conversão de endereço (obsoleto)
IP 42 Estatísticas de pacotes IP
ICMP 26 Estatísticas sobre as mensagens ICMP recebidas
TCP 19 Algoritmos TCP, parâmetros e estatísticas
UDP 6 Estatísticas de tráfego UDP
EGP 20 Estatísticas de tráfego de protocolo de gateway ext.
Transmission 0 Reservado para MIDs de meios físicos específicos
SNMP 29 Estatísticas de tráfego SNMP
A quantidade de objetos definidos serão de 175 objetos, onde para cada um deles terá o tipo de dados fornecido em um texto descritivo do uso da variável.
WWW MIB
Obtém informações de gerenciamento das entidades responsáveis pela troca de documentos sobre a WWW. Essa MIB é dividida em quatro grupos:
Network Services Monitoring MIB
Serve para monitorar o funcionamento de qualquer aplicação que utiliza serviços da rede e são distribuídas. Dividida em dois grupos:
Relational Database Management System MIB
Consiste de um conjunto de objetos para gerenciamento de banco de dados relacionais. Dividida em três grupos:
Produtos para o Gerenciamento de Aplicações
Como a tecnologia de gerenciamento de aplicações ainda é bastante nova, porém já existe alguns produtos na área, onde a maioria se preocupa basicamente em monitorar a performance das aplicações não levando em conta outros aspectos como falhas e configuração. Vamos citar três exemplos: