Inventariação e Monitorização de Sistemas e Redes Ana Rita Rodrigues Pinto nº19128 Manuel António da Silva Coutinho nº 19133 Trabalho realizado sob a orientação de Professor José Rufino Engenharia Informática 2011/2012 Inventariação e Monitorização de Sistemas e Redes Relatório da UC de Projecto Licenciatura em Engenharia Informática Escola Superior de Tecnologia e de Gestão Ana Pinto, Manuel Coutinho 2011/2012 iii A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas neste relatório. iv Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projecto. ___________________________________________ José Rufino - Orientador Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projecto. ___________________________________________ Arguente Aceite para avaliação da UC de Projecto v vi Agradecimentos Este projecto não seria concretizado da mesma forma sem a colaboração de algumas pessoas, às quais nos cabe agradecer. Desde já agradecemos ao orientador Professor José Rufino, pela sua disponibilidade, dedicação e apoio prestado ao longo de todo o projecto. Agradecemos às nossas famílias pois o seu apoio foi fundamental, e sem ele nada disto seria possível. Agradecemos também a todos os amigos e colegas, que de alguma forma nos incentivaram e contribuíram com o seu conhecimento e opinião. Agradecemos ao Instituto Politécnico de Bragança, em particular à Escola Superior de Tecnologia e Gestão por nos ter acolhido num ambiente familiar, proporcionando boas condições de trabalho durante todo o nosso percurso académico. vii viii Resumo O presente projecto tem como finalidade o estudo, instalação e avaliação de plataformas de monitorização de código aberto e utilização gratuita, na perspectiva de futuramente serem utilizadas pelo Centro de Recursos Informáticos da Escola Superior de Tecnologia e Gestão. O projecto incidiu sobre duas das plataformas abertas mais usadas no mercado: Nagios e Zabbix. Dada a conveniência em testar as plataformas num ambiente isolado, recorreu-se a um ambiente de testes virtualizado. Nesse ambiente, foi possível testar as plataformas com uma diversidade de sistemas operativos, suficientemente representativa dos sistemas mais usados, hoje em dia, a nível empresarial. As principais contribuições deste projecto são: i) uma análise comparativa, de tipo qualitativo, entre as duas plataformas, assente num leque diversificado de parâmetros; ii) um conjunto de tutoriais de instalação e configuração das plataformas (e respectivos agentes), com relevância em termos práticos e pedagógicos; iii) um conjunto de máquinas virtuais que ilustram a utilização de cada plataforma. Palavras-chave: Monitorização de Redes, Gestão de Sistemas, Gestão de Redes ix Abstract This project aims the study, installation and evaluation of some open source and utilization frerr monitoring platforms, so that in the future it could be used by the Center of Informatics Recourses of the Superior School of Technology and Management. The project focused on two of the most widely used open platform in the market: Zabbix and Nagios. The project focused on two of the most widely used open platform in the market: Zabbix and Nagios. Given the desirability of testing platforms in an isolated environment, resorted to a virtualized test environment. In this environment, it was possible to test platforms with a variety of operating systems, sufficiently representative of the most commonly used systems, nowadays, at the enterprise level. The main contributions of this project are: i) a comparative analysis of qualitative type, between the two platforms, based on a wide range of parameters; ii) a set of tutorials for installation and configuration of the platforms (and their agents), with relevance practical and pedagogical iii) a set of virtual machines that illustrate the use of each platform. Keywords: Network Monitoring, Management Systems, Network Management x xi Conteúdo 1 Introdução .......................................................................................................................... 1 1.1 Contexto e Objectivos ................................................................................................... 1 1.2 Motivações .................................................................................................................... 1 1.3 Estrutura do relatório .................................................................................................... 2 2 Enquadramento e Tecnologias ......................................................................................... 3 2.1 Enquadramento ............................................................................................................. 3 2.2 Plataformas de Monitorização ...................................................................................... 4 2.2.1 Nagios..................................................................................................................... 4 2.2.2 OpenNMS............................................................................................................... 4 2.2.3 Zenoss..................................................................................................................... 5 2.2.4 Zabbix..................................................................................................................... 5 2.2.5 Netdisco .................................................................................................................. 5 2.2.6 Opção pelo Zabbix e Nagios .................................................................................. 6 2.3 Tecnologias de Virtualização ........................................................................................ 6 2.3.1 Virtualização .......................................................................................................... 6 2.3.2 VMware Workstation ............................................................................................. 7 2.3.3 VirtualBox .............................................................................................................. 7 2.3.4 Opção pelo VMware Workstation.......................................................................... 8 2.4 Sistemas Operativos ...................................................................................................... 8 2.4.1 Concentrador .......................................................................................................... 8 2.4.2 Sistemas Monitorizados ......................................................................................... 8 3 Desenvolvimento do Projecto ......................................................................................... 10 3.1 Zabbix ......................................................................................................................... 10 3.1.1 O que é o Zabbix? ................................................................................................ 10 3.1.2 Origens ................................................................................................................. 11 3.1.3 Estrutura do Zabbix .............................................................................................. 11 3.1.4 Funcionalidades do Zabbix .................................................................................. 12 3.1.5 Pré-Requisitos ...................................................................................................... 13 3.1.6 Instalação .............................................................................................................. 14 3.1.7 Exploração Pós-Instalação ................................................................................... 14 3.2 Nagios ......................................................................................................................... 18 3.2.1 O que é o Nagios? ................................................................................................ 18 xii 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 4 5 Origens ................................................................................................................. 18 Estrutura do Nagios .............................................................................................. 19 Funcionalidades do Nagios .................................................................................. 19 Pré-requisitos ........................................................................................................ 20 Instalação .............................................................................................................. 20 Exploração Pós-Instalação ................................................................................... 20 Análise Crítica.................................................................................................................. 23 4.1 Implantação/divulgação no mercado .......................................................................... 23 4.2 Facilidade de instalação e configuração ..................................................................... 23 4.3 Diversidade da informação produzida e acesso à informação .................................... 25 4.4 Custos associados........................................................................................................ 26 4.5 Sistemas Operativos suportados ................................................................................. 26 4.6 Resumo ....................................................................................................................... 26 Conclusões ........................................................................................................................ 28 A - Servidor Zabbix em Debian Squeeze ............................................................................. 1 B - Agente Zabbix em Windows......................................................................................... 10 C - Agente Zabbix em CentOS ........................................................................................... 14 D - Agente Zabbix em Ubuntu e Ubuntu Server .............................................................. 19 E - Servidor Nagios em Debian Squeeze ........................................................................... 21 F - Cliente Nagios em Windows ......................................................................................... 27 G - Cliente Nagios em CentOS ........................................................................................... 30 H - Agente Nagios em Ubuntu Server e Ubuntu .............................................................. 32 xiii Lista de Tabelas Tabela 1 - Pré Requisitos de Software ..................................................................................... 13 Tabela 2 - Pré-Requisitos de Hardware.................................................................................... 14 Tabela 3 - Tabela comparativa entre Zabbix e Nagios............................................................. 26 xiv xv Lista de Figuras Ilustração 1 - Logótipo do Zabbix ............................................................................................ 10 Ilustração 2 - Listagem dos hosts no Zabbix ............................................................................ 15 Ilustração 3 - Carga do processador no Windows XP .............................................................. 15 Ilustração 4 - Host uptime no Windows 7 ................................................................................ 16 Ilustração 5 - Espaço livre em disco no Windows Server 2008 ............................................... 16 Ilustração 6 - CPU system time no Ubuntu .............................................................................. 17 Ilustração 7 - Memória livre no CentOS .................................................................................. 17 Ilustração 8 - Logótipo do Nagios ............................................................................................ 18 Ilustração 9 - Listagem dos hosts monitorizados no Nagios .................................................... 20 Ilustração 10 - Serviços monitorizados no CentOS ................................................................. 21 Ilustração 11 - Serviços monitorizados no Ubuntu .................................................................. 21 Ilustração 12 - Serviços monitorizados no Ubuntu Server ....................................................... 21 Ilustração 13 - Serviços monitorizados no Windows 7 ............................................................ 21 Ilustração 14 - Serviços monitorizados no Windows Server 2008 .......................................... 21 Ilustração 15 - Serviços monitorizados no Windows XP ......................................................... 22 Ilustração 16 - Ambiente instalação do Zabbix .......................................................................... 5 Ilustração 17 - Licença do produto ............................................................................................. 6 Ilustração 18 - Verificação dos pré-requisitos............................................................................ 6 Ilustração 19 - Configuração da base de dados .......................................................................... 7 Ilustração 20 - Detalhes da configuração ................................................................................... 7 Ilustração 21 - Confirmação dos ficheiros de configuração ....................................................... 8 Ilustração 22 - Método de inserção de um Host no Zabbix ....................................................... 8 Ilustração 23 - Local de criação da pasta zabbix ...................................................................... 10 Ilustração 24 - Conteúdo zabbix_agentd.conf .......................................................................... 11 Ilustração 25 - Linha de comandos .......................................................................................... 11 Ilustração 26 - Instalação bem sucedida do agente zabbix....................................................... 11 Ilustração 27 - Página dos Serviços.......................................................................................... 12 xvi Ilustração 28 - Excepção da Firewall parte 1 ........................................................................... 13 Ilustração 29 - Excepção da Firewall parte 2 ........................................................................... 13 Ilustração 30 - Excepções da Firewall...................................................................................... 18 Ilustração 31 - Informação do IP do servidor no agente .......................................................... 19 Ilustração 32 - Inserção do IP do servidor no cliente Windows............................................... 27 Ilustração 33 - Permissão da interacção entre o serviço e o ambiente de trabalho .................. 29 Ilustração 34 - Informação do IP do Servidor no agente CentOS ............................................ 31 xvii Lista de Abreviaturas SNMP- Simple Network Management Protocol SQL- Structured Query Language PHP- Hypertext Preprocessor IT- Information Technology MAC- Media Access Control SLA- Service Level Agreement SMS- Short Message Service CPU- Central Processing Unit RAM- Random Access Memory DHCP- Dynamic Host Configuration Protocol IP- Internet Protocol NAT-Network Address Translation SMTP – Simple Mail Transfer Protocol POP3 – Post Office Protocol HTTP – Hypertext Transfer Protocol xviii xix Capítulo 1 1 Introdução 1.1 Contexto e Objectivos O trabalho apresentado neste relatório desenvolveu-se no âmbito da unidade curricular de Projeto, do 3º ano da Licenciatura de Engenharia Informática, do Instituto Politécnico de Bragança. O objectivo geral deste projecto é o estudo, instalação, configuração, teste e comparação de plataformas de monitorização, na perspectiva de uma utilização futura em cenário real, por parte do Centro de Recursos Informáticos da ESTiG. 1.2 Motivações Uma das motivações para a escolha deste projecto foi a possibilidade de podermos trabalhar com redes informáticas, uma área tecnologicamente muito abrangente e de grande importância hoje em dia. Outro motivo de interesse do projecto é que hoje em dia qualquer empresa de média dimensão (e até algumas de pequena dimensão) tem “obrigatoriamente” de possuir um administrador de sistemas/redes (um dos perfis de saída do nosso curso) nos seus quadros, sendo expectável que este tenha de trabalhar com plataformas de monitorização. Nesse sentido, este projecto representa uma boa oportunidade para exercitar esse tipo de competências. 1 1.3 Estrutura do relatório O resto do relatório inclui os seguintes capítulos: - no segundo capítulo é feito o enquadramento do projecto em termos gerais e, de forma mais específica, no âmbito das plataformas de monitorização de redes, bem como as tecnologias de suporte à prossecução do projecto (tecnologias de virtualização e sistemas operativos monitorizados). - no terceiro capítulo descreve-se cada um dos sistemas de monitorização utilizados (em que consistem esses sistemas e quais os resultados obtidos com cada um deles). - o quarto capítulo contém uma análise crítica aos dois sistemas testados. - no quinto capítulo são apresentadas as conclusões retiradas do trabalho desenvolvido. bem como as considerações gerais acerca deste. 2 Capítulo 2 2 Enquadramento e Tecnologias Neste capítulo faz-se uma breve apresentação da área em que o projecto se enquadra e apresentam-se as principais tecnologias que serviram de suporte à realização do mesmo. 2.1 Enquadramento Hoje em dia, existem muitos administradores de rede e sistemas que desconhecem o que se passa, de facto, nas infra-estruturas que gerem. Tal desconhecimento limita a sua aptidão para reagirem da forma mais adequada (sendo que essa adequação depende da quantidade de qualidade da informação disponível), na eventualidade de problemas nessas infra-estruturas. Por outro lado, à medida que a infra-estrutura de rede vai crescendo, e que aumenta o número de sistemas a elas conectados, aumenta também a probabilidade de eventos problemáticos, sendo alguns deles: i) em caso de falha de alguma máquina da rede, há mais dificuldade em saber qual a origem do problema; ii) não se consegue saber se alguma máquina necessita de memória; iii) não se consegue ter uma noção completa da composição da rede; iv) não existe a possibilidade de saber quais as máquinas activas em tempo real, entre outros. Assim, ferramentas adequadas de monitorização tornam-se indispensáveis, não só para permitir reacções adequadas aos problemas mas também como instrumentos de políticas de carácter preventivo. 3 2.2 Plataformas de Monitorização No amplo mundo da internet podemos encontrar uma panóplia de plataformas e ferramentas de monitorização. Para que se possam escolher a(s) ideal(is) para as nossas necessidades, é necessário realizar um estudo de um leque suficientemente representativo de possibilidades. Nesta secção apresentamos um resumo das principais plataformas identificadas durante o levantamento que fizemos previamente à parte experimental do projecto. De realçar que todas as plataformas descritas obedecem a um dos requisitos do projecto; serem gratuitas (mesmo para utilização institucional) e de código aberto. 2.2.1 Nagios Nagios, [Nagios] é uma popular aplicação de monitorização de rede que pode monitorizar tanto hosts 1como serviços, fornecendo alertas aquando da ocorrência de problemas ou certos eventos. Baseia-se num interface web para a visualização da informação produzida. Foi originalmente criado com o nome de Netsaint, sendo mantido pelo seu fundador Ethan Galstad, juntamente com uma equipa de desenvolvedores que mantém plugins2 oficiais e nãooficiais. A descrição desta plataforma é complementada na secção 3.2. 2.2.2 OpenNMS O OpenNMS, [OpenNMS] é um sistema dedicado à criação de uma plataforma de gerenciamento de rede voltada principalmente para a camada de aplicação. Tem uma interface web onde é possível visualizar informações da rede, como o estado dos serviços, gráficos de desempenho e informações sobre os equipamentos. O projecto OpenNMS foi iniciado em Julho de 1999 para a companhia PlatformWorks. 1 2 4 hospedeiro, é qualquer máquina ou computador conectado a uma rede programa de computador usado para adicionar funções a outros programas maiores 2.2.3 Zenoss O Zenoss Core [Zenoss] tem uma interface web que permite ao administrador monitorização de disponibilidade, performance, eventos e ainda inventariação/configuração. Combina uma programação original e vários projectos de código aberto baseados em interface web. Existe a possibilidade de serem incrementadas funcionalidades através de plugins. O desenvolvimento deste sistema começou em 2002. 2.2.4 Zabbix O Zabbix [Zabbix01] é um software que monitoriza diversos parâmetros de uma rede como a integridade e desempenho dos servidores, disponibiliza relatórios detalhados, permite a visualização dos dados dos recursos com base nos dados armazenados, usando também um mecanismo que permite aos utilizadores a configuração de e-mails com alertas para qualquer evento, o que permite uma reação rápida para possíveis problemas do servidor. A descrição desta plataforma é complementada na secção 3.1. 2.2.5 Netdisco O Netdisco [Netdisco] é uma ferramenta de monitorização de rede lançada em 2003, sendo o público-alvo os administradores de rede de grandes corporações. Este sistema disponibiliza várias informações que o destacam de outras abordagens, tais como informação da tipologia de rede, mapeamento dos endereços MAC para endereços IP permitindo assim a localização exata da porta de cada nó conectado à rede. 5 2.2.6 Opção pelo Zabbix e Nagios Devido à duração limitada do projecto, fomos obrigados a focar a nossa atenção naquelas plataformas que concluímos reunirem um maior nível de aceitação por parte da comunidade de utilizadores, e que são também particularmente bem documentadas: Zabbix e Nagios. 2.3 Tecnologias de Virtualização 2.3.1 Virtualização A virtualização [Virtualização] é uma abstracção de camada que separa o hardware físico do sistema operativo, para fornecer otimização de utilização de recursos de IT e flexibilidade. Permite a execução de múltiplas máquinas virtuais, cada qual com seu sistema operativo e aplicações, lado a lado na mesma máquina física. Cada máquina virtual tem o seu próprio hardware virtual (CPU, RAM, disco, etc), apresentado ao seu sistema operativo. Para efeito de testes, a virtualização toma um papel muito importante, pois antes de se colocar no sistema físico alguma transformação, é sempre bom testar num ambiente virtual para que sejam afastadas possíveis lacunas nesse processo, e logo no processo de virtualização essas lacunas sejam descartadas. Como todas as tecnologias, existem vantagens e desvantagens da mesma [JRufino 10], sendo as vantagens: i) rentabilização de recursos, uma vez que estes são partilhados; ii) portabilidade, pois as máquinas virtuais podem ser copiadas e usadas em outras máquinas; iii) para desenvolvimento de testes de aplicações, incluindo software multiplataforma; iv) útil na experimentação/investigação de sistemas operativos, e para ensino/treino em escolas/empresas. As desvantagens são: i) o desempenho das máquinas virtuais é menor do que uma máquina real; ii) algumas plataformas exigem hardware certificado, assim como ferramentas sofisticadas de gestão; iii) existe uma maior dependência de um conjunto restrito de meios (e.g falha no hardware de suporte implica indisponibilidade simultânea de múltiplos serviços/servidores virtuais). 6 Existem dois tipos de virtualização: i) virtualização de tipo 1, que permite a execução directa de instruções e não exige um sistema operativo host; ii) Virtualização de tipo 2, exige o funcionamento de um sistema operativo host, executado principalmente como uma aplicação em modo utilizador no sistema operativo host. No âmbito deste projecto foi usado o sistema de virtualização de tipo 2 (hosted) e não do tipo 1 (bare-metal), pois o tipo 2 era o que estava disponível, à partida, no Lab de Informática. 2.3.2 VMware Workstation O VMware Workstation é uma plataforma de virtualização comercial de tipo 2 (hosted) direccionada ao uso no desktop. Permite a utilização de várias máquinas virtuais dentro de um sistema operativo Windows e versões GNU/Linux ou MAC OS. Possibilita a união (teaming) de várias máquinas virtuais, permitindo que todas elas sejam iniciadas ou desligadas de forma sincopada. Permite também definir redes virtuais de vários tipos: Bridged, (ou seja a máquina é vista como um outro computador na rede externa do hospedeiro), NAT (a máquina conectase ao computador host que por sua vez se conecta à rede externa) e por fim Host-only (onde a máquina virtual apenas se conecta ao host, num rede completamente privada). Este software tem também a possibilidade de criar snapshots, que são registos instantâneos de uma máquina virtual num determinado momento (e,g,, torna possível testar configurações e caso haja algum tipo de erro nessa configuração, permite voltar ao ponto de partida com um mínimo de esforço). 2.3.3 VirtualBox O VirtualBox é também um software de virtualização de tipo 2, com funcionalidades semelhantes ao VMware Workstation, mas gratuito. No entanto, comparado com o Vmware Workstation, o VirtualBox apresenta, em geral, menor desempenho, estabilidade e funcionalidade, sendo um produto menos amadurecido. 7 2.3.4 Opção pelo VMware Workstation O VirtualBox seria suficiente para realizar um projecto como o nosso, com o bónus de ser gratuito. No entanto, pelas razões acima indicadas, e pelo facto do VMware Workstation estar disponível no Lab de Informática da escola (onde se realizou o projecto), a nossa opção recaiu pela utilização do VMware Workstation. 2.4 Sistemas Operativos 2.4.1 Concentrador No decorrer da implementação do projecto foi necessário decidir qual o sistema operativo, de tipo servidor, que iria albergar a componente centralizada das plataformas de monitorização. Devido aos seus requisitos modestos (quando comparados com sistemas Windows), optou-se por sistemas GNU/Linux para desempenhar esse papel, mais especificamente pela variante Debian (versão 6). Outra hipótese teria sido usar sistemas CentOS (de maior divulgação em termos empresariais), mas pareceu-nos que a instalação em Debian seria um desafio mais interessante, uma vez que em CentOS o processo costuma ser mais automatizado (se bem que à custa, por vezes, de versões mais antigas do software) e mais bem documentado. Existe também uma tradição, ao nível do CRI da ESTiG, na utilização de sistemas Debian em detrimento de sistemas CentOS, o que também foi um factor que pesou na nossa escolha. 2.4.2 Sistemas Monitorizados No que diz respeito à escolha dos ambientes para agentes/clientes, optou-se por cobrir ambientes Windows e Linux, visto que hoje em dia são estes os principais sistemas usados em ambiente empresarial (o Windows a nível Desktop e também a nível Servidor, e o Linux com implantação crescente a nível Servidor). 8 No caso dos sistemas Windows, contemplou-se: i) Windows XP, que apesar de ter sido lançado no ano de 2001, é ainda um sistema muito utilizado; ii) Windows 7, por ser um sistema mais recente e considerado o sucessor do Windows XP a nível empresarial; iii) Windows Server 2008, com ampla divulgação nas pequenas e médias empresas. No caso dos sistemas Linux, optou-se por: i) Ubuntu Desktop, por ser baseado no Debian e por ser uma das distribuições mais conhecidas e utilizadas pelo utilizador comum; ii) CentOS, por ter ampla utilização a nível empresarial. 9 Capítulo 3 3 Desenvolvimento do Projecto 3.1 Zabbix 3.1.1 O que é o Zabbix? Ilustração 1 - Logótipo do Zabbix Zabbix é uma ferramenta, orientada à monitorização de redes, gratuita e de código-fonte aberto. A monitorização contempla aspectos diversos, desde o desempenho/largura de banda de links de rede, até à disponibilidade/conectividade de equipamentos (hosts, switchs, routers, etc.) e serviços. O Zabbix consegue arrecadar informações dos alvos monitorizados por intermédio de scripts, via agente ou até mesmo através do protocolo SNMP. Permite ainda que as informações 10 sejam armazenadas numa base de dados (MySQL, PostgreSQL, SQLite ou Oracle). No âmbito deste projecto optou-se por utilizar o MySQL. Esta plataforma de monitorização possui um interface Web que possibilita a consulta e análise dos dados colectados, tendo ainda suporte para alertas. Os alertas permitem que os eventuais problemas que estejam a ocorrer na rede ou equipamentos sejam identificados e posteriormente sejam tomadas decisões para efectuar possíveis correcções [JSREMM]. O Zabbix é altamente portável, oferecendo agentes para os principais sistemas operativos hoje em uso: Linux, Solaris, Mac OS X, Windows, OpenBSD, FreeBSD, entre outros. Refira-se, no entanto, que existem implementações da componente concentradora (o servidor, na terminologia usada na secção 2.4.1) apenas para sistemas operativos da família UNIX/Linux. 3.1.2 Origens Um dos principais responsáveis por esta ferramenta é Alexei Vladishev, criador e principal desenvolvedor do Zabbix. O projeto e o desenvolvimento do Zabbix foram iniciados em 2001, na Letónia, utilizando a linguagem PHP, em conjugação com uma base dados e um interface Web. O Zabbix é considerado como uma das melhores ferramentas de monitorização da actualidade. As suas funcionalidades, em grande parte, foram herdadas do Nagios, o que tornou o Zabbix uma das ferramentas mais completas e poderosas disponíveis. 3.1.3 Estrutura do Zabbix O sistema está dividido em três grandes componentes: Servidor Zabbix: responsável pela recolecção e armazenamento dos dados monitorizados; como já foi referido, deve ser obrigatoriamente hospedado numa máquina com um sistema operativo da família Unix/Linux; 11 Agente Zabbix: responsável por veicular ao servidor todas as informações que foram colectadas a partir do sistema no qual o agente está a executar; normalmente, o agente executa em permanência, como serviço; assim que o servidor coloca um pedido ao agente, este processa o pedido e retorna os dados requeridos, como por exemplo: consumo de memória e do disco rígido, estatísticas do processador, etc. Interface do Zabbix: permite que o administrador tenha acesso para interagir e administrar o sistema; para mais fácil acesso aos dados e configurações, a interface foi projectada para ser acedida via Web; o Zabbix disponibiliza plugins para alguns navegadores, para facilitar o acesso ao servidor (é, por exemplo, o caso do Firefox). 3.1.4 Funcionalidades do Zabbix A lista seguinte enumera as principais funcionalidades do Zabbix [JG]: Gerenciamento centralizado; Acesso centralizado às informações; Número ilimitado de proxies (servidor intermediário que atende requisições passando os dados do cliente à frente); Monitorização em tempo real; Monitorização de alertas para disponibilidade, integridade, entre outros; Alertas via e-mail, SMS, mensagem instantânea e via script configurado; Log de auditoria; Visualização via abas web e mapas; Execução de comandos remotos; Suporte a serviços de IT hierárquico (capacidade de dispor hierarquicamente a rede, definir hosts pai e filhos dentro da rede e diferenciar clientes desactivados); Relatórios em tempo real de SLA’s (e.g relatórios sobre o desempenho do CPU); Facilidade de integração com sistemas de terceiros; Modelos pré-configurados de hosts; Facilidade de compartilhamento de modelos; Sistema de auto busca de dispositivos a serem monitorizados; Monitorização de páginas web; Suporte a qualquer plataforma; 12 Suporte ao protocolo SNMP; Agente próprio de alta performance; Rápida aprendizagem; Multiutilizador web com níveis de acessos flexíveis. 3.1.5 Pré-Requisitos O servidor do Zabbix, tem alguns pré-requisitos de software e hardware, a levar em atenção para que a sua instalação seja bem-sucedida e para que o seu funcionamento não padeça de problemas de desempenho. Na Tabela 1, são mostrados os requisitos mínimos de Software para a instalação do servidor Zabbix. Tabela 1 - Pré Requisitos de Software Software Versão Apache PHP PHPmodules: php-gd PHPTrueType support PHP bc support PHP XMLsupport PHPsession support PHP socket support PHP multibyte support IBM DB2 ibm_db2 MySQL php-mysql Oracle oci8 PostgreSQL php-pgsql SQLite php-sqlite3 1.3.12 ou seguintes 5.0 ou seguintes GD 2.0 ou seguintes 3.22 ou seguintes 7.0.2 ou seguintes se Zabbix < 1.8.9 7.4 ou seguintes se Zabbix >= 1.8.9 3.3.5 ou seguintes 13 Na Tabela 2, são mostrados os requisitos mínimos de Hardware do sistema que aloja o Servidor, em função da dimensão da infra-estrutura monitorizada [ZNM]. Tabela 2 - Pré-Requisitos de Hardware Infra-estrutura CPU Memória Hosts Monitorizados Pequena PII 350 MHz 256 MB 50 Média AMD Athlon 3200 2 GB 500 Grande Intel Dual Core 6400 4 GB Mais de 1000 Muito grande Intel Xeon 2xCPU 8 GB Mais de 10000 3.1.6 Instalação Durante a instalação foram enfrentadas algumas dificuldades no que diz respeito ao servidor Zabbix, pois com a versão Squeeze do Debian é necessário ter alguns cuidados especiais aquando da integração dos agentes Windows e Linux. Esses aspectos de pormenores, assim como os roteiros para a instalação passo-a-passo do servidor e respectivos agentes Zabbix, podem ser consultados nos Anexos A, B, C e D. 3.1.7 Exploração Pós-Instalação Após a instalação e configuração do Zabbix, foram exploradas algumas das suas principais funcionalidades, a fim de verificar se tudo estaria a funcionar da forma correcta. Embora não exaustivas, as figuras seguintes (capturadas da gama de testes virtual que usamos) ilustram mostram algumas das capacidades deste sistema de monitorização. Após a adição dos hosts a serem monitorizados (c.f. anexo A), para se poder visualizar a sua listagem acede-se ao separador Configuration e de seguida ao separador Hosts.—ver Ilustração 2. 14 Ilustração 2 - Listagem dos hosts no Zabbix Podem ser configuradas janelas de visualização das métricas recolhidas a partir de cada host. Nas ilustrações seguintes mostram-se diferentes métricas para diferentes sistemas operativos, recolhidas na nossa plataforma de simulação virtual. Ilustração 3 - Carga do processador no Windows XP 15 Ilustração 4 - Host uptime no Windows 7 Ilustração 5 - Espaço livre em disco no Windows Server 2008 16 Ilustração 6 - CPU system time no Ubuntu Ilustração 7 - Memória livre no CentOS Como se pode verificar existe uma grande variedade de métricas que podem ser monitorizadas, tendo-se aqui apenas exibido um pequeno subconjunto. 17 3.2 Nagios 3.2.1 O que é o Nagios? Ilustração 8 - Logótipo do Nagios Nagios é um sistema de código-fonte aberto, usado para monitorização de redes, hosts e serviços. Originalmente desenhado para ser totalmente (concentrador e agentes) executado em Linux, hoje em dia suporta (na componente agente) muitos outros. Inicialmente projectado para redes de grande porte, o seu desempenho em pequenos ambientes é excelente. Este sistema providencia três plugins para monitorização de bases de dados: check_pgsql para o PostgreSQL, check_mysql para o MySQL e check_oracle para o Oracle. Eles todos têm em comum o facto de que podem ser usados tanto localmente como através da rede [HAA06], isto quer dizer que estes plugins podem monitorizar bases de dados remotas, situadas em máquinas onde os agentes estão a ser executados. No âmbito deste projecto vai-se trabalhar com o check_mysql. 3.2.2 Origens Inicialmente chamado de NetSaint, o Nagios foi lançado em 1999 e desde aí tem crescido, acomodando milhares de projectos-satélite desenvolvidos pela comunidade Nagios em todo o mundo. Esta plataforma é oficialmente patrocinada pela Nagios Enterprises, que apoia a comunidade de diferentes maneiras, através das vendas de seus produtos e serviços comerciais (suporte, etc.) [Nagios]. Neste contexto, existem duas versões do Nagios: o Nagios Core, que é livre e gratuito, e o Nagios XI, direcionado para clientes do sector empresarial que necessitam de suporte, e que por isso é pago. Neste trabalho, utilizamos a versão Nagios Core, doravante designada simplesmente por Nagios. 18 3.2.3 Estrutura do Nagios Tal como o Zabbix, o Nagios foi projectado essencialmente para ser hospedado numa máquina Linux, não existindo versões da componente concentrador/servidor para outros SOs, e é formado pelos mesmos três componentes: Servidor Nagios: responsável pela recolha e armazenamento dos dados monitorizados pelos agentes distribuídos pela rede Agente/Cliente Nagios: serviço em execução permanente nos sistemas monitorizados, sendo responsável por fornecer todas as métricas por si colectadas ao servidor; o fornecimento é feito ao servidor a pedido deste. Interface do Nagios: interface de tipo Web, que permite aceder à informação de monitorização concentrada no servidor, bem como efectuar tarefas de administração do mesmo. 3.2.4 Funcionalidades do Nagios As principais funcionalidades que o Nagios Core oferece são [Nagios2, DBLC]: Monitorização de serviços de rede (SMTP, POP3,HTTP, SNMP) Monitorização dos recursos do host (carga do processador, utilização do disco, …). Plugins que permitem aos utilizadores acrescentar a monitorização de outras métricas. Paralelização dos serviços, ou seja, caso existam muitos itens monitorizados não existe risco de alguns deles não sejam verificados por falta de tempo. Capacidade de definir uma rede hierárquica, definindo equipamentos “pai” que vão permitir a distinção dos equipamentos disponíveis dos indisponíveis. Capacidade de envio de notificações caso ocorra algum problema, ou até quando o problema seja resolvido (via email, pager, ou outro dispositivo definido pelo utilizador). Interface web com o estado da rede actual, notificações, o histórico e os ficheiros log. Suporte para implementação de monitorização redundante. 19 3.2.5 Pré-requisitos Os pré-requisitos do Nagios são bastante básicos. Não havendo especificações mínimas de hardware “oficiais”, assume-se para que o sistema funcionará em qualquer computador que cumpra os pré-requisitos de software, que são apenas e só estes: Servidor Apache; PHP e bibliotecas GD; Compiladores GCC (incluindo g++). 3.2.6 Instalação No decorrer da instalação do Nagios encararam-se algumas dificuldades no que diz respeito aos agentes/clientes, sendo que a instalação do servidor foi mais linear. A instalação do sistema, passo-a-passo, em Sistemas Operativos diferentes, está documentada nos Anexos E, F, G e H. 3.2.7 Exploração Pós-Instalação Depois da instalação e configuração deste sistema, foram exploradas algumas das suas principais funcionalidades. Tal como fizemos para o Zabbix, mostram-se a seguir figuras que ilustram algumas das capacidades do Nagios, exercitadas no nosso ambiente de testes virtual. Ilustração 9 - Listagem dos hosts monitorizados no Nagios 20 Assim, para obter a listagem dos hosts que estão a ser monitorizados, acede-se ao separador Hosts na barra lateral e obtêm-se o resultado que se pode observar na Ilustração 10. As figuras 10 a 12 mostram as métricas monitorizadas em máquinas virtuais Linux (CentOS, Ubuntu e Ubuntu Server, respectivamente). Ilustração 10 - Serviços monitorizados no CentOS Ilustração 11 - Serviços monitorizados no Ubuntu Ilustração 12 - Serviços monitorizados no Ubuntu Server As figuras 13 a 15 desempenham o mesmo papel para as nossas máquinas virtuais Windows (Windows 7, Windows Server 2008 e Windows XP respectivamente). Note-se a existência de um Warning no espaço em disco da máquina com Windows 7. Ilustração 13 - Serviços monitorizados no Windows 7 Ilustração 14 - Serviços monitorizados no Windows Server 2008 21 Ilustração 15 - Serviços monitorizados no Windows XP Os itens que estão a ser monitorizados são muito semelhantes, cobrindo o espaço em disco, a carga do CPU, a memória em uso, até á versão do agente que está instalado nas máquinas. 22 Capítulo 4 4 Análise Crítica Neste capítulo é feita uma análise crítica aos dois sistemas testados, sendo este comparados em diversas vertentes. No final do capítulo, uma tabela resume as principais conclusões. 4.1 Implantação/divulgação no mercado Pelas pesquisas que foram feitas ao longo deste projeto, e como foi dito anteriormente, o Nagios e o Zabbix estão no Top 5 das melhores ferramentas de monitorização, em alguns casos o Zabbix acima do Nagios e vice-versa, mas de todas as que foram estudadas, eram realmente estas duas que se destacavam, por serem muito completas, com uma grande variedade de informação fornecida, e pelo seu leque de funcionalidades. Portanto, nesta vertente ambos são igualmente cotados. 4.2 Facilidade de instalação e configuração Zabbix No que diz respeito à facilidade de instalação dos sistemas de monitorização, concluiu-se que, a instalação do servidor Zabbix em Debian 6 possuía pouca documentação que auxiliasse à sua implementação, pois a versão 6 desta distribuição é relativamente recente. No entanto, 23 com a documentação existente foi possível a concretização da instalação, em resultado de um esforço persistente da nossa parte a fim de contornar os obstáculos que foram aparecendo. É de realçar que a instalação e configuração dos agentes/clientes Zabbix, foi mais linear do que o servidor. No caso dos agentes, o processo resumiu-se a descarregar os agentes disponibilizados no site do Zabbix e na criação de um ficheiro de configuração do agente (com dados do servidor, entre outras configurações correspondentes da própria máquina). Em suma, a instalação do Zabbix, pela parte o servidor torna-se bastante trabalhosa e por vezes penosa, mas em contrapartida a configuração dos agentes e a adição de hosts por parte do servidor é bastante linear e de fácil execução e utilização. Nagios Contrariamente ao Zabbix, o Nagios foi uma ferramenta que, a nível de instalação do servidor, foi bem mais linear, visto haver documentação que inicialmente ajudou a que a instalação fosse concretizada com êxito. Já na parte da configuração do servidor, mais concretamente na adição de hosts à rede, acaba por ser um processo moroso, pois para cada host é necessária a edição de um ficheiro onde são listados os serviços que se desejam monitorizar e tem de se fazer essa mesma listagem para cada um dos serviços, o que acaba por ser maçudo quando temos uma rede com dezenas e centenas de hosts na rede. Isto também exige um grau de conhecimento maior por parte do administrador de rede, que tem de saber quais os ficheiros que tem de atualizar e como o fazer; já no Zabbix isso ultrapassa-se com simples cliques de rato. A instalação dos agentes nos diversos sistemas operativos foi relativamente simples, pois tal como para o servidor, a documentação existente é perceptível e de fácil seguimento. Em suma: pode-se afirmar que a nível de instalação o Zabbix “perde um pouco” em relação ao Nagios pois, como já foi referido, o Zabbix requereu mais trabalho para a sua instalação; mas, ao nível da configuração e adição de hosts, o Zabbix impõe-se, quer pela facilidade com que se adicionam hosts à rede, quer pelo seu fácil manuseamento no interface Web. 24 4.3 Diversidade da informação produzida e acesso à informação Zabbix Nesta plataforma o interface web está bem estruturado e organizado, pois os seus menus de navegação facilitam a sua compreensão e administração. O interface tem uma primeira barra de menus onde podemos aceder depois a uma variada lista de submenus, e estes não “estragam” a amigabilidade do sistema. É assim uma ferramenta que poderia ser usada por uma pessoa menos experiente pois é de bastante fácil aprendizagem. Quanto à informação gerada por esta ferramenta, é geralmente apresentada sob a forma de gráficos, pelo que é visualmente agradável, informativo e permite visualizar rapidamente o histórico da informação. O Zabbix tem portanto um ambiente cuidado e de utilização eficiente e agradável. Nagios No Nagios o acesso à informação acaba por ser um pouco confuso, pois a organização dos menus e a forma como são utilizados torna o uso desta plataforma um pouco mais difícil. A interface web tem um aspecto mais rudimentar o que o torna menos amigável ao utilizador. A nível de informação que se pode obter, pode-se dizer que também disponibiliza muita informação, mas como dito anteriormente, para podermos adicionar mais itens a monitorizar, é necessário um maior conhecimento desta ferramenta pois é indispensável a edição de ficheiros. A leitura de alguns valores dos serviços podem tornar-se pouco perceptíveis, pois a informação gerada é apresentada em texto, o que faz com que também não se tenha um histórico dos serviços pois o que é amostrada em tempo real. No entanto, esta questão pode ser contornada pelo administrador instalando alguns plugins no sistema, o que exige algum esforço adicional. Sumariamente, pode dizer-se que em termos de informação gerada e acesso à informação, o Zabbix é uma melhor ferramenta, pois tem um ambiente amigável e de rápida aprendizagem. 25 4.4 Custos associados Um dos requisitos deste projecto era trabalhar exclusivamente com ferramentas gratuitas e de código aberto, o que é cumprido por ambas as plataformas. No entanto, no caso do Nagios existe a possibilidade de adquirir uma versão empresarial (Nagio XL), e também no caso do Zabbix existem licenças comerciais que dão direito a suporte de nível empresarial. 4.5 Sistemas Operativos suportados Pode-se dizer que tanto o Zabbix como o Nagios podem ser instalados em qualquer tipo de sistemas operativos, desde versões do Windows, distribuições Linux, como foi demonstrado neste projecto (e até em versões de Mac OS, que não tivemos oportunidade de explorar). O único factor a ter em conta está na máquina que serve de servidor, pois esta terá de correr obrigatoriamente uma distribuição Linux. 4.6 Resumo Para ser demonstrada e apreendida com mais clareza o resultado da nossa análise destas ferramentas, elaboramos a tabela 3, onde as ferramentas são classificadas em vários níveis qualitativos (Mau, Razoável, Bom e Excelente). Tabela 3 - Tabela comparativa entre Zabbix e Nagios Zabbix Nagios Implantação/divulgação no mercado Excelente Excelente Facilidade de instalação/ Razoável Bom Configuração Excelente Razoável Diversidade da informação produzida / Excelente Bom Acesso à informação Excelente Bom Custos associados Excelente Excelente Sistemas Operativos suportados Excelente Excelente 26 Como se pode confirmar pela tabela anterior, facilmente se conclui que o Zabbix seria a ferramenta que nós escolheríamos para operar em ambiente real, pois apesar da sua árdua instalação, mostrou-se uma ferramenta bastante versátil e completa. 27 Capítulo 5 5 Conclusões A monitorização de redes é uma área que é muito abrangente e que requer bons conhecimentos de nível técnico. Mas, apesar desse nível de exigência, é uma área bastante interessante e motivadora, na qual os conhecimentos adquiridos ganham rapidamente aplicação prática e com retorno. Ao longo do desenvolvimento deste projecto, houve da nossa parte uma intensa aprendizagem. O progresso foi amiúde lento, em parte devido à necessidade dessa aprendizagem, mas também muito devido a lacunas na documentação das plataformas para a sua operação com sistemas operativos mais recentes. Porém, estamos seguros em afirmar que concretizamos, em boa medida, os objectivos iniciais do projecto. Por limitações de tempo não nos foi possível explorar funcionalidades mais avançadas das plataformas de monitorização, muitas delas apenas presentes mediante a instalação e configuração de plugins adicionais. Pelos mesmos motivos também não foi possível explorar a questão do levantamento e inventariação automática da topologia de rede, um dos objectivos secundários iniciais do projecto. Este projecto possibilitou um enriquecimento pessoal, quer a nível de conhecimentos teóricos e práticos, quer ainda a nível de competências de trabalho de equipa e de exercício da capacidade de contornar obstáculos. Para além de esperarmos que toda essa experiência seja útil na nossa futura vida profissional, esperamos também que a documentação gerada pelo projecto represente um legado útil para o CRI da ESTiG e até para os alunos do nosso curso. 28 Referências bibliográficas [MB 00] Monteiro, E., Boavida. F. Engenharia de Redes Informáticas. FCA – Editora de Informática, LDA – Agosto de 2000. [JSREMM] Jordan S. Romano, Eduardo M. Monks. Funcionalidades da ferramenta Zabbix-2010 [JG] Jonathan Geremias, Avaliação da Ferramenta Zabbix. [Virtualização] http://www.gta.ufrj.br/ensino/CPE758/artigos-basicos/cap4-v2.pdf [JRufino 10] Rufino, José Gestão de Sistema e Redes Eng. Informática 3ºano-2010 [OpenNMS] http://www.opennms.org/about/ [Zenoss] http://www.zenoss.com/about/index [Zabbix01] http://www.zabbix.com/product.php [Netdisco] http://www.netdisco.org/ [ZNM] Zabbix Network Monitoring, http://sunshine.vivaolinux.com.br/artigo/Zabbix-Network- Monitoring/?pagina=2 consultado em 01/2011 [Zabbix] http://www.zabbix.com/documentation/1.8/manual/ consultado em: 01/2012 [ZabbW] http://zabbixbrasil.org/wiki/tikiindex.php?page=Instalacao+de+Agente+Zabbix+em+ambiente+Windows [ZabbCOS] http://docs.titansware.com.br/linux/zabbix_centos [ZabbUB] http://zabbixbrasil.org/wiki/tikiindex.php?page=Instalacao+de+Agente+Zabbix+em+ambiente+Linux [DBLC] Daniel Barcelini, Leandro Barbosa Cerantola consultado em: 4/2012 http://www.cirp.usp.br/arqs/4ciclo/Nagios.pdf [Nagios] http://www.nagios.org/about [Nagios2] http://nagios.sourceforge.net/docs/nagioscore-3-en.pdf [NagWin] http://www.thegeekstuff.com/2008/07/how-to-monitor-remote-windows-machine-usingnagios-on-linux/ [NagUB] http://platonic.techfiz.info/2008/11/configuring-nagios-client-on-debian/ [NagCOS] http://blog.malaya-digital.org/setup-a-minimal-centos-6-64-bit-nagios-server-configure-acentos-6-64-bit-nagios-nrpe-client/ [Top 5] http://www.junauza.com/2010/12/free-server-monitoring-software.html [Top 10] http://sixrevisions.com/tools/10-free-server-network-monitoring-tools-that-kick-ass/ http://www.linuxquestions.org/questions/2011mca.php [NAGSERVER] http://enfaselinux.blogspot.pt/p/instalando-nagios-3-no-linux-debian_11.html 29 30 Anexo A A - Servidor Zabbix em Debian Squeeze O presente Anexo, baseado em [Zabbix], ilustra a instalação de um Servidor Zabbix em Debian Squeeze. Pré-Requisitos: Antes de iniciarmos a instalação, actualiza-se os pacotes do sistema. # apt-get update Depois, instalam-se todos os pacotes necessários ao Zabbix. # apt-get install mysql-server mysql-client libmysql++-dev gcc make libmysqlclient-dev apache2 libiksemel-dev libiksemel-utils libsnmp-dev fping snmpd lm-sensors libsysfs2 php5 libapache2-mod-php5 php5-gd php5-snmp php5-mysql php-pear perl-base liburi-perl libapache2-mod-perl2 libwww-perl libtool libextutils-pkgconfig-perl pkg-config libsnmp9-dev libcurl4openssl-dev libcurl3 rcconf libgd-text-perl php5-cgi perl-modules libpdfapi2-perl libssh2-1-dev De seguida, descarrega-se a versão mais recente e estável do Zabbix, a partir de http://www.zabbix.com/download.php # cd /usr/src/ # wget –c <link obtido na página de download> Depois, cria-se a conta do serviço zabbix. # adduser --no-create-home --disabled-password --disabled-login --shell=/bin/false zabbix 1 Compilação e Instalação do Zabbix, e da Base de Dados de Suporte Descompacta-se e compila-se o Zabbix: # cd /usr/src/ # tar -xzvf <nome_ficheiro_baixado> # cd <nome_pasta_resultante_descompatacao> # ./configure --enable-server --enable-agent --with-mysql -with-net-snmp --with-libcurl --with-ldap --with-ssh2 --enableproxy --with-jabber --prefix=/usr/local/zabbix PKG_CONFIG_PATH=/usr/lib/pkgconfig/ PKG_CONFIG=/usr/bin/pkgconfig # make Cria-se a base de dados no MySQL: # mysql -u root -p -e "create database zabbix;" Configura-se acesso da conta zabbix à base de dados # mysql -u root -p -e "GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'NOVA_SENHA';" Executam-se as scripts SQL para criar as tabelas da base de dados do zabbix: # mysql -u zabbix -p zabbix < create/schema/mysql.sql # mysql -u zabbix -p zabbix < create/data/data.sql # mysql -u zabbix -p zabbix < create/data/images_mysql.sql Finalmente procede-se à instalação do Zabbix: # make install Ajustes Pós-Instalação Edita-se o arquivo /etc/services # nano /etc/services Adicionam-se as seguintes linhas no fim do ficheiro: zabbix_agent 10050/tcp # Zabbix Agent zabbix_agent 10051/tcp # Zabbix Server Cria-se o directório /etc/zabbix e copiam-se os arquivos de configuração para lá: 2 # mkdir /etc/zabbix # cp misc/conf/zabbix_server.conf misc/conf/zabbix_agent* /etc/zabbix/ Cria-se os directórios para o armazenamento dos arquivos de log e pid: # mkdir/var/log/zabbix # mkdir /var/run/zabbix Alteram-se as permissões dos directórios /var/log/zabbix e /var/run/zabbix # chown zabbix: /var/log/zabbix /var/run/zabbix Cria-se o directório /var/tmp/zabbix e dão-se as respectivas permissões para o utilizador zabbix: # mkdir/var/tmp/zabbix # cd/var/tmp/ # chown –R zabbix.zabbix zabbix Configuração do “Zabbix Server” Edita-se o ficheiro /etc/zabbix/zabbix_server.conf: # nano /etc/zabbix/zabbix_server.conf Modificam-se ou descometam-se as seguintes linhas abaixo e configuram-se de acordo com a necessidade do ambiente. # Define um Node ID exclusivo NodeID=0 # Fequencia de envio de alertas SenderFrequency=30 # Nível do debug no Log File DebugLevel=3 # Timeout de conexão com o agente Timeout=5 # Caminho do arquivo pid do Zabbix Server PidFile=/var/tmp/zabbix/zabbix_server.pid # Caminho do arquivo de log do Zabbix Server LogFile=/var/log/zabbix/zabbix_server.log # Tamanho do arquivo de log LogFileSize=2 memory_limit = 512M 3 # Caminho dos scripts customizados AlertScriptsPath=/home/zabbix/bin/ # Servidor MySQL DBHost=localhost # Nome da base de dados no MySQL DBName=zabbix # Utilizador da base de dados no MySQL DBUser=zabbix # Senha do utilizador Zabbix no MySQL DBPassword=<password> Configura-se o serviço zabbix-server para inicializar automaticamente no sistema. # cp misc/init.d/debian/zabbix-server /etc/init.d/ # chmod a+x /etc/init.d/zabbix-server Através do comando rcconf habilitamos o zabbix-server: # rcconf Edita-se o ficheiro /etc/init.d/zabbix-server: # nano /etc/init.d/zabbix-server Editam-se as linhas do ficheiro de acordo com o que se mostra a seguir: NAME=zabbix_server DAEMON=/usr/local/zabbix/sbin/$NAME DESC=”Zabbix server daemon” PID=/var/run/zabbix/$NAME.pid PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/zabbix/sbin:/usr/ local/zabbix/bin Finalmente, inicia-se o servidor Zabbix: # /etc/init.d/zabbix-server start (se o arranque falhar, procurar motivos para a falha nos ficheiros de logs, em /var/log/zabbix) Configuração do front-end do Servidor Zabbix: Acede-se ao ficheiro /etc/php5/apache2/php.ini: # nano /etc/php5/apache2/php.ini E alteram-se as seguintes linhas: date.timezone = London/Europe max_execution_time = 300 max_input_time = 600 4 memory_limit = 512M post_max_size = 32M upload_max_filesize = 16M max_execution_time = 600 Reinicia-se o Apache para actualizar as novas configurações do PHP: # /etc/init.d/apache2 restart Copia-se o código fonte do PHP do front-end para o /var/www/zabbix: # cp -r /usr/src/zabbix-1.8.8/frontends/php/ /var/www/zabbix # chown -R www-data:zabbix /var/www/zabbix Acede-se ao front-end, no endereço http://<endereco_servidor>/zabbix/ A tela inicial de instalação de boas vindas do Zabbix será exibida ( Ilustração 16): Ilustração 16 - Ambiente instalação do Zabbix Na próxima tela (Ilustração 17) será exibida a licença do produto (escolher “I Agree”). 5 Ilustração 17 - Licença do produto Depois (Ilustração 18) serão validadas as configurações e os pré-requisitos do Zabbix . Ilustração 18 - Verificação dos pré-requisitos De seguida, configura-se a conexão à base de dados (Ilustração 19): 6 Ilustração 19 - Configuração da base de dados Na opção Type, selecciona-se “MySQL”. Na opção Host, escreve-se “localhost”. Na opção Port, deixa-se a padrão “0”. Na opção Name, insere-se o nome da base de dados no MySQL (“zabbix”). Na opção User, dá-se o nome da conta com permissão de acesso (“zabbix”) Na opção Password, colocamos a password da conta anterior. Depois, testa-se a conexão (botão Test Connection) para validar as configurações (se tudo estiver bem, aparecerá um OK a verde acima do botão Test Connection). De seguida (Ilustração 20 e Ilustração 21) confirma a correcção de configurações efectuadas antes na consola. Ilustração 20 - Detalhes da configuração 7 Ilustração 21 - Confirmação dos ficheiros de configuração Será então exibida uma mensagem de sucesso na configuração, sendo a partir de agora possível aceder ao front-end com as credenciais por omissão (“admin” + “zabbix”). Depois de instalados os agentes nos hosts a monitorizar (ver anexos B, C e D), é necessário adicionar esses hosts no Zabbix. Para isso acede-se ao separador Configuration, seguido do separador Hosts e de seguida carrega-se no botão Add, o que fará aparecer a janela representada pela Ilustração 22. Ilustração 22 - Método de inserção de um Host no Zabbix Então, no campo nome coloca-se o nome do host, em Groups selecciona-se um grupo e adiciona-se esse grupo clicando no botão <<, em IP address coloca-se o endereço IP do host a 8 ser monitorizado e por fim para adicionarmos uma template (usa-se o botão Add no menu Linked Templates). 9 Anexo B B - Agente Zabbix em Windows O presente Anexo, baseado em [ZabbW], ilustra a instalação de um Agente Zabbix NOTA: estes passos servem para Windows XP, Windows 7 e Windows Server 2008. Inicialmente cria-se uma pasta com o nome zabbix na raiz do C:\ como mostra a Ilustração 23 Ilustração 23 - Local de criação da pasta zabbix De seguida, descarrega-se o “zabbix agente Windows package” a partir de www.zabbix.com e copiam-se os três ficheiros de instalação do Zabbix da pasta 32-bits ou 64-bits, dependendo da arquitectura utilizada, para a pasta zabbix criada anteriormente. 10 Depois, a pasta c:/zabbix cria-se um ficheiro chamado zabbix_agentd.conf com o conteúdo como mostra a Ilustração 24: Ilustração 24 - Conteúdo zabbix_agentd.conf Instala-se o serviço abrindo a linha de comandos do Windows e navega-se até a directoria zabbix como mostra a Ilustração 25. Ilustração 25 - Linha de comandos Instala-se o zabbix-client usando o seguinte comando: # zabbix_agentd.exe –c c:\zabbix\zabbix_agentd.conf –i Ilustração 26 - Instalação bem sucedida do agente zabbix 11 Após a instalação deverá aparecer na linha de comandos o que está apresentado na Ilustração 26. De seguida inicializa-se o serviço em: Painel de controlo Ferramentas Administrativas Serviços, como é mostrado na Ilustração 27 Ilustração 27 - Página dos Serviços De seguida adicionam-se duas excepções na firewall do Windows para ter acesso entre o servidor Zabbix e o cliente Windows, pois a firewall barra o acesso. Faz-se como nas ilustrações Ilustração 28 e Ilustração 29: Painel de Controlo Firewall do Windows Separador “Excepções” Adicionar porta 12 Ilustração 28 - Excepção da Firewall parte 1 Ilustração 29 - Excepção da Firewall parte 2 Após estes passos a instalação de clientes em ambiente Windows está concluída. 13 Anexo C C - Agente Zabbix em CentOS O presente Anexo, baseado em [ZabbCOS], ilustra a instalação de um Agente Zabbix em CentOS. Antes de se iniciarmos a instalação de um agente Zabbix, é necessário descarregar o agente para Linux mais recente e estável, a partir de http://www.zabbix.com/download.php Depois de feito o download é necessário descompactar o pacote baixado. $ tar xzvf <nome_ficheiro_baixado> Vão ser extraídos dois directórios contendo os ficheiros executáveis do agente, copiam-se os arquivos executáveis do directório bin/, extraído do pacote para a directoria /usr/local/bin. $ sudo cp bin/zabbix_get /usr/local/bin $ sudo cp bin/zabbix_sender /usr/local/bin Copiam-se os arquivos executáveis do directório sbin/, extraído do pacote para a directoria /usr/local/sbin. $ sudo cp sbin/zabbix_agent /usr/local/sbin $ sudo cp sbin/zabbix_agentd /usr/local/sbin De seguida cria-se a directoria /etc/zabbix $ sudo mkdir /etc/zabbix 14 Edita-se o arquivo /etc/services e adicionam-se as linhas abaixo, mantendo a ordenação das portas que já existem no mesmo. zabbix_agent 10050/tcp zabbix_trap 10051/tcp zabbix_agent 10050/udp zabbix_trap 10051/udp Cria-se o arquivo /etc/zabbix/zabbix_agent.conf e edita-se colocando o IP do servidor Zabbix no campo Server. $ sudo nano /etc/zabbix/zabbix_agent.conf Server= <IP_do_servidor> Timeout=3 Cria-se também o arquivo /etc/zabbix/zabbix_agentd.conf e edita-se de maneira a informar o IP do servidor no campo Server. $ sudo nano /etc/zabbix/zabbix_agent.conf Server= <IP_do_servidor> Timeout=3 De seguida cria-se um outro arquivo /etc/zabbix/zabbix_agentd.conf e edita-se de maneira a informar o IP do servidor Zabbix no campo Server. $ sudo nano /etc/zabbix/zabbix_agentd.conf Server= <IP_do_servidor> Hostname=<Nome do computador cliente> ServerPort=10051 ListenPort=10050 StartAgents=5 RefreshActiveChecks=120 #DisableActive=1 #EnableRemoteCommands=1 #Specifies debug level #0 debug is not created #1 critical information #2 error information #3 warnings #4 information (default) 15 #5 for debugging (produces lots of information) DebugLevel=4 LogFile=/var/log/zabbix_agentd.log PidFile=/tmp/zabbix_agentd.pid De seguida cria-se um utilizador Zabbix $sudo useradd zabbix $sudo groupadd zabbix Cria-se o arquivo /var/log/zabbix_agentd.log $sudo touch /var/log/zabbix_agentd.log $sudo chown zabbix:zabbix /var/log/zabbix_agentd.log Cria-se o arquivo /etc/init.d/zabbix-agentd e adiciona-se o conteúdo mostrado abaixo. #!/bin/sh # # chkconfig: - 85 15 # description: zabbix agent daemon # ### BEGIN INIT INFO # Provides: zabbix-agent # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Default-Start: # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: start and stop zabbix agent # Description: Zabbix Agent ### END INIT INFO # zabbix details ZABBIX_AGENTD=/usr/local/sbin/zabbix_agentd CONF=/etc/zabbix/zabbix_agentd.conf PIDFILE=/var/tmp/zabbix_agentd.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $ZABBIX_AGENTD ] || exit 5 16 [ -e $CONF ] || exit 6 RETVAL=0 case "$1" in start) echo -n "Starting zabbix agent: " daemon $ZABBIX_AGENTD -c $CONF RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zabbix-agent ;; stop) echo -n "Shutting down zabbix agent: " killproc zabbix_agentd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zabbix-agent ;; restart|reload) $0 stop $0 start RETVAL=$? ;; status) status zabbix_agentd RETVAL=$? ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" exit 1 ;; esac exit $RETVAL Torna-se o arquivo executável com o seguinte comando. $ sudo chmod +x /etc/init.d/zabbix-agentd Habilita-se o script para ser executado no boot do sistema operativo. $ sudo chkconfig zabbix-agentd on Por último inicia-se o Agente com o comando abaixo para que a instalação seja finalizada. $ sudo /etc/init.d/zabbix-agentd start 17 Após este último passo, está concluída a instalação de um agente Zabbix em CentOS. De seguida e para que sejam finalizadas as configurações do zabbix em ambiente CentOS, é necessário abrir as excepções da firewall, para isso clicar em Sistema Administração Firewall e como mostra a Ilustração 30 adicionam-se essas mesmas portas para que seja possível ao servidor reconhecer o agente. Ilustração 30 - Excepções da Firewall 18 Anexo D D - Agente Zabbix em Ubuntu e Ubuntu Server O presente Anexo, baseado em [ZabbUB], ilustra a instalação de um Agente Zabbix em Ubuntu e Ubuntu Server. Inicialmente acede-se à consola e digitam-se os seguintes comandos: #sudo su *password* Faz-se o download do pacote zabbix-agent. #sudo apt-get install zabbix-agent Acede-se à pasta /etc/zabbix e edita-se o ficheiro zabbix_agentd.conf #cd /etc/zabbix #ls #gedit zabbix_agentd.conf Neste ficheiro vai-se proceder à informação do IP do servidor no campo Server desse mesmo ficheiro como se pode observar pela Ilustração 31 que se segue. Ilustração 31 - Informação do IP do servidor no agente 19 Depois de feitas as alterações salva-se o ficheiro e fecha-se o mesmo. De seguida procede-se à iniciação do agente zabbix, entrando na pasta /etc/init.d/zabbix-agent restart. #/etc/init.d/zabbix-agent restart Feito isto, o agente já está instalado com sucesso e pronto a ser monitorizado. 20 Anexo E E - Servidor Nagios em Debian Squeeze O presente Anexo, baseado em [NAGSERVER], ilustra a instalação de um Servidor Nagios em Debian. Antes de iniciarmos a instalação, é necessário instalar os pré-requisitos do Nagios. Requisitos de instalação: Apache; GD Development Libraries; GCC compiler and development libraries. Para proceder à instalação dos pacotes acima, executam-se os seguintes commandos no shell: # apt-get install apache2 libgd2-xmp-dev # apt-get install php5 # apt-get install g++ Depois da instalação feita, reinicia-se o Apache: # /etc/init.d/apache2 restart Cria-se um utilizador Nagios e associa-se uma password, a seguir ao comando “passwd nagios” irá ser pedido para introduzir a password desejada. # /usr/sbin/useradd nagios # passwd nagios Cria-se um grupo: 21 # /usr/sbin/groupadd nagios # /usr/sbin/usermod -G nagios nagios Após este passo, procede-se à criação de um grupo que será chamado “nagcmd” para permitir que comandos externos possam ser passados pela interface web. # /usr/sbin/groupadd nagcmd # /usr/sbin/usermod -G nagcmd nagios # /usr/sbin/usermod -G nagcmd www-data Depois passa-se à instalação do Nagios propriamente dita. Por questões de organização é recomendável a criação de um directório de armazenamento antes de ser feito o download das fontes, então os passos seguintes servem para criar esse directório. # mkdir /dados # cd /dados Agora efectua-se o download da versão mais recente e estável do Nagios, a partir de http://www.nagios.org/download/, para dentro do directório criado anteriormente. # wget <link_obtido_na_página_de_download> Procede-se à instalação do Nagios. Descompacta-se a fonte do sistema e compila-se conforme os comandos abaixo: # cd /dados # tar xzvf <nome_ficheiro_baixado> # cd <nome_pasta_descompactada> # ./configure --with-command-group=nagcmd # make all Instalação dos binários, script de inicialização e permissões para comandos externos. # make install # make install-init 22 # make install-config # make install-commandmode Instala-se o arquivo Nagios web config na directoria conf.d do Apache: # make install-webconf Cria-se um utilizador e password para ser possível a autenticação via interface web # htpasswd –c /usr/local/nagios/etc/htpasswd.users nagiosadmin Depois disto, reinicia-se o Apache: # /etc/init.d/apache2 reload Após estes passos o Nagios já está instalado, mas antes de o iniciar, vai-se proceder à instalação de plugins. Instalação dos plugins do Nagios Para monitorizar os serviços de hardware como CPU, memória, discos, entre outros, procedemos à instalação de alguns plugins, que podem se encontrados a partir de http://www.nagios.org/download/: # cd /dados #wget <link_obtido_na_pagina_de_download> Descompacta-se a pasta que foi baixada: # tar xzvf <nome_pasta_baixada> Entra-se agora na pasta que foi descompactada: # cd <pasta_descompactada> # ./configure --with-nagios-user=nagios --with-nagiosgroup=nagios # make # make install 23 Configura-se o nagios para iniciar com o sistema: # ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios É necessário instalar o plugin check_nrpe para isso cria-se uma directoria com o nome dados e colocamo-nos dentro desse arquivo. # mkidr dados # cd dados Depois disso executa-se o comando para se efectuar o download do plugin mais recente e estável do NRPE, a partir de http://www.nagios.org/download/. # wget <link_obtido_na_pagina_de_download> Procede-se à extracção do ficheiro e entra-se na pasta descompactada. #tar xzf nome_da_pasta.tar.gz #cd nome_da_pasta Dentro da pasta compila-se o NRPE #make install-plugin Após a instalação, é necessária a criação de uma definição de comando para usar o check_nrpe, acede-se ao ficheiro command.cfg e adiciona-se a definição do check_nrpe. #gedit /usr/local/nagios/etc/objects/command.cfg define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } Verifica-se se há erros nas configurações do Nagios: # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg Obs. Guarda-se este comando, pois ele será muito útil para verificar se as configurações realizadas estão corretas. 24 Inicia-se o Nagios: # /etc/init.d/nagios start Acede-se ao seguinte endereço no browser para entrar no Nagios. Ele já deve estar a monitorizar a máquina local (localhost). http://<ip_do_servidor_nagios>/nagios/ Obs.: Usa-se o utilizador e password do nagiosadmin criado anteriormente. Após serem feitas todas as orientações sem nenhum problema, o Nagios já esta pronto para ser usado. Para que o servidor possa adicionar hosts à sua rede, é necessária a criação de serviços para hosts Linux e Windows, para fazer isso é necessário colocarmo-nos na pasta /objects #cd /usr/local/nagios/etc/objects/ Onde podem ser encontrados os ficheiros Commands.cfg e Windows.cfg No commands.cfg é onde são colocadas as definições de comandos para o Nagios comunicar com os clientes segue-se os exemplos para Windows e Linux. Windows: # 'check_nt' command definition define command{ command_name check_nt command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s **password -v $ARG1$ $ARG2$ } Deve-se colocar o seguinte na linha de comandos: -s *password* Onde se coloca a password que indicamos na instalação dos clientes Windows. Linux: # 'check_nrpe' para linux 25 define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } No ficheiro Windows.cfg é onde efectivamente se adicionam os hosts e os serviços que queremos que o Nagios monitorize. Define host é onde definimos os hosts e colocamos o ip do mesmo. define host{ use windows-server ; <Escolher a template a usar> host_name <nome no qual deve ser igual para nos serviços a seguir vão ser implementados> alias <Um nome para identificar o host> address <ip do cliente> } Os serviços a monitorizar também são definidos neste ficheiro. Ficam aqui dois exemplos de serviços diferentes para Windows e Linux. Windows: Serviço que monitoriza o tempo há quanto tempo o host se mantem ligado. define service{ use generic-service host_name <nome dado na definição do host> service_description Uptime check_command check_nt!UPTIME } Linux: Serviço que monitoriza o total de processos activos em linux . define service{ use generic-service host_name <nome dado na definição do host> service_description Total Processes check_command check_nrpe!check_total_procs } Após estes passos os hosts estão prontos a ser monitorizados. 26 Anexo F F - Cliente Nagios em Windows O presente Anexo, baseado em [NagWin], ilustra a instalação de um Cliente Nagios em Windows. Inicialmente é necessário proceder ao download da versão mais recente e estável do Nsclient++. Depois de descarregado proceder à respectiva instalação, seguem-se os paços da instalação, e quando aparecer a seguinte janela (Ilustração 32): Ilustração 32 - Inserção do IP do servidor no cliente Windows Colocam-se o dados referidos bem como fazer check nas três check-box. 27 Após a instalação estar concluída, configura-se o ficheiro nsc.ini que se encontra na pasta onde foi instalado o Nsclient++. Nesse mesmo documento procede-se às seguintes alterações: Em “modules” descometam-se seguintes linhas: FileLogger.dll CheckSystem.dll CheckDisk.dll NSClientListener.dll NRPEListener.dll SysTray.dll CheckEventLog.dll CheckHelpers.dll CheckWMI.dll CheckNSCP.dll NSCAAgent.dll LUAScript.dll NRPEClient.dll No campo “settings” proceder à seguinte configuração. password= <colocar a password para comunicação com o servidor> allowed_hosts=<ip do servidor*/*mascara de rede do servidor> Na parte “log” descometam-se as seguintes linhas: debug=1 file=nsclient.log Na parte “NSClient” descometam-se e configura-se a seguinte linha: allowed_hosts= <ip do servidor> port=12489 Por último na parte “NRPE” descometa-se a seguinte frase: port=5666; De seguida iremos permitir a interacção do serviço client do nagios com o servidor. Acede-se ao Painel de Controlo Ferramentas Administrativas Serviços encontrar o serviço do NSclient e permite-se a interacção entre o serviço e o ambiente de trabalho. Por último ir a Firewall do Windows configurar uma excepção ao programa NSclient.exe que se encontra na pasta onde foi instalado para este conseguir comunicar com o servidor. Vai-se ao painel de controlo, Firewall e depois adicionar exepção, como mostra a Ilustração 33. 28 Ilustração 33 - Permissão da interacção entre o serviço e o ambiente de trabalho Após estes passos o agente Nagios está pronto a ser monitorizado. 29 Anexo G G - Cliente Nagios em CentOS O presente Anexo, baseado em [NagCOS], ilustra a instalação de um Cliente Nagios em CentOS. Para instalar um agente Nagios em CentOS, é necessário abrir uma consola e entrar como superutilizador. #su #password Actualizam-se os pacotes do sistema. #yum update Adiciona-se um repositório novo #rpm –ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epelrelease-6-5.noarch.rpm Após isto, instala-se o nagios nrpe bem como os respectivos plugins e algumas dependências que são necessárias. #yum install nagios-plugins-nrpe nagios-plugins-all nagios-nrpe openssl Edita-se o ficheiro de configuração nagios nrpe que foi instalado para que possa haver comunicação com o servidor. 30 #gedit /etc/nagios/nrpe.cfg Adiciona-se uma excepção na firewall para que seja possível a comunicação servidor-agente. #gedit /etc/services Ilustração 34 - Informação do IP do Servidor no agente CentOS Adicionando a seguinte linha. nrpe 5666/tcp #NRPE De seguida aceder ao ambiente de trabalho do CentOS, aceder ao Sistema Administração Firewall e adicionar-lhe a porta anteriormente configurada em /etc/services Para finalizar inicia-se o serviço NPRE para o cliente poder começar a ser monitorizado. #service nrpe restart Após estes passos o agente Nagios está pronto a ser monitorizado. 31 Anexo H H - Agente Nagios em Ubuntu Server e Ubuntu Serve este Anexo, baseado em [NagUB], ilustra a instalação de um Cliente Nagios em máquinas Ubuntu e Ubuntu Server. Inicialmente abre-se uma consola do Ubuntu. Entra-se como super utilizador da seguinte forma: #sudo su Password Procede-se a uma actualização dos pacotes do sistema. #apt-get update De seguida procede-se à instalação do Nagios NRPE Server que vai ser o serviço que vai comunicar com o servidor. #apt-get install nagios-nrpe-server Informamos, no ficheiro nrpe.gfg no campo allowed_hosts, o IP do servidor. #gedit /etc/nagios/nrpe.cfg Allowed_hosts= <IP_do_servidor> Para finalizar reinicia-se o serviço #/etc/init.d/nagios-nrpe-server restart Após estes passos o agente Nagios está pronto a ser monitorizado. 32