JANSSEN DOS REIS LIMA
Monitoramento
de Redes com
Monitore a saúde dos servidores e equipamentos de rede
AE3PDRT
*
Copyright© 2014 por Brasport Livros e Multimidia Ltda. Todos os direitos reservados. Nenhuma parte deste livro poderá ser reproduzida, sob qualquer meio, especialmente em fotocópia (xerox), sem a permissão, por escrito, da Editora. Editor: Sergio Martins de Oliveira Diretora. Rosa Maria Oliveira de Queiroz Gerente de Produção Editorial: Marina dos Anjos Martins de Oliveira Revisão: Maria Inês Galvão Editoração Eletrônica: SBNigri Artes e Textos Ltda. Capa: Paulo Vermelho Técnica e muita atenção foram empregadas na produção deste livro Porém, erros de digitação eiou impressão podem ocorrer Qualquer dúvida. inclusive de conceito, solicitamos enviar mensagem para
[email protected] , para que nossa equipe. juntamente com o autor, possa esclarecer A Braspori e o(s) autor(es) não assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens. onginados do uso deste livro
L732m Lima. Janssen dos Reis Monitoramonto de redes com Zabbix monitore a saúde dos servidores e equipamentos de rede! Janssen dos Reis Lima - Rio de Janeiro Braspori. 2014 ISBN: 978-85-7452-651-5 1 Monitoramento de redes 1 Titulo CDD 0058
Ficha cataiográfica elaborada por bibliotecário - CRB7 6355
BRASPORT Livros e Multimidia Ltda. Rua Pardal Mailet, 23 - Tijuca 20270-280 Rio de Janeiro-RJ Tels. Fax: (21) 2568 1415 12568 1507 e-mails:
[email protected] [email protected] [email protected] br site
www.brasport.com.br
Filial Av Paulista, 807 - conj. 915 O 1311-100 - São Paulo-SP Tel. Fax (11)3287 1752 e-mail f1lialspbrasport.com.br
A perseverança não é uma longa corrida; ela é muitas corridas curtas, uma depois da outra. (Charles W. Eliot)
Apresentação Existem muitas ferramentas no mercado para gerenciamento de redes, tanto software pago como livre. Esta obra tem o propósito de apresentar o Zabbix para os profissionais envolvidos em gerência de redes que não o conhecem e aprofundar os conhecimentos para os profissionais que já trabalham com esta ferramenta de monitoramento. Zabbix é um software livre de código aberto que tem se consolidado no mercado europeu e já possui alguns casos de sucesso no Brasil. Será abordado ao longo das páginas desta obra o conceito de toda a tecnologia que faz parte do Zabbix, desde a instalação até configurações avançadas de monitoramento de serviços. Você não se prenderá a apenas saber instalar e configurar esta ferramenta - mas entenderá também como funciona o mecanismo de coleta de informações, os itens a serem monitorados, as triggers, entre outros. A principal característica em um ambiente de monitoramento é saber o que realmente precisa ser monitorado e como será realizado o monitoramento. Zabbix também é bastante flexível, e você verá que ele não se limita apenas a monitorar seus itens nativos. Com ele, é possível incrementar scripts e itens personalizados para o monitoramento se tornar mais completo e profissional.
Sobre o Autor Janssen dos Reis Lima possui mais de quinze anos de experiência em tecnologia da informação. Bacharel em Sistemas de Informação pela FeMASS/UFF e pós-graduação em Administração em Redes Linux pela UFLA, atualmente ocupa o cargo de Analista de Sistemas (infraestrutura) no Grupo de Inferência de Reservatório, no Laboratório de Engenharia e Exploração de Petróleo da Universidade Estadual Norte Fluminense, onde executa atividades relacionadas ao processamento de alto desempenho em sistemas sísmicos voltado para a área de exploração de petróleo. É docente no curso de Pós-Graduação em Redes de Computadores da FABERJ, onde ministra as disciplinas de Serviços de Redes, Administração de Rede Linux e Gerência de Redes. Tem especial interesse em computação de alto desempenho, gerência de redes e virtualização, sempre trabalhando com sistemas open source.
Agradecimentos Agradeço principalmente a Deus, por ter me dado forças para que eu conseguisse ter calma e paciência para concluir este projeto. A minha esposa Cana, por toda dedicação e carinho que tem pela nossa família. Agradeço de coração por sempre me incentivar nos meus estudos e por compreender minha ausência em certos momentos. Você é muito especial. Aos meus pais, a minha sogra, meu padrinho e minhas madrinhas, e a todos os familiares que participam da minha vida. Agradeço também aos meus antigos colegas de trabalho por serem minhas cobaias, em especial à equipe de desenvolvimento, que sempre tinha algo para inventar. Aos colegas de trabalho do LENEP em especial ao Prof. Fernando Moraes, por ter me dado essa oportunidade. É muito bom trabalhar ao lado de vocês. Aos professores da UFLA, por sempre defenderem o uso do software livre. Aprendi muito com vocês. Gostaria de agradecer ao amigo Maicon por todo o incentivo e por ser um dos principais responsáveis por eu ter acreditado neste projeto. Grandes amizades não se perdem com o tempo e não se desfazem com a distância. À comunidade Zabbix Brasil, pela troca de informações diárias sobre o Zabbix. Só tem fera nesse fórum. Agradeço também ao editor da Brasport, Sérgio Martins, por acreditar no meu trabalho e ter me dado a oportunidade de publicar este livro.
Sumário
Introdução .......................................................................................................1 1 - Conceitos de Monitoramento........................................................................3 1.1 Porque ....................................................................................... 3 1.2 Disponibilidade............................................................................................3 1.3 Planejamento de capacidade.........................................................................4 1.4 Comportamento não usual ............................................................................5
1 .5 Segurança...................................................................................................5 1.6 Performance................................................................................................5
2 -Zabbix .......................................................................................................6 2.1 Características do Zabbix ..............................................................................6 2.2 Por que usar Zabbix 2 .................................................................................... 7 2.3 Arquitetura do Zabbix................................................................................... 8 2.4 Elementos do Zabbix.................................................................................... 9 2.4.1 Zabbix Server.................................................................................... 9 2.4.2 Zabbix Proxy..................................................................................... 9 2.4.3 Zabbix Agent..................................................................................... 9
3 - Instalação................................................................................................10 3.1 Requisitos de hardware ..............................................................................10 3.2 Plataformas suportadas ..............................................................................11 3.3 Requisitos de software................................................................................11 3.4 Planejando o crescimento do banco de dados................................................11 3.5 Obtendo o Zabbix.......................................................................................14 3.6 Verificação e instalação de dependências......................................................15 3.7 Instalação do servidor.................................................................................16
XIV Monitoramento de Redes com Zabbix 3.8 Criação e carga do banco de dados..............................................................19 3.9 Configuração inicial....................................................................................20 3.10 Instalação da interface web do Zabbix........................................................26 4 - Conhecendo a Interface Web do Zabbix.......................................................33 4.1 Visão geral da interface web do Zabbix.........................................................35 4.1.1 Administração.................................................................................37 4.1.2 Monitoramento distribuído................................................................40 4.1.3 Autenticação...................................................................................40 4.1.4 Usuários.........................................................................................41 4.1,5 Tipos de mídia................................................................................41
4.1.6Scripts ........................................................................................... 41 4.1.7 Auditoria........................................................................................41 4.1.8 Fila................................................................................................42 4.1.9 Notificações....................................................................................42 4.1.10 Instalação.....................................................................................42 5 - Entendendo os Conceitos do Zabbix............................................................ 43
5.lHost ......................................................................................................... 43 5.2 Item.........................................................................................................43
5.3 Trigger ..................................................... ................................................. 45 5.4 Evento......................................................................................................46
5.5 Template ................................................................................................... 47 6 - Funções do Zabbix.................................................................................... 48 6.1 Coletar......................................................................................................48
6 .2 Armazenar ................................................................................................48 6 .3 Gerenciar ....................................................................... . .......................... 49 6 .4 Alertar......................................................................................................49 6 .5 Visualizar ............................................................................................... ...49 7 - Monitoramento Básico...............................................................................50 7.1 Criando um hos( ........................................................................................ 50 7.2 Criando itens para monitoramento ...............................................................52 7.3 Criando uma trigger................................................................................... 54 7.4 Criando uma ação......................................................................................58 7.5 Monitoramento ativo, passivo ou checagem simples.......................................64
Sumário XV 8 - Gerenciamento de Hosts
. 66
8.1 Grupos de hosts......................................................................................... 67 8.2 Templates ................................................................................................. 68 8.3 Hos(s ........................................................................................................ 72 8.4 Aplicações................................................................................................. 75 8.5 Itens......................................................................................................... 76
8.6 Triggers..................................................................................................... 79 8.7 Gráficos.................................................................................................... 81 8.7.1 Normal .......................................................................................... 81 8.7.2 Pilha (Stacked)............................................................................... 82 8.7.3 Torta (Pie)...................................................................................... 83 8.7.4 Explodido (Exploded) ....................................................................... 83 8.8 Autobusca (discovery) ................................................................................ 84 8.9 Período de manutenção.............................................................................. 84 9 - Gerenciamento de Usuários e Permissões....................................................87 10 - Visualizando os Dados Monitorados .......................................................... 90
10 .1 Dashboard ......................................................... ...... .............................. .90 10.2 Visão geral..............................................................................................92 10.3 Outros menus..........................................................................................96
11 - Mapas, Telas e Relatórios......................................................................... 97 11 .1 Mapas ...... .............................................................................................. 97 11 .2Telas ....................................................................................................100 11 .3 Relatórios..............................................................................................101 12 - Instalando o Zabbix Agent em Hosts Windows.........................................103 13 - Configurando Monitoramento Web.......................................................... 109 14 - Configurando Monitoramento de Serviços de TI ........................................ 115
15 - Ampliando o Monitoramento com Parâmetros de Usuários ........................119
XVI Monitoramento de Redes com Zabbix 16 - Comandos Remotos............................................................................... 122 17 - Analisando Logs e Interpretando Erros Comuns........................................126
18
-
Tópicos Especiais.................................................................................. 130
18.1 Monitoramento JBoss............................................................................. 130 18.2 Monitoramento Apache........................................................................... 133 18.3 Monitoramento IPMI............................................................................... 137 18.4 Monitoramento SNMP............................................................................ 141 18.4.1 SNMP........................................................................................ 142 18.4.2 SNMP TRAP............................................................................... 142 18.4.3 Instalação do pacote SNMP.......................................................... 143 18.4.4 Consultando informações de dispositivos SNMP.............................. 143 18.4.5 Cadastrando o item para monitoramento........................................ 144 18.5 Monitoramento de banco de dados........................................................... 146 18.6 Trabalhando com o Zabbix via terminal..................................................... 148 18.6.1 zabbix_server .............................................................................. 149 18.6.2 zabbix_agentd............................................................................. 149 18.6.3 zabbix_get.................................................................................. 150 18.6.4 zabbix_sender ............................................................................. 151 18.6.5 zabbix_proxy............................................................................... 151 18.7 Monitoramento de recursos de aplicações web .......................................... 152 18.8 Monitoramento distribuído com Zabbix Proxy ............................................ 154 19 - Verificando a Saúde do Zabbix Server ..................................................... 161 20 - Atualizando o Zabbix para a Versão 2.2...................................................164 21 - Obtendo Ajuda...................................................................................... 168 Indice Remissivo .......................................................................................... 171 Referências Bibliográficas.............................................................................. 173
Introdução Você é administrador de sistemas de unia empresa e está sempre sendo cobrado pelo seu gerente acerca das reclamações dos clientes quanto à disponibilidade dos servidores. Você ameniza a situação corrigindo alguns problemas imediatamente e ao final do dia vai para casa tranquilamente. Às 22h você recebe uma ligação de seu gerente reclamando que alguns hosts estão indisponíveis e que o servidor web está fora do ar. Você liga seu notebook e tenta acessar a rede da empresa, porém sem sucesso, devido à indisponibilidade do serviço de shell remoto. Em vez de sair para um programa familiar, você vai para a empresa verificar o que aconteceu para corrigir os problemas. No dia seguinte, quando chega ao escritório, seu gerente vai até a sua sala e cobra explicações sobre os problemas que ultimamente têm acontecido com a rede e com os serviços da área de Ti. Diante disso, você depara com as seguintes questões: como atuar de fato em busca de uma solução definitiva para resolver os problemas? Temos ferramentas para isso? Vou me basear em que histórico? Como poderei comprovar que o problema, por exemplo, está sendo causado por fadiga do hardware? Respondendo às questões: você pode atuar com o auxílio de uma ferramenta de monitoramento para alertá-lo quando ocorrer algum problema em seu ambiente. Com ela você poderá monitorar hosts e equipamentos em tempo real, tirar relatórios sobre o consumo dos recursos do sistema, verificar em que horário um serviço parou, entre outras métricas. Dessa forma, estará trabalhando de maneira proativa e terá tempo para resolver os problemas antes mesmo dos clientes perceberem. Esta é apenas uma de inúmeras situações pelas quais você poderá passar.
2 Monitoramento de Redes com Zabbix
Esta obra apresentará os conceitos de monitoramento e a ferramenta Zabbix, auxiliando os leitores a implantar este excelente software em sua infraestrutura de TI. Desejo que tire proveito das informações aqui apresentadas e consiga implantar o Zabbix como um produto final de monitoramento de redes e serviços.
1 Conceitos de Monitorarnento Neste capítulo, será dada certa atenção a questões de monitoramento, sobretudo o que está diretamente relacionado com o funcionamento do Zabbix. É claro que o assunto é muito extenso para ser tratado numa obra sobre um assunto especifico como esta. Por isso, sugiro ao leitor que procure livros sobre gerência de redes para ampliar seu aprendizado.
1.1 Por que monitorar? Não é de hoje que as redes de computadores estão ficando cada vez mais importantes para as empresas. Hoje em dia, é uma infraestrutura indispensável e de missão critica, ou seja, não pode parar. E de nada adianta ter a rede 100% operacional se o que mais interessa aos clientes são os serviços que funcionam através dela. Partindo deste princípio, precisamos saber o que devemos monitorar e por que devemos monitorar determinado serviço. Porém, os profissionais da área de tecnologia não podem resolver isso sozinhos. É preciso que haja um consenso entre os responsáveis por diversas áreas de uma empresa e a partir daí fazer um levantamento de todos os ativos e serviços envolvidos no processo de monitoração, para que seja definido o que de fato será monitorado.
1.2 Disponibilidade Hoje em dia fala-se muito em acordo de nível de serviço. Realmente é um recurso importante para manter o nível de excelência de um serviço. As empresas devem firmar acordos com as áreas de tecnologia para definir qual é o limite que um serviço poderá
4 Monitoramento de Redes com Zabbix
estar indisponível. Este limite será o tempo que a equipe de analistas e administradores terá para que o serviço seja restabelecido sem impactar nos níveis acordados. Um serviço, quando é importante, jamais poderá estar indisponível. Ocorrendo um imprevisto, deverá ter contingência de recursos para manter o serviço no ar sem que os clientes percebam que algum problema está acontecendo. Mesmo com um acontecimento desse tipo, o sistema de monitoramento deverá ser capaz de registrar eventos, alertando administradores sobre possíveis falhas. Também podemos chamar isso de reação a incidentes, que é a capacidade de uma sistema tentar se restabelecer automaticamente através da execução de rotinas automáticas a partir de um acontecimento. Quando o sistema não consegue restabelecer um serviço automaticamente, poderá (e deve) enviar alertas por e-mail e/ou SMS aos administradores, que atuarão para que o serviço volte ao ar o quanto antes, não gerando insatisfação dos clientes.
1.3 Planejamento de capacidade Através das métricas coletadas, poderemos planejar a capacidade que um sistema terá ao longo do tempo observando o histórico de utilização de recursos como memória, processador, discos etc. Com o auxílio de gráficos e relatórios, o administrador terá uma visão clara para uma possível atualização de hardware, ou até mesmo analisar outros aspectos, tais como atualização de software, para verificação do comportamento do sistema, comparando em seguida o antes e o depois. Portanto, é preciso planejar a capacidade que um sistema deverá ter para atender à carga de trabalho dentro dos níveis estabelecidos. Também é importante dimensionar os recursos, que, muitas vezes, são mal utilizados. Alguns têm muito e outros têm pouco. Um bom exemplo disso é um típico funcionário que tem um computador com capacidade de processamento, memória e até mesmo armazenamento de disco muito além do que é necessário para realizar as suas atividades. Chamamos isso de subutilização de recursos, que na maioria das vezes não serão usados para sua atividade fim, gerando assim um falso positivo nos relatórios de desempenho. Por outro lado, o dimensionamento tem um papel importante. Às vezes, podemos verificar que alguns servidores estão sobrecarregados e precisando de um upgrade. Ao analisarmos alguns gráficos, verificamos que outros servidores estão com recursos sobrando e possuem menos serviços rodando que o servidor sobrecarregado. Através desta análise, podemos dimensionar hardware ou serviços entre estes servidores para balancear a carga exercida sobre eles, contribuindo assim para um ciclo de vda maior para ambos.
Conceitos de Monitoramento 5
1.4 Comportamento não usual Imagine um servidor que provê vários serviços importantes para uma empresa. Por exemplo, um servidor web. Neste servidor está hospedado o site da sua empresa, que roda uma loja virtual. Diariamente você recebe e-maus de clientes diferentes reclamando da lentidão do site. Sem monitoramento não terá como você atuar de forma direta em um determinado problema. Você só identifica um comportamento fora do normal se estiver monitorando. O monitoramento lhe dá um norte através de gráficos e relatórios para você atuar diretamente no problema para resolvê-lo, seja fazendo upgrade de um componente de hardware ou corrigindo uma configuração malfeita.
1.5 Segurança Quando se trata de informação, logo se pensa em segurança. Para termos um ambiente seguro e estável é preciso tomar algumas providências, e umas delas é monitorar o sistema como um todo. É importante ter um ambiente monitorado para que se possa saber como o sistema está se comportando. É através do monitoramento e da análise de Iogs que podemos obter dados importantes para ter iniciativa do que fazer se algo estiver anormal.
1.6 Performance Monitorar também é importante para obtermos dados de desempenho de determinadas métricas, como, por exemplo, a velocidade de um Iink de internet. Através do monitoramento você poderá gerar gráficos para comparar testes de benchmarking, escalabilidade, stress etc.
2 Zabbix Zabbix é uma solução open source de monitoração para empresas. É um software que monitora vários parâmetros de diversos ativos em uma rede de computadores. Zabbix foi criado por Alexei Vladishev em 1998. A ideia surgiu quando trabalhava em um banco na Letônia como administrador de sistemas, pois não estava satisfeito com os sistemas de monitoramento que estava trabalhando na época. Em 2001 foi lançada a primeira licença do Zabbix sob a GPL com a versão 0.1 alpha. Em 2004 foi lançada a versão estável, a 1.0. Já em 2005, devido a uma necessidade de tratar o Zabbix de uma forma mais profissional, foi instituída a empresa Zabbix SIA. A partir de 2006, o Zabbix foi evoluindo para o que conhecemos hoje, alcançando a marca de 800.000 downloads em 2012. Zabbix é uma plataforma bastante difundida e não está limitada a um nicho de ser viço. Empresas privadas e governamentais estão utilizando o Zabbix, seja de pequeno, médio ou grande porte, em vários setores do mercado.
2.1 Características do Zabbix Zabbix possui a capacidade de monitorar milhares de itens em apenas um servidor, além de ser possível ter um monitoramento distribuído. Dessa forma, podemos ter um servidor central de monitoramento e vários outros servidores subordinados a ele enviando as métricas para o servidor central ou apenas replicar as informações. Também é possível separar os servidores web, servidor de banco de dados e servidor de monitoramento para aumentar a flexibilidade e ganhar em desempenho. Zabbix possui um sistema de relatórios e gráficos bastante intuitivo, com fácil navegação entre datas e horários, sendo possível analisar os dados em tempo real. Toda a
Zabbix 7
configuração de monitoramento é feita através de uma interface web rica em detalhes, na qual podem ser criados ações ou alertas com base nas métricas recebidas. Zabbix é tão flexível que pode obter dados através de scripts customizados para alerta, ação, itens e comandos remotos, tornando possível o monitoramento de itens não nativos dos agentes. A listagem a seguir mostra as principais características do Zabbix: r
Servidores que rodam em sistemas Unix-Iike, incluindo Linux, AIX, FreeBSD, OpenBSD, HP-UX e Solaris.
r
Agentes nativos para Unix-Iike e versões do Microsoft Windows.
a.
Administração e monitoramento via interface web.
'. Autodescobrimento de servidores e dispositivos de redes. Escalabilidade. Flexibilidade. r
Monitoramento agregado.
)i' Monitoramento distribuído. ) Monitoramento em tempo real. a.
Monitoramento proativo. Sistema de notificação via e-mail, SMS ejabber.
' Autenticação segura de usuários. ,. Permissões de usuários e grupos. Visualização de relatórios, gráficos, telas e mapas. Monitoramento de acordo de nível de serviço.
2.2 Por que usar Zabbix? Zabbix é uma ferramenta open source com as vantagens da licença GPL, ou seja, além de não ser necessária a aquisição de licenças para uso, é possível modificar seu código para atender a uma necessidade específica. Zabbix é fácil de ser configurado. Todas as suas informações são armazenadas em um banco de dados relacional e também possui suporte a SNMP, dispositivos IPMI, monitoramento de aplicações Java, web e banco de dados. Zabbix integra todas as aplicações de que um sistema de gerenciamento de redes necessita, sem a necessidade de plug-ins, e é totalmente personalizável a qualquer tipo de ambiente.
8 Monitoramento de Redes com Zabbix
Zabbix oferece um pacote completo, com mapas de rede, gráficos e telas, além de enviar alertas por e-mail ou SMS, além de poder executar ações, como, por exemplo, um comando remoto para recuperar um serviço sem a intervenção do administrador.
2.3 Arquitetura do Zabbix A arquitetura do Zabbix se organiza, dentro do contexto dos serviços de rede, no modelo three-tier. qe faz uma abordagem em três camadas. Essas camadas 5O: a aplicação, o banco d€ :ados e a interface web. A camada de aplicação é representada pelo back-end, responsável por fazer a coleta dos dados nos ativos de rede. A camada de banco de dados é representada pela base de dados, que fica responsável por armazenar as informações coletadas pelo back-end e apresentá-las ao froni-'nd. Já a camada interface web é representada pelo front-end, o qual dá acesso a informações de monitoramento aos administradores e também fornece informações para aplicações que utilizam a API do Zabbix. Podemos observar a figura a seguir, que ilustra a arquitetura do Zabbix:
At Nos .d.
Ad
Back-end
1
Base de dados
do,
[Front-end i
API
100i
èw10 C*IÁ
Apk.ç',s movG
Zabbix 9 O back-end do Zabbix foi desenvolvido com a linguagem C e o front-end foi desenvolvido em PHP O Zabbix também foi desenvolvido para suportar os principais SGBDs do mercado. A partir da versão 1.8, o Zabbix introduziu uma API para integrar outros sistemas, como, por exemplo, um sistema de registro de chamados. Essa integração é feita pelo formato de intercâmbio de dados computacionais JSON.
2.4 Elementos do Zabbix Dentro dessa arquitetura que acabamos de conhecer, existem três elementos que representam o back-end e fazem, de fato, todo o trabalho pesado do Zabbix. São eles: Zabbix Server, Zabbix Proxy e Zabbix Agent.
2.4.1 Zabbix Server Todos os agentes se reportam ao back-end (servidor), que armazena os dados coletados na base de dados. Esses dados são acessíveis através do front-end (interface web). Está disponível para várias plataformas Unix-Iike.
2.4.2 Zabbix Proxy Este elemento é opcional. O Zabbix Server não depende dele para funcionar. O Zabbix Proxy é um host responsável por fazer a coleta em clientes remotos. Ele é um agregador de dados que faz a coleta dos clientes na rede remota em nome do Zabbix Server. Após a coleta, o Zabbix Proxy consolida esses dados e transmite um pacote com todos os dados para o Zabbix Server, O hardware utilizado pelo Zabbix Proxy não precisa ter o mesmo desempenho requerido pelo Zabbix Server e sua manutenção é praticamente zero. Para termos uma noção do que o Zabbix Proxy necessita de hardware, ele pode ser instalado em um Raspberry Pi (menor computador do mundo, que possui seu hardware integrado em uma única placa). 2.4.3 Zabbix Agent É o cliente que se reporta para o Zabbix Server ou para o Zabbix Proxy. Ele foi de-
senvolvido para ter um baixo consumo de recursos computacionais e não impactar o ambiente monitorado. Está disponível para a maioria das plataformas Unix-Iike e Windows, inclusive com pacotes pré-compilados, mas também pode ser visualizado com agentes externos, tais como: SNMP 1PM 1, SSH etc.
3 Instalação Antes de partirmos para a parte prática da instalação, é necessário apresentar os requisitos mínimos para que o Zabbix seja instalado. Este capítulo não tem somente o propósito de ensinar como instalar o Zabbix tal como uma receita de bolo, mas também o de explicar o porquê. O ideal é você ler, entender e executar os comandos deste capitulo para que possamos prosseguir com os capítulos posteriores. Portanto, se este é o seu primeiro contato com o Zabbix, será crucial o entendimento deste capítulo. Também será apresentado um assunto muito importante que será de grande utilidade para gerentes e projetistas de infraestrutura, que é planejar o crescimento da base de dados de informações do Zabbix.
3.1 Requisitos de hardware Zabbix requer um mínimo de 128 MB de memória RAM e 256 MB de espaço livre em disco. Logicamente, tratando-se de um sistema que alimenta suas informações em banco de dados, precisa-se de mais memória física e armazenamento em disco. Isso é necessário quando a quantidade de hosts monitorados e a quantidade de parâmetros configurados são extensas. Essa questão também é válida para o processador que será utilizado no servidor. Um Pentium II é o mínimo necessário para atender à demanda do Zabbix. Para grandes ambientes é recomendado que se use o servidor de banco de dados separado do Zabbix Server, evitando assim a concorrência por processador e memória entre ambos.
Instalação 11
3.2 Plataformas suportadas Zabbix foi desenvolvido e testado para funcionar nas seguintes plataformas: r
Linux IBM AIX
« FreeBSD NetBSD OpenBSD HP-UX MacOSX .'
Solaris
' Windows 2000 e superiores (apenas Zabbix Agent)
3.3 Requisitos de software Para o funcionamento do Zabbix, alguns softwares são necessários. A tabela a seguir exibe a lista dos softwares e suas versões mínimas suportadas.
Software Apache PHP com suporte bc, XML, session, socke(, multibyte PHPGD MySQL* Oracle* IBM DB2* PostgreSQL* SQLite*
Versão Mínima 1.3.12 5.1.6 2.0 5.0 lOg 97 8.1 3.3.5
A escolha do banco de dados deverá ser entre os itens marcados com asterisco (*) da tabela anterior. Somente um banco de dados é necessário para o Zabbix armazenar os dados coletados.
3.4 Planejando o crescimento do banco de dados A primeira vez que eu estava instalando o Zabbix para testá-lo, parei para pensar em qual seria o tamanho do meu banco de dados após alguns meses de uso. Após algumas buscas no fórum de discussão oficial do Zabbix, vi um post que informava que
12 Monitoramento de Redes com Zabbix
no manual da versão 1.8.2 havia um tópico com a informação que eu desejava. Como é algo muito importante para a implementação do sistema de monitoramento, resolvi reservar um espaço nesta obra para compartilhar essa informação e tentar explicar de uma forma que o leitor possa compreender melhor. O tamanho do banco de dados do Zabbix depende principalmente das seguintes variáveis: número de valores processados por segundo (VPS), dados históricos, dados estatísticos e dados de eventos. Estas são as principais variáveis que definem a quantidade de dados armazenados historicamente, o que faz com que o banco cresça continuamente. Os dados oriundos de outras variáveis, por exemplo: hosts, templafes, usuários etc., não contribuem para um amplo crescimento do banco de dados, pois, uma vez cadastrados, já terão seu espaço em disco sendo utilizado e não há como crescer demasiadamente, como acontece com as principais variáveis. Logicamente, tudo dependerá de como seu ambiente estará configurado, levando em consideração o número de hosts e, principalmente, o número de itens configurados e com monitoramento ativado. Agora que já sabemos o que faz a base de dados crescer, irei demonstrar como se faz o cálculo para descobrir qual será o tamanho do banco de dados daqui a alguns anos. Primeiramente, precisamos saber o total de itens monitorados. Este total é o número de itens cadastrados e ativos multiplicado pelo número de hosts associados a ele. Esta informação o Zabbix exibe em seu painel de monitoramento e não é necessário fazermos cálculo algum para obtermos tal valor. Por exemplo, suponhamos que temos 1000 itens sendo monitorados com taxa de atualização a cada 60 segundos. Para sabermos o número de valores processados por segundo utilizamos a seguinte fórmula:
VPS = itens / taxa de atualização Portanto, VPS = 1000 / 60. Teríamos então 16,67 novos valores adicionados na base de dados a cada segundo. Este valor serve de base para o cálculo das próximas variáveis. O próximo passo é calcular o tamanho (em bytes) dos dados históricos. O Zabbix mantém valores dos itens por um período fixo de tempo. Este período é customizável, você é quem decide quantos dias os dados ficarão armazenados em histórico. Para o cálculo dos dados históricos utilizamos a seguinte fórmula: Histórico = dias * 24 * 3600 * VPS * bytes
1
De forma geral, é sugerido manter os dados históricos por um período de trinta dias, a menos que você tenha disco suficiente para armazenar uma massa de dados por um longo período. Isso também vai depender do ambiente em que será monitorado. Na fór-
Instalação 13 mula, 24 é o número de horas que temos em um dia e 3600 é o número de segundos que temos em uma hora. Bytes é o número de bytes necessários para manter um único valor, o que varia de acordo com o SGBD utilizado. Na média este valor é de 50 bytes. Vamos utilizar o exemplo com 30 dias para entender esta fórmula. Se o Zabbix está processando 16,67 valores por segundo, ao substituirmos os valores na fórmula, teremos: 30 * 24 * 3600 * 16,67 * 50, o que daria um total de 2,01 GB de espaço utilizado por mês em nossa base de dados, apenas para os dados históricos. Zabbix também mantém uma média estatística para cada item cadastrado. Esses dados são utilizados para analisar tendências ao longo do período através de gráficos. Isso é ótimo para analisarmos, por exemplo, a utilização de recursos de memória. CPU etc. Com a leitura do gráfico, é possível saber se uma troca de hardware será necessária. Na instalação do Zabbix, o padrão para dados estatísticos é de 365 dias. A fórmula para calcular esta variável é a seguinte: Estatística = (itens / 3600) * (24 * 3600 * dias) * bytes
1
Onde itens é o número de itens sendo monitorados, dias é a quantidade de dias para dados estatísticos e bytes é o número de bytes necessários para armazenar o valor na base de dados. A média para esta variável é 128 bytes. 3600 na primeira parte da fórmula é o resultado da quantidade de bytes que um item ocupa na tabela trends por dia. Portanto, ao substituirmos os valores na fórmula, temos: (1000 / 3600) * (24 * 3600 *365) * 128 = 1,04 GB. A última fórmula que devemos utilizar é para calcular o crescimento dos dados de eventos. Para cada evento, aproximadamente 130 bytes são gravados em disco. Evento é um acontecimento gerado por uma trigger de um determinado item. A fórmula para calcular esta variável é a seguinte: Eventos = dias * eventos * 24 * 3600 * bytes Onde dias é o número de dias que os dados de eventos serão mantidos no banco de dados, eventos é a quantidade de eventos gerados e bytes é a quantidade média que um registro de evento ocupa em disco. Suponhamos que o Zabbix gere um evento a cada segundo, o que é absolutamente normal em um ambiente com vários hosts e itens sendo monitorados. Substituindo os valores, teremos: 365 * 1 * 24 * 3600 * 130 = 3,81 GB.
14 Monitoramento de Redes com Zabbix A partir dos cálculos das variáveis explicadas anteriormente, poderemos prever o uso em disco da base de dados utilizada pelo servidor de monitoramento. Total = Histórico + Estatística + Eventos Utilizando nosso exemplo, teríamos: 2,01 + 2,09 + 3,81 = 7,91 GB de espaço em disco utilizado em um ano. A partir desse estudo, será possível planejar a capacidade que o ambiente terá na fase inicial de implementação. Por exemplo: capacidade de armazenamento, quantidade de discos, processadores, memória etc.
3.5 Obtendo o Zabbix A versão do Zabbx abordada nesta obra é a 2.0.8. Esta obra foi escrita antes do lançamento da versão 2.2, porém as mudanças ocorridas não influenciarão no conteúdo apresentado. Devemos acessar a URL http://www.zabbix.com/download.php e baixar o pacote Zabbix Sources. Para entendimento deste livro, nós instalaremos o Zabbix a partir de seu código-fonte. Assim, não importa a distribuição Linux ou o sistema Unix-Iike que você esteja utilizando. Seguiremos os mesmos passos, apenas observando as particularidades de cada sistema, pois nem todos seguem o mesmo padrão de estrutura de pastas. Podemos também optar por baixar o Zabbix compilado para um sistema específico, tais como Fedora, Debian, FreeBSD, Gentoo, Ubuntu, entre outros. Outra opção é baixar o Zabbix Appliance, que possui versões para KVM, WMware, VirtualBox, Xen, entre outros. É uma boa ideia para quem deseja conhecer o Zabbix e não quer perder tempo fazendo todas as configurações. O Appliance do Zabbix é baseado na distribuição OpenSUSE configurada com o servidor de banco de dados MySQL. Resta saber se esta opção vai lhe atender a contento. Somente fazendo testes você terá uma resposta. Todos os comandos executados para a instalação do Zabbix e pacotes necessários contidos nesta obra foram feitos sob o GNU/Linux CentOS 6.4. Para a nossa prática, também utilizaremos o SGBD MySQL. Então, mãos à obra. Nota: é bem provável que, no momento em que você estiver lendo este livro, o Zabbix já esteja disponível em uma versão mais atualizada. Isso não implicará em nada no acompanhamento desta obra.
Instalação 15
3.6 Verificação e instalação de dependências Antes de começarmos a compilação e instalação do Zabbix, teremos que instalar as dependências necessárias para a compilação do código-fonte. Dependendo do seu sistema, algumas dependências podem estar instaladas. Se você está com uma instalação limpa, como foi usada para os testes desta obra, provavelmente terá que instalar todas as dependências listadas a seguir: . Compilador C Automake MySQL Execute o seguinte comando para instalar os pacotes essenciais para a compilação do Zabbix:
4 yum instali mysql-server mysql make gcc gcc-c++ Dependendo da funcionalidade desejada para o Zabbix Server, também pode ser necessária a instalação de alguns ou de todos os pacotes, conforme listagem a seguir: mysql-devel (bibliotecas e cabeçalhos necessários para acessar o MySQL) iksemel-devel (bibliotecas e cabeçalhos necessários para envio de alerta por mensageiro instantâneo) » net-snmp-devel (bibliotecas e cabeçalhos necessários para monitoramento via SNMP) » libcurl-devel (bibliotecas e cabeçalhos necessários para monitoramento web) ' fping (aplicativo para monitoramento simples) libssh2- 1 -deveI (bibliotecas e cabeçalhos necessários para verificação direta via SSH) openlPMl-devel (bibliotecas e cabeçalhos necessários para monitoramento de dispositivos por IPMI) . openldap-devel (bibliotecas e cabeçalhos necessários para acesso à base de dados LDAP) Nota: se você estiver instalando o Zabbix em outra distribuição, atentar para os nomes dos pacotes, que na maioria dos casos são diferentes. Porém, realizar a busca somente pelo nome trará todos os resultados, inclusive os pacotes com as bibliotecas, que na maioria dos casos distinguem de uma distribuição para outra. Por exemplo: no Debian, os pacotes de bibliotecas não são descritos como -deveI, e sim -dev.
16 Monitoramento de Redes com Zabbix Alguns pacotes não precisam ser instalados caso você não utilize algum recurso no ambiente que será monitorado. Por exemplo: se você não pretende monitorar dispositivos e/ou hosts por SNMP não precisará instalar o pacote net-snmp-dev. Para os testes apresentados nesta obra, instalaremos os pacotes selecionados no comando a seguir: * yum instali iksemel-devel net-snmp-devel libcurl-devel netsnmp-devel mysql-devel fping OpenIPMI-devel libssh2-devel Java1.7. 0-openjdk-devel - y
Alguns dos pacotes necessitam da configuração de repositórios extras, como, por exemplo, o repositório rpmforge e o epel, que são de fácil instalação.
3.7 Instalação do servidor Veremos como realizar a instalação do Zabbix através do código-fonte, composta por uma base de dados, um servidor e um cliente de monitoramento, todos rodando na mesma máquina. Também veremos como instalar e configurar a interface web do Zabbix, baseada em PHP, para acessar o banco de dados MySQL, instalado anteriormente. Optei por mostrar uma instalação através do código-fonte para que o leitor possa escolher o que será instalado, além de habilitar/desabilitar opções que não serão necessárias para o uso em seu ambiente. Baixe o arquivo com o código-fonte do Zabbix e extraia o arquivo em um diretório temporário. Execute os seguintes comandos: 4 wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20 t.atest%20Stable/2 .0. 8/zabbix-2 .0.8. tar .gz/download • tar xf zabbix-2.0..8.tar.gz
Para a proposta desta obra, nós compilaremos o Zabbix com as seguintes opções: server, agent, Java Gateway, MySQL, CurI, SNMP IMPI, Jabber e SSH habilitados. Execute os seguintes comandos: * cd zabbix-2.0.8 * ./configure --prefix=/opt/zabbix/ --enable-server --enableagent --enable-java --with-mysqi. --with-libcurl --with-net-snmp --with-openipmi --with-jabber --with-ssh2
Instalação 17 Quando o comando finalizar sua execução será exibido um resumo com os componentes compilados, conforme a seguir (apenas as informações necessárias):
Enable server: Server details: With database: WEB Monitoring via: Native Jabber: SNMP: IPMI: SSH: ODBC: Enable proxy: Enable agent: Enable Java gateway: Java gateway details: Java compiler: Java archiver: IPv6 support:
yes MySQL cURL yes net-snmp openipmi yes no no yes yes javac jar no
Se ocorrer algum erro na compilação, verifique se todos os requisitos estão instalados. O arquivo config.log pode ser consultado para mais detalhes acerca dos erros. Observe que, ao executar o comando ./configure, optamos por instalar o Zabbix no diretório /opt/zabbix. Caso você queira instalá-lo em outro local, este parâmetro pretlx deve ser alterado. Também optamos por compilar o Zabbix com muitas opções. Antes de colocá-lo em um ambiente de produção o ideal é verificar se será necessário utilizar todas essas opções. Para verificar todas as opções aceitas na configuração, você pode executar o comando ./configure --help. O próximo passo é executarmos o comando para instalar os binários do Zabbix.
make instaL. Pronto. Já estamos com os binários do Zabbix instalados. Executando o comando tree /optlzabbix, teremos a seguinte estrutura no diretório de instalação do Zabbix:
18 Monitoramento de Redes com Zabbix
/opt/zab ix bin - zabbixget L._ zabbix_sender etc zabbix_agent. conf -_. zabbix_agent.cont .d zabbix agentd. conf zabbixagentd.conf.d zabbixserver.conf zabbix_server.conf .d
a
E-
E
Sbifl
zabbix_agent zabbix_agentd zabbix_)ava bin zabbix-java-gateway-2.0.8.jar ogback-classic-0.9.27.jar E-- .ogback-console. xml .ogback-core-0.9. 27. jar E-.__ .ogback.xml Drg-json-2010-12-28.jar slf4j-api-1.6.1.jar settings.sh shutdown.sh startup.sh zabbixse rver share nan mani L_
11 1 1 1
zabbixget.1 zabbix_sender.1
ran8 - zabbix_agentd.8 L 1-. zabbix - aJ.ertscripts externa lscripts
16 directories, 22 files
Instalação 19 Observe que, além dos binários, os manuais dos comandos também foram instalados. Precisamos adicionar um usuário que irá executar os binários do Zabbix, para que esse papel não fique a cargo do usuário root. Execute os comandos a seguir para criar grupo e usuário zabbix e também para definir o dono do diretório /opt/zabbix para o grupo adicionado.
groupadd zabbix * useradd -m -g zabbix
zabbix
Para realizar a instalação apenas do Zabbix Agent, basta efetuar a compilação com o comando ./configure --enable-agent.
3.8 Criação e carga do banco de dados Partiremos agora para a criação da base de dados do Zabbix e também para a carga de dados. Esta carga nada mais é do que copiar os esquemas e dados nas tabelas criadas que serão utilizadas no banco de dados do Zabbix. Nele, executaremos os comandos para conceder o acesso ao usuário zabbix na base de dados que será criada, a qual chamaremos de zabbixdb. Digite os seguintes comandos:
* mysql -u
mysql> create database zabbixdb character set utWT mysql> use zabbixdb; mysql> GRANT ALL PRIVILEGES ON zabbixdb. 4 TO zabbix@localhos A 14M 1 DENT 1 FI ED BY 1 123 45 '.WITM.... kANT mysql> quit;
O cat database/mysql/schema.sql í mysql -uzbbix -p zabbixdb * cat database/rnysql/irnages.sql 1 mysql -uzabbi zabbixdb * cat database/mysql/data.sql 1 mysql -uzabbix zabbixdb
20 Monitoramento de Redes com Zabbix
Obs.: caso seu servidor MySQL esteja configurado com senha, executar o comando com o parâmetro -p.. O comando exibido anteriormente foi executado sem senha, pois foi a primeira execução do MySQL e não foi definida senha de acesso.
3.9 Configuração inicial Neste ponto, já temos o Zabbix compilado e instalado em nosso servidor. Logicamente, não tem nada funcionando ainda. Nós usaremos os arquivos de configuração de exemplo que estão inclusos no pacote do Zabbix, mas antes criaremos alguns diretórios necessários dentro do diretório de instalação do Zabbix. Execute:
* • 1 1 1 1
cd /opt/zabbix mkdir log run tmp alertscripts externalscripts cp /tmp/zabbix-2.0.8/conf/zabbix_server.conf /opt/zabbix/etc/ cp /tmp/zabbix-2.0.8/conf/zabbixagentd.conf /opt/zabbix/etc/ in -s /opt/zabbix/etc/ /etc/zabbix chown zabbix. /opt/zabbix/ -R Também podemos adicionar os diretórios onde se encontram os binários do Zabbix
no arquivo /etc/profile, para podermos executá-los sem a necessidade de passar seu caminho completo. Adicione o conteúdo a seguir neste arquivo:
FATH=$PATH: /opt/zabbix/bin: /opt./zabbix/sbin export PATH Também é necessário copiarmos os sctipts de inicialização:
1 cp /tmp/zabbix-2.0.8/misc/init.d/fedora/core5/zabbix server / etc/init .d/ 1 cp /trnp/zabbix-2.0.8/misc/init.d/fedora/core5/zabbix_agentd / etc/init .d/ Resumindo a execução dos comandos: criamos os diretórios que iremos utilizar para armazenar todas as configurações do Zabbix, como por exemplo: Iogs, scripts externos etc. Também realizamos as cópias dos arquivos de configurações do servidor e do agente, que irá monitorar o próprio servidor, além da cópia dos scripts de inicialização.
Instalação 21 Nosso servidor está quase pronto para ser inicializado. Antes vamos alterar algumas configurações no arquivo zabbix_server.conf. A seguir temos as mudanças:
LogFile=/opt/zabbix/log/zabbix server. log LogFileSize=10 DebugLevel= 3 PidFile=/opt/zabbix/ run/ zabbix_server pid DBHost1oca1host DBName=zabbixdb DBUser-zabbix DBPassword= 123456
Com apenas essas alterações já é possível iniciarmos o serviço do servidor do Zabbix sem problemas. Repare que as alterações mais importantes são referentes às configurações de acesso ao banco de dados do Zabbix e também aos arquivos de Iog e execução do servidor. Para garantirmos que ninguém poderá ler o arquivo além dos usuários zabbix e root, alteramos a permissão do arquivo de configuração com o seguinte comando:
t chniod 400 /etc/zabbix/zabbix_server.conf Na página de documentação do Zabbix existe uma tabela com os parâmetros suportados pelo Zabbix Server. Você pode acessar essa informação através do Iink https:ll www.zabbix.com/documentation/2 .O/manual/appendixlconfig/zabbix_server. Vamos agora configurar o script de inicialização do servidor. Edite o arquivo Ietc/ init.d/zabbix_server. 0 início deste arquivo deverá ficar como no exemplo a seguir:
22 Monitoramento de Redes com Zabbix
RETVAL=O prog"Zabbix Server" ZABBIX_BIN"/opt/zabbix/sbin/zabbi x_server"
Manipulamos e fizemos cópias de arquivos como usuário root. Sendo assim, execute o seguinte comando para alterar o dono da pasta /optizabbix e seus arquivos existentes:
4 chown zabbix. /opt/zabbix/ -R Para que o scrip( comece automaticamente sempre que o servidor for iniciado, iremos executar os comandos conforme a seguir.
• chkconfig --add zabbix_server • chkconfig --levei 35 zabbix server on Dê permissão para execução no arquivo do scrip(.
1 chinod 755 /etc/init.d/zabbix_servcr Agora podemos iniciar o serviço do servidor.
4 service zabbix_server start Nota: caso ocorra algum erro na execução dos comandos, certifique-se de que as permissões da pasta !opt'zabbix e seus arquivos estão corretas, ou seja, para o usuário e grupo zabbix.
Instalação 23 Podemos verificar se o serviço está inicializado com o comando ps u -c zabbix_server. Se tudo estiver certo, o comando terá o seguinte retorno:
PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER zabbix 21387 0.0 0.3 45744 1952 ? SN 05:14 0:00 /opt/zabbix/sbin/zabbix_server zabbix 21389 0.0 0.2 45744 1376 /opt/zabbix/sbin/zabbix server zabbix 21391 0.0 0.4 47624 2524 /opt/ zabbix/sbin/ zabbix server zabbix 21392 0.0 0.4 47624 2524 /opt/ zabbix/sbin/zabbix server zabbix 21393 0.0 0.4 47624 2524 /opt/zabbix/sbin/zabbix server zabbix 21394 0.0 0.4 47624 2524 /opt/zabbix/sbin/zabbix_server zabbix 21395 0.1 0.4 47624 2524 /opt/zabbix/sbin/zabbix_server zabbix 21396 0.0 0.2 45744 1304 /opt/zabbix/sbin/zabbix_server
?
SN
05:14 0:00
?
SN
05:14 0:OC
?
SN
05:14 0:00
7
SN
05:14 0:00
?
SN
05:14 0:00
?
SN
05:14 0:00
?
SN
05:14 0:00
Finalizamos aqui a etapa de configuração do servidor do Zabbix. Também iremos configurar o agente que irá monitorar o próprio servidor. O trabalho praticamente será o mesmo da configuração do servidor. Como já tínhamos copiado os arquivos anteriormente, iremos para a configuração do arquivo zabbix_agentd.conf, localizado na pasta /optlzabbixletc, ou em /etc/zabbixl, já que criamos um Iink simbólico para esta pasta.
24 Monitoramento de Redes com Zabbix
PidFile=/opt/zabbix/run/ zabbix agentd . pid LogFiie=/opt/zabbix/log/zabbix_agentd. log LogFileSi ze=1O Server=127.0.0. 1 HostnameZabbix Server
Com apenas essas alterações já é possível iniciarmos o serviço do agente do Zabbix sem problemas. Na página de documentação do Zabbix existe uma tabela com os parâmetros suportados pelo agente do Zabbix. Você pode acessar essa informação através do Iink https:ll www.zabbix.com/documentation/2 .O/manuaVappendix/configlzabbixagentd, para clientes Unix e derivados, e https:llwww.zabbix.com/documentationl2.0/manual/appendix/ config/zabbix_agentd_win, para clientes Microsoft Windows. Vamos agora configurar o script de inicialização do agente. Edite o arquivo /etcl init.d/zabbixagentd. O início deverá ficar como no exemplo a seguir:
RETVAL'O
proq="Zabbix Agent" ZABBIX_BIN="/opt/zabbix/sbin/zabbixagentd"
Instalação 25 Para que o script inicie automaticamente sempre que o servidor for iniciado, iremos executar os comandos conforme a seguir.
* chkconfig --add zabbix_agentd # chkconhig --levei 35 zabbix_agentd on Dê permissão para execução no arquivo do script.
* chmod 755 /etc/init.d/zabbixagentd Agora podemos iniciar o serviço do agente.
* service zabbix_agentd start Verificamos se o serviço está inicializado com o comandc ps u
-c
zabbix_agentd. S
tudo estiver certo, o comando terá o seguinte retorno: USER
PIO %CPU %MEM VSZ
RSS TTY STAT START TIME
zabbix 3009 0.0 0.1 3156 572 ? /opt/zabbix/sbin/zabbi x_agentd
SN
11:26 0:00
zabbix 3010 0.5 0.1 3156 /opt/zabbix/sbin/zabbix_agentd zabbix 3011 0.0 0.0 3156 /opt /zabbix/sbin/zabbix_agentd zabbix 3012 0.0 0.0 3156 /opt /zabbix/sbin/zabbix_agentd zabbix 3013 0.0 0.0 3156 /opt/ zabbix/sbin/ zabbixagentd 3014 0.0 0.1 3168 zabbix /opt/zabbix/sbin/ zabbix_agentd
748 ?
SN
11:26 0:00
428 ?
SN
11:26 0:00
428 ?
SN
11:26 0:00
428 ?
SN
11:26 0:00
604 ?
SN
11:26 0:00
COML::
26 Monitoramento de Redes com Zabbix
Finalizamos aqui a etapa de configuração do agente do Zabbix. Neste momento, nosso servidor está totalmente funcional na camada de aplicação, que é a base do sistema de monitoramento. O servidor está rodando e o agente pronto para coletar as informações. Porém, você deve estar imaginando: "mas que sistema enjoado de configurar, e até agora não vi nenhum resultado". É verdade - e não verá ainda nas próximas páginas, pois teremos que instalar e configurar a interface web do Zabbix, assunto que será abordado a seguir.
3.10 Instalação da interface web do Zabbix A instalação da interface web do Zabbix é bem simples de ser realizada. Precisamos ter somente atenção aos alertas que são emitidos caso alguma configuração não esteja entre os requisitos mínimos exigidos para dar sequência à configuração da sua interface web.
Sendo assim, antes de iniciarmos a configuração temos que instalar alguns pacotes exigidos para o bom funcionamento da camada de aplicação do Zabbix, ou seja, a sua interface web. Ela é toda escrita em PHP e por esse motivo necessita de um servidor web. Para instalarmos os pacotes necessários para esta etapa, executaremos o seguinte comando:
1 yum instail php-cli php-bcmath php-mbstring php php-mysql php-pdo php-common php-gd httpd php-xml - y O comando anterior irá instalar o servidor web e as dependências do PHP necessárias para rodar a interface web do Zabbix, além de instalar também o módulo para acesso ao banco de dados MySQL. Com as dependências instaladas, é hora de realizarmos a instalação da interface web do Zabbix em nosso servidor. Mas, para isso, precisamos copiar os arquivos do código-fonte para o diretório onde ficam armazenadas as páginas providas pelo servidor web que instalamos anteriormente. Execute os comandos a seguir:
• cp -a /tmp/zabbix-2.0.8/frontends/php/ /var/www/html/zabbix 1 chown -R apache. /var/www/html/zabbix Precisamos fazer alguns ajustes no arquivo de configuração do PHP, conforme os itens a seguir no arquivo /etc/php.ini
Instalação 27
post_max_size = 32M max_execution time 600 maxinput_time = 600 date.timezone = 'America/Sao_Paulo' Após salvar o arquivo, recarregue a configuração do servidor Apache com o seguinte comando:
t service httpd reload Após realizarmos as configurações, poderemos acessar a interface web do Zabbix através de um browser para darmos continuidade à instalação. Digite o seguinte endereço no seu browser: http:flizabbix. Surgirá a tela de introdução, conforme a figura a seguir:
208
1. W.komw 7 CIw
Pre4is1
L
wMhiL
Caso você depare com uma mensagem de permissão negada para acessar a página, você deverá desativar o SELinux do seu sistema. Para fazer isso sem precisar reiniciá-lo, execute o seguinte comando:
1 setenforce 0
28 Monitoramento de Redes com Zabbix
Obs.: não trataremos nesta obra sobre se você deve ou não desativar o uso do SELinux em seu sistema operacional. Se você quiser desabilitar o uso do SELinux definitivamente, você deve, no arquivo de configuração /etc/selinuxconfig, alterar o parâmetro SELinux para disable. Continuando, dique em Next'. A próxima etapa exibe os pré-requisitos necessários para o bom funcionamento do ambiente web. Aparecendo alguma falha de configuração ou versão de algum software, devemos corrigir antes de continuarmos a instalação. Além do mais, o botão 'Next' só será habilitado quando todos os pré-requisitos estiverem satisfeitos. Precisamos alterar os valores de acordo com os requisitos necessários. Os itens que aparecerem com status Fail (vermelho), devem ser obrigatoriamente corrigidos. Os que estão com status 0k (verde) possuem o parâmetro recomendado e aqueles com status 0k (laranja) preenchem o requisito mínimo para funcionamento. Para configurarmos esses parâmetros devemos editar novamente o arquivo de configuração do PHP que se encontra em Ietc/php.ini, e alterar conforme o que se pede.
2O3
Cune,itva,e
P? op,o,, lne(nofy I1*• 090n pO%I ,nazsizs r14 opson .spload 'na.'
r**
09100111*1 eeci,D00 1,111
P)r oon 'na,
3. ConIie 00 cwneclon 4. Z.Jbs* sece de Iam S. P164n%t.-iLI ,'' Nn
3IJ 1j1q
1pItkne
2u
2'.'
eco
3w
100
3O0
ri.' alibe pp
r.
1laLda.'...uppOI
,(nn':,Iy III' ,nb•.o*,j P)f'so(ketl
rir 9d
1.
rIf'gdPWsuppo.l
Clique em 'Next' para continuar.
210
20
Instalação 29 A próxima etapa é a configuração da conexão com o banco de dados, conforme mostrado na figura a seguir. Nesta tela deveremos informar o nome do banco, o usuário de conexão e a senha para acesso ao banco de dados.
P1.~ t,.'.i. 4'.t80 .,'.n'..$y '.'.d lei 1%9 C'.M.4'.b$ PII'.VØ'.,III l•1 (*ft'.IIIft Se 0.a dilat
bujwn elSe'. 49'.0
• T#41
4
•aJAf .,9 ( , tLdh
PT
Dat.h..r ?ypc
It5SQL
DAI.'.b*'.e ho%t
I•C'.iS,'.sI
DI..1t'.sc P06 D.t.Mena~
k,I
OO &15.db
1r,'1..P.0ni 5)..'.,
tass*oid
...-4
Prev~
1
Os itens que deveremos modificar para nosso exemplo são: Database name = zabbixdb User = zabbix
Password = 123456 Agora podemos clicar no botão 'Test connection' para verificar se está tudo certo e passar para a próxima etapa. Clique em 'Next'. A quarta etapa da configuração do Zabbix Server se refere aos detalhes do servidor, como o nome do host e a porta em que o back-end do Zabbix se conectará. É possível também informar um nome que será exibido na interface web. Clique em '.Next'.
30 Monitoramento de Redes com Zabbix
2O
Pi... sSs. h*I A$• ao P.44 IP sdd,,,t ã,,d p101 w.iv.b•s a# Zsbb.. ao siM aís ao R&~
Hc%t
##c bU.l.I
Po, Nwse
, t&LI.
JJ
..'
(1'!'
L'L6M194 V~81
Cc.I
X4 P~Ma
A quinta etapa nos mostra um resumo dos parâmetros configurados. Revise-os e, se estiver tudo correto, dique em 'Next'.
PI,* .' si., si
II
p... 144.Ç
chlct c.m..m... psssn,.ws
1,,,... ., P,.ss..., bIs
Si CaiI SiM i'ibI" pi,MiiSiN
Dtabae t,p*
S.l$QL
::::
::'
D.,Ub.,ss '1
., iiw.
Oiti%i 51W
:M5.,
p1.so. d Si kSSLI W iii
11111115
sqv., nan.
111531
LIVRO
AS,Ii
Instalação 31 A sexta etapa é apenas para informar que o arquivo de configuração foi gravado no sistema e a instalação do front-end foi completada.
Se ocorrer erro na gravação do arquivo, revise as permissões do diretório /var/www/ htmVzabbix e dique no botão 'Retry'. Por último, dique em 'Finish'. Irá aparecer a tela inicial de logon do Zabbix, como mostrado na figura a seguir.
32 Monitoramento de Redes com Zabbix
Vimos neste capítulo que a instalação do Zabbix envolve muitas tecnologias. Se você planeja instalar o Zabbix como principal sistema de gerenciamento de rede de uma organização, o ideal é separar os servidores de banco de dados e o do Zabbix. Também é recomendado separar a camada de aplicação da camada de apresentação, ou seja, os binários ficariam instalados em um servidor e a interface web (front-end) em outro. Separando os servidores, você garante que o Zabbix não tenha concorrência na utilização de recursos de CPU e memória.
Conhecendo a Interface Web do Zabbix No capítulo anterior aprendemos como fazer a instalação completa do Zabbix, da compilação do código-fonte à instalação da interface web. O objetivo deste capítulo é apresentar a interface web do Zabbix para que, mais à frente, possamos configurar o monitoramento de um ambiente que iremos simular. Essa parte teórica é importante para que você não perca tempo quando for implementar o Zabbix em diferentes ambientes. Assimilando bem a parte teórica, você mesmo irá criar um mecanismo de sequência das configurações que deverão ser realizadas. Isso é único, não existe uma fórmula de fazê-lo, cada um faz a sequência que for conveniente. Logicamente, existem algumas dependências que logo você conseguirá assimilar. Como esta obra está escrita no idioma português, aprenderemos inicialmente como alterar o idioma de exibição da interface web. Faça o logon na interface web do Zabbix com usuário e senha padrão do sistema. Usuário = adinin Senha = zabbix A tela inicial do Zabbix será exibida, conforme a figura a seguir.
34 Monitoramento de Redes com Zabbix
v_ I..b..
si
.w*.sw.IsiS,)
24
1rv
S
5SISI4. Si
Irrzi
-
--
sdissdsci. 0,
-
-
ps.s.UM
O
OO
;
O
:--
P1
lS, Assssqi. WaI*sq biimsSo, Nol cfr%s*pd
Em seguida, dique em Profile', no canto superior direito da tela. 515
•Is*sN
1
1
1 L4SO Z.3
Em 'Language', selecione 'Portuguese (ptBR)' e dique em 'Save'. Automaticamente a interface web será traduzida para o idioma selecionado. Agora que já estamos com a interface em português (o que facilita e muito para a maioria dos leitores), vamos explorá-la.
Conhecendo a Interface Web do Zabbix 35
4.1 Visão geral da interface web do Zabbix Após fazer logon no Zabbix como o usuário admin, a tela principal da interface será exibida (como vimos antes). No canto superior esquerdo está localizado o menu principai que utilizaremos.
A seguir relacionamos as características de cada item: r
Monitoramento: através deste menu você será capaz de visualizar dados, problemas, níveis de serviços e tudo relacionado ao monitoramento do seu ambiente.
'
Inventário: aqui você tem acesso aos dados de inventário dos sistemas monitorados, caso tenham sido preenchidos no cadastro de hosts.
'
Relatórios: você poderá verificar o status do Zabbix Server, emitir relatórios de disponibilidade, verificar as triggers mais ativas etc. Configuração: nesta opção configuramos tudo o que está relacionado ao monitoramento do ambiente: inclusão de hosts, notificações, ações etc. Administração: nesta área realizamos as configurações gerais do Zabbix: métodos de autenticação, cadastro de usuários e permissões, configuração de idioma etc.
No canto superior direito estão localizados alguns Iinks para ajuda e suporte (estes Iinks são para acesso à documentação e ao suporte diretamente no site oficial do Zabbix); para impressão da página que está sendo exibida no momento (que nada mais é do que a mesma página visualizada, com exceção do cabeçalho do Zabbix e do menu de comandos); para configuração do perfil do usuário logado e para fazer Iogoff do Zabbix. A figura a seguir mostra o menu aqui descrito.
Ajuda 1 Suporte 1 Imprimir 1 Configurações 1 Logout
No canto inferior direito é exibida a informação do usuário que está conectado ao sistema. Por último, no canto inferior esquerdo (um pouco centralizado), é exibida a versão do Zabbix e uma frase de copyright da Zabbix SIA. Para verificarmos se a instalação está funcionando, aponte o cursor do mouse para o menu 'Monitoramento' e em seguida dique em 'Dashboard'.
36 Monitoramento de Redes com Zabbix
i
status doZbbix Par ame no
Valor Detalhes
Zabbix está rodando
loczlhost10051
Numero de hos (monitoiadosno monitoradosítemplatesremovidos) 24
0 1 1123
Número de itens (monitoradosdesativados/nio suportados)
O
O
Número de triggers (ativas(desativadas*ncident.tdesconhecido'okj
O
010
/ 0/ J
Número de usuários (online) Desempenho requerido do servidor, novos valores por segundo
O
A figura anterior exibe uma parte da tela de dashboard, que nos mostra informações úteis sobre o estado em que o Zabbix Server se encontra. Este painel é bastante interessante: observe que a primeira linha exibe a informação se o Zabbix está em execução. Você conseguir acesso à interface web do Zabbix não significa que ele esteja em execução. Caso o valor apresentado seja não, você deverá rever o capítulo 3 e verificar se o processo zabbix_server está em execução. Outro detalhe muito importante na interface web do Zabbix é a barra de histórico que surge quando estamos navegando entre os menus. Esta barra fica localizada abaixo dos submenus, conforme pode ser visto na figura a seguir. Histórico: Dashboard • Dados personalizados do usuário • Visio global do inventário de host
Esta é uma forma rápida de chegarmos ao menu que estávamos utilizando. Basta seguir o atalho clicando no Iink desejado, caso ainda esteja aparecendo no histórico. Vale lembrar que apenas as últimas cinco páginas visitadas são exibidas. Agora que conhecemos a tela inicial e o painel de monitoração da interface web do Zabbix, partiremos para as explicações sobre uma das principais etapas de configuração do Zabbix. As outras telas de visualização de dados do Zabbix nós veremos à medida que o assunto for tratado, já que não temos (ainda) nenhum dado coletado devido a não termos configurado nenhum host para o monitoramento. Antes de qualquer configuração de monitoramento, será explicado o menu de administração do Zabbix, que é primordial para os administradores.
Conhecendo a Interface Web do Zabbix 37 4.1.1 Administração Geral Selecione no menu o item Administração' e em seguida Geral. Na tela que será exibida, no canto direito superior, existe uma caixa dropdown com as opções para configuração na seguinte sequência: GUI, Limpeza, Imagens, Mapeamento de ícone, Expressões Regulares, Macros, Mapeamento de Valor, Horário comercial, Severidades da (rigger, Opções de exibição de trigger e Outros. De início veremos o básico de cada configuração. À medida que abordarmos as configurações, nos capítulos seguintes, falaremos mais sobre essas configurações. Algumas delas não precisaremos voltar a falar ao longo desta obra, pois se trata de configurações que não possuem dependências e, uma vez feitas, não precisaremos alterar se não tiver necessidade de mudança. '
GUI: nesta seção é possível definir os padrões relacionados à interface web do Zabbix. Aqui podemos alterar o tema padrão da interface web para todos os usuários (exceto para os usuários que definirem o tema em seu perfil), ativar ou desativar os vistos de eventos, estipular o limite de exibição dos resultados do mecanismo de busca, entre outros. Os parâmetros para configuração nesta tela são bem fáceis de ser compreendidos e suas opções bastante diretas, não confundindo a interpretação do administrador. -
t,.
(
IS..... $s
IS......
ISS
A.j.. ...w
.I..._ 50
IS INSS
.• .
cS.4.
£IS IS(SA&0(SSN IS SL$ISIS•SSS(SISISI•
leu
^Ma
UN• 1. Ss.• SI. IS•5•.S
500
•.0. gw
Nota: para o acompanhamento das explicações desta obra, sugiro não trocar o tema enquanto estiver lendo, pois algumas explicações citam cores e, em determinadas telas, as cores são diferentes conforme o tema escolhido.
38 Monitoramento de Redes com Zabbix r
Limpeza: o Zabbix Server possui um processo chamado Housekeeper, responsável por remover informações desatualizadas do sistema e também informações que o usuário não utiliza mais. Nesta tela nós poderemos configurar de quanto em quanto tempo esta limpeza será realizada.
•.. Mêl'
1
SII *1
'
Imagens: aqui nós inserimos as imagens que serão utilizadas nos mapas para monitoramento. É possível colocar ícones e imagens de fundo. Quando formos abordar a configuração de mapas, retornaremos à explicação desta tela para mostrar como inserir ícones e imagens para serem utilizados nos mapas. A figura a seguir exibe alguns ícones que já vêm por padrão no Zabbix. 1
tW
c)
-u
?a1i -'.LLJ
As imagens podem ser dos tipos: ícone, para exibir os elementos nos mapas de rede. e background, que são imagens de fundo nos mapas de rede. Obs.: o tamanho máximo do arquivo para upload é de 1024 bytes. Este padrão está definido no arquivo de definições do Zabbix pelo parâmetro ZBX_MAXIMAGESIZE. Apesar de você conseguir alterar esse valor, não é recomendável, pois você fará o sistema consumir memória apenas para dar uma aparência na interface web. Creio que este não é o objetivo de um sistema de monitoramento. De qualquer maneira, você também deve alterar o valor padrão no seu banco de dados. No caso do MySQL, deve ser alterado o valor do parâmetro max allowed packet no arquivo de configuração my.cnf.
Conhecendo a Interface Web do Zabbix 39 r
Mapeamento de icone: esta opção pode ser utilizada na configuração de mapa de rede para exibir ícones apropriados para cada status que um host estiver apresentando. Através deste mapeamento, você poderá personalizar o uso dos ícones criados e utilizar de forma automática na configuração dos mapas de rede, inclusive podendo usar expressões regulares para identificar o nome dos hosts. Veremos sobre a criação de mapeamento de ícone quando formos configurar um mapa de rede para exibição. Expressões regulares: permite criar expressões regulares customizadas para serem reutilizadas em outras configurações do Zabbix.
Macros: aqui criamos macros globais para serem utilizadas em outras configurações do Zabbix, tais como hosts, triggers etc.
Mapeamento de valor: este item serve para incluirmos valores do tipo string para substituição de valores que são coletados, e sua saída padrão são apenas números inteiros. Porém, é possível substituir qualquer valor por uma string ei ou número. Um exemplo seria alterar o valor "1" por "Respondendo". r
Horário comercial: nesta seção configuramos o horário que o monitoramento será feito pelo Zabbix. Por exemplo: o sistema de monitoramento de uma empresa funcionará de segunda a sexta-feira, das OO:OOh às 24:00h.
'
Severidades da tngger: nesta seção configuramos as cores para a exibição das triggers nas telas de monitoramento de visão geral, dashboard etc.
$..•.-d.4.
p*.W.*4.
'• 5ae
C.
si,....
A.'.ii
,...
ii•
pi's'*ø.i
*.
.
.i,,,i4. -
• .,,.- ..*.i. ..w
Opções de exibição de trigger: nesta seção configuramos como o status das
triggers será exibido pelo Zabbix. Opções de cores de texto e tempos de exibição podem ser personalizados, conforme mostra a figura a seguir.
40 Monitoramento de Redes com Zabbix
1 4.,4.
~
c.. NUM 4.,
4.,.sss 4. N0k4..T4
.....,
(.,.s 044 .
cc DCC4. 00**
I.q*w. 044 4.I4.. 00&IO
•
••
•
1
1 1 1
044 P44 I
444* 4.
444•
••*t" i*:.
4444
.r
Outros: aqLi configuramos as demais opções do sistema.
44.444$44. .4.4. 81, .4•4.44. 4.0.444444 )4.8 444..høs,
o.... I4.)4•4.
,.. 4•
O444'444 84.4
z.. i.
44.4)4.4$•4. 4.-.
4.1.2 Monitor.mento distribuído O próximo submeiiu é chamado MD (monitoramento distribuído). Nesta seção você tem a possibilidade de configurar o Zabbix para trabalhar com proxy ou monitoramento distribuído, que, por padrão, não vem configurado na instalação do Zabbix.
4.1.3 Autenticação Neste submenu pcxlemos configurar com qual tipo de autenticação o Zabbix trabalhará para conceder o acesso a seus usuários. Os tipos de autenticação suportados pelo Zabbix são: LDAP: ieste tipo de autenticação, o Zabbix irá conceder acesso aos usuários com o serviço LIDAR HTTP: neste tipo de autenticação, o Zabbix utiliza a autenticação básica do servidor Apache, que deverá estar configurado para tal. - Autenticação interna: esta é a autenticação padrão do sistema. O sistema buscará a validação do usuário e sua respectiva senha no seu próprio banco de dados.
Conhecendo a Interface Web do Zabbix 41 4.1.4 Usuários Neste submenu nós gerenciarnos os usuários que terão acesso ao sistema de monitoramento. Podemos criar grupos de usuários para diferenciá-los de acordo com o nível de acesso. Veremos mais sobre este menu no capítulo 9, que versa sobre gerenciamento de usuários e permissões. 4.1.5 Tipos de mídia Esta configuração é bem interessante. Nós aprenderemos como cadastrar os tipos de mídia com que o Zabbix trabalha para enviar as notificações de um alerta aos administradores do sistema. É possível enviarmos notificações por cinco tipos de mídia no Zabbix: E-mail Jabber SMS Script Ez Texting (serviço pago) Falaremos sobre os tipos de mídia quando formos configurar uma ação para envio de alertas, mais adiante.
4.1.6 Scripts Esta configuração não pode ser confundida com a configuração de script para tipo de mídia. Aqui, scripts servem para configurarmos comandos que poderemos executar em um hos( quando este estiver sendo monitorado pela visão de mapas. A configuração de scripts será feita em um capítulo mais adiante, após falarmos sobre utilização de macros.
4.1.7 Auditoria Nesta tela poderemos filtrar registros de Iogs e ações que o sistema grava de acordo com o que for acontecendo. A auditoria de Iogs é importante para o administrador acompanhar os detalhes dos acontecimentos. Vale ressaltar que os registros de Iogs visualizados nesta seção são referentes à administração do sistema, gravando as mudanças feitas pelos usuários, Iogins etc.
42 Monitoramento de Redes com Zabbix
Já a auditoria de ações serve para verificar os alertas que foram enviados para os administradores de acordo com o tipo de mídia que foi configurada e também se algum comando foi executado em um determinado host por alguma ação configurada.
4.1.8 Fila Esta tela possui uma pequena semelhança com a tela de auditoria. Porém, aqui podemos verificar os atrasos dos itens configurados que ainda não foram processados, ou seja, não tiveram a sua coleta registrada pelo servidor no banco de dados. É possível ter uma visão geral e também detalhada. Aqui é uma boa opção para você analisar a saúde do Zabbix. Quanto mais itens na fila por muito tempo, maior o sinal de que está acontecendo algo de errado na coleta dos itens, ou mesmo seu sistema pode estar sofrendo falta de recursos para processar esses dados.
4.1.9 Notificações Podemos verificar nesta tela quantas notificações foram enviadas para os usuários do sistema. Essas informações podem ser visualizadas por tipo de mídia de acordo com um período preestabelecido (diário/semanal/mensal/anual). São de grande valia para podermos identificar a quantidade de problemas que aconteceram neste período. Nesta tela não é possível fazer filtros por hosts. O legal é que um gerente poderá verificar a quantidade de notificações que um usuário recebeu por mês ou semana, podendo tirar conclusões a respeito de problemas que são, em tese, resolvidos por um determinado profissional.
4.1.10 Instalação Clicando neste submenu o sistema nos levará ao instalador da interface web do Zabbix. Só deve ser utilizado quando houver necessidade de alterar alguma configuração. Por exemplo: você precisou trocar a porta de comunicação do servidor de banco de dados e o Zabbix não consegue se conectar ao banco. Neste caso, teremos que acessar o instalador e alterar a porta de comunicação para o Zabbix voltar a se conectar ao banco de dados. É um modo mais fácil do que alterar diretamente no arquivo de configuração.
5 Entendendo os Conceitos do Zabbix Antes de começarmos a explicação sobre monitoramento, é importante entender alguns conceitos que o Zabbix utiliza. Os elementos que são utilizados para fazer esse monitoramento
5O:
Host
Item .-
Trigger
' Evento Template
5.1 Host E qualquer dispositivo presente na rede com um IP ou nome DNS. Ex.: computadores, impressoras, servidores, roteadores etc.
5.2 Item E a fonte de informação que o Zabbix utiliza para coletar dados com o objetivo de retornar uma métrica. A busca por essa informação é realizada de várias maneiras, a ser escolhida no momento do cadastro de um item. Existem os seguintes tipos: Agente Zabbix (passivo): a consulta é realizada pelo servidor. É o tipo padrão.
44 Monitoramento de Redes com Zabbix Agente Zabbix (ativo): os dados são processados pelo agente e transmitidos
para o servidor. r
Monitoramento simples: executado pelo servidor. Não tem necessidade de
instalação do agente. Agente SNMP: protocolo presente em diversos dispositivos de rede.
Trapper: algum objeto externo pode injetar dados dentro do Zabbix Server usando o zabbix_sender. r
Arquivos de Iog: arquivos de Iog dos sistemas Unix-Iike e Event Viewer do
Windows. Interno: saúde do Zabbix. Estatísticas sobre o ambiente do Zabbix Server. externo: através de scripts.
.41
SSH: autenticação via chaves ou senhas. r
Telnet: autenticação via senha.
r
JMX: monitoramento Java.
IPMI: monitoramento inteligente de hardware. ,
Banco de dados: estatísticas de base de dados através de query.
r
Calculado: reutilizando dados existentes na base.
Por padrão, o Zabbix utiliza seu próprio agente de monitoramento, que pode trabalhar de duas maneiras: em modo passivo ou ativo. No modo passivo, é o servidor que vai até o host em busca da informação desejada. Já no modo ativo, é o agente que tem a lista de quais itens precisam ser enviados ao servidor. Temos ainda a possibilidade de fazer uma monitoração simples, onde o Zabbix Server faz a consulta dos dados sem solicitar a informação para o Zabbix Agent. Podemos observar esse fluxo na figura a seguir.
Servidor Zabbix
m normal ou passom ativo
---
100501
Agente
Zabbix
Host monitorado
LL
simples
Pona
1
Entendendo os Conceitos do Zabbix 45 Quando o agente é passivo, é o servidor que abre a conexão com o host para fazer a coleta dos dados. Quando o agente é ativo, é o host monitorado que abre a conexão com o servidor para enviar uma lista dos dados recuperados do servidor. Esses dados são armazenados em buffer e enviados em tempo determinado no arquivo de configuração do agente. A vantagem de utilizar um agente ativo é que ele pode atuar em uma rede protegida por firewall, já que é o cliente que se conecta ao servidor. Quando utilizamos a verificação simples, o servidor realiza consultas diretamente na interface de rede do host monitorado. Neste caso, não é preciso instalação do Zabbix Agent. Esses três tipos de coleta de dados são os mais comumente utilizados. Se você está trabalhando em uma rede de pequeno porte, esses três tipos são suficientes. Para redes de médio e grande porte, você terá a necessidade de monitorar dispositivos SNMP e IPMI, além de outros monitoramentos mais específicos, como, por exemplo, servidores middleware o Zabbix utiliza o Zabbix Java Gateway para fazer a conexão JMX com esses servidores. Veremos mais sobre estes monitoramentos avançados no capítulo 18.
5.3 Trigger Uma vez que um hos( está sendo monitorado e o Zabbix faz a coleta de um item, temos a possibilidade de tratar esse item com uma trigger. A trigger é uma expressão lógica, é uma regra que vai ser avaliada cada vez que a coleta de um item ocorrer. Toda vez que um novo valor chegar para o Zabbix, e este tiver uma trigger associada, o Zabbix pode tomar uma decisão de acordo com a expressão lógica que estiver configurada. A partir daí, podemos ter alertas com alguns níveis de severidade. Severidade é a criticidade do alerta para o nosso ambiente. O Zabbix trabalha com seis níveis de severidade, que 5O: Não classificada Informação Atenção Média Alta Desastre
46 Monitoramento de Redes com Zabbix Cada severidade está configurada com uma cor diferente para exibição no painel de monitoramento, e essas cores poder ser personalizadas. As expressões das trigges possuem uma sintaxe básica: {host:key.function(param)}=O
1
Um exemplo simples seria: {TesteLivro:system.cpu.load.last(0)} >5 Onde TesteLivro system.cpu.load last (0) >5
host o item que foi coletado a função da trigger valor coletado que será comparado Ia regra utilizada pela trigger
Então, neste exemplo, se o último valor coletado do item system.cpu.load do host TesteLivro for maior que 5, a trigger será disparada, gerando um alerta para o sistema. Quando estamos construindo uma trigger, podemos usar operadores (lógicos e/ou matemáticos) e funções (mm, max, avg, Iast etc.) para avaliar a expressão lógica da trigger quando um item for coletado.
5.4 Evento Evento e qualquer acontecimento gerado por diferentes fontes no Zabbix. Na ocorrência desses eventos, o Zabbix pode tomar alguma decisão. Essas fontes de eventos podem ser através de: .
Triggers: enviar e-mail ou SMS; executar um comando remoto etc. Descoberta: buscar uma característica em hosts. Autorregistro: adicionar ou remover registro de hosts automaticamente.
Entendendo os Conceitos do Zabbix 47
5.5 Template Um template é um conjunto padrão de elementos que podem ser aplicados em vários hosts que serão gerenciados utilizando o mesmo esquema. Um exemplo prático disso poderia ser vários servidores Linux que utilizam os mesmos itens, tais como: uso de CPU, memória livre, espaço em disco disponível etc. Isso porque a forma como o Zabbix utiliza para coletar o item é a mesma quando está utilizando um ativo com as mesmas características. Com a utilização de templates, tudo acontece por herança, ou seja, um host pode estar associado a vários templates, que também podem estar associados a outros templates. Com isso, todos os objetos, como itens, gráficos, triggers, entre outros, serão herdados e associados ao host em questão. Utilizar template é uma forma de facilitar a operação do ambiente e também a melhor prática de trabalhar com o Zabbix.
*i Funções do Zabbix Basicamente, o Zabbix trabalha com cinco funções primordiais: coletar, armazenar, gerenciar, alertar e visualizar. Veremos cada uma delas a seguir.
6.1 Coletar Corno vimos no capítulo anterior, a coleta de dados é realizada pelo elemento do Zabbix chamado Item e pode ser feita usando vários métodos, como por exemplo: Zabbix Agent, SNMI9 lPMl etc. Dentro desse contexto, podemos fazer coleta em diversas camadas, tais como: Hardware
Rede Sistema operacional
Midc/lewart' Aplicações
-
CPU. memória, FAN, temperatura etc. Roteador. tráfego de entrada/saída, velocidade de /i,,k etc. Ijnix, Linux, Mac OS, Solaris. Windows etc. JBoss, TomCat, Oracle, Apache etc. Qualquer aplicação utilizada pelo cliente.
O Zabbix também faz uma gerência automática de dispositivos, podendo fazer descoberta de baixo nível (LLD), descobrindo, por exemplo, uma nova interface de rede instalada no sistema ou um novo sistema de arquivos. A partir dessa descoberta, poderá tomar uma decisão e executar uma ação.
6.2 Armazenar Os dados coletados pelo Zabbix são armazenados em uma base de dados relacional e não têm limite para armazenamento. Logicamente, o limite é estipulado pelo SGBD utilizado. Esses dados coletados pelo Zabbix que estarão armazenados no SGBD podem
Funções do Zabbix 49 ser reutilizados a qualquer momento por outras aplicações, como por exemplo: um sistema de BI para gerar relatórios gerenciais dos itens históricos, ou seja, dos dados consolidados.
6.3 Gerenciar O Zabbix gerencia esses dados de forma a manter históricos para utilização a longo prazo. O Zabbix também pode ser configurado para fazer a redução de dados de forma a comprimir um determinado tipo de informação e exibi-los em gráficos de acordo com a média de determinado prazo. O período de armazenamento é definido por item, ou seja, o Zabbix não impõe que um conjunto de itens deva ser armazenado no mesmo período de tempo.
6.4 Alertar O Zabbix utiliza vários métodos para notificar os eventos ocorridos, tais como: envio de e-mail, SMS, mensagem via chat etc. Também é possível utilizar a função de reconhecimento de eventos, na qual o Zabbix pode escalonar esses eventos para notificar várias pessoas em um determinado período de tempo. Um exemplo seria executar um comando remoto um minuto após identificar um problema no servidor web. Se após dez minutos o problema persistir, o sistema envia um e-mail e uma mensagem SMS para o administrador da rede. Passados vinte minutos, caso o problema não tenha sido resolvido, o sistema abre um registro no sistema do service desk. Mais trinta minutos, envia e-mail e uma mensagem SMS para o gerente da rede e assim por diante, até chegar ao nível gerencial desejado. Podemos visualizar esse exemplo na figura a seguir:
Comando
1 mèn Falha no sqv+dç.
1
P• ,*sab..c.to
10mk If.m.VSMSpmrêl 2OmI a&nIn4ador âà
1
1
'1
6.5 Visualizar A última função básica que temos é a visualização de alto nível que o Zabbix oferece, onde podemos ver os alertas através de um painel de controle. Também podemos visualizar os dados coletados através de gráficos, mapas ou telas.
7 Monitoramento Básico Agora que estamos familiarizados com o Zabbix, pois já fizemos a instalação, fizemos um overview na interface web, estudamos os conceitos e conhecemos suas principais funções, chegou a hora de fazer o servidor do Zabbix trabalhar, isto é, coletar as informações dos hosts. Mas antes teremos que criar novos hosts através da interface web. A função do Zabbix é coletar as informações e nos informar caso algo de anormal esteja acontecendo. Com isso, para um monitoramento básico começar a funcionar teremos que passar por três etapas, que são: Criar um hos(. .' Criar itens que serão monitorados. Definir o limite de um problema criando uma trigger. Além dessas três etapas básicas, no próximo capítulo veremos como gerenciar seus hosts através de grupos de hosts e utilização de templates, que é uma boa saída para ambientes que possuem um grande parque de equipamentos a serem monitorados. Com o uso de femplates podemos agregar um conjunto de configurações e utilizar um grupo de equipamentos neste mesmo template.
7.1 Criando um host Para criarmos um host devemos acessar a tela configuração de hosts. Passe o cursor do mouse sobre o menu configuração e depois dique em 'Hosts'. Após a página ser carregada, dique no botão 'Criar Host' localizado no canto superior direito da tela. Não vamos nos preocupar com os detalhes nesta tela. Apenas insira os seguintes dados:
Monitoramento Básico 51
r
' Ár
Nome - TesteLivro Grupos - Selecione 'Linux servers', localizado na lista da direita, dicando no botão'«' Endereço
IP
127.0.0.1
Nota: selecionar um grupo é um requisito obrigatório para cadastrar um host. Isso se deve ao fato de o Zabbix gerenciar os seus hosts através de grupos que são asso-
ciados a templates.
A configuração do hos( que acabamos de criar ficará da seguinte maneira:
1
.
L e..,...
•e e,._.
...... .. '._ e
.-'.'
e.roo
*4..—
*4..—
....*
M..*...*.
Observe que iremos monitorar nosso próprio servidor através da interface Ioopback identificada com o endereço 127,0.0. 1. Quando estiver pronto, dique em 'Salvar'. A tela voltará para a configuração de hosts. Selecione 'Linux servers' na caixa suspensa localizada no canto superior direito da sua tela para que o host que acabamos de criar seja listado, conforme a figura a seguir:
*3e.
Observe que o número IP ficou exibido na coluna 'Interface'. Isso significa que a conexão será realizada por IP, pois no campo 'Conectado a' foi selecionado IP Caso
52 Monitoramento de Redes com Zabbix preenchêssemos o campo 'Nome DNS, poderíamos marcar 'Conectado a para ser feita a conexão via DNS. Agora que nós já temos um host cadastrado, vamos explicar um pouco da tela de listagem dos hosts. As palavras que estão sublinhadas são Iinks para acessar algum tipo de configuração. Por exemplo: se desejarmos alterar alguma informação do host que acabamos de cadastrar, basta clicar em 'TesteLivro' para que a tela de cadastro seja carregada. A coluna 'Status' exibe a informação se o hos( está ou não sendo monitorado. Clicando no valor da coluna 'Status' podemos ativar ou desativar o monitoramento deste hosi. Nosso host está criado, mas, apesar de estar com o status 'Monitorado', não cadastramos nenhum item ou associamos algum template a ele. Observe que na coluna 'Disponibilidade' os sinais estão com o aspecto desabilitado. Esses sinais informam como o servidor está se comunicando com o host. Neste nosso caso, ele irá habilitar o primeiro símbolo. Esses sinais, da esquerda para a direita, são: .' Z Conexão via Zabbix Agent SNMP -. Conexão via cliente SNMP .. JMX - Conexão via cliente JMX IPMI - Conexão via IPMI Neste primeiro momento, estudaremos a conexão via Zabbix Agent.
7.2 Criando itens para monitoramento Somente a criação de um host não garante que ele estará sendo monitorado. Para isso, temos que cadastrar os itens deste hos( que desejamos monitorar. Na tela de listagem dos hosts, dique no Iink 'Itens', localizado na linha que identifica o host. Nós criaremos um item que irá monitorar a carga do sistema (load average) do host que criamos anteriormente. Clique no botão 'Criar item', localizado no canto superior direito da tela. As informações que precisamos informar são as seguintes: ' Descrição Carga do Sistema ..' Tipo Agente Zabbix Chave - system.cpu.load ' Tipo de informação - Numérico (fracionário) Nova aplicação CPU
Monitoramento Básico 53
,....
T.p. CbÍ..
t•.
C...4,t...-.
.
•.**
£.
•.
• •
.-..
ud"..
,$I(4•
'.i
N.
N.
..,Iø
•S•.I
1 ..p..4..
...a
..a..
UA..+.,
.,... O
—
.,,.
•..., a
OO øO.'4 O
_, t" U' (P
A•êa 64 4"
.-
a...,
1~ £a.a
Novamente, não vamos nos preocupar com os detalhes desta tela. Explicaremos com mais detalhes o tipo de item, chave, tipo de informação e outras opções mais adiante. Por enquanto nós estamos aprendendo o básico de configuração de um item para monitoramento. Alguns parâmetros são interessantes conhecer logo, pois são responsáveis por inserir dados no banco de dados. São eles: intervalo de atualização, manter histórico e estatística. Dependendo do que se pretende coletar, você deve ajustar um valor para que o banco de dados não fique com muitos registros com o mesmo valor desnecessariamente. Por exemplo: você deseja monitorar a quantidade de páginas impressas por uma determinada impressora. Não há necessidade de você coletar esse tipo de informação a cada trinta segundos. Clique em 'Salvar' para gravar a configuração. Se voltarmos para a tela que lista os hosts, veremos que para o host TesteLivro ii existe um item associado a ele, conforme a figura a seguir.
54 Monitoramento de Redes com Zabbix
Item
c::
•L1J
Iw'
(l 1-31 94(41
inv
o
N W#11
ç #3
£p0MàI.
!,j
51~
,,,,-,,• ~
''O
ri
Agora nós já temos um item coletando informações. A princípio, podemos verificar se está tudo certo acessando o menu 'Monitoramento' e clicando em 'Dados recentes'. Na tela que será carregada selecione o grupo Linux servers e selecione o host TesteLivro nas caixas de seleção localizadas no canto superior à direita da tela. Em seguida, dique no símbolo '+' próximo ao nome CPU. Observe na figura a seguir que o sistema já realizou a coleta dos dados sobre carga de CPU. s
Ss
C ss
ou
11 ib .1.10 D 1)
407
Veja como o Zabbix tem uma gama de recursos. Mal começamos a monitorar e ele já nos dá a opção de visualizarmos os dados de forma gráfica, sem precisar ir para outra janela do sistema. Clicando em 'Gráfico', temos a seguinte figura: Testelivro: Carga do Sistema
(1h)
04 0% 04 00 02 01
—.
0
ooo
oo o o o o
O O
o
o*, ,nO méd mOo • Cwqa do Sistema (todos) 054 002 021 054
7.3 Criando uma trigger Muito bem. Até o momento nós já criamos o host e um item para ser monitorado. Porém, para que o monitoramento seja ágil e o sistema nos informe que um problema aconteceu em determinando momento, é preciso criar uma trigger. No Zabbix, uma
Monitoramento Básico 55 frigger é um registro que contém uma expressão para reconhecer automaticamente um problema de acordo com o item monitorado. Existem diversas maneiras de criarmos triggets. Como ainda não entramos em detalhes de gerenciamento de templafes, que será abordado mais adiante, veremos a princípio como criar uma trigger para um determinado host. No nosso exemplo, criaremos uma trigger para o host Testelivro. Para isso, acesse o menu 'Configuração' e dique em 'Hosts'. Será exibida a listagem dos hosts cadastrados. Caso o host TesteLivro não esteja aparecendo, selecione o grupo Linux servers na caixa de seleção localizada no canto superior direito da tela. Para abrir a tela de configuração de (riggets, dique no link 'Triggers'. A tela a seguir será exibida.
Á
..'.. bit
1
,.,..... ...-.*
CL) T.wi
1t
CUC Çt
(0)
C0
-.
9
1 A~ 3.114N
1b
Esta tela exibe todas as (riggers configuradas para o host TesteLivro. Como não temos nenhuma triggei' cadastrada, dique no botão de comando 'Criar trigger'. As informações que precisamos fornecer são as seguintes: r
Nome -- Carga do Sistema está muito alta Expressão - {TesteLivro:system.cpu. load . last(0)}> 1 .5 Risco - Alta
it»
•LZ4* bit t
(?..wi..-..,...
O,,....&.
(»
liaWS(
i.4l?OI LS
-
D..
%*1 A..,
a~M ~AMEM~M
56 Monitoramento de Redes com Zabbix
Existem duas maneiras de incluirmos uma trigger. A que mostramos antes nós incluímos a expressão apenas digitando o que deverá ser feito. A outra maneira seria clicar no botão 'Adicionar', ao lado do campo 'Expressão'. A seguinte tela será carregada:
bom vM• V*.. -III U&d.IT)
'. (
ente) ~Q# de T .. li
O
O.,I.csi.a,. de tempo ti O
Nesta tela, precisaremos escolher o item que será utilizado na expressão de condição da trigger. Clicando no botão 'Selecionar', teremos a seguinte tela:
Ch~
NSNW 2.LiIt'
,i,,i'
inloemaçêo
T*s cp tid
.*bb'
Iiim..(Q (tO'aOk
Aqui estarão listados os itens relacionados ao host onde estamos criando a trigger. Como só cadastramos o item 'Carga do Sistema', somente este estará listado. Portanto, podemos clicar neste item para selecionarmos. Automaticamente, a tela anterior voltará a ser apresentada e já estará exibindo o item selecionado.
1w. TIiLiviø 1w4 96 .flw.a1.T)
CVI
de S.I.ii é~ ,iJI,d, t
O S.ii4w
O.si.ca,,'.w. 0e wwp. ti O
O teste que nós iremos fazer nesse exemplo consiste em verificar se a carga do sistema estará com valor superior a 1.5. Portanto, precisaremos utilizar uma função que irá verificar se o último valor é maior que 1.5. Para isso, escolheremos a função 'Último (mais recente) valor de T é > N', que nada mais é que a função 'Last'. Podemos verificar a figura a seguir:
Monitoramento Básico 57
t.'.t..'.
,,.,
Ca,s d. I~Ma
•
guaçáo Uramo(m a^ UII.I 4(T) 06,S.c&.M,4.
'
O
wp.
S.gw.d.
" 1,4
Agora poderemos inserir a expressão e salvar a trigger criada. Obs.: nesse caso, verifique se no campo expressão não ficou duplicado e remova uma linha, caso necessário. Para concluirmos, a explicação para a expressão criada ficaria assim: TesteLivro é o host, system.cpu.load é o item e Iast é a função. O número O (zero) significa que o último valor coletado é O (zero); caso seja maior que 1.5 (limite estipulado para a regra), o alarme da trigger será ativado. Agora, no menu 'Monitoramento', dique em 'Visão geral'. Selecione na caixa 'Tipo' a opção 'Triggers'. Observe que o item está com a cor verde. Isso significa que não há problema. Vamos fazer um teste para gerar um alerta para essa trigger. Execute o seguinte comando na máquina que está sendo monitorada. No nosso exemplo, é o próprio servidor:
1 dd if-/dev/zero of=/tmp/teste Você já deve saber o que este comando realiza, não cabe aqui uma explicação detalhada. O objetivo é gerar uma carga no processador da máquina para que o nosso teste possa ser feito. Este é um exemplo muito básico. Logicamente, não se utilizaria uma condição desta para testar uma máquina em um ambiente de produção. Observando a tela de 'Visão geral', podemos ver que, após a execução do comando, a cor de status da trigger ficou avermelhada. Isso significa que um problema ocorreu, ou seja, a carga do sistema ultrapassou o valor 1.5, que é o valor que nós configuramos para a trigger (aumente o valor limite da trigger, caso sua máquina já esteja com Ioad alto). Veja a figura a seguir:
58 Monitoramento de Redes com Zabbix
--
-
-
1
Podemos também visualizar o mesmo problema na tela de dashboard, conforme a figura a seguir: Liii tw-ni Grupo de hosts Desastre
Alta Média
Grupo de hosts Sem Incidentes J_o nvi
Atenção
hitorvnação
Pião classificada
To
Com kick1ens
servem
______..&__._,-----.-,---..--"--.-.-.-----.------ -.-. I1
Nosi
Assunto
T est1 rito
última alteração .
Idade Informação Reconhecido Ações
10 St NU 10034 8
1 d• 1 incld•ntss sendo osibidos
Também é possível visualizarmos os status das triggers através do menu 'Triggers e um histórico de eventos das triggers no menu 'Eventos', ambos no menu 'Monitoramento', o qual veremos com mais detalhes em capítulo posterior.
7.4 Criando uma ação Até aqui, nós passamos por processos de criação de hosts, itens e friggers. Com esses três processos já é possível sabermos quando ocorre algum tipo de problema que desejamos monitorar. Só que apenas isso não é o suficiente para um sistema de gerenciamento de redes. Em um passado não muito distante, alguns profissionais de Tecnologia de Informação (em sua maioria operadores de CPD) trabalhavam de olho em um lindo telão verificando se algum host deu alarme para algum problema. Hoje, graças
Monitoramento Básico 59 ao avanço da tecnologia, é possível fazer com que o alerta seja enviado para um grupo de profissionais através de mensagens instantâneas, e-maus, SMS etc. Nesta etapa, nós aprenderemos a configurar uma ação que tem como propósito disparar um e-mail para um destinatário que irá receber o alerta da triggei' que nós criamos anteriormente. Esse tipo de ação é de grande valia, pois sabemos que o profissional de hoje é polivalente e trabalha realizando várias tarefas, muitas delas ao mesmo tempo. Portanto, não seria ideal ele ficar "monitorando" um sistema de monitoramento. Antes de configurarmos uma ação, precisamos apresentar a configuração da mídia que utilizaremos para enviar o resultado da execução de determinada ação. Para o envio de alertas por e-mail é necessário configurar o servidor que será o responsável por enviar as mensagens para a conta de destino, que também deverá estar cadastrada. Também é possível enviar uma mensagem instantânea para um cliente Jabber (MSN, Google Talk etc.). Jabber é mais conhecido hoje como XMPP (Extensible Messaging and Pesence Protocol). Para enviar mensagens via SMS, faz-se necessário ter um modem GSM conectado ao servidor. Uma alternativa, em minha opinião a melhor, é utilizar um script que envia um e-mail para um servidor da operadora de telefonia e ela enviará o SMS para o seu celular. Isso com certeza é menos custoso para uma empresa do que ter um modem dedicado a isso. É por isso que o tipo de mídia Script foi adicionado ao Zabbix, pois o Linux permite que o utilizemos de acordo com as nossas necessidades, o que o torna muito flexível. Para o nosso exemplo, pressupomos que você já tenha em sua rede um servidor de e-mail configurado e funcionando corretamente. Vá até o menu 'Administração' e dique em 'Tipos de mídias'. Em seguida, dique em 'Email', localizado na coluna 'Descrição'. Entre com os dados de configuração do seu servidor de e-mail, de acordo com a seguinte figura:
•" $MtP
.-
, •ø*-•
Após adicionar as configurações, dique em 'Salvar'. Agora precisamos configurar uma mídia para um usuário. Clique em 'Usuários', no menu 'Administração'. Na tela que surgir, dique em 'Admin', localizado na coluna 'Membros', ou se preferir selecione
60 Monitoramento de Redes com Zabbix
'Usuários' na caixa de seleção localizada ao lado do botão 'Criar Usuário' e em seguida dique em 'Admin', na coluna 'Apelido'. Como não adicionamos nenhum outro usuário no sistema, utilizaremos o exemplo com a conta Admin que vem por padrão no Zabbix. Clique na aba 'Mídia'. Podemos observar que não existe nenhuma mídia definida para o usuário Admin. Cliquemos então no Iink 'Adicionar'. De acordo com a figura a seguir, a única opção que alteraremos é no campo 'Enviar para'. Observe:
Tipo Enviar pata
---
Emzsl
V
[email protected] com
Quando ativo 1-7.00 00-24 00
1 fo classificada lnformaço " Atenção
Usar se risco Média
1 Alta 1 Desastre Status
Ativo
V
Adicionar ü Cancelar
Após configurarmos, dique no botão 'Adicionar'. O campo mídia da tela de cadastro de usuários ficará com uma entrada, conforme a figura a seguir: -
Isso significa dizer que a mídia está ativada e configurada para enviar um e-mail para [email protected] todos os dias da semana, entre 00:00h e 23:59h, para todos os riscos de trigger. Podemos salvar nossas alterações clicando no botão 'Salvar'. Feita a configuração da mídia, poderemos configurar uma ação. Passe o mouse sobre o menu 'Configuração' e dique em 'Ações'. Na tela de ações, selecione 'Triggers' na caixa de seleção localizada no canto superior direito da tela. Se esta opção já estiver
Monitoramento Básico 61 selecionada, dique no botão 'Cnar ação'. As informações que precisamos cadastrar nesta tela são: r
Nome
Carga do Sistema
.' Assunto padrão - {TRIGGER.NAME} em {HOSTNAME} Apos entrar com as informações, dique na aba 'Condições'. Nesta aba, na caixa de seleção 'Nova condição', selecione 'Trigger'. Na caixa de seleção que mostra as condições, deixe a que está selecionada (=). Depois dique no botão 'Selecionar' e escolha a trigger 'Carga do Sistema está muito alta', do !iost TesteLivro. Clique no Jink 'Adicionar'. Observe que já temos duas condições cadastradas, que somente serão usadas se o host não estiver em manutenção e o valor da frigger for incidente. A figura a seguir mostra como ficará nossa aba 'Condições':
E [-i SOU C..44^
ii
I.. .
IS)
V&
ICI
'.54'
4
. .5$
• W(
•--.-,
CIOS.SSI C
-_- 44
S4,s(..aIl.
Esta é a condição que será utilizada para a ação que está sendo configurada. Vamos fazer com que a ação realmente fique útil? Clique na aba 'Ações' e em seguida no Iink 'Nova'. Surgirá um painel Detalhes da operação. Aqui iremos configurar o que deverá ser feito quando determinada ação acontecer. Lembrando, ainda estamos aprendendo o básico. Portanto, não se prenda a detalhes, que mais tarde nós iremos passar um pente fino em tudo que estamos vendo nesta seção. Por enquanto, nosso objetivo aqui é enviar um e-mail para alertar quando algo de errado acontecer com nosso sistema. Em 'Tipo da operação', selecione 'Enviar mensagem'. No campo 'Enviar para usuários', dique no Iink 'Adicionar' e em seguida marque o usuário Admin e dique no botão 'Selecionar'. Automaticamente será exibida a mídia que cadastramos para o usuário 'Admin' anteriormente. Na caixa de seleção 'Enviar apenas para', selecione 'Email'. A tela das configurações da aba 'Ações' deverá ficar conforme a figura a seguir:
62 Monitoramento de Redes com Zabbix
Os...4.. • £c 4.
•
o,
*.4'. 4 I'• I_...
4•44 .$4I$
$••'
O I$I4'4..I
O•SMkp4l4
.".s"'
s .n.ã*i
4.
1.—,...
*0&. A4.
o.--..... ,-.
Toam
A$$$
C4..(•
Por último, clicamos no Iink 'Adicionar', no canto inferior esquerdo, localizado próximo aos botões 'Salvar e 'Cancelar'. Neste último passo adicionamos os detalhes da operação da ação que estamos cadastrando. A aparência da tela se modificará, pois exibirá a operação que acabamos de cadastrar, conforme figura a seguir:
Pronto. Neste ponto, já podemos clicar no botão 'Salvar' para finalizarmos a configuração. Vamos a algumas explicações. Acabamos de configurar uma ação: o envio de um e -mail para o usuário Admin caso ocorra um problema na trigger Carga do Sistema está muito alta. No campo Assunto padrão', temos duas macros padrão do Zabbix: {TRIGGER.NAME} e {HOSTNAME}. Elas substituem o nome do host e o nome da trigger que selecionamos para criar a ação. Portanto, o assunto da mensagem do e-mail que será enviado para o usuário Admin estará informando: Carga do Sistema está muito alta em TesteLivro.
Monitoramento Básico 63 O uso de macros é essencial quando desejarmos usar valores de objetos que alteram seu conteúdo. Quando o Zabbix lê uma configuração que está utilizando macro, ele simplesmente busca o seu real conteúdo no banco de dados para apresentação na interface web. Existem três tipos de macros no Zabbix: , Macro de sistema, cuja sintaxe utilizada é {MACRO}. »' Macro global, cuja sintaxe é {$MACRO}. ) Macro de descoberta, cuja sintaxe é {#MACRO}. Utilizada em regras de autobusca. Podemos conferir uma listagem das macros de sistema no endereço https:llwww. zabbix.com/documentation/2 .O/manual/appendix/macros/supported_by_location. Para cadastrar macros, utiliza-se o menu Administração > Geral. Voltando à explicação da ação que cadastramos, precisamos verificar o seu funcionamento. Acesse o menu 'Administração' e dique em 'Notificações'. Selecione 'Email' na caixa de seleção 'Tipo de mídia'. Deixe esta tela aberta. Agora rodaremos o mesmo comando executado no exemplo anterior para criar uma carga no sistema e forçar um disparo da trigger Carga do Sistema está muito alta:
1 dd if=/dev/zero of=/trnp/teste Quando a trigger for disparada, automaticamente a ação ira detectar o problema através da regra que nós criamos e enviará uma notificação por e-mail ao usuário Admm. Observe a figura a seguir:
o
o
Podemos verificar que o usuário Admin recebeu um e-mail no período de 02/09/2013 a 16109/20 13. Portanto, a ação que acabamos de criar está funcionando plenamente. Agora você já pode personalizar as notificações para serem enviadas por diferentes grupos de usuários e diferentes tipos de mídia. Por exemplo: em uma empresa existem várias equipes, e cada uma é responsável por determinados serviços. Ficaria inviável enviar todas as notificações para todas as equipes. Portanto, é possível configurar o envio de uma notificação para a equipe de DBA caso ocorra um problema com o servidor de banco de dados e uma notificação para a equipe de servidores de aplicação caso ocorra algum problema no JBoss. Caso algum serviço seja de interesse de várias equipes, basta incluirmos outra operação de ação e selecionarmos grupos e/ou usuários diferentes.
64 Monitoramento de Redes com Zabbix Neste momento você pode estar pensando: "poxa, pra que um cara escreve um livro sobre um sistema fácil desse jeito? Em poucas páginas já conseguiu explicar um monitoramento e até configurar o envio de um e-mail quando um alerta for acionado". Daí eu digo: ledo engano, meu caro. Parece simples. Porém, à medida que você for estudando o sistema, verá o quão complexo e espetacular ele é. O que nós veremos daqui para frente é algo que você irá gostar muito, especialmente para quem comprou esta obra com o intuito de aprimorar seus conhecimentos e implementar um monitoramento profissional.
7.5 Monitoramento ativo, passivo ou checagem simples No tópico 7.2 cadastramos um item utilizando o agente passivo do Zabbix, que é o tipo padrão e comumente mais utilizado para a coleta de informações. Também sabemos que a comunicação entre o agente passivo e o servidor é realizada em ambas as direções, ou seja, o servidor consulta uma informação com o agente, e este responde com o valor da informação. Agora veremos mais dois tipos de coleta de dados para fecharmos este capítulo de monitoramento básico. Agente ativo: utilizamos este tipo de monitoramento principalmente quando desejamos monitorar um host que possui políticas de firewall que não podem ser alteradas, ou seja, você não é administrador do fiewall da rede e não tem permissão para alterar as configurações que estão bloqueando a comunicação do Zabbix Agent com o Zabbix Server em modo passivo. Este é o cenário ideal para configurar o agente em modo ativo. Eu sugiro que você utilize este modo quando estiver trabalhando com hosts entre filiais e não tiver um proxy do Zabbix configurado nas filiais, justamente para evitar a perda de dados que pode ocorrer no modo passivo. No modo ativo, apesar de poder ocorrer falha na comunicação, os dados coletados estarão armazenados em buffer, e quando a conexão for restabelecida o agente enviará tudo de uma vez para o Zabbix Server. Devemos tomar alguns cuidados quando formos configurar um host para atuar em modo ativo. Vamos a alguns detalhes do arquivo de configuração do agente: ' O parâmetro Hostname deve ser o mesmo nome que estiver cadastrado para o host na interface web. No nosso exemplo deverá ser TesteLivro. No cadastro do item, o tipo deverá ser alterado para agente Zabbix (ativo). Você pode alterar o intervalo de atualização dos itens em modo ativo através do parâmetro RefreshActiveChecks, respeitando o limite entre 60 e 3600 segundos. 0 padrão é 120.
Monitoramento Básico 65 Após cadastrar um item para ser monitorado no modo ativo, urna forma de verificar se está tudo correto, ou seja, se o agente está enviando as informações para o servidor, é verificar se no Iog do agente foi impresso o seguinte conteúdo:
30892:20130930:150904.573 refresh_ active _checks('127.0.0.1',10051) 30892:20130930:150904.573 sending (( "request": "active checks", "host": "TesteLivro" )] 30892:20130930:150904.573 before read 30892:20130930:150904.574 got [( "response": "success", "data":[))] Um host pode trabalhar com o Zabbix Agent nos dois modos ao mesmo tempo, inclusive podendo enviar os valores coletados para servidores diferentes. Esta configuração pode ser modificada através dos parâmetros Server e ServerActive, para o modo passivo e ativo, respectivamente. Monitoração simples: utilizamos este tipo de monitoramento quando não temos a possibilidade de instalar um Zabbix Agent e também o dispositivo não tem suporte a SNMP. A checagem simples utiliza métodos básicos, tais como: executar ping, verificar se determinada porta de comunicação está aberta etc. Vamos fazer um exemplo onde será verificada a porcentagem de perda de pacotes. Para isso, criaremos um item com as seguintes informações: Nome
Perda de pacotes
Tipo - Monitoração simples Chave - icpmpingloss A partir desse item, podemos configurar uma trigger para verificar, por exemplo, se nos últimos três minutos houve perda de pacotes.
ri] Gerenciamento de Hosts Antes de iniciarmos um projeto de monitoração, precisamos definir o que será monitorado. Esta tarefa não é fácil e demanda tempo para ser finalizada, principalmente porque temos que definir não apenas os hosts a serem monitorados, mas também quais métricas desejamos coletar. O Zabbix nos permite fazer um gerenciamento bastante eficaz, devido ao seu controle de grupos e utilização de templates, que reduz o retrabalho de configuração. Imagine um ambiente com mais de mil hosts em que você precisa fazer uma alteração em um item de monitoramento que é idêntico em todos esses hosts. Já imaginou a perda de tempo para configurar cada um? Com o gerenciamento de hosts através de templates nós reduzimos este tempo e controlamos nossos hos(s de maneira padronizada, criando templates separados para serviços e sistemas. Por exemplo: podemos criar templates para Linux, Apache, PostgreSQL etc. Você ainda está com dúvidas de usar ou não template? Veremos então ao ongo do capítulo se você não irá rever os seus conceitos. Basicamente, nós utilizamos três submenus do menu 'Configuração' para gerenciar os hosts que serão monitorados. São eles: Grupo dehosts r
'
Templates Hosts
Gerenciamento de Hosts 67
8.1 Grupos de hosts Assim que você entrar na página de configuração 'Grupos de hosts', através do menu 'Configuração', verá que por padrão o Zabbix traz alguns grupos. Se você está seguindo os exemplos deste livro desde o início, verá que o hosf TesteLivro criado anteriormente encontra-se no grupo Linux servers, conforme foi selecionado no momento de sua criação.
c*v,.s ds M .s4 4
1"
1I*r*ø)
0i
?lVi
WZ.
P^ :vs: em ftat 1KUL :* Mj QI L•tj.E1 ÇLø12t
i2ttr)Q i~ Q 11 '
-1 Vt W
Qwu.
11*Sft .'!.!
i'
Li91
Observando a figura anterior, podemos verificar na coluna 'Membros' que o hos( TesteLivro foi associado ao grupo Linux Servers. Observe também que temos três tipos de coloração para os Iinks desta coluna (no livro você não distinguirá as cores). Azul quer dizer que se trata de um hos( que está com seu monitoramento ativado. Vermelho quer dizer que se trata de um host com seu monitoramento desativado. Por último, cinza quer dizer que se trata de um template, apenas para distinguir que não é um host. A segunda coluna indica duas informações importantes: a quantidade de templates e flosts que fazem parte daquele grupo. Podemos dizer que o grupo de hosts tem a finalidade de separar um conjunto de hosts por departamentos de uma empresa. Veremos mais adiante, quando entrarmos no assunto de gerenciamerito de usuários, a importância de criar grupos de hosts. Também não podemos confundir grupos de hosts com templates. No conceito do Zabbix, podemos distinguir esses dois termos da seguinte maneira: Grupos Associa hosts e/ou templates a determinados grupos. Templates
Define um conjunto de configurações aplicadas a vários hosts.
68 Monitoramento de Redes com Zabbix É importante você saber a diferença entre os dois conceitos para gerenciar grupos e templates de forma correta. Seguindo, cadastraremos um grupo chamado Monitoramento Livro. Clique no botão 'Criar Grupo de host' e após colocar o nome do grupo dique em 'Salvar'. Observe que neste momento não incluímos nenhum host neste grupo. ki
T
G~@* de 4. ho
,
1
ø
zeei
jj )
L&!*$. LÊaIt
u.,jj LtaI jWt.tSj. L
s3&.*.1 aua3.
lO
Observe na figura anterior que nosso grupo foi criado com sucesso. Agora podemos incluir o host TesteLivro nesse grupo criado. Vou aproveitar esta mesma tela para explicar os comandos disponíveis para gerenciar os grupos de hosts. São eles: Ativar selecionados Caso algum grupo esteja selecionado, ao escolher este comando e clicar no botão 'Ir (#)', todos os hosts pertencentes ao grupo selecionado serão ativados para monitoramento. Desativar selecionados - Caso algum grupo esteja selecionado, ao escolher este comando e clicar no botão 'Ir (#)', todos os hosts pertencentes ao grupo selecionado terão seu monitoramento desativado. ., Remover selecionados Remove o grupo selecionado. Esta opção só é executada com sucesso caso o grupo não possua hosts associados.
8.2 Templates Assim como no Grupo de hosts, o Zabbix por padrão já vem com um conjunto de templates predefinidos. No menu 'Configuração' dique em 'Templates' e será apresentada a tela a seguir:
Gerenciamento de Hosts 69
--
IsI
G.4. 4•18
•
hst
Tf1 Gi61
UZ) La UZ'
&*&&É~ fi~UníU
.
Ml Am,I1( Ai,..cUôo
P LtI 0)
*
014..
&~foi
afiMaLiffi411 &U) I*i&sU) ~0 Ia(U ~M
"*&4
àiLMi&M~13 ~M iQ) 2~ IEOO) 6&L*Ll lO)
yg
1.•..' ~~M
01 Pup
blt) 1.al241 9~141 1jJ(1) ~M 1171 L~0B1
IJfl 11h
IIOI
LEMân~
10
Lt011w..QLWILQ.1.L
jjit
iz lii
1l* kalOI 1I011 1h
twi Ub
i
jlmloi o o e
kkMa
1h
r:' Lu
IU *MUNIU)
Laa m
'!U1
uM
*.oOhs LlM) 9~91 1ilW ~113 1t.1 bsL1
h1
U)
*
AM
1h2D.1.I))
UMMEL212~ &2~0) amem§ 1~61 ~u L0l uZ
A figura anterior exibe a tela de configuração de templates com os comandos disponíveis. Observe que não estão sendo exibidos todos os templates, pois optei por ocultar algumas linhas para exibir os comandos da tela. Vamos entender cada comando: r
Exportar selecionados - Este comando faz com que o Zabbix gere um arquivo em formato XML do template que estiver selecionado. Útil para gravar as informações configuradas, caso seja necessário recuperar um backup e importar em outros servidores. Remover selecionados Este comando remove o template selecionado. Porém, os hosts associados ao template herdam todos os elementos criados
pelo template. r
Remover selecionado e elementos associados Este comando, além de remover o template, também remove os elementos associados (itens, aplicações etc.) dos hosts que estavam associados ao template selecionado.
Além dos comandos disponíveis na tela de configuração de templates, também temos dois botões de comandos no canto superior direito da tela: Criar template e Importar.
70 Monitoramento de Redes com Zabbix Vamos verificar o comando 'Importar', que é algo simples de se fazer. Ele tem a finalidade de importar uma configuração já feita e gravada. Por exemplo: você deseja monitorar os recursos utilizados pelo servidor Apache, mas não tem ideia de que itens monitorar. Então, você achou um artigo na internet que disponibiliza um template para monitoramento do Apache, isto é, o arquivo XML.
1
1
1
1
4'
1
4'
4'
••p..
1
4'
4'
1
4'
4'
Clicando no botão 'Importar', veremos a tela anterior. Observe que temos a possibilidade de selecionar o que você deseja importar. Digamos que temos o arquivo template_apache.xml. Selecionaremos este arquivo clicando no botão 'Escolher arquivo'. Depois, você pode selecionar o que deseja importar deste tem plate verificando a primeira coluna à esquerda no painel 'Regras'. A segunda coluna ('Atualizar existentes') atualiza as regras já existentes. Isso quer dizer que, se você já possui um elemento com o mesmo nome, ele irá sobrepor as configurações deste elemento. Já a terceira coluna ('Adicionar faltando') irá importar todos os elementos para um template que estiver em falta, ou seja, não esteja cadastrado. A princípio é um pouco confuso. Tome muito cuidado quando utilizar este recurso do Zabbix, ainda mais quando não for para recuperar informações perdidas. Uma impor tação pode dar erro quando temos hosts associados a determinados templates, o que pode deixar de atualizar algum elemento que você deseja. Após selecionar as opções, o próximo passo é clicar no botão 'Importar'. Por último, temos o botão de comando 'Criar Template'. Logicamente, iremos utilizar esta tela para o restante das explicações. Clique nele.
Gerenciamento de Hosts 71 IL, kjFff1:&1.. 11!L
N1. W Nss II Ø'ØM k
1IT
Dffl
r~ bem
Conforme a figura anterior, dê o nome ao template de Template Livro. Eu particularmente gosto de deixar todos os templates criados no grupo chamado Template, que já vem por padrão no Zabbix (eu criei este hábito para não bagunçar grupos e templa(es). Para crar um novo grupo para esse template, basta apenas informar seu nome no campo Novo Grupo ou selecionar outro grupo existente. Antes de salvarmos nosso novo template, vamos explicar o restante desta tela. No painel do campo HostsTemplates ficarão listados todos os hos(s que estão associados a este template. Nós já temos um host chamado TesteLivro que podemos associar a este template. Na caixa de seleção Outro 1 Grupo, verá que o host TesteLivro irá aparecer na listagem exibida na figura a seguir. Se fôssemos associar ele ao (emplate, bastaria selecioná-lo e clicar no botão < <'. Podemos clicar em 'Salvar' para gravarmos nosso novo temp/ate. Obs.: também é possível associarmos um template a um host no momento do cadastro, bastando para isso selecionar a aba 'Template' e escolher o template desejado.
Nosso (emplate já está sendo exibido com os demais. Observe a figura a seguir e compare com os outros templates. Veja que não temos nenhum elemento (aplicações,
triggers, itens etc.) associado a Tem plate Livro.
72 Monitoramento de Redes com Zabbix
.jii1UI T.
em IV) L*a 4 I5)
ÜL.*N)
3(D
10)
UMMELGIALLI ffix
~AJAM
i1lug1Iuj.i
ML.M.4V0 iaI)I
Ta
01 L.
Ot XaI*1 0)
ÁáStÉ L4 91
I3I0)
•
.IØ)
MR) IØ) *i:
aia
M**I
g44)
Law 101 2~ IO
u0k 3=1391 1.utalz1)
.,-,
aK L.I1I M~M
LM'
............
LtL101
A partir desse momento podemos criar itens e triggeis. Dica: monitorar é fácil. Complicado mesmo é definir o que queremos monitorar. É por esse motivo que nós estamos seguindo passo a passo o que realmente deve ser colocado em prática. Isso não é receita de bolo. Estou utilizando uma lógica de acor do com a experiência que fui adquirindo. Isso não quer dizer que você deva seguir este roteiro. Cada um tem uma maneira de colocar em prática aquilo que aprendeu.
8.3 Hosts No capítulo 7 nós aprendemos a criar um host para ser monitorado no Zabbix, porém utilizamos apenas a primeira aba da tela de cadastro. Observe na figura a seguir que temos mais opções:
-
--
)
!~
(U)
W~(Cr)
'* a
ati
O)
7T7
Para um host simples, como por exemplo um computador com sistema operacional GNU/Linux, basicamente utilizamos apenas as abas Host e Templates A aba Templates não é obrigatória, pois, como vimos no tópico 8.2, também podemos associar os hos(s através do cadastro de tem plates. Como podemos ver na figura a seguir, nosso host TesteLivro já está associado ao template Template Livro:
---
• ""•- ' --.- 1
Aqui temos a opção de associar novos templates clicando no Iink 'Adicionar'. Outros dois comandos para templates associados ao host são 'Desassociar' e 'Desassociar e limpar'. 0 primeiro comando apenas remove a associação que o host tem
Gerenciamento de Hosts 73 com o template. Já o segundo, além de remover a associação, limpa todos os dados coletados dos itens listados no template relacionados ao host. Essa opção é importante quando você não for mais utilizar esses dados, pois elimina todos os registros no banco de dados. A aba IPMI será explicada posteriormente em tópicos especiais. A aba Macros nós utilizamos para cadastrar as macros que serão utilizadas apenas para o host que está sendo cadastrado/alterado. A aba Inventário do host é utilizada para cadastrarmos as informações de hardware e software do host monitorado. Por padrão essa opção vem desabilitada, podendo ser utilizada manualmente ou de forma automática pelo sistema. Para finalizar a tela de cadastro de host, temos disponível na aba Host a opção de selecionarmos por qual interface será realizado o monitoramento do host. Vejamos a figura a seguir:
DDtJ
- -.- .-'s .a(0)
li
TC2(1)
Çg(D)
a
1'*•'
1•
p.4
o,o
A4
U*$4p7 t""v1
Em versões anteriores do Zabbix, não era possível utilizar mais de uma interface ao mesmo tempo. Já a partir do lançamento da versão 2, existe essa possibilidade. Portanto, é possível termos um único host usando, por exemplo, um monitoramento via Zabbix Agent e com interface 1PM 1.
74 Monitoramento de Redes com Zabbix
Ainda nessa tela, podemos observar o campo Monitorado por proxy. Aqui podemos selecionar qual o proxy responsável por coletar as informações monitoradas nesse host, caso essa configuração esteja sendo utilizada. Ainda falando sobre gerenciamento de hosts, temos disponíveis mais configurações, conforme a seguir: r
Aplicações
p.
Itens
.'
Triggers Gráficos
Essas configurações são acessadas a partir do menu Configuração > Host, onde estarão listados todos os hosts cadastrados. Essas mesmas opções também temos disponíveis no menu Configuração > Templates. Na figura a seguir, aparecem o host TesteLívro e as opções que temos para configuração.
Ns
•
AØ.4ie
h~ 114~
G.éat.% •
*I
........•_
SII_
for~
•.•
•
1U
-
Observe que temos entre parênteses de cada opção a quantidade de registros cadastrados para cada opção. Ao clicarmos no link de cada opção nas colunas, acessamos uma tela para cadastrarmos ou alterarmos esses registros. Por exemplo: nosso host já está cadastrado; se quisermos fazer alterações, basta clicar no Iink do seu nome para acessar a tela de cadastro. Abaixo da listagem dos hosts, temos disponível uma caixa de seleção para os comandos que podemos executar na configuração de hosts. Vamos entender cada comando: Exportar selecionados - Este comando faz com que o Zabbix gere um arquivo em formato XML do template que estiver selecionado. Útil para gravar as informações configuradas, caso seja necessário recuperar um backup e importar de outros servidores. - Atualização em massa - Este comando nos dá a opção de atualizarmos informações que utilizamos para mais de um host. Por exemplo: você criou um novo templa(e e deseja associar a um grupo de hos(s. Para você não perder
Gerenciamento de Hosts 75 tempo de acessar cada host e associar esse template, utilizamos a atualização em massa para fazer esse trabalho em todos os hosts. Ativar selecionadas - Este comando ativa o monitoramento de um conjunto de hosts que estiver selecionado. Também é possível utilizar este recurso através do comando Atualização em massa. Desativar selecionados - Este comando desativa o monitoramento de um conjunto de hosts que estiver selecionado. Também é possível utilizar este recurso através do comando Atualização em massa. Remover selecionados Este comando remove um conjunto de hosts que estiver selecionado. Veremos a seguir como realizar o cadastro e o gerenciamento das opções que temos para configuração de hosts. Itens e triggers nós já vimos em capítulos anteriores. Porém, veremos outros detalhes ainda não abordados.
8.4 Aplicações As aplicações são maneiras de definirmos os grupos de itens. Nós criamos esses grupos de aplicações para que o monitoramento seja facilitado quando visualizamos os dados coletados. Vamos acessar o menu Monitoramento > Dados recentes. Observe a figura a seguir:
,.
coa
coa
Podemos notar que o único item que temos cadastrado está na categoria CPU, isso porque no momento em que cadastramos o item, nós incluímos uma nova aplicação para ele. Vamos cadastrar uma aplicação. Voltando para o menu Configuração > Hosts, dique no link Aplicação da linha do nosso host TesteLivro. Na tela que abrir, dique no botão 'Criar aplicação'. A tela de cadastro de aplicação é exibida conforme a figura a seguir:
76 Monitoramento de Redes com Zabbix
UMIÊ
1.-,.
Apesar de ser possível criarmos uma aplicação para o nosso host, nós iremos fazer o cadastro da aplicação para o nosso template Template Livro, que criamos anteriormente. Para isso, clicamos no botão 'Selecionar'. Na tela que surgir, selecione o grupo 'Templates' na caixa de seleção no canto superior direito e dique em Template Livro. Observe que no campo Host, em vez de aparecer TesteLivro, vai aparecer Template Livro. Podemos agora digitar o nome da aplicação. Vamos cadastrar uma aplicação com o nome de Rede. Clique em 'Salvar'. A aplicação não será exibida, pois estamos configurando um host. Para visualizarmos a aplicação criada para o templa(e, precisamos acessar o menu Configuração > Templates e, na linha do templafe Template Livro, clicar no Iink 'Aplicações'. A figura a seguir ilustra como a nova aplicação deverá ser exibida:
1 •s 1 1
üi tem
Vamos cadastrar um item e associá-lo a essa nova aplicação criada.
8.5 Itens Para cadastrarmos um item, é necessário que terhamos um host ou um templa(e criado. Nós já temos um item criado para o host TesteLivro. Agora cadastraremos um item para o (emplate Template Livro. Vamos acessar o menu Configuração > Templates e clicar no Iink 'Itens' do template Template Livro. O item que nós criaremos irá coletar o tráfego de entrada de dados na interface ethO. Para isso, vamos inserir as seguintes informações: Descrição Tráfego de entrada na interface ethO Tipo
Agente Zabbix
Gerenciamento de Hosts 77 Chave - net.if.inFethOl Tipo de informação Numérico (fracionário) Unidades
Rs
Intervalo atualização (em seg)
10
Armazenar valor Deita (alterações/seg) Aplicações - Selecionar Rede Ao salvarmos a inclusão deste novo item, podemos voltar ao menu Monitoramento > Dados recentes e verificar que já temos outra categoria de aplicação sendo exibida. Esta visão de dados recentes é interessante quando queremos verificar a saúde de um sistema separando por categorias, em vez de visualizarmos os dados através do submenu Visão geral, onde os dados são listados em ordem alfabética. O campo unidades deve ser usado apenas quando desejarmos mensurar taxas de transferências de dispositivos de bloco e de rede, além de usarmos para unidades de data e hora. As unidades que podemos usar 5O: B- Byte Bps - Bytes por segundo unixtime - Traduzido para "yyyy.mm .dd hh:mm:ss" uptime Traduzido para "hh:mm:ss" ou
'4
N days, hh:mm:ss"
s - Traduzido para "yyy mmm ddd hhh mmm sss ms" Para os tipos B e Bps, os valores são automaticamente multiplicados e, quando necessário, exibem o valor de forma correta. Por exemplo: 1024 Bps será exibido 1 KBps. Não é preciso alterar o tipo, pois o Zabbix já realiza essa tarefa. Para o Zabbix traduzir corretamente, os tipos de data e hora devem ser recebidos em segundos, com exceção do tipo unixtime, que deve ser recebido em texto puro. Obs.: é possível utilizar outras unidades, como por exemplo: C ou F (para temperaturas), % (porcentagem) etc., desde que o item retorne valor adequado; caso contrário, teremos uma informação falsa, ou seja, que não condiz com o resultado desejado. Outro campo que merece destaque na tela do cadastro de item é o Preenche o campo inventário do host, principalmente se no cadastro do host você for usar inventário automático.
78 Monitoramento de Redes com Zabbix Se você achar interessante coletar algum item em horários diferentes, isso deve ser especificado usando a seguinte sintaxe no campo Novo intervalo flexível: d,hh:mm-hh:mm Onde: 4v
d = dia da semana 0 segunda-feira, 2 terça-feira...., 7 - domingo)
) hh = horas (00-24) - mm = minutos (00-59) Exemplo: 1-5,08:00-17:00 - ou seja, de segunda e sexta-feira, das 08:00h às 17:OOh. Também podemos usar mais de um horário flexível. Para isso, devemos separar os horários com ; (ponto-e-vírgula). O campo Mostrar valor é útil para exibição de valores em vez de números inteiros. Existem alguns mapeamentos definidos e que são listados na caixa de seleção deste campo. Porém, é possível você personalizar seus próprios valores clicando no !ink 'Mostrar mapeamento de valores', onde será possível cadastrar e/ou alterar mapeamento. Dentre os itens mais importantes neste cadastro, devemos dar uma atenção especial ao campo Manter histórico (em dias), onde informamos o número de dias para manter um histórico detalhado no banco de dados do Zabbix. Neste campo você deve tomar cuidado para seu banco de dados não crescer em ritmo acelerado, pois em um ambiente de produção teremos muitos itens sendo coletados. Portanto, em vez de manter dados históricos por muito tempo, é recomendável que se use o campo Manter estatísticas (em dias), onde o Zabbix mantém um valor agregado. Esses dados estatísticos não podem ser utilizados por itens dos tipos: caractere, Iog e texto. Outra explicação que não pode passar despercebida é sobre o campo Chave. Caso você não encontre uma chave que o Zabbix tem por padrão, podemos criar unia chave para atender à demanda desejada, que pode ser customizada com o uso de UserParameter, que será descnto em capítulo posterior. Após o item ser cadastrado, se formos visualizar os itens do host TesteLivro, notaremos que o host tem dois itens. Vejamos a figura a seguir:
Gerenciamento de Hosts 79
N.s
L
O
T.tv
ifl
(?)
ai i.a
•1*" .
.
(
a:
.,....:...
~leu~
aai..
0.9.
..
O item Tráfego de entrada na interface ethO foi herdado da Template Livro, e este item fica com o Iink de identificação ao qual o template pertence. Caso não tenha Iink ao lado do nome do item, significa que o item está criado apenas para o host. Podemos também observar na coluna Triggers que o item relacionado ao template não tem trigger cadastrada, pois a coluna está sem valor.
8.6 Triggers Assim como o cadastro de um item depende de um host ou de um (empla(e criado, ao cadastrarmos uma trigger também temos a dependência dessa relação. O cadastro de trigger não tem muito mistério, e nós já vimos no capítulo "Monitoramento Básico". Portanto, criaremos uma (rigger apenas para demonstrar como funciona a dependência das triggers. Para fazer essa trigger funcionar sem a necessidade de a estimularmos, informe os seguintes dados durante o cadastro: )' Nome - Taxa de transferência muito baixa na interface ethO > Expressão - {Template Livro:net.if.iníeth0]. last(0)} < 1024000000 Risco Informação Vã até o monitoramento de visão geral e verifique se a sua trigger já está alarmando. Deverá ficar na cor azul ciano.
V**O
( ..ti l4•.
9.111
l*..a i.a,'.44.. -
ISSI
SSS• .10
80 Monitoramento de Redes com Zabbix O próximo passo é criarmos uma dependência para a trigger do host TesteLivro. dique na trigger Carga do Sistema está muito alta e na tela de configuração da trigger, dique na aba 'Dependências'. Veremos a seguinte tela: -
------
-
Clique no Iink 'Adicionar' e selecione a trigger Taxa de transferência muito baixa na interface ethO. Após isso, podemos salvar e visualizar o monitoramento de visão geral. Observe que a trigger Carga do Sistema está muito alta não terá mais seu status em exibição, pois depende que a trigger Taxa de transferência muito baixa na interface ethO esteja com status normal. Vejamos a figura a seguir:
vIM fofa§ 4*. .
-
•...•.
4*
• Yqs
4.4-*.*
1
Quando tivermos trigges que possuem dependência de outras, visualizaremos uma seta azul voltada para cima junto ao status da trigge. Assim que a trigger Taxa de transferência muito baixa na interface ethO voltar ao normal, a trigget Carga do Sistema está muito alta voltará a ser exibida, conforme a figura a seguir:
1
?*.. Ii I*u*ø.a
i 1*a• *aø*(.
Podemos observar também que o status da trigger Carga do Sistema está muito alta apareceu com uma seta na cor azul, porém voltada para baixo. Isso significa que ela depende de outra trigger estar com seu status normal - neste caso, depende da trigger Taxa de transferência muito baixa na interface ethO.
Gerenciamento de Hosts 81 Aqui nós aprendemos a criar dependências entre as triggers. O exemplo que fizemos foi apenas para demonstrar como funcionam na prática as dependências de triggers e não precisa ser levado em consideração, pois não faz nenhum sentido você não monitorar a carga do sistema se a taxa de transferência da placa de rede estiver baixa. Os comandos utilizados nas configurações de triggers e itens são praticamente os mesmos utilizados nas configurações de host e (empla(e, com exceção do comando Copiar selecionados para onde temos a possibilidade de copiarmos os itens e as triggers para outros hosts ou templates. ...,
8.7 Gráficos A utilização de gráficos no Zabbix auxilia administradores no planejamento da capacidade e no dimensionamento de recursos computacionais. Devemos adotar alguns critérios na criação dos gráficos para que os dados coletados possam ser visualizados da melhor forma possível. Esses dados têm o propósito de ajudar na análise, e não complicar a vida do administrador. Vejamos os tipos de gráficos disponíveis no Zabbix. 8.7.1 Normal Usado para a maioria dos casos. Neste tipo de gráfico, as informações ficam uma na frente da outra, com todos os itens partindo da base. Exemplo: utilização de rede. Também é possível selecionar o estilo, tais como: linha, região preenchida, linha grossa, pontilhado, linha tracejada e área gradiente. Vamos criar um gráfico com o item que criamos anteriormente. Na tela de configurações de templates, dique no Iink 'Gráficos' do template Template Livro. Clique no botão 'Criar gráfico' e informe os seguintes dados: Nome Taxa de transferência da interface ethO (input) Tipo do gráfico Normal ,
Itens Selecione o item Tráfego de entrada na interface ethO
Ainda nesta tela, podemos selecionar ou desmarcar algumas opções, tais como: mostrar legenda, triggers, deixar um valor mínimo e máximo dos eixos X e Y, entre outras opções.
82 Monitoramento de Redes com Zabbix Para visualizarmos o gráfico criado, acessamos o menu Monitoramento > Gráficos e selecionamos o host e o gráfico que acabamos de criar. Nosso gráfico será apresentado conforme a seguinte tela: TesteLsvro: Taxa de trans(erncsa da interlace ethO (input) (1h) 114 MSpI 34 7$) 73 SSSI4K$pt, )3O3KIp
..
143 114$43
.
1
l'
1
n m+d m3x •Te$egod.en.da4$v4ief$c..O.0 Imédi 3446 KBp% 1 I7KBPI 4084 k8p tlIM$ps
8.7.2 Pilha (Stacked) Este tipo de gráfico é usado para exibir monitoramento de CPU e memória, devido à quantidade de informação apresentada. Neste tipo de gráfico, as informações ficam uma em cima da outra, o segundo item começa onde termina o primeiro e assim sucessivamente. Vejamos um exemplo conforme a figura a seguir: Zabbix server Cpu Io.d (1h) 03 023
0 13
1
SI
1
1 •
0
$*
a*ee 2 9 2 2 2 2 2 9 9 9 2 9 2 2 9
• Proc~ Ioad (1 ffim avieagi pie coei) linédI •ProcsuieIo4d(Smr ~no p.ecoro) (médi •PIocissoeb.d(lSvnr.v.4$9.p.ecoto) (médi 0 lhggie Oc.uoe Ioad n tao h4. ao ?abbn S
~
mêd mM 03 O 005 03 013 001 004 013 006 002 003 006 (» 51
9 9 9 9
a*ae
9 9 9 9 9 9 o
Gerenciamento de Hosts 83 8.7.3 Torta (Pie) Zabbsx
server: Espaço
em drso na partsço / (1h) •v~ IflNG$It00%) •V•* 155 44 GI 04 IS%l
• 14551. ww TW ** *.ce ou i I.vgl •l.bSuwr.w F ,e4d.* mace r,,l t.il
Usamos este tipo de gráfico quando o objetivo é exibir o último valor do item coletado, ou seja, quando utilizamos a função Iast da trigger. 8.7.4 Explodido (Exp/oded) Utilizado com as mesmas características do gráfico do tipo torta, com a diferença de apresentar os pedaços da torta separadamente. Zabbtx
server
Espaço
em disco na partço / (1h) Uv.o
•
175flGI(100%
Vaser 16544 c.e tw lss
1,hÍ T~ *4,
• Z555.* 1I•1lV
Free 51*
14a(* 4',
Algumas dicas que devemos seguir na criação de gráficos: .. Evitar usar o estilo área gradiente, pois tem um consumo alto de memória devido aos objetos gráficos que são desenhados. Sempre utilizar a função Iast nos gráficos do tipo torta e explodido. Nos gráficos relacionados a porcentagem, os valores min/max do eixo Y devem ser fixos de O a 100. Nos gráficos relacionados a itens de CPU, os valores min/max do eixo Y devem ser fixos de 0 a 100.
84 Monitoramento de Redes com Zabbix
8.8 Autobusca (discovery) Outro detalhe muito importante que temos para gerenciar nossos hosts e tempiates é a utilização do mecanismo de autobusca. Esse mecanismo faz a descoberta de parâmetros automaticamente para o nosso monitoramento através de protótipos que nós podemos definir para itens, triggers e gráficos. O Zabbix já tem por padrão algumas regras para descobrimento. Essas regras estão cadastradas para o host Zabbix Server e podem ser visualizadas clicando no link Autobusca' do referido host na tela de configuração de hosts. As chaves criadas para este mecanismo fazem uso constante de macros. Devido à flexibilidade do Zabbix, você pode personalizar as regras de descobrimento para qualquer tipo de parâmetro, utilizando inclusive scripts externos para fazer esse trabalho. A seguir podemos visualizar a figura que mostra uma lista de itens descobertos pelo mecanismo:
..M
•
(•4S
U3
-
11)
W*()
.% ('S)
~UM)
•-
mesa
UN
V...
1.
.6
10 j
6i4 4" somo~
.710.4 8. LH. ..
1L8fèt.LMLUJ
i*..u2è&Lt
IL7
Y.
MCW71
10
8
8.81 l8...l
."*10W lS1.ls4
411 s8.8.(.c..10.tp81.
10
1100
lo
410
Observe que os itens descobertos pelo mecanismo de autobusca ficam com a palavra discovery antes de seu nome.
8.9 Período de manutenção No que tange ao gerenciamento de hosts, é importante informar que o Zabbix oferece a possibilidade de criarmos períodos de manutenção. Esse tipo de configuração é importante quando formos fazer alguma intervenção em um conjunto de hosts e não precisarmos coletar os dados para não impactar no SLA (Service Levei Agreement acordo de nível de serviço). Imagine que você tenha em sua empresa uma janela de
Gerenciamento de Hosts 85 quatro horas por mês para realizar atualização de segurança e vulnerabilidades em servidores Windows. Na maioria das vezes, ao receber atualizações, esses servidores precisam ser reiniciados. Com o uso do período de manutenção, você poderá configurar o dia e horário em que essa intervenção será realizada, e o Zabbix Server não irá realizar a coleta dos dados deste servidor, pois durante o período configurado os hosts poderão ficar inoperantes, não prejudicando o SLA acordado. Para cadastrarmos um período de manutenção, devemos acessar o menu Configuração > Manutenção. Podemos configurar vários parâmetros, tais como: IM
Com ou sem coleta de dados
Ar
Apenas uma vez, diário, semanal ou mensal
. Data do período de manutenção Duração em dias, horas e/ou minutos Selecionar hosts e grupos de hosts O cadastro de período de manutenção é bem intuitivo e não entraremos em detalhes. Fica como exercício criar um período de manutenção para um determinado host que dure apenas cinco minutos, conforme demonstrado na figura a seguir:
C.
sy
eIl(.Í.
1
O período criado iniciará às 15:20h e ficará ativo por cinco minutos em coleta de dados. Quando criamos um período de manutenção, ao listarmos os hosts, ele estará com o status Em manutenção. Observe a figura a seguir: -
.
Ns
,. e. 1
é^ Tr~ Gie..i M~é b.e.,l.
1
. e... ...-..
86 Monitoramento de Redes com Zabbix
Como cadastramos este período sem a coleta de dados, devemos verificar se realmente não foram coletados dados deste host. Para isso, acessamos o menu Monitoramento > Gráficos. Observe na figura a seguir que tivemos dois períodos sem coleta de dados, pois foram os horários em que eu realizei o teste do período de manutenção, incluindo este exemplo, que durou cinco minutos, entre 15:20h e 15:25h. Wiodows 7. Cpu Ioad (1h) • IS • 14 o ot oca 004 O 04
o oo 32333333333323
no mO md ,,z O • oc.os Io.d (1 nan ,wgi) O 002 O 1S t'ndl • oc,sw Ioad (1 aw9o) (mOdi o O 007 00 ho*MIS tmédl 00011 00010 002 001 0 tnqqco P0oc.0 $oad 'o 00* toi o'o *04doe7 0> 51
O O O O $0 O 00
*
Gerenciamento de Usuários e Permissões O Zabbix, por ser um sistema de gerenciamento de rede, também se preocupa com o controle de acesso ao sistema. Esse controle permite uma melhor distribuição de ações que um usuário ou um grupo pode ou não ter. Por exemplo: podemos separar os usuários que são administradores do Zabbix, operadores de rede, gerente de redes etc. Cada grupo de usuário terá delegações e atribuições diferentes, o que tornará o ambiente do sistema mais seguro, pois as informações do sistema serão direcionadas. Portanto, iremos aprender neste tópico como cadastrar grupos e usuários e verificar como a interface web fica apresentada para vários tipos de usuários. Por padrão, o Zabbix já vem com dois usuários cadastrados: Admin e guest. O usuário Admin é o que estamos usando desde o início e não alteraremos nada dessa conta. Primeiramente, nós iremos cadastrar um novo grupo. Para isso, acesse o menu Administração > Usuários. Será apresentada a seguinte tela: Gau
U
• 1CP1ø.d..I
li
-
LSLJ4
a 4,âaE 0' -
01
Ww
Para cadastrarmos um novo grupo, dique no botão 'Criar grupo de usuários'. Na tela de cadastro informe apenas o nome do novo grupo como Grupo Livro. Ainda na tela
88 Monitoramento de Redes com Zabbix de cadastro, vamos configurar as permissões que este grupo terá. Temos três tipos de permissões: Leitura-escrita; Somente leitura e Nega. Neste exemplo iremos configurar a permissão somente leitura para o grupo Monitoramento Livro. Para isso, dique no botão 'Adicionar' e selecione o grupo descrito. Salve a configuração. Com o grupo criado, dique no link 'Usuários' na linha referente ao grupo criado. Vamos cadastrar um usuário com os seguintes dados: Apelido Usuario PI
Nome Usuario Sobrenome - do Livro Senha - 123456 Grupos - Grupo Livro Língua - PT - BR
Automaticamente este usuário irá herdar as permissões do Grupo Livro. Portanto, ele apenas terá acesso de leitura ao host TesteLivro, não podendo fazer qualquer tipo de alteração no cadastro do host. Com o usuário criado, vamos testar a autenticação e verificar o que ele tem direito de acessar. Assim que o login é realizado, já podemos observar alguns detalhes, conforme a seguinte tela: 1
hI O,-..I.
*I
Mjd..
&WM
~~0
-
1
S
t.,,'
0,41
*
MSÇ 01.101 *441%
...... _ 1
,-:-w-- ---------------------------01 P*,I
Ok
r.
TTT
Gerenciamento de Usuários e Permissões 89 Note que o menu principal está limitado a apenas três opções: Monitoramento, Inventário e Relatórios. O sistema está exibindo apenas o grupo de hosts Monitoramento Livre e, em consequência, apenas o host TesteLivro, único host que faz parte deste grupo. Se você desejar que seus usuários alterem alguma configuração em algum host ou template, por exemplo, você deverá alterar o tipo de usuário que ele é. Na tela de cadastro de usuário, na aba Permissões, tem o campo Tipo de usuário. Mesmo você permitindo o usuário a ter acesso Leitura-escrita a algum hos(, não será possível ele alterar tais configurações se continuar sendo um usuário normal. Para resolver este problema, precisamos alterar o tipo de usuário. Existem três tipos: r
Usuário Zabbix - Acesso somente leitura. Administrador Zabbix Acesso a configurações de hosts, templates etc.
- Super Administrador Zabbix Zabbix.
Acesso total, inclusive à administração do
Portanto, o usuário que criamos deverá ser alterado para o tipo Administrador Zabbix para ter acesso à Leitura-escrita para o grupo de hosts Zabbix Server. Lembrando que temos que adicionar a permissão Leitura-escrita para o grupo de hosts Zabbix Server através do cadastro de grupos, pois não é permitido atribuir permissões a usuários, somente a grupos. Faça logon novamente com o usuário restrito que criamos e vá até o menu Configuração > Hosts. Você observará que ele tem acesso apenas ao host Zabbix Server, conforme a figura a seguir:
w •
Na tela de cadastro de grupos também é possível habilitarmos o modo de depuração. Este modo habilita a visualização de Iogs de depuração para todos os usuários cadastrados no grupo. Para acessar esse /og, surgirá um link no canto superior direito da tela com o nome Depuração, ao lado de Logout. Clicando nesse !ink, é exibido um Iog com todas as operações que são realizadas no Zabbix, como por exemplo: chamadas de funções, arquivos, execução de comandos SQL etc.
lu Visualizando os Dados Monitorados Até aqui temos o Zabbix funcionando, o.i seja, realizando a coleta de dados e enviando alertas. Nós já até vimos algumas telas com esses resultados, seja de uma trigger ou um gráfico de algum item monitorado. Neste capítulo o objetivo é mostrar de forma mais analítica a apresentação dos dados coletados pelo Zabbix.
10.1 Dashboard Começaremos analisando a principal tela do Zabbix, que é a Dashboard. No capítulo 4 nós conhecemos a interface web do Zabbix e tivemos uma visão da parte de status da tela de Dashboard. Veremos agora em detalhes algumas características que são apresentadas nesta tela. Por padrão, temos os seguintes painéis: Status do Zabbix - Neste painel podemos verificar se o processo servidor está em execução, exibindo detalhes do endereço lP ou nome DNS e a porta de comunicação. Número de hosts, itens e triggers que estão sendo monitorados. Número de usuários onhine e o desempenho requerido pelo servidor. Status do sistema Neste painel podemos verificar de forma resumida quais grupos de hos(s estão apresentando problemas classificados por severidade. Movendo o cursor do mouse em um item com problema, obtemos os mesmos detalhes apresentados no painel de últimos acidentes. Status do host - Neste painel podemos verificar de forma resumida a quantidade de hosts que estão com incidentes e o total de incidentes separados por grupos de hosts.
Visualizando os Dados Monitorados 91 Últimos 20 incidentes - Este painel apresenta os últimos vinte eventos ocorridos de forma detalhada do host que está com problema. Aqui é possível verificar se foi executada alguma ação e se este evento foi reconhecido. Monitoramento web - Este painel apresenta detalhes de hosts que possuem monitoramento web, podendo verificar, por exemplo, qual o motivo da falha que ocorreu. Esses painéis não podem ser removidos da tela de Dashboard, somente podem ser configurados para mostrar ou esconder o painel ou ajustar o tempo em que as informações serão atualizadas. Porém, é possível ajustar a ordem em que os painéis serão apresentados, ou seja, podemos movimentá-los na tela de Dashboard. A figura a seguir exibe os painéis apresentados:
Vdst
P&ns.
Dssss Iocaihoit 10051
e1b, cita roda,do
P4uiIrO d. holis(insn.t.i&dnie
2
O
210 11: O
2
4ume*• de tn,.,.i (az1vIde,avad*$ecd.Msid.1coeh.cdWeSI meto de ,,s.,&nsi t.,.I,,..J
Desuep•nhe e,qw,eds d•
11
25
Sm.e de tem (mee.c,*d.vd,, atp w adov eo .po'adet
3
ssMdo.. ,isve vel.is por .gd.
O 13
-j
Atta
Giupo de hosP Deasve Monzan tarnenta Liv,. O
(ruço de host
Sem frcidentc
~Não
homaço
O
1
Hão cIsscmLi
Tou
Com freddentt 1
1jLL!1!2
tiosi
MdIm
IÃ*ndiaSer.çlIo 4. Idade
Msuniet .-c Ta,a de tta,nle,nc,a muo bi.&
e* eteiCe etho 1B #12013104140
kitom&çio Reconhecido Ações
22), 13m 40.
14* 1 Incidentes sendo ,s.bado,
1 Grupo de hos?-. Ok
1elhou
Dcscor*'.ddo
_
92 Monitoramento de Redes com Zabbix Temos também os painéis exibidos à esquerda, que são utilizados para incluirmos gráficos, telas e mapas. Esses painéis podem ser removidos da tela ou movimentados. A figura a seguir exibe esses painéis, que por padrão estão vazios:
r
Gráficos favoritos
1
Teias favoritas
J
Mapas tavorsios
J Mapas.
10.2 Visão geral Ja apresentamos esta tela quando estávamos visualizando os alertas de triggers. Portanto, vamos focar em outros detalhes desta tela. Por padrão, os dados são apresentados de forma a mostrar apenas alertas, mas podemos visualizar os dados dos itens. Para apresentar no formato do tipo Dados, devemos selecionar esta opção na caixa de seleção do campo Tipo, posicionado no canto direito superior da tela. A figura a seguir mostra como esses dados são apresentados.
..'-
'I.
.G
. ...
Visualizando os Dados Monitorados 93 Podemos observar que a primeira coluna tem a descrição dos itens, em vez das tnggets. Os valores de cada item possuem um Iink. Clicando no link do item, é apresentado um menu com os comandos apresentados na figura a seguir:
Neste menu, podemos acessar gráficos sem a necessidade de configuração anterior e também podemos visualizar os últimos quinhentos valores coletados, ideal para ver se o item está sendo coletado no intervalo correto que foi configurado. Por exemplo: se você configurou um item para ser coletado a cada dez segundos, a hora apresentada não poderá estar com diferença maior do que dez segundos para cada coleta. Estando com diferença no horário, você poderá investigar o servidor para saber o motivo pelo qual isso está ocorrendo. Obs.: podemos verificar o atraso na coleta de dados através do menu Administração > Fila. Ainda na tela de Visão geral, vamos selecionar Triggers na caixa de seleção Tipo. Vamos observar a diferença dos menus suspensos que são exibidos quando clicarmos no status das t,-iggers. Quando a trigger estiver com status OK, será apresentado o seguinte menu:
üu Eventos
Carga do Sistema
94 Monitoramento de Redes com Zabbix
Ou quando o status for um incidente, será apresentado o seguinte menu:
Observe que, no primeiro menu, poderemos visualizar os eventos da tiigger, ou seja, quando o sistema reconheceu algum incidente e quando o status voltou a ficar OK. Veja na figura a seguir: --
--
- 1U I1
14• .Ø
-
....... ...,$,'õ.,
...4,
,.
......
-•• .....4.
&4.. 41'•
..*
........,
1.
Na visualização do evento, é possível exportar os dados apresentados para o formato CSV e utilizá-los em planilhas eletrônicas. Esta opção pode ser executada clicando no botão Exportar para M. Ao clicar no Iink da opção gráficos, será apresentado o gráfico relacionado ao item da trigger configurada. Já no segundo menu, que é apresentado quando a trigger sofreu um incidente, temos uma nova opção, que é a de reconhecer o evento ocorrido. Será apresentada a seguinte tela:
-1
Nesta tela de reconhecimento do alarme, nós podemos registrar detalhes do problema. Por exemplo, informar que alguma equipe já está trabalhando para resolver
Visualizando os Dados Monitorados 95 o problema. Assim, evita-se que duas ou mais equipes trabalhem para resolver o mesmo problema, o que pode atrapalhar na resolução. Quando reconhecemos um alarme, temos algumas opções para saber se ele foi reconhecido. Na própria tela de Visão geral, o status da trigger apresentará o símbolo de visto, conforme figura a seguir:
~0 11 91A1
-2
i"'
'
Na tela de Dashboard, o incidente estará com a coluna Reconhecido apresentando um Sim:
(Jilma ~ação 4 , Idade tn1ormaço Reconhecido !!sLiw. Tala d.a,n.,ãncamuito baaanaut.,fac. .90 3 S.
9]i30 2 M 4!W
-
AÇ&CJL
-
ide 1 incidentei sendo riaibidoí
Também é exibido na tela Eventos. Nessas três telas podemos visualizar detalhes do incidente, ou seja, o que foi descrito no reconhecimento do alarme. Vejamos o exemplo da figura a seguir:
Já na tela Triggers, é exibida a quantidade de incidentes a reconhecer. Vejamos a figura a seguir:
60~ 1¥1611111
1109960
alar ^40
4
96 Monitoramento de Redes com Zabbix
Observe que, na coluna Reconhecido, temos entre parênteses o número 2. Isso significa que, de todas as vezes que o incidente ocorreu, em duas o evento não foi reconhecido.
10.3 Outros menus Além do que foi apresentado nos tópicos 10.1 e 10.2, temos ainda a opção de visualizarmos os dados nos menus Dados recentes, Triggers, Eventos e Gráficos, onde podemos selecionar um grupo de hosts ou apenas um host para visualização. Os três primeiros menus já foram explicados em outros tópicos e há mais detalhes importantes. Já no menu Gráficos, temos a opção de utilizar um filtro para analisar o item ao longo do tempo em que foi coletado. Vejamos a figura a seguir:
Observe que podemos selecionar algumas opções padronizadas, disponíveis à esquerda, com a opção Zoom. Podemos ainda selecionar um período específico clicando nas datas disponíveis à direita. Ao clicarmos nessas datas, a seguinte tela é apresentada: (
2013 Setembro
MTW 1 F S S 1 2345678 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30
-. Data
[ra]
[i:J
3
INailol
Selecionando data e hora, o gráfico será plotado de acordo com o período em questão, dando a opção de visualizar de forma mais detalhada tais períodos.
11 Mapas, Telas e Relatórios Neste capítulo, mostrarei a importância de um monitoramento voltado para o uso gerencial, através de relatórios e com a visualização através de mapas e telas.
11.1 Mapas De urna forma genérica, a visualização por mapas serve para analisarmos um conjunto de hosts separados por dois ou mais Iinks. Um exemplo seria você desenhar o mapa de localização entre uma matriz e suas filiais, onde poderia ser monitorado o Iink entre essas unidades, além de alertar os principais sistemas e serviços. Assim, a equipe de operação iria visualizar em tempo real um problema ocorrido e poderia acionar a equipe responsável pela resolução do problema. Para criarmos um mapa, utilizamos o menu Configuração > Mapas. Na instalação do Zabbix, já temos um mapa que iremos utilizar como exemplo (Local network). Clique no Iink desse mapa para abrirmos sua edição. Existe o host Zabbix server. Criaremos um item e uma trigger que irá verificar se o serviço SSH estará em execução. Crie o item com as seguintes informações para o template Template Livro: Nome - Monitoramento do Daemon do SSH Tipo Agente Zabbix Chave net.tcp.service[sshj Nova aplicação Disponibilidade Crie a tnggei para o novo item com as seguintes informações: r
Nome - Disponibilidade do serviço SSH Expressão - {Template Livro: net.tcp.serviceísshl .last(0)} =0 Risco - Alta
98 Monitoramento de Redes com Zabbix Agora, na tela de cadastro do mapa, iremos alterar o host Zabbix server pelo host TesteLivro. Clicando na figura que representa o host Zabbix server, aparecerá a tela a seguir:
so
.:
............................................... 1,,• Z...
. ............,
tom
_________
.................... ..................
'..44.
Selecione o host TesteLivro clicando no Iink 'Selecionar'. Clique no botão 'Aplicar' e depois em 'Fechar'. Observe que na tela de edição do elemento (o host que selecionamos), temos algumas opções. Elas podem ser: configurar o ícone que aparecerá do host quando ele estiver com problema, manutenção, inativo ou tudo estiver certo com o monitoramento. Agora podemos clicar no botão 'Salvar', pois, caso, contrário nosso mapa não será alterado e continuará com as configurações anteriores. Vá até o menu Monitoramento > Mapas. A figura a seguir mostra que está tudo certo com o nosso host TesteLivro:
Local n•twotk
Local networl
e nK
Mapas, Telas e Relatórios 99
Vamos agora parar o serviço SSH para que o nosso mapa altere a figura do nosso
hos( e mostre qual o problema que está ocorrendo no momento. Execute o seguinte comando:
1 service sshd stop Podemos observar que nosso hos( está com problemas e seu ícone no mapa foi alterado:
Local network Local networi
112700 1w" Idade do servtço SSH lqqqmepppl
O uso de mapas é extremamente simples, e você poderá personalizá-lo com imagens de fundo utilizando, por exemplo, mapas de cidade, estados ou países para mostrar a interligação dos Iinks entre os hosts da rede, inclusive podendo ser configurada a velocidade do Iink entre as redes para verificação do tráfego de rede, conforme podemos visualizar o exemplo da figura a seguir:
Local nelwork
Local
network
l48lKbps
Z
er Swtch
100 Monitoramento de Redes com Zabbix
11.2 Telas O uso de telas é similar ao uso de mapas, com a vantagem de podermos incluir recursos, tais como: gráficos, informações de um grupo de hosts, históricos de ações etc. A figura a seguir mostra um exemplo da utilização de telas: LOCd
TI.tjyt MySOL OpfM.Vd 1H') TS$1UVVO
Texe de 1rw&.,êd. inlirt.ce ePd (npu1) 11h)
1 2
•1
• 4o 4. -441.
(#411
)
• NpSQtbIgIhOwde p sscd pw 114dM • MØ ca.p
.o 44 41dM) 1 e41 44414141
• SIØQI4*41 Ip141dp14 114dM (144 'e 4144,1 1 eIohêd.dss 1 OLM*II11SpI'MCdM • _________ • SSp1OLts IØit*WpiI McdM (e).). 414..) •MØdew44lpeeisc..d (14.41414.41 ' (14. 'e d.d.sl "rS
— 4) 11ps IU4, * * Es
lO? 4
•
As telas podem ser configuradas acessando o menu Configuração > Telas. Não existe mistério para realizar esta configuração, já que se trata de uma personalização através de recursos que nós já temos configurados, como o exemplo citado no parágrafo anterior. Outro recurso interessante quando temos gráficos configurados é poder utilizar filtros para analisarmos um determinado período. Também é possível configurar slideshows para rotacionar várias telas em um mesmo painel. Essa configuração pode ser realizada através do menu Configuração > Slideshow. A visualização de telas e slideshows é acessada através do menu Monitoramento > Telas, onde podemos selecionar um dos dois recursos através do menu suspenso localizado no canto superior direito da tela, conforme mostrado na figura a seguir: W
— 4,
M*
41
Xi 4
ú
41 Me
a.:,'e 4
Xi
4141 M
-
.---
_--.-X
Mapas, Telas e Relatórios 101
11.3 Relatórios Este recurso do Zabbix é mais voltado para os usuários que fazem o trabalho gerencial e analisam o monitoramento em números. No menu Relatórios, temos os submenus Status do Zabbix, Relatório de disponibilidade. Top 100 Triggers e Relatórios de barra. O primeiro submenu mostra a tela de status do Zabbix, que também é exibida no Dashboard. Já o submenu Relatório de disponibilidade exibe a porcentagem em que uma determinada trigger esteve com os status de 'Incidente', 'Ok' e 'desconhecido'. A figura a seguir exibe o relatório de disponibilidade separando as trigges de acordo com os hosts que estão sendo monitorados: 1TI1TLTUTEF
-
-
- --
-
*
£**
1
•%
.1.'
Nessa tela também é possível clicar no Iink 'Mostrar' na coluna 'Gráfico' para cada trigger. A figura a seguir exibe um desses gráficos: C
OK (%I .WlOIV (%I .
do5'stemaesUni,atoI*
io2O13
102 Monitoramento de Redes com Zabbix No submenu Top 100 triggers, é exibida uma listagem com as tt'igges que tiveram mais alterações em seu status. Podemos observar na figura a seguir: -
-
!Z
w..
O interessante neste menu é poder analisar as alterações das triggers para poder cobrar as equipes responsáveis. Muitas alterações de status nas triggers podem levar a crer que o problema não está sendo resolvido de maneira consistente. Por último, no submenu Relatórios de barra, podemos filtrar vários itens de monitoramento para serem analisados em determinado período.
12 Instalando o Zabbix Agent em Hosts Windows o Zabbix possui agente pré-compilado para monitoramento de hosts para todas as versões do sistema operacional Microsoft Windows (a partir da versão 2000), tanto na arquitetura i386 como na x86 64. É possível monitorarmos recursos como CPU, memória, disco, serviços, entre outros Itens. Neste capítulo abordaremos como realizar a instalação e configuração do Zabbix Agent em sistemas Windows e também criaremos um host e itens para monitoração. Baixe a última versão do agente para Windows disponível em http://www.zabbix. com/download.php . Este arquivo vem compactado no formato ZIR Vamos executar os seguintes passos para fazer a instalação do agente no Windows: r
Criar a pasta Zabbix dentro de Program Files.
,. Descompactar o arquivo ZIP para uma pasta temporária. r
Copiar os arquivos zabbix_agentd.exe, zabbix_get.exe e zabbix_sender.exe da pasta fbin/
Precisamos editar o arquivo zabbix_agentd.conf e alterar as seguintes informações:
LogFile=C:\Program Files\Zabbix\zabbix_agentd. log Hostname-Windows 7 StartAgents-3 Server=
104 Monitoramento de Redes com Zabbix
DebugLeve 1=3 LogFi leSize=5 Timeout=3 Realizamos a configuração inicial para o Zabbix Agent. Agora precisamos instalar o Zabbix Agent para funcionar como um serviço do Windows e iniciá-lo. Para isso, acesse o prompt do Windows e execute os seguintes comandos:
C:\ >cd Program Files\Zabbix\ C:\Program Files\Zabbix>zabbix_agentd.exe --config zabbix agentd.conf --instail A execução do comando para instalação deverá ter um resultado parecido com esse:
zabbix_agentd.exe (2288): service (Zabbix Agent) installed successfully zabbix_agentd.exe (2288): event source (Zabbix Agent) installed successfully Zabbix Agent instalado. Clique no menu Iniciar e execute o comando services.msc. A figura a seguir mostra que o Zabbix Agent foi instalado como um serviço:
Ayo
Ação
Sr.iços(Iocad)
£ibw
Agudo
-
Ldebíx Aqeni O
Wf1ÇO
Poe.des sysleen rnoMonrig
Descrição S.r.riços de cnpo.-. Foeri.ce q S~ de ode.. Fo.nece. S.suer. de Com -. O wviço SpookedeImpeee... Cweqe.s... Mintni e. 04 SiipeifetcIi Supoeta do Pa.nd... Ide w.iç.. Talqonia Çoinece s.. Teena Fofr4
•
Eiaend.doA,.T
--
StMus In.ciàdo
Iniciado Iniciado
Iniciado Inécudo Iniciado Iniciado
Iniciado Iniciado
Tipo de In.cidezeçlo
F.w Li
Autonit,co Manual Menuel Auom1Iico AiAoinia,co M.nue Manual Automal.co Autoanatico Automat.co Manual Automatico (Atino Manual Mnu,.l Manjl Manual Autoinatico (Atiaso. AaAoqnitico (Atino.. Manual
Sireiço SW^0
Seeviço Siiurvw Serviço Sn*cini S.stnnt S.itania Sigeena Serviço Serviço Sitiema S4*em 1
Instalando o Zabbix Agent em Hosts Windows 105 Podemos verificar que o serviço já vem com a configuração de inicialização automática. Porém, após a instalação o serviço não executa automaticamente, a não ser que o sistema seja inicializado. Como não iremos inicializar o sistema, dique com o botão direito do mouse no serviço Zabbix Agent e em seguida dique em 'Iniciar', conforme a figura a seguir: ru',,e*t
1 revivield
4
E
Temas
:Ttador de instru...
E
4VirtualBox Guest A... P, Wundows CardSpa... 4Wundows Defender
IvidilUdi
Iniciar P a rar Pausar
1P
Continuar Reunucua r
Windows Driver F... :Wndows Instatier
4 4 Windows Remote 4 Windows Search 4 Windows Update
...
l ~
oco
Sustem
uco
Sustem
ico
Sistem Sistem Sistem
ico (Atraso ...
Sistem Sustem
Todas as tarefas
Serviç
Windows Presenta... Atualizar
...
Propriedades sÔ
WMI Performance... P
Ajuda
Servuç eco (Atraso
...
Sistem
r eco (Atraso...
Sistem
Sustem ________
Já podemos criar um host na interface web do Zabbix para monitorarmos o Windows 7 do nosso exemplo. Cadastre esse novo host com as seguintes informações: Nome do host
Windows 7
Novo grupo de hosts Windows Desktop Ir
Endereço IP
Por padrão, a instalação do Zabbix já vem com um template chamado Template OS Windows. Iremos associar esse template ao host que acabamos de criar. Abra a confi guração do host criado e, na aba Templates, dique em adicionar e selecione o (emplate Template ramento
OS >
Windows. Ative o monitoramento desse host e vá até o menu Monito-
Visão geral, onde poderemos verificar se os dados estão sendo coletados.
Podemos verificar na figura a seguir:
106 Monitoramento de Redes com Zabbix
., g
,0.
S1w
a
•.. ..i..d i Riu
0I
àaI
AM
N...
v
0
%
Observe que selecionamos o tipo Dados em vez de deixar exibindo as (riggers, apenas para demonstrar que os dados já estão sendo coletados pelo Zabbix Agent no Windows. Para deixar o monitoramento de hosts com Windows mais personalizável, devemos utilizar os contadores de desempenho presentes nos sistemas Windows. Devemos utilizar a chave presente no Zabbix chamada perf_counter. Com o auxílio da ferramenta TypePerf.exe, podemos obter uma lista de objetos registrados em cada sistema, que normalmente são utilizados pelo aplicativo de monitoramento de desempenho, o perfmon. O TypePerf possui várias opções de execução. O que interessa realmente para coletarmos os contadores dos objetos instalados no sistema é o uso da opção -qx. Portanto, para gerar essa listagem, executaremos o seguinte comando:
C:\ >typeperf -qx Essa execução gerará uma imensa listagem cujo início não teremos como analisar. Para isso, vamos jogar a saída dessa execução para um arquivo texto para que possamos ler essa listagem.
C:\ >typeperf -qx -o contadores.txt
Instalando o Zabbix Agent em Hosts Windows 107 Com a listagem em um arquivo, podemos escolher uma e testarmos no Zabbix Server se a coleta será feita. Vamos pegar o contador \LogicalDisk(C:)\% de espaço livre, que não está presente na templa(e Template OS Windows. Execute o seguinte comando: # zabbix_get -s 192.167.0.123 -k perf_counter["\LogicalDisk(C:)\% de espaço livre") Este contador retorna a porcentagem de espaço livre em disco no drive C:. Com o teste funcionando, podemos criar um item para o host Windows 7 e começar a coleta a partir desta chave. Iremos cadastrar esse novo item na template Template OS Windows, pois ela já está associada ao host Windows 7 e também servirá para os próximos hosts com sistemas Windows. Cadastre esse novo item com os seguintes dados: .- Nome Espaço em disco no drive C: .' Tipo - Agente Zabbix Chave perfcounter["\LogicalDisk(C:)\% de espaço livre"I Tipo de informação - Numérico (fracionário) Unidades Após cadastrarmos o item e formos visualizar os dados coletados, já teremos o resultado, conforme a figura a seguir:
VliL. ,...4
H.
IRE que
H:rJ= c
Quem tem um parque de máquinas com sistemas Windows em idiomas diferentes deve tomar cuidado ao cadastrar itens utilizando o perf_counter. Isso porque os contadores também estão nos idiomas do sistema. Portanto, seria um retrabalho ter que criar cada item para os sistemas operacionais com diferentes idiomas. Para resolver esse problema, nós podemos usar os contadores com o seu número de identificação, em vez de utilizarmos a sua descrição. Para consultarmos esses números identificadores, precisamos acessar o aplicativo regedit e procurar a pasta HKEY_ LOCAL _MACHINE\SOFTWARE\ Microsott\Windows NTCurrentVersion\PerfIib\. Nesta pasta, temos as subpastas 009 e 0016, que representam a relação dos contadores e seus identificadores no idioma inglês e
108 Monitoramento de Redes com Zabbix
português do Brasil, respectivamente. A chave Counter dessas subpastas tem os mesmos números identificadores, com a diferença de cada um estar em seu idioma. Cadastrar os itens com os números de identificação é a maneira mais trabalhosa, porém a mais eficiente, já que você não irá precisar cadastrar um mesmo item mais de uma vez por causa do idioma. Em substituição ao nosso exemplo, a chave do item ficaria da seguinte forma: r
perf_countert"\236(C:)\408"]
Onde 236 é o identificador das unidades lógicas e 408 o identificador de % de espaço livre. Testando a execução do zabbix_get nas duas maneiras, teremos o mesmo resultado:
• zabbixget -s 192.167.0.123 -k perf_counter('\Logica1Disk(C:)\% de espaço livre") 45.444562 • zabbix_get -s 192.167.0.123 -k perfcounter['\236(C:)\408"] 45.444562
II. Configurando Monitoramento Web Uma das excelentes ferramentas que o Zabbix possui é o recurso de monitoramento web. Com este recurso, é possível verificarmos se uma determinada URL está disponível obtendo a velocidade de acesso e o tempo de resposta. É o monitoramento ideal para verificar aplicações web em execução. É possível também configurar passos a serem executados durante o monitoramento, como por exemplo verificar o tempo que o sistema leva para processar um login. Com um monitoramento aprimorado desse tipo, você poderá verificar onde está acontecendo lentidão no sistema. Vamos a dois exemplos práticos: analisaremos o tempo de resposta e velocidade de acesso ao site http://www.google.com.br e ao site da interface web do Zabbix. O primeiro exemplo será o mais simples, pois queremos saber apenas o tempo de acesso e a velocidade para exibir o site do Google. Vamos até o menu Configuração > Web. Quando criamos um monitora mento web, o Zabbix entende que é preciso criar um cenário para fazer a simulação na qual queremos realizar tal teste. Para criarmos um novo cenário, clicamos no botão Criar cenário. Preencha o formulário com os seguintes dados na aba Cenário: Aplicação - Rede ' Nome Google Ir
Autenticação Nenhum Intervalo atualização (em seg) 30 Agente Mozilla Firefox 8.0
110 Monitoramento de Redes com Zabbix Na aba Passos, adicionaremos a URL que deverá ser testada. Preencha os seguintes dados: Nome Acesso ao site Google URL - http://www.google.com.br Timeout - 15
Código de status necessários 200 Na aba Cenário, o campo mais importante para esse nosso cenário é o Agente. Neste campa, selecionamos o mecanismo que será utilizado para executar os passos, ou seja, selecionamos o padrão de navegador que será utilizado. Já na aba Passos, o que de fato é importante para esse monitoramento simples, além da URL, é o código de status HTTP que desejamos ter de retorno. Neste caso, queremos um código OK, que significa que a URL solicitada foi retornada com sucesso. Podemos obter os códigos de status de requisições HTTP através do endereço https:ll support.google.com/webmasters/answer/40132?hl=en ou mais detalhes em http:// www.w3.org/Protocolslrfc2616/rfc2616-sec10.htmi. Nosso cenário está criado e podemos verificar seu monitoramento através do menu Monitoramento > Web. A figura a seguir exibe o status do nosso cenário.
-
IL.,...
,.I
Para obtermos mais detalhes, podemos clicar no Iink com o nome do cenário, onde serão exibidos dados e gráficos para tempo de resposta e velocidade de acesso à URL. A figura a seguir exibe parte desta tela: c4s
Vd
.....v,
..
i:ia,.
3,)
'
000g4e (1h)
,443
• v,$oc44 di diid pw. 0
(4d( 9 78 k
9 11 E8p
,nd 146', (Bp
Configurando Monitoramento Web 111 Para o segundo cenário, analisaremos o login completo na interface web do Zabbix. Para isso testaremos quatro passos: acessar a página de login; executar login com usuário e senha; abrir página inicial; e executar Iogoff do sistema. Antes de configurarmos este monitoramento, precisamos obter detalhes da página que iremos monitorar. Esses detalhes são os recursos utilizados na página que são encontrados em seu código-fonte, como por exemplo, nome da caixa de texto de usuário e senha e botões de comando. Para sabermos de quais objetos precisamos obter detalhes para executar a ação de login no sistema, precisamos utilizar o recurso do navegador chamado Inspecionar elemento. Estou utilizando a versão 28 do navegador Google Chrome. Na tela principal da interface web do Zabbix, dique com o botão direito do mouse e em seguida selecione 'Inspecionar elemento'. Aparecerá um painel na parte de baixo do navegador, conforme ilustrado na figura a seguir: P~91 144t
SoijCI$ tI•,,S Prq~ AuIi C0144 : U-4 11
NV
~W2
-
4p %.u..•r%*iiMbtui $$VOIS4CUP,âSt
•4f(
4h*dd n.rq,est dii,ta tabte. p,S%&W: iSstut*
..st'
-14$,
._y. .1
(
$O abt. 4d1
1 4SSI. -$C,t.$ *VPe.14$uI)SflSCI1$$'41SC'$PI
o
Q »
Clique no botão 'Resources': Etements Pesources i Network
v LJ Frames
.c:j D.
(index.php)
Web SQL
' 11 lndexedDB o
b.
Local Storage Session Storage Cookies Application Cache
4>_
o,
Em seguida, expanda a pasta (index.php) e selecione 'index.php' em Stylesheets. Será exibido o código-fonte da página conforme a figura a seguir, onde obteremos detalhes que usaremos na configuração dos passos para o monitoramento de login na interface web do Zabbix.
112 Monitoramento de Redes com Zabbix D'w* fRo.suii.s i
i.00t
$oo.io
-
Yno4gw Pso.ss •Z.óbs 2 O
S Cs*,t.ht
3À JW3 bg !ao.,
..
S*
c ,&. oly14.1 qM totO. 4s; O: oj, s1pt..fto.I •g %o..s1g%.tgo. ø.. Si,. '.'gM 2* 44y ct..0 c.,n,,.0 i.tt,,Ue bo%4 .3p..i 'so.'
*s
S•gttgft
fls..
.
SV4VUI
'1 '1
it,
-p.44,..gasa Si. fle*i
oU IIgt....?5M ilo
IIO5Q(
Si
co~
-1 oo CeCNO
lSii. p•4d*iigtw tu. w5M 2v.. v%4P. 2o.. bsci5r.'mdtss5q tvluie, *'t,iv*.b%o.t. is.. 40kv CI5$StOd s-,k,.ois.% t. 'dUi., s0vaso Otf tt.',.'.uv botdt~04~ vvy*..c.%.' .osouv t,u.-vett .1t. oU vyto.w&.. vou iS.. ..00,nq-vso - ii,. .iM flui: ~th *5.8. bo.h,'oud•tss 4 40s. g%o.v.i44 sv,to.**t*- g.I.gou btsci. go.. 1. •dgspisp gut go.. •..ri,- 'i* b.td vv,k.' 'io.u* ui-usosws .usouso'S 'o..Io'4 4, ,v,t..s.rsvou Si,. e.,gtt.ft 54'. .iivt iio.O's.tIsi i5n.%.SU v....•.,v.t.qi.. 4.Wt $.v.sii. .,I.
40
cts.,-i,td
So..s.r o. Is. 504.. 40i. •IiIv.Miit 5.a.../Stw. ou. ,..èsgt •Iouuv o.t
,t,tq.ts•i.i1
ntMç'
.iu.' .tyl.. 14r51A.i•'v
.)3
fl't. b.c5'
..,.i ch,cb40.ci.ç504 /. 5.s. ,.,iic.I. sUp vou..
lSiso..1 iS..
.sto.-tty
*
o
4
Na parte onde está sendo exibido o código-fonte, temos em destaque três itens: name="name" -nome do objeto da caixa de texto 'Username'. ..- name="password" - nome do objeto da caixa de texto 'Password'.
-
name="enter" nome do objeto do botão 'Sign in'.
Com esses dados coletados, podemos cadastrar nosso monitoramento. Para esse segundo cenário, preencha o formulário com os seguintes dados na aba Cenário: Aplicação - Rede r
Nome Zabhix Autenticação - Nenhum Intervalo atualização (em seg) - 30
- Agente Mozilla Firefox 8.0 Variáveis {name}=Admin {password}=zabbix Observe que incluímos dados em um novo campo nesse cenário. Apesar de não ser necessário, é interessante utilizarmos variáveis para que possamos aproveitar dados em vários passos, em vez de digitarmos uma mesma informação em várias configurações. Além de ser mais prático, evita erros desnecessários. Na aba Passos, adicionaremos os quatro passos que precisamos. Preencha os seguintes dados para o primeiro passo: Nome Acesso à página de login do Zabbix U R L http://localhost/zabbix/i ndex. php
Configurando Monitoramento Web 113 Timeout 1
Código de status necessários - 200 Para o segundo passo: ' Nome
Login no Zabbix
URL - http:I/localhostlzabbix/index.php Post name= {name}&password = {password}&enter=Sign in Timeout
15
Código de status necessários 200 Para o terceiro passo: Nome Apresentação da página inicial U R L rittp:ilocalhostlzabbix/i ndex.php Tirneout
15
Texto necessário Profile Código de status necessários - 200 Para o quarto e último passo: Nome Acesso à página de login do Zabbix U R L http:lllocalhost/zabbix/index. php?reconnect= 1 Timeout - 15
Código de status necessários - 200 No segundo passo, temos um novo campo inserido, que é o Post. Este campo é utilizado para inserirmos comandos que serão executados após o carregamento da página. Neste caso, serão inseridos o nome do usuário e a senha (que foram definidos através das variáveis name e password configuradas na aba Cenário e estão entre chaves) e a simulação de dique no botão 'Sign in' do formulário. O terceiro passo entrará em execução e fará a verificação através do campo Texto necessário. Sendo assim, se usuário ou senha do passo anterior estiverem incorretos, o terceiro passo será falso, pois não encontrará o texto Profile, que é um Iink de acesso às configurações padrões do Zabbix. Caso usuário e senha estiverem corretos, o quarto passo será chamado e finalizará a execução do teste. Já podemos acessar o menu Monitoramento > Web para verificarmos os dados coletados deste cenário, apresentado na figura a seguir:
114 Monitoramento de Redes com Zabbix
•I%
D-...$
IS? 50
I.es
IS,
bII.n
Após alguns minutos de monitoramento, teremos os seguintes gráficos de velocidade e tempo de resposta: Zsbbsx (1h)
~ ~~ _ í
III 23
_
$ssarn. 390 4)
19 II
*62*21 * *2972v 3 3 a 3 * 3 3 3 3 3 2 3 3
**
33
• Wo~ de dandoid pa o pano Aciono ao Zdbe do cqno Zdox • Vsoc.dada da deo,doad pua o pano L09n no Zaaa do cunno Zbbz • Vsoc4,d. de do.$oad pua o pano *04 0~lr do csno Zabbx • Woc.d~ da dou4o.d pua o passo toqoIr do cunAio 'Zatbr
linIdi (sndl (mAdi
I'nddl
*222 z x
22
n no .nêd 47$ 4379 ks 36 19 *n 13212 upa $179 Us 997$ K$Ø 9319 Ks 16441 Kapi 19969 k$ 26711 Ks 19493 uio
Zabb*z (1h)
uJA "a... * *!9 21129
72833112
• Tunpo da 'sopous pua o passo Miino ao Zé~ do caobio 2a61ss • Tempo da 'sopo,25 pua o passo 1~ no Zabba do c.nno Zabu • 75590 da rsapoals pua o pano DaoIèowd' do c.no Zdobs • Tempo da ,sopoota pua o passo toqolr do ~ ZIbx
a 29 2*Z 2
ná o mdd .nSz 119.ns 9lms 10s IlIma CniddI 40us$ 2$Oms lSOsn 44258 lmddI 23758 14958 fls 42458 164an 246an 219an 141 1"êd)
(niêdl
Vimos neste capítulo como o Zabbix é bastante interessante, conseguindo de fato monitorar qualquer aplicação web. Mas para isso é importante saber coletar os objetos das páginas ou ter a documentação informando os nomes dos objetos a que precisamos ter acesso. Com o Zabbix é possível ainda fazer um teste de inserção de dados através de um formulário. Isso tem muita utilidade para termos um gráfico do tempo de resposta em cada passo. Por exemplo: se um determinado formulário está demorando a gravar os dados no sistema, a lentidão pode estar ocorrendo no servidor de banco de dados, que pode não estar suportando a carga de dados e gerando lentidão na aplicação web.
14 Configurando Monitoramento de Serviços de Ti Os Níveis de Serviço (SLAs) podem ser configurados no Zabbix através do menu Configuração > Serviços de TI. O uso deste monitoramento é muito interessante para
gerentes de redes verificarem se um determinado serviço está dentro dos padrões acordados com os clientes. Por exemplo: ficou acordado entre a gerência de Ti e a gerência de vendas que o sistema de Loja Virtual terá disponibilidade de 99%. Vamos criar uma nova trigget que irá verificar o status do monitoramento web para o site www.google.com.br que fizemos no capítulo 13. Crie a trigger para o host TesteLivro com os seguintes dados: Nome Disponibilidade site Google Expressão {Teste Livro: web. test. rspcodelGoogle,Acesso ao site Google]. Iast(0)} #200 Risco Alta Esta trigger irá analisar o código de retorno da requisição web. Se for diferente de 200, que é o status Ok, a trigger irá disparar o alerta. Com a trigger funcionando, criaremos um novo serviço de TI, que ficará responsável por calcular o SLA para a disponibilidade do site Google. Na tela principal de configuração de serviços de TI, nós devemos clicar no Iink raiz e em seguida clicar em 'Adicionar serviço'. A figura a seguir mostra a tela de cadastro do serviço de TI.
116 Monitoramento de Redes com Zabbix
Iremos cadastrar com os seguintes dados: - Nome Disponibilidade Google . Calcular SLA 99 Trigger - Disponibilidade site Google
Com esses dados, já temos um monitoramento básico de serviço de TI, onde será verificada a disponibilidade de acesso para o site www.google.com.br. Como não podemos parar o servidor web do Google nem desconectar a rede deles, vamos simular uma queda do nosso próprio Iink de internet. Para isso, sugiro alterar o /etc/resolv.conf ou até mesmo editar o monitoramento web e alterar o endereço www.google.com.br para outro endereço que não será resolvido, apenas para o nosso SLA ser alterado. Após cadastrarmos o serviço de TI, poderemos visualizar seu monitoramento através do menu Monitoramento > Serviços de TI, conforme é exibido na figura a seguir:
n1çoi !J
i1s
nua s,ts.w
*A
*
Podemos observar que o SLA está em 100% e o aceitável em 99%, conforme configuramos. Vou alterar a URL do site no cadastro de monitoramento web apenas para o cálculo do SLA ter efeito. Assim que for detectado o problema pela trigger, o SLA sofrerá queda, além da coluna Status exibir o nível de severidade do serviço. Observe a figura a seguir: -•--
-
-
- -
'..--..
.Jt.2.LI
•.I
l
Configurando Monitoramento de Serviços de Ti 117 Podemos escolher o período desejado para a análise selecionando na caixa disponível no canto superior direito. Vamos a algumas explicações a respeito dos serviços de TI: r
O campo Serviço pai é utilizado quando desejarmos criar uma árvore de serviços com serviços dependentes, chamado filhos.
.- A escolha do algoritmo de cálculo do status deve ser bem analisada. Você pode optar por não fazer nenhum cálculo ou analisar os incidentes se pelo menos um filho tiver problema ou se todos os filhos estão com problemas. Quando você estiver utilizando serviços filhos e o algoritmo escolhido for analisar se todos os filhos estão com problemas, o ideal é você não calcular os SLAs dos serviços filhos e deixar esse cálculo apenas para o serviço pai, já que o SLA só será calculado se ocorrer problemas em todos os serviços filhos ao mesmo tempo. r
O campo Posicionar em é utilizado para enfileirarmos os serviços de acordo com a ordem escolhida. Na aba Dependências, podemos escolher outros serviços de que este serviço depende. Porém, devemos observar se ele já possui dependentes. Caso possua, você deverá marcar a opção Soft para criar essa ligação de dependência. É como se fosse um afilhado; você considera como pai.
p Quando criamos um serviço filho e apontamos um serviço pai (com exceção da raiz), automaticamente essa dependência é criada na configuração do serviço pai. Não é possível criar dependência de serviços filhos. r
Na aba Data é possível configurar horários específicos de cálculo do serviço de TI. Portanto, é uma boa alternativa se você estiver calculando o SLA de serviços que apenas são importantes em determinado período, como, por exemplo, o horário comercial.
No monitoramento dos serviços de TI, os nomes dos serviços possuem links onde podemos ter um relatório de disponibilidade dos serviços de TI, conforme é exibido na figura a seguir:
118 Monitoramento de Redes com Zabbix
0.
Aló
04 M.auaa MU 0404
2.3 0404
254044*0)0404
0I'aOQUXSI
',.auaa
u...auooa
*05040400404
$l..25U0004
SISaSIOSIa ao.auaso
o.
4*00
1w04...W..
II
*
.-.
.
AI04
~MUNO 0*
)LM.04U0404 ~MIJOU
20*..
(04
04
4*4) 4* CO
...
o. a o.
o
040.'
04000.
04000.
40404..'
":-
C40.O.
04000
.0
04ItO.
04000.
5
ososo..
0*000.
otto'
2.44-
040-0-
04000.
0*0000.
.00200
4.6.2-
0400..
.- ..
010 0
50
000
040404
.- o.). 4..
.4'.
040404 04
04.04040404
ti &1w0404 0404
11'Jo XL) 0200
J54 .MO XCO
*.
au aa
os
osoto-
0*000.
00004
a
a
4*4)0404
4404.204)0404
-
2*4-
04040.
-. .'-
SI
0* a. au aa a a. 0400100
.o- o-.
04000.
00045.
2.6*2-.
01050-
0*0004.
04045.
au a a
04 Ao. 4*0)0400
0*4200)4*4*
*a.auaa
22~39134990
2: £0- 4*020424
OS M10
ao o:
2.
. . O. 004.
-
04
.
-—
• 55
Ainda na tela, temos também a opção de selecionarmos o período, que pode ser: diário, semanal, mensal e anual, além do ano desejado. Na tela de monitoramento de serviços de TI, ao clicarmos no nome da trigger relacionada ao serviço, seremos direcionados para a tela de histórico de eventos da trigger, onde poderemos verificar quando o evento ocorreu. Também temos a opção de clicar na barra de progresso da coluna Hora do incidente. onde poderemos ver um gráfico com os últimos 20% do indicador de SLA.
15 Ampliando o Monitoramento com Parâmetros de Usuários Já sabemos que o Zabbix é um sistema de gerenciamento de rede muito completo. Porém, às vezes precisamos ter um monitoramento mais detalhado ou até mesmo personalizado ao nosso ambiente que, com os itens predefinidos do Zabbix, nós não conseguimos realizar essa coleta específica. O Zabbix disponibiliza em seu arquivo de configuração do agente (zabbix_agentd.conf) o parâmetro de configuração UserParameter. Ele permite que você execute algum comando para que o Zabbix receba o resultado da execução. ou seja, a métrica que você deseja coletar e testar. A sintaxe para configuração do UserParameter é a seguinte: UserParameter=key,command
1
Podemos observar na sintaxe que o UserParameter também possui uma chave. Ela deverá ser criada e precisa ser única para utilizarmos na configuração de um novo item. Quando formos cadastrar um novo item para o monitoramento, é essa chave que iremos informar. Vejamos o exemplo a seguir:
iserParameter=pegavideo,1spci 1 grep VGA l cut -d : -f 3 l sed -e 'sI' II'
120 Monitoramento de Redes com Zabbix Criamos a chave pegavideo. O comando que será executado vai retornar a placa de vídeo instalada no sistema. Vamos fazer um teste com o zabbix_get para verificar se está funcionando:
1 zabbixget -s localhost -k pegavideo" O resultado será:
Advanced Micro Devices [AMD] nee ATI RV710 IRadeon HD 45501 Lembre-se sempre que, ao alterarmos os arquivos de configuração do Zabbix, devemos reiniciar o serviço. Nesse nosso exemplo estamos alterando o arquivo do agente. Portanto, devemos reiniciar o serviço do agente sempre que fizermos alteração em sua configuração. Obs.: um comando executado pelo UserParameter poderá retornar no máximo 512 KB de dados para ser processado pelo Zabbix. Ultrapassando este valor, o item será descartado.
Podemos melhorar a funcionalidade do UserParameter criando chaves que aceitem mais de um parâmetro. Essa técnica é conhecida como Flexible UserParameter. Sua sintaxe é a seguinte: UserParameter=key[*J,command
.
O símbolo * significa que a chave aceita mais de um parâmetro. Para isso, o comando executado irá avaliar o valor da chave através de substituição dos parâmetros por $1, $2, $3.....$9. Vejamos o exemplo a seguir:
UserParameter=pegamac[*],ifconfig $1 1 grep $1 l cut -d 4
'
-
f 13
Criamos a chave pegamac. O comando que será executado vai retornar o endereço MAC da interface de rede passada por parâmetro na chave pegamac. Vamos fazer um teste com o zabbix_get para verificar se está funcionando:
* zabbix_get -s loca].host -k "pegamac(ethoj"
Ampliando o Monitoramento com Parâmetros de Usuários 121 Observe que o parâmetro passado foi ethO, pois é a interface cujo endereço MAC eu desejo saber. Caso seja passada uma interface que não exista no sistema, não será retornado nenhum endereço. Para criarmos os itens que serão monitorados, devemos seguir o mesmo critério do teste com o comando zabbix_get. Se você deseja monitorar a interface eth2, deverá criar o item com a chave pegamac[eth2]. Os exemplos demonstrados aqui são bem simples, mas mostram o potencial de flexibilidade que o Zabbix permite para que personalizemos o monitoramento a cada ambiente. Com o uso de UserParameter conseguimos monitorar muita coisa. Vimos que podemos custornizar nosso monitoramento através de UserParameter. Com o uso de UserParameter conseguimos monitorar qualquer serviço, desde que possamos obter informações através da execução de comandos, podendo inclusive ser utilizados scripts (veremos exemplos de aplicação do UserParameter nos tópicos 18.2, 18.5 e 18.7). Também é de suma importância testar essas customizações antes de cadastrarmos os itens na interface web. O usuário zabbix deve ter permissão para executar tais comandos e scripts. Por isso, é recomendado que se use o comando sudo quando necessário.
Comandos Remotos Além da personalização de scripts para coleta dos dados dos itens, também podemos criar scripts que serão executados diretamente na interface web do Zabbix. A execução destes scripts pode ser feita nas telas de Dashboard, Telas e Mapas. O Zabbix já vem com alguns scripfs configurados, conforme podemos observar na figura a seguir, obtida através do menu Administração > Scripts:
Su%pb
'15515.OØIO11 co~
I45
$4
5.15
$siøi
i.15.,
'1S1S.1 3ØIO1 CO,is
1..
Is..s.
•...,
:..s. ?.is.
t11515
.,,
..
Vamos testar a execução do script Ping pela tela de Dashboard. Conforme figura a seguir, dique no nome do host TesteLivro localizado no painel Últimos 20 incidentes:
Wsmi
Detect operating systm Ping Tracaroute
Dados recentes
5 si fite
ic. 990
22
iJ$CraÇO
4 Idade
küe,maça. Rec4PMc.do AçõeIk
2h SQm 33s
1 dai Isddsss saida e.dsa
Comandos Remotos 123 Aparecerá o menu suspenso com os scripts cadastrados. Vamos clicar em Ping e o seu resultado.
RING 127 001 (127001) 56(84)
ver
bytas of data
64 bytes fro. 127001: iciup_s.q.1 tt164 ti.r'O 026 as 64 byt.s fro. 1270.01: ic_s.q'2 ttl'64
tias.O
024 as
64 bytss fro. 127.0.0.1: ic.p_s*q.3 ttl.64 tis"O 028 as
127.0.0.1 png statistics 3 pack.ts transattted, 3 r,c.xved, 0% packet loas, tia* 2000.s rtt ain/avg/.ax/.dev
O 02410 026/0 02810 001 es
a
Será exibida uma nova janela com o resultado do comando. Para cadastrarmos um novo script, clicamos no botão Criar script ' , através do menu Administração > Script. Vamos criar um script que irá executar o comando uptime para verificar o tempo que o
host está no ar. Insira os dados nos campos conforme a seguir: . Nome Tipo
Uptime Script
Executar em - agente Zabbix Comandos
uptime
O restante dos campos não precisa ser alterado. Podemos salvar as configurações e acessar a tela de Dashboard para testarmos a execução do script para o hos( TesteLivro. Podemos observar que o nosso script já está sendo listado no menu: LJirflTlr1!rnL-L
b a a na iniciface ,rP
Deteci operating system
•
Ide 1cdeMis sendo egbêdo
__________________________________ _______
Ring Traceroute
-
uptme .
Ilou
D•seeidwddo
Dados recentes
E a seguir temos o resultado da execução do script.
124 Monitoramento de Redes com Zabbix
12 48 13 up 19 days, 2110, 8 users, load av•rag. O 17, O 24, O 23
Poderá aparecer a tela de erro, conforme figura a seguir:
eu
RRO: No foi possível coneclat na poita de appei do daemon do servidor zabbx, mas ele deve estas disponavel para executas o scr.pI.
Para resolver este problema, você deve verificar se a opção para executar comandos remotos está ativada no arquivo de configuração zabbix_agentd.conf. O parâmetro EnableRemoteCommands deverá estar com valor 1. Após alterar o arquivo, reinicie o serviço responsável pela execução do Zabbix Agent e teste novamente. Outra maneira bastante útil de executarmos comandos remotos é utilizarmos ações para executar comandos quando precisamos, por exemplo, restabelecer um serviço. No capítulo 7 aprendemos como criar uma ação para mandar uma mensagem. Vamos agora criar uma ação para executar um comando remoto. Comandos remotos podem ser dos seguintes tipos: script personalizado, IPMI, SSH, Telnet e script global (visto neste capítulo). Realizaremos um teste utilizando um script personalizado, que neste caso será a execução de um comando. Executaremos um comando para gravar o texto "parou de funcionar" no arquivo / tmp/a.txt quando a trigger Disponibilidade site Google estiver com problema, ou seja, quando for disparado o alarme de incidente. Acesse o menu Configuração > Ações e crie uma nova ação com os seguintes dados: Na aba Ação: Nome Execução de comando remoto Duração padrão de cada passo da operação - 60 Na aba Condições: Nova condição - Trigger = uTesteLi vro: Disponibilidade site Google" Na aba Ações: - Tipo da operação Comando remoto Lista alvo Selecione o host TesteLivro r
Tipo - Script personalizado
Comandos Remotos 125 Executar em Agente Zabbix Ir
Comandos - echo "parou de funcionar" > /tmp/a.txt
Algumas observações a respeito de execução de comandos remotos: Os comandos remotos são executados com o usuário zabbix.
.
O usuário zabbix não tem permissão para executar scripts de serviços, como por exemplo, reiniciar o serviço httpd. Para os comandos em que o usuário zabbix não tiver permissão para execução, esta deverá ser configurada no arquivo /etc/sudoers.
r
Os comandos executados no Zabbix Agent não gravam Iog informando se tiveram sucesso em sua execução. Já os executados no Zabbix Server gravam a informação de execução desses comandos no log. Alguns sistemas, como no caso do CentOS, não permitem que usuários não locais, ou seja, sem interação no shell, executam comandos. Para resolver isso, comente a opção requiretty do arquivo /etc/susoers.
Vamos a um exemplo para executar um comando remoto para reiniciar um serviço. Digamos que você queira tentar reiniciar o serviço sshd toda vez que a trigger que verifica esse serviço gerar um incidente. Você terá que dar permissão para o usuário zabbix executar o arquivo /etc/init.d/sshd. Para isso, utilizamos o comando visudo e incluímos o seguinte conteúdo:
zabbix ALL=(ALL) NOPASSWD: /etc/init.d/sshd Isso significa que o usuário zabbix poderá executar o comando /etc/init.d/sshd sem o uso de senha. Portanto, ao criarmos a ação, deveremos colocar o seguinte comando:
sudo /etc/init.d/sshd restart A partir dessa configuração, podemos escalonar o envio de mensagens, ou até mesmo a execução de outros comandos remotos, para tentar restabelecer o serviço, caso este não volte a funcionar. É possível automatizar muita coisa e poupar tempo e esforço para resolver muitas tarefas com o Zabbix.
17 Analisando Logs e Interpretando Erros Comuns O Labbix possibilita trabalharmos com cinco diferentes níveis de /ogs. Os níveis de configuração para os Iogs 5O: O - no debug: não grava nenhuma mensagem no Iog do sistema. 1 - critical information: grava apenas mensagens de condições críticas. 2 - error information: grava mensagens de erros. Por exemplo: consultas ao banco de dados que não tiveram sucesso; erro de conexão com o banco de dados etc. r
3 - warning: grava mensagens de advertência que ocorrem no sistema em
r
4 - debugging: grava todos os eventos ocorridos. Ideal para análise detalhada.
Para alterarmos o nível de configuração do Iog, basta configurarmos o parâmetro DebugLevel nos arquivos de configuração do servidor e do agente do Zabbix. Lembre-se que, a cada alteração nos arquivos de configuração do Zabbix, devemos reiniciar o serviço correspondente. Podemos analisar as entradas do log em tempo real utilizando o comando tail com a opção -f, bastando informar o nome do arquivo. Nos arquivos de configuração que fizemos de exemplo nesta obra, nós informamos que os arquivos ficariam na pasta / optlzabbixjlog, com os nomes zabbix_agentd.log e zabbix_server.log, respectivamente, para Zabbix Agent e Zabbix Server. A seguir podemos ver urna saida do arquivo zabbix_ agentd.log com o comando tail com o nível de Iog configurado para o modo debugging:
Analisando Logs e Interpretando Erros Comuns 127
1 tail -f /opt/zabbix/1og/zabbix_agertd.1oy 18264:20130930:133733.135 Starting Zabbix Ager.t IZabbix Server Zabbix 2.0.8 (revision 38017). 18264:20130930:133733.135 In initcollectordata() 18264:20130930:133733.135 End of init_collectordata() 18266:20130930:133733.136 agent *0 started (coliector) 18266:20130930:133733.136 In initcpucollector() 18266:20130930:133733.136 End of initcpucoilector() :SUCCEED 18266:20130930:133733.136 In update_cpustats() 18267:20130930:133733.136 agent 11 started (listener] 18266:20130930:133733.137 End of update_cpustats() 18268:20130930:133733.137 agent 12 started (listener) 18269:20130930:133733.137 agent *3 started (listener) 18270:20130930:133733.137 agent *4 started (active checks) 18270:20130930:133733.137 In init_active metrics() 18270:20130930:133733.138 Buffer: first aliocation for 100 elements 18270:20130930:133733.138 In sendbuffer() host:'127.0.0.1' port:10051 values:0/100 18270:20130930:133733.138 End of send_bufferO:SIJCCEED 18270:20130930:133733.138 refresh_active_checks('127.0.0.1',lOOSl) 18270:20130930:133733.138 sending (( "request": "active checks", "host":"Zabbix Server") 18270:20130930:133733.138 before read 18270:20130930:133733.138 got. (( t'response": "failed", 'info":"host (Zabbix Server) not monitored")) 18270:20130930:133733.138 Ir. parse_list_of_checks() 18270:20130930:133733.139 In disable_all_metrics() 18270:20130930:133733.139 No active checks on server: host (Zabbix Server) not monitored 18270:20130930:133733.139 In process active checks('127.0.0.1' ,10051) 18270:20130930:133733.139 Er.d of process_active_checks() 18270:20130930:133733.139 In get_ min _nextcheck() 18270:20130930:133733.139 Sleeping for 1 second(s) 18266:20130930:133734.137 In update_cpustats()
128 Monitoramento de Redes com Zabbix
18266:20130930:133734.137 End of update_cpustats() 18270:20130930:133734.139 In sendbuffer() host:'127.0.0.1' port:10051 values:0/100 18270:20130930:133734.139 End of send_bufferU:SUCCEED 18270:20130930:133734.139 Sleeping for 1 second(s) Além de verificarmos possíveis erros que possam acontecer visualizando os arquivos de Io8s do Zabbix, também podemos receber mensagens de erros que são exibidas na interface web. Vejamos alguns exemplos: A figura a seguir representa um erro que pode acontecer quando o Zabbix Agent recusar a comunicação com o Zabbix Server. 0$ Windows (Templat, Ap Zabbix AQCnS)
Monétoado
•DEJLJ Fechai
4
Getvalue Irom agenttailed: Z8X_TCP_READfa,ed: (104) Connection resei by peer
Isso acontece quando o arquivo de configuração do agente aponta para o IP/DNS de outro servidor. Exemplo: o Zabbix Server 192.168.0.100 tem o host cadastrado em sua interface web, porém o parâmetro Server do arquivo de configuração do Zabbix Agent está apontando para outro servidor, com IP 192.168.0.50. Ou seja, não adianta o servidor 192.168.0.100 solicitar as informações dos itens cadastrados para o Zabbix Agent do host, pois este só irá fechar uma comunicação com o servidor 192.168.0.50. A figura a seguir representa outro exemplo de mensagem de erro na interface web. empate Livro
Monitorado Fechar
- Getvalue from ageni failed carrnot corrnect to [(12700
11 100501 (111) Connectron refused
Este erro acontece quando o Zabbix Server não consegue comunicação com o Zabbix Agent. Geralmente acontece quando o serviço do Zabbix Agent está parado ou a porta de comunicação que está configurada no agente está diferente da porta configurada no cadastro do host na interface web. Nosso último exemplo é representado pela figura a seguir: O Temoat, OS Windows (T.mIat, ADD Zabbit Aen;)
Monitorado
Fechai Get vaRie from ageni failed: cannot connecr to [(192 1157 0 123j:10050) (4) 1 nt.rrupted syst.m cal
Analisando Logs e Interpretando Erros Comuns 129 Este erro acontece quando temos um firewall bloqueando a comunicação do Zabbix Server com o Zabbix Agent do host monitorado. Teríamos muitos outros exemplos a exibir, porém tenha em mente que erros podem acontecer de formas diferentes de acordo com o ambiente monitorado. Portanto, a dica é analisar cada detalhe do erro e, se possível, fazer uma análise tentando simular o erro com ferramentas disponíveis do próprio Zabbix, como o zabbix_get e zabbix_sender, que veremos no próximo capítulo.
o II Tópicos Especiais Neste capítulo serão demonstrados alguns exemplos práticos de monitoramento e técnicas avançadas que podem ser implementados com o Zabbix.
18.1 Monitoramento JBoss Uma das mais recentes funcionalidades implementadas no Zabbix é o monitoramento JMX. Em versões anteriores à 2.0, era necessário utilizar ferramentas de linha de comando como Twiddle ou desenvolvidas em Java, como o ZapCat. Monitorar um servidor de aplicação como o JBoss é muito importante para você saber como está o consumo de recursos computacionais utilizados pela Máquina Virtual Java e as aplicações hospedadas no servidor. Imagine um administrador ter que ficar reiniciando o serviço do JBoss a cada cinco dias e não saber o motivo pelo qual as aplicações estão travando. Pode estar acontecendo um consumo excessivo de memória, ou pouca memória RAM foi alocada para o servidor de aplicação, e até mesmo pode estar ocorrendo falta de limpeza de memória por parte da aplicação, o conhecido coletor de lixo do Java. Por esse motivo devemos ter um monitoramento unificado com o Zabbix, e não ficar utilizando uma ferramenta para cada situação. Monitorando esses recursos, você pode ter um melhor embasamento para discutir com outras equipes, informando onde estão ocorrendo as falhas que anteriormente não eram identificadas e cuja culpa sempre caía na conta da equipe de administração e suporte dos sistemas. Para o monitoramento JMX funcionar, o Zabbix deve ser compilado com a opção --enable-java. Para saber se foi compilado com esta opção, podemos verificar se o diretorio zabbixjava foi criado na instalação. Seguindo o exemplo deste livro, esse diretório
Tópicos Especiais 131 deverá estar localizado em /optlzabbixisbin/zabbixjava/. O diretório tem a seguinte estrutura:
zabbix_j ava / bin zabbix-java-gateway-2 lib logback-classic-0.9.2 - logback-console.xml - Iogback-core-'O. 9.27.j [- logback.xml org-json-2010-12-28.j L_.._ slf4j-api-I.6.1.jar settings sh shutdown. sh startup.sh
L_
1-
F 1 F-
Neste diretório temos alguns pacotes .jar que são utilizados pelo daemon chamado Zabbix Java Gateway. O funcionamento deste daemon é bem simples. Quando o Zabbix Server quer saber o valor de um conector JMX, ele faz a requisição ao Zabbix Java Gateway. Este fica responsável por interagir com a aplicação através de uma API de gerenciamento JMX. Por esse motivo, só é possível fazer este tipo de monitoramento no modo passivo. Para que o monitoramento JMX funcione, o serviço deve estar em execução. Os scripts utilizados para iniciar e parar o serviço Zabbix Java Gatway estão presentes no diretório zabbixjava. São eles: startupsh e shutdown.sh . Existe ainda o arquivo settings.sh, utilizado para configurarmos, por exemplo, o arquivo de identificação da execução do processo. É recomendável criar os serviços para os scripts startup e shutdown e ajustar o startup para ser iniciado após a execução do zabbix_server. O Zabbix Java Gateway é executado na porta 10052. Podemos observar o fluxo de comunicação entre o Zabbix Server, o Zabbix Java Gateway e o JBoss na figura a seguir:
12345/TCP-
Sefvidof Zabbix
Zabbix Java Gateway
Seror BOIS
132 Monitoramento de Redes com Zabbix Nosso exemplo será realizado utilizando a versão 5.1 do JBoss. Vamos ajustar algumas configurações no arquivo zabbix server.conf, conforme as seguintes informações:
JavaGateway=< ip_servidor_zabbix> JavaGatewayPort=10052 StartJavaPol lers=5 Após gravar o arquivo, precisamos reiniciar o serviço do Zabbix Server. Fizemos a configuração no Zabbix, porém só teremos esse monitoramento funcionando se habilitarmos os parâmetros de monitoramento JMX no arquivo de configuração do serviço do JBoss. No meu servidor, este arquivo está localizado em /opt/jboss/bin/run.conf. Vamos acrescentar o seguinte conteúdo no final do arquivo:
JAVA_OPTS="$JAVA_OPTS -Dcom. sun .management. jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom. sun.rnanagement.jmxremote.port-12345" JAVA_OPTS="$JAVA_OPTS -Dcom. sun.management. jmxremote.ssl-false" JAVA OPTS="$JAVA OPTS -Dcom. sun .management. jmxremote. authenticatefa1se" Agora é preciso reiniciar o serviço do JBoss para que o Zabbix Java Gateway comece a coletar as informações que serão cadastradas nos itens para o host. Neste momento podemos cadastrar a interface JMX no host que iremos monitorar. Na configuração do host TesteLivro, iremos inserir o endereço IP e a porta 12345, que foi configurada no arquivo run.conf do JBoss, conforme ilustra a figura a seguir: L77QQ
-
• ...,,
Criamos um item a ser monitorado com os seguintes valores: Nome - Memória Heap usada
Tipo JMXAgent Chave jmx["java.lang:type = Memory""HeapMemoryUsage. used"J Tipo de informação - Numérico (inteiro sem sinal) Unidades - B A partir desse ponto podemos criar triggers e ações para complementar nosso monitoramento. 0 Zabbix vem com o template JMX Generic, que pode ser utilizado pelo JBoss e
Tópicos Especiais 133 outros servidores de aplicação, como, por exemplo, GlassFish, Web Logic, entre outros. O ideal é entender o que deve ser monitorado. Para isso, sugiro uma leitura do conteúdo dos seguintes links: http://docs.oracle.comljavase/1 . 5.O/docs/guide/managementlagent. html e http:lldocs.oracle.com/javase/1 . 5.O/docs/guide/managementloverview.html, que versa sobre monitoramento JMX. Na figura a seguir podemos visualizar um gráfico criado a partir do item que fizemos no exemplo deste tópico: t1c.p(1d) 1 I3GI 13347 l 743W em
Ml 43 os
S
i mil m*d DOII.4*Ip3liI (Médi 1011*41* 10143* 1022493* 101ISIMI (MMI 312541* *51323* UonM.lpuMd 743*3* 3324499 oii*leipCmvmmld (MMI 1021140* 10*433* 1032473* 10235*0* ØO414S15 MM Ii*0I ata 1 OS 101 1 OS
•
18.2 Monitoramento Apache Este é um dos monitoramentos que eu acho mais importantes. Apache é o servidor web mais utilizado no mundo e, nos dias atuais, toda empresa tem um servidor web interno, seja para aplicações, portais e até mesmo para hospedar o próprio site. Imagine a importância desse monitoramento para as empresas de hospedagem de sues, que possuem várias instâncias desse servidor e milhares de sites hospedados. Certo dia eu estava procurando detalhes de como monitorar o servidor Apache e encontrei um texto na Wiki do Zabbix (http://www.zabbix.com/wiki/templates/apache) que demonstrava três métodos de fazer o monitoramento do Apache, dois utilizando Python e um utilizando bash script. Como o Zabbix é um software licenciado sob a GPL, tomei a liberdade de modificar o script disponível na Wiki para tornar a consulta mais rápida usando os comandos fgrep e awk em vez de executar um echo, como demonstrado na Wiki. Na Wiki, além de ser executado um echo, em seguida era utilizado grep e awk. Bem, customização cada um faz a sua. Portanto, demonstrarei o script que eu ajustei para suprir minhas necessidades na época e que até hoje utilizo. O conteúdo do script é o seguinte:
134 Monitoramento de Redes com Zabbix
1 ! /bin/bash host"1oca1host" resposta-O tmp="/opt/zabbix/tmp/apache status" pega_status='wget --quiet -O $tmp http://$host/server-status?auto' case $1 in TotalAccesses) $pega_s tatus fgrep "Total Accesses:" $tmp 1 awk '(print $3)' resposta=$?;; TotalKBytes) $pega_status fgrep "Total kBytes:" $tmp 1 awk '(print $3)' resposta=$?;; Upt ime) $pega status fgrep "Uptime:" $tmp 1 awk '(print $2)' resposta-$?;; ReqPerSec) $pega_sta tus fgrep "ReqPerSec:" $trnp 1 awk '(print $2)' resposta=$?;; Bytes PerSec) $pega status fgrep "BytesPerSec:" $tmp i awk '(print $2)' resposta=$?;; BytesPerReq) $pega_status fgrep "BytesPerReq:" $tmp 1 awk '(print $2)' resposta=$?;; BusyWorkers) $pega_status fgrep "BusyWorkers:" $tmp i awk '(print $2)' resposta=$?;; Idleworkers) $pega_status fgrep "IdleWorkers:" $tmp 1 awk '(print $21' resposta=$?;;
Tópicos Especiais 135
WaitingForConnect ion) $pega_status fgrep 'Scoreboard:" $tmp 1 awk '(print $2}' FS - "" ) ; { print NF-1 )' resposta-$?;; Startingup) $pega status fgrep "Scoreboard:" $tmp 1 awk '(print. $2) 1 1 awk 'BEGIN FS = "S" } ; ( print NF-1 1' resposta=S?;; ReadingRequest) $pega_status fgrep "Scoreboard:" $tmpl awk '{print $21 1 1 awk 'BEGIN FS = "R" ) ; ( print NF-1 )' resposta=$?;; Sendi ngRepl y) $pega_status fgrep "Scoreboard:" $tmp 1 awk '(print $2)'1 awk 'BEGIN FS = "W" ) ; 1 print NE'-1 )' resposta=$?;; KeepAl ive) $pega_status fgrep "Scoreboard:" $tmp 1 awk '{print $2) 1 1 awk 'BEGIN FS = "1<" ) ; ( print NF-I )' resposta=$?;; DNSLookup) $pegas tatus fgrep "Scoreboard:" $tmp 1 awk '{print $2) 1 1 awk 'BEGIN FS = "D" 1 ; ( print NF-1 )' resposta=$?;; ClosingConnect ion) $pega_status fgrep "Scoreboard:" $tmp 1 awk '(print $2) 1 1 awk 'BEGIN FS = "C" ) ; ( print NF-1 }' resposta=$?;; Logging) $pega_s tatus fgrep "Scoreboard:" $tmp 1 awk '(print $2) 1 1 awk 'BEGIN 4 FS = "L" 1 ; 4 print NF-1 }' resposta=$?;;
136 Monitoramento de Redes com Zabbix
Gracefu]. lyFinishing) $pega_status fgrep "Scoreboard:" $tmp 1 awk '{print $21'1 awk 'BEGIN 1 ES = "G" } ; ( print NF-1 )' resposta=$?;; IdleCleanupOfWorker) $pega_status fgrep "Scoreboard:" $tmp l awk '(print $2) 1 1 awk 'BEGIN 1 ES "1" } ; ( print NF-1 )' resposta-$?;; OpenSlotWi thNoCurrentProcess) $pega_sta tus fgrep "Scoreboard:" $trnp 1 awk '(print $2) 1 1 awk 'BEGIN FS = "." ; ( print NF-1 }' resposta=$?;; echo "ZBX_NOTSUPPORTED" esac if ( "$resposta" -ne O ; then echo "ZBX_NOTSUPPORTED" fi exit $resposta Copie esse script e grave o arquivo com o nome desejado. Minha sugestão e apache.sh Eu costumo armazenar meus scripts personalizados para monitoramento no diretório /optl/zabbixlexternalscripts/. Após salvar o arquivo, precisamos editar o arquivo de configuração zabbix_agentd.conf do servidor que será monitorado e adicionar o seguinte conteúdo:
Userparameter=apache(*) , /opt/zabbix/externalscripts/apache.sh 1 $1' Ë necessário reiniciar o agente do Zabbix após modificar o arquivo. O que acabamos de fazer, como vimos no capítulo 15, foi incluir um monitoramento inexistente no Zabbix, utilizando um scrip( que será executado através do Userparameter. Isso devido ao Zabbix permitir essa flexibilidade de entregarmos um resultado que ele conseguirá ler, e posteriormente realizar o tratamento adequado, através de itens e tnggers que configurarmos.
Tópicos Especiais 137 Essa configuração executará o script apache.sh com o parâmetro que estará cadastrado em cada item. Cada item que deveremos cadastrar é o que consta na estrutura case do scrip(, como por exemplo: Uptime e TotalkBytes. Sendo assim, quando o Zabbix for coletar um desses itens, o scrip( será executado com o parâmetro adequado, que executará a consulta na página de status do Apache pelo programa wget e retornará apenas o valor do item que desejamos coletar. Para cadastrarmos os itens de monitoramento do Apache, disponibilizei o template neste endereço: https:lldocs.googie.com/open?id=OB-llJgvsafwKSOtiNNOFobFZfTVU. Este template é bastante útil, pois também tem alguns gráficos configurados. Após baixar esse template, basta importá-lo e associá-lo ao host que será monitorado. Vimos no tópico 8.2 como importar templates. Para que o monitoramento do servidor Apache funcione, não basta apenas fazer as configurações no Zabbix. É preciso verificar se o parâmetro ExtendedStatus está configurado no arquivo de configuração do Apache com a opção On. Como estou utilizando o CentOS, o arquivo de configuração é Ietc/httplconffhttpd.conf. Procure esse parâmetro e verifique se a opção está 0ff. Se sim, altere para On. Esta opção libera o uso de verificação do status do servidor Apache. Em seguida, devemos incluir no final do mesmo arquivo o seguinte conteúdo:
SetHandier server-status Order deny,allow Deny from ali Allow from 127.0.0.1 Observe que o IP liberado para acessar as informações do servidor Apache é 127.0.0.1, no caso o mesmo servidor onde está instalado o Zabbix neste exemplo. Modifique o endereço IP para o Zabbix Server, caso necessário. Após salvar o arquivo de configuração do Apache, reinicie o serviço httpd. Seu monitoramento estará pronto para coletar os dados dos itens que foram cadastrados, bastando agora configurar as triggers para gerar os alertas necessários.
18.3 Monitoramento IPMI O Intelligen( Platform Management Interface (1PM 1) é um padrão usado para gerenciar um sistema de computador e monitorar seu funcionamento. Seu desenvolvimento foi liderado pela Intel e hoje em dia é suportado por mais de duzentos fabricantes de hardware.
138 Monitoramento de Redes com Zabbix
Seu funcionamento não depende de um sistema operacional, o que permite que os administradores gerenciem remotamente os recursos de hardware antes mesmo de ter iniciado o sistema operacional. Podemos monitorar via IPMI temperaturas do sistema, voltagens, ventoinhas (fan), fontes de alimentação, intrusão do chassi etc. Uma interface IPMI coleta as informações utilizando sensores que são os responsáveis por disponibilizar essas informações em tempo real. Um hardware que possui IPMI disponibiliza uma interface web para gerenciamento remoto. Exemplos 5O: IMM, da IBM; iLO, da HP; DRAC, da Dell. Antes de fazermos qualquer tipo de configuração IPMI no Zabbix, precisamos saber quais sensores precisamos monitorar. Mas como pegamos uma lista de sensores de determinado hardware? Se você não tiver o manual do hardware informando como acessar essas informações, precisaremos executar alguns comandos no shell do GNU/Linux. No GNU/Linux, existe um pacote disponível chamado ipmitool. Este pacote está disponível nos repositórios da distribuição CentOS. Para outras distribuições, faça uma busca apenas com o parâmetro ipmi. Utilize o YUM para instalar o pacote, pois ele é necessário para fazermos consultas dos sensores em um host que possui interface 1PM 1. Execute o seguinte comando:
1 yum instali ipmitoo]. - y Agora testaremos o alvo, ou seja, enviaremos uma requisição para o servidor que iremos monitorar via IPMI para sabermos quais sensores estão disponíveis para monitoramento.
1 ipmitool -H -u -p sdr Se quisermos obter mais detalhes, tais como nível não crítico, nível crítico e fatal, podemos executar o seguinte comando:
1 ipmitool -H -U -p sensor Existem outras maneiras de executar o comando ipmitool para exibir as informações dos sensores de uma interface 1PM 1. Seu leque de opções é extenso e é possível
Tópicos Especiais 139 obter informações mais detalhadas. Isso pode ser verificado consultando o manual do comando. Demonstramos como consultar os sensores disponíveis para que possamos fazer um monitoramento dos sensores IPMI. O Zabbix possui monitoramento nativo para interfaces lPMl. Agora que já aprendemos a consultar os sensores, vamos cadastrar nosso monitoramento IPMI no Zabbix. Antes, precisamos instalar os seguintes pacotes: OpenlPMl-libs OpenlPMl-devel r
ipmitool
Esses pacotes estão no repositório da distribuição CentOS. Para outras distribuições, faça uma busca apenas com o parâmetro ipmi. Por exemplo, no Debian: apt-cache search ipmi. Para que o monitoramento via lPMl funcione, é muito importante que você tenha compilado o Zabbix com a opção --with-openipmi. Para saber se você compilou o Zabbix com essa opção, procure no diretório onde se encontra o código-fonte e verifique no arquivo config.log se existe uma linha com #define HAVE_OPENIPMI 1. O próximo passo é habilitar a opção para monitoramento lPMl no arquivo de configuração zabbix_server.conf. Para isso, tire o comentário da linha StartlPMlPollers— 1 Após salvar o arquivo, reinicie o serviço do Zabbix Server. t /etc/init.d/zabbix_server restart O exemplo que será exibido neste capítulo foi coletado de um servidor IBM System x3550 M3. Os sensores que utilizaremos no exemplo são Ambient Temp e Fan lA Tach. O sensor Ambient Temp coleta a temperatura ambiente onde o servidor está instalado, e o sensor Fan lA Tach coleta a velocidade da Fan 1 instalada no servidor. Vamos as configurações. Acesse a configuração do hos( que você deseja fazer o monitoramento IPMI. Na aba Host, dique no Jink 'Adicionar' dentro do painel Interfaces IPMI e informe o IP ou nome DNS da interface lPMl e deixe a porta 623, que é a porta padrão deste protocolo. Caso você não consiga conexão, verifique no manual do seu hardware qual é a porta para acesso ao gerenciamento remoto. A figura a seguir exibe esse painel:
140 Monitoramento de Redes com Zabbix
O próximo passo é incluirmos as demais informações na aba 1PM 1, ainda dentro das configurações do host que será monitorado. Aqui, deveremos escolher o algoritmo de autenticação e o nível de privilégio, além de informarmos o usuário e a senha para acesso. Nesse exemplo, para ter acesso ao servidor informado anteriormente, utilizaremos o algoritmo Padrão e o usuário Admin. Lembrando que essas configurações devem estar de acordo com a configuração que você fez na interface IPMI do seu servidor. A figura a seguir exibe as opções da aba IPMI. IPMI
Macros
Algoritmo de autenucaço
ventár
Padrio Uenhum 1.102 II05 Suaight CEM RMCP+
UiveI de privilégio
Callback Usuário Operador
-
Admin OEM
-
Usuário Senha
Agora temos o servidor habilitado a realizar o monitoramento IPMI e podemos criar os itens para o monitoramento. As chaves dos itens que criamos são personalizadas, pois o que importa para monitorarmos uma interface IPMI são os sensores. Neste caso, crie chaves com as quais você pode identificar cada sensor. Vamos criar um item para o sensor Ambiente Temp com os seguintes dados: Nome
Temperatura Ambiente
Tipo- Agente IPMI Chave - ipmi.ambient.temp Sensor IPMI Ambient Temp Tipo de informação - Numérico (fracionário) Unidades C
Tópicos Especiais 141 O objetivo desse item é monitorar a temperatura ambiente do local onde o host está fisicamente instalado. Criaremos mais um item com os seguintes dados: Nome - Velocidade FAN lA . Tipo - Agente IPMI Chave ipmi.fan.la .tach Sensor IPMI - Fan lA Tach Tipo de informação - Numérico (fracionário) Unidades - RPM Este item monitora a velocidade em RPM da ventoinha cujo sensor é FAN lA Tach. O ideal é você verificar no manual do hardware qual é o elemento que o sensor está monitorando, justamente para essa informação não ficar vaga. Agora iremos criar uma trigger para alertar caso a temperatura ambiente passe de 40 C. Ainda na tela de configuração do host, crie uma nova trigger com os seguintes dados: Nome Temperatura ambiente está acima do padrão ..- Expressão {TesteLivro:ipmi.ambient.temp.last(0)}> 40 Assim que o Zabbix Server começar a coletar os itens configurados e a temperatura for maior que 40, a trigger irá disparar o alerta. Obviamente, esta trigger pode ser melhorada, como, por exemplo, fazendo uma verificação entre duas temperaturas e se esta temperatura está neste valor por determinado tempo. O recomendado é que você configure a trigger de acordo com os níveis de criticidade que o seu servidor recomenda. Esta informação está disponível no manual do seu hardware. A partir dos itens e triggers criados, podemos incrementar o monitoramento configurando o envio de e-mail ou SMS. O monitoramento lPMl é importante, pois ajuda a resolver problemas que estão fora do alcance de um administrador de rede resolver, como por exemplo: variação de tensão de entrada na fonte de alimentação; temperatura ambiente oscilando por defeito no sistema de ar condicionado etc.
18.4 Monitoramento SNMP O Zabbix possui suporte nativo ao protocolo SNMP (Simple Network Management Pro(ocol) em todas as versões. Este protocolo é utilizado para gerenciar recursos de rede, tais como: switches, roteadores, impressoras, entre outros dispositivos. O Zabbix o utiliza para monitorar os ativos de rede que não têm suporte à instalação do seu agente
142 Monitoramento de Redes com Zabbix
e que precisam de informações mais detalhadas, não apenas verificar se o equipamento está respondendo ou não na rede. Hoje em dia, praticamente todo dispositivo de rede que vem instalado com uma interface de rede possui suporte ao protocolo SNMP Sendo assim, podemos afirmar que não existe recurso de rede que não possa ser monitorado pelo Zabbix. Podemos obter informações de um dispositivo com suporte ao protocolo SNMP utilizando dois modos: SNMP e SNMP TRAP
18.4.1 SNMP Neste modo, o dispositivo a ser monitorado trabalha como um servidor SNMP e o Zabbix, como um cliente SNMP Isso porque o Zabbix envia uma consulta ao servidor SNMP que retorna o resultado. Essa comunicação acontece na porta 161/UDP representada na figura a seguir.
161/UDP
SwitchSNMP Servidor Zabbix
18.4.2 SNMP TRAP Neste modo, o dispositivo a ser monitorado trabalha como um agente SNMP Ele fica responsável por enviar os status dos itens para o Zabbix, que fica aguardando as informações. Essa comunicação acontece na porta 162/UDP representada na figura a seguir:
I
Iø
-162/UDP Switch SNMP
Servidor Zabbix
Tópicos Especiais 143
18.4.3 Instalação do pacote SNMP Para fazermos consultas aos parâmetros de que um dispositivo SNMP dispõe, precisamos instalar os pacotes que contêm os aplicativos necessários para requisitar as informações registradas. No servidor do Zabbix, devemos instalar o pacote net-snmp-utils executando o seguinte comando:
1 yum instail net-snmp-utils 18.4.4 Consultando informações de dispositivos SNMP
Não é a proposta desta obra ensinar o uso do SNMP. Serão demonstrados apenas comandos básicos para obter informações de dispositivos para cadastro dos itens que serão monitorados. Para este exemplo, consultaremos informações de uma impressora HP LaserJet 4700dn. Para obtermos a lista com todos os parâmetros disponíveis de um dispositivo, executamos o seguinte comando:
1 snmpwalk
-
c public
-
v2c
Obteremos muitas informações, conforme pode ser observado no exemplo a seguir:
SNMPv2-MIB::sysDescr.0 = STRING: HP ETHERNET P4ULTI-ENVIRONMENT,R0M none,JETDIRECT,JD128,EEPROM V.28.63,CIDATE 04/0'7/2006 SNMPv2-MIB: :sysObjectlD.O = OID: SNMPv2SMI: :enterprises.11.2.3.9. 1 = Timeticks: (21485954) 2 'ays, 11:40:59.54 NMPv2-MIB::sysContact.O = STRING: NMPv2-MIB::sysName.O = STRING: bp4700 ISMAN_EVENT_MIB::sysupTimelnstance SNMPv2-MIB: :sysLocation.O = STRING: SNMPv2-MIB: :sysServices.0 = INTEGER: 64 F-MIB::ifNumber.O = INTEGER: 2 IF-MIB::Mindex.1 = INTEGER: 1 IF-MIB::iflndex.2 = INTEGER: 2 tF'-MIB::ifDescr.1 = STRING: HP ETHERNET MULTI-ENVIRONMENT,ROM fone, JETDIRECT, JD128, EEPROM V.28.63
I ~
144 Monitoramento de Redes com Zabbix
IF-MIB::ifDescr.2 STRING: HP ETHERNET MULTI-ENVIRONMENTROM none,JETDIRECT,JD128,EEPROM V.28.63 IF-MIB::ifType.1 - INTEGER: ethernetCsmacd(6) IF-MIB: : ifType.2 INTEGER: softwareLoopback (24) IF-MIB::ifMtu.1 = INTEGER: 1500 IF-MIB::ifMtu.2 - INTEGER: 32768 IF-MIB::ifSpeed.1 = Gauge32: 10000000 IF-MIB::ifSpeed.2 = Gauge32: 1384397016 IF-MIB::ifPhysAddress.1 = STRING: 0:lb:78:15:50:3d IF-MIB: :ifphysAddress.2 STRING: IF-MIB::ifAdminStatus.1 = INTEGER: up(1) IF-MIB: : ifAdminStatus.2 = INTEGER: up(1) IF-MIB::ifOperStatus.1 = INTEGER: up(1) IF-MIB::ifOperStatus.2 = INTEGER: up(1) IF-MIB::ifLastChange.1 - Timeticks: (1384397016) 160 days, 5:32:50.16 Recomenda-se que direcione a saída do comando para um arquivo para poder verificar todos os parâmetros coletados. Uma boa fonte de consulta é o manual do dispositivo, que mostrará em detalhes o que é cada parâmetro. Se você não possuir essas informações em mãos, terá que ir descobrindo aos poucos. Sabendo o parâmetro que você deseja consultar, podemos fazer a consulta para retornar apenas a informação desejada, conforme exemplo a seguir:
t snmpget -v2c-cpublic 192.167.5.1mib-2.43.10.2.1.4.1.1 SNMPv2-SMI: :mib-2.43.10.2.1.4. 1.1 - Counter32: 41603 O exemplo anterior busca o parâmetro que informa a quantidade de impressões realizadas.
18.4.5 Cadastrando o item para monitoramento Com posse das informações que coletamos do dispositivo, já podemos cadastrar o item que será utilizado para fazer o monitoramento desse parâmetro. Vamos cadastrar o item com as seguintes informações:
Nome - Páginas impressas Tipo -Agente SNMPv2 Chave - paginaslmpressas
Tópicos Especiais 145
Ir
SNMP OID - mib-2.43.10.2.1.4.1.1 Comunidade
public
Podemos deixar o restante das informações que vêm por padrão. Aqui, o importante é saber a versão do protocolo SNMP que o dispositivo suporta. Neste exemplo, a impressora HP LaserJet 4700dn suporta a versão 2 do protocolo. A chave nós podemos escolher um valor e o SNMP OID deve ser o parâmetro que desejamos monitorar, assim como a comunidade de consulta. É um espelho do comando snmpwalk. O que o Zabbix faz é pegar as informações cadastradas no item e executar o comando que coleta a informação do parâmetro. A figura a seguir exibe o item monitorado com a informação das páginas impressas:
Vn.o
g.tàl
1 Uma forma eficiente de coletar informações de dispositivos SNMP em que você não conhece os parâmetros a serem coletados e não tem em mãos o manual do dispositivo é associar o dispositivo ao template Template SNMP Device, que possui uma regra de descoberta com alguns protótipos de itens. Para demonstrar esse exemplo, eu cadastrei um switch 3Com Baseline 2928 e o associei a este template. Foram descobertos 246 itens. Podemos verificar na figura a seguir a listagem desse
switch:
o...,. t...,..
(a..,
Após a coleta pela regra de descobrimento, podemos verificar quais itens não serão necessários e exclui-los, além de desativar a regra de descoberta para não cadastrar novamente esses itens.
146 Monitoramento de Redes com Zabbix
18.5 Monitoramento de banco de dados Neste tópico vou demonstrar como fazemos para monitorar o SGBD PostgreSQL utilizando parâmetros de usuário. Para isso, precisamos editar o arquivo de configuração zabbix_agentd .conf. Podemos também monitorar o PostgreSQL e outros SGBDs utilizando o DbforBlX, uma ferramenta de solução integrada específica para monitoramento de banco de dados. Para quem tiver mais interesse nessa ferramenta, sugiro buscar mais informações no Iink http://www.smartmarmot.com/product/dbforbix/. Aqui, iremos utilizar a forma mais comum e de fácil implementação, através de UserParameter. Você precisará ter conhecimento de execução de comandos SQL para realizar esse tipo de monitoramento. Caso esse não seja o seu forte, solicite auxílio de algum DBA, pois serão demonstrados apenas alguns comandos que utilizaremos para cadastrar os itens. Vamos adicionar as seguintes linhas no arquivo de configuração do Zabbix Agent:
• Tamanho total do banco de dados especifico (em bytes) UserParameter=pgsql.db.size(*),psql -Upostgres -Atc "select pg_ database_size('$i') as size" 1 % de transações bem sucedidas no banco de dados Userparameter_pgsql.db.success[*],psql -Upostgres -Atc "select cast(xact_commit/(xact_rollback+xactcommit+O.000001)*100.O as numeric(5.2)) as success from pg_statdatabase where datname =
'si ,., 1 Número de conexões ociosas UserParameter=pgsql.conn. idie_in_transaction,psql -u postgres -c "SELECT COUNT(*) FROM pg_statactivity WHER.E current_query ' in transaction';" -A -t Como vimos no capitulo 15, ao utilizarmos UserParameter podemos passar alguns parâmetros que serão substituídos pelo valor das chaves criadas. Na primeira linha do exemplo nós poderemos informar o nome do banco de dados para fazer a verificação do tamanho total da base de dados utilizada em disco. Ao cadastrar o item para essa chave, ficaria conforme o exemplo a seguir: Nome Tamanho total do Banco de Dados Vendas Tipo Agente Zabbix - Chave pgsql.db.size(Vendas]
Tópicos Especiais 147 Esse é um monitoramento muito específico e pode dar muito trabalho. Porém, temos a possibilidade de monitorar diversos bancos de dados em um mesmo SGBD, verificando parâmetros como: número de conexões em execução, número de conexões ociosas, número de inserções na base de dados etc. Vai depender muito do que o DBA vai querer monitorar. Se for pensar apenas no lado do administrador do sistema, o monitoramento do serviço já estaria de bom tamanho. Porém, nunca é demais verificar onde está ocorrendo algum problema. Por exemplo: poderíamos monitorar o número de inserts no banco de dados e estabelecermos um limite. Se esse limite passar em determinado período, seria gerado um alarme para verificar o que está acontecendo, pois o sistema poderá estar sofrendo um ataque de SQL injection. Para os adeptos do uso do SGBD MySQL, o Zabbix já vem com um template pronto para esse servidor. É O Template App MySQL, que, logicamente, vem configurado de forma genérica. Associar esse template ao host não vai garantir que o monitoramento funcione de imediato. Isso porque esse template utiliza chaves que não vêm configuradas por padrão no arquivo de configuração do Zabbix Agent. No pacote do Zabbix, temos dentro do diretório conf/zabbix_agentd/ o arquivo userpara mete r_mysql.conf. Esse arquivo possui alguns exemplos úteis para monitoramento do MySQL, vale a pena dar uma vasculhada nele. Porém, este arquivo não tem todos os exemplos que precisamos para suprir os itens cadastrados no template. Portanto, vamos adicionar o seguinte conteúdo ao arquivo zabbixagentd.conf:
UserParameter=mysql.pingsudo rnysqladinin -uroot ping 1 wc -1 UserParametermysql .version, sudo mysql -v Userparameter=mysql.status[*],sudo rnysql -Dzabbixdb -s -e "show global status like '$1 1 " 1 tail -ni l cut -f 2 Vale lembrar que, para execução desses comandos, você deve inserir uma entrada no arquivo /etc/sudoers para permitir o usuário zabbix executar os comandos que foram configurados no UserParameter. Obs.: como se trata de execução de comandos em ambiente de testes, aqui não existe preocupação com níveis de segurança, como, por exemplo, acesso do usuário zabbix para executar consultas em banco de dados etc. Agora podemos verificar os dados coletados no monitoramento, conforme exibido na figura a seguir:
148 Monitoramento de Redes com Zabbix II%0I
.1Ø010MI0'OI S0.i.,.......-
710U.44401
11*491 Ir,,.
*491
.4
Z70.'10UIAISC0
003.3..
o..
11
,•..............
.4
•0.0
C0.
'711 ...
271o30u 1*401
002.0
~a as
00 (A *710
02 solou 1*0,01
(.I).0 p01001104
I.I27UU1101
O •1p(
14091 11
V1..30*3 14 Ato*
37
77 1. , 101, (AI? 10
.. 1:
Ip$Ql.or........... 1010•**04
1710110*31*110'
ApIQO
041103
:7 0.,01) 1147 IA
4.0-
370.130*3 IaM (3
lip091 44000
_
137 qp
(442)
."$
51.j1
.7*2
0$,
3..3013 1*1002
.? $.,0.4
.,,
*1,000 .001*1*
0I%p,
117
10•41.0•*0'*0101•
•A,%1)
101 1*
7? 14e30*3 IA 4103
14301 I. orO.l pø'.0004
~41 44.14
A,03u
1* 0.
A figura a seguir exibe um dos gráficos já disponíveis no template: TesteLivro: MYSQL operstns (1h) 11.00 12.01 1O .0s $ ao.
me
o., $3332235553333223$525
0 POySQL b.qr opsr11ons por soro.id • IIySQL 10.00111 0p01110*n pio oecond •ySMete op.opiwo • M1SOL .10.11 opor*ons por 14Co,od • MySQL ,oack opor~ por sorond •MVSQL$Vetopormons Per 1orond • M1004. ,.pd.t, opio100n$ por tosond
(m40( (m44( (i'i441 (medi Imódi ('Mdi (medi
(fl0
(SI 159 s 002s 040 qp s O qpt 65o 739 qps
n11
0040
081 qp s o ei qP I D02o 046 cpi O pa 315s 196 741
1 1$ qps 1 18 qpt 007i 032 Ws O qp4 788o 336 qps
2z
299 qps 799 gps 0031, 063 qgn O qpos 13$6s 3 74 cps
Conforme demonstrado, a flexibilidade do Zabbix impressiona. Basta apenas entregarmos os parâmetros que desejamos monitorar que em segundos já teremos um ambiente de monitoramento extremamente profissional.
18.6 Trabalhando com o Zabbix via terminal
Podemos trabalhar com o Zabbix via terminal para realizarmos alguns testes, como, por exemplo, testar a coleta de um determinado item. Este exemplo é um dos mais utilizados, pois, quando criamos um item através do UserPara meter, é uma boa prática testar seu funcionamento antes mesmo de realizarmos sua configuração na interface web.
Tópicos Especiais 149 Existem quatro comandos no Zabbix para trabalharmos via terminal, além de scripts e binários Java para uso do ZabbixiavaGateway. Já comentamos sobre o uso do ZabbixJavaGateway no tópico 18.1, portanto vamos explicar somente os arquivos binários utilizados pelo Zabbix Server e Zabbix Agent.
18.6.1 zabbix server E o núcleo do sistema, o daemon responsável por executar o servidor. Por padrão, o zabbix_server é executado sem parâmetros, pois vai utilizar as opções padrão de acordo com o que foi compilado. Neste livro, nós vimos que o Zabbix foi compilado e instalado no diretório /opt/zabbix. Sendo assim, o arquivo de configuração do ser vidor (zabbix_server.conf) está localizado no diretório /optlzabbixletc/. Portanto, o zabbix_server vai ler o arquivo de configuração /optlzabbix/etc/zabbix_server.conf. Se desejarmos fazer algum teste e não comprometermos o arquivo de configuração principal, podemos alterar as configurações em uma cópia do original e executar o zabbix_server com o parâmetro -c, para especificarmos esse arquivo alternativo. Por exemplo:
t zabbix_server -c /tmp/zabbix_serveralterado. conf É importante salientar que devemos especificar o caminho completo do arquivo. Raramente executamos este comando manualmente, pois sua execução fica a cargo do daemor7.
18.6.2 zabbix_agentd E o daemon para monitoramento dos parâmetros de vários servidores. Este comando possui mais opções que o zabbix server, porém utiliza a mesma lógica com o seu arquivo de configuração. Algumas opções interessantes deste comando são -p e A. A opção -p é utilizada para imprimirmos os itens conhecidos que podem ser configurados para coleta de dados. Por exemplo: se desejarmos obter uma lista dos itens que possuem chaves que o Zabbix não está conseguindo coletar, podemos executar o seguinte comando: t zabbix_aqentd - p 1 grep ZBXNOTSUPPORTED
150 Monitoramento de Redes com Zabbix Teremos o seguinte retorno: log(logfilej logrt[logfile) eventlog (system] system.cpu.util(all,user,avglj
(ml ZBX_NOTSUPPORTED) (ml ZBX_NOTSUPPORTED) (ml ZBXNOTSJPP0RTEDJ (m ZBX_NOTSUPPORTED
Logicamente, esses são os itens não suportados no servidor que eu testei. Sua lista pode sofrer alterações. A opção -t realiza um teste em um item, ou seja, faz a consulta com a chave do item e retorna o seu valor, caso seja suportado. Vejamos o exemplo a seguir: 1 zabbixagentd -t agent.version
Este comando vai testar a chave agent.version e retornará a versão do agente do Zabbix instalado no servidor. agent . version
(s12.O.8]
Raramente executamos este comando manualmente, pois sua execução fica a cargo do daemon.
18.6.3 zabbix_get E um utilitário para a obtenção de dados a partir de um Zabbix Agent remoto. Tem a mesma característica do zabbix_agentd quando utilizado com a opção -t, porém o zabbix_get pode fazer consultas em hosts remotos. Um exemplo básico seria: 1 zabbix_get -s 127.0.0.1 - p 10050 -k "agent.version"
Onde: PI
-s Nome do host ou endereço IP -p Número da porta TCP em que o Zabbix Agent está em execução. -k Chave do item cujo valor desejamos recuperar.
Tópicos Especiais 151 É interessante ressaltar que se passarmos uma chave inexistente, predefinida pelo Zabbix ou criada via UserParameter, o retorno do comando zabbix_get será ZBXNOT-
SUPPORTED. Obs.: para conseguir coletar valores das chaves dos itens de hosts remotos, é necessário que, no arquivo de configuração do agente, o IP do hosf em que você estiver executando o comando zabbix get esteja listado no parâmetro Ser-ver do arquivo de configuração.
18.6.4 zabbixsender É um utilitário para envio de dados para um Zabbix Server remoto, atuando em modo ativo. Este comando lê os parâmetros do servidor a partir do arquivo de configuração do agente. Os parâmetros lidos são Hostname. ServerActive e SourcelP. Um exemplo básico seria:
• zabbix_sender -c /opt/zabbix/etc/zabbix_agentd.conf -s TesteLivro" -k system.cpu.load -o 0.290000 Onde: -c - Especifica o arquivo de configuração do Zabbix Agent. -s - Informa o nome do host para o Zabbix Server armazenar o valor no banco de dados. -k - Especifica a chave do item que está enviando dados. - -o - O valor coletado que será enviado para o Zabbix Server.
18.6.5 zabbixproxy
cio
É o daemon usado para coletar dados remotos. Possui as mesmas características zabbix server, com a diferença de ler em seu arquivo de configuração o parâmetro
Server, no qual especificamos o endereço IP ou hostname do servidor que receberá os dados transmitidos. Raramente executamos este comando manualmente, pois sua execução fica a cargo do daemon.
152 Monitoramento de Redes com Zabbix
18.7 Monitoramento de recursos de aplicações web Neste tópico será demonstrado um scrip( que faz o monitoramento de um recurso de uma aplicação web e entrega a métrica para o Zabbix alertar quando o valor não for o ideal. Na época em que eu trabalhava em uma empresa do setor de petróleo, eu administrava vários serviços, entre eles um Zabbix Server. Eu também dava suporte a um sistema científico de perfuração de poços e monitorava a aquisição de dados por um sistema específico para isso. Era necessário deixar esse monitoramento um pouco mais ágil e que nos informasse quando algum dado estivesse atrasado. Esse sistema possuía duas bases de dados, uma binária e outra armazenada em um SGBD PostgreSQL. O objetivo era verificar se a profundidade do poço gravada na base binária era a mesma profundidade na base do PostgreSQL. Como eu não queria perder tempo desenvolvendo essa funcionalidade no nosso sistema de monitoramento, decidi que isso seria monitorado através do Zabbix, que já tinha recursos de envio de alertas por e-mail, exibição de incidentes na interface web, entre outros. Sendo assim, tive a ideia de conversar com a equipe de desenvolvimento desse sistema para fazer um Applet Java que fizesse a comparação da profundidade do poço na base binária e na base do PostgreSQL. A aplicação desenvolvida seria acessada via web e apenas leria o resultado O ou 1 (problema ou W. Mas como eu iria automatizar isso no Zabbix? Eu desenvolvi o script listado a seguir para ler esse resultado acessando o Applet Java. 1 1 OBJETIVO: Verificar se a profundidade da base binária confere com a profundidade SGBD 4 1! /bin/bash hostportai="localhost: 8080/ConfereProfundidadezabbix" tmp="/tmp/confere_profyoco.txt" REFRESFI'wget --'quiet -O $tmp http://$host_portal verifica arquivo' cat /tmp/confereyrofyoco. txt if "$verifica arquivo" -eq 'O" then echo "O" > /opt/zabbix/tmp/confereyrofjoco.txt else echo "1" > /opt/zabbix/tmp/confereprof poco. txt fi (
];
Tópicos Especiais 153 O que este script faz é acessar a aplicação web através do programa wget e gravar o resultado em um arquivo temporário. Com base nesse arquivo temporário, é feita uma verificação lendo o arquivo temporário e gravando o seu conteúdo no arquivo que será utilizado no UserParameter do agente do Zabbix. Por exemplo: se a última profundidade gravada na base binária for 2000 e a última profundidade gravada no PostgreSQL for 1999, o aplicativo CorifereProfundidadeZabbix irá exibir "0". Ao executar o wget ele irá gravar o resultado, ou seja, "0", no arquivo temporário Itm'confere_prof_poco.txt. Ao fazer a verificação do conteúdo desse arquivo temporário, será armazenado "O" no arquivo /optlzabbix/tmp/confere_prof_poco.txt. Para fazer esse monitoramento funcionar, foi utilizado o UserParameter no arquivo de configuração do Zabbix Agent, que ficou da seguinte forma: UserParameter verifica.profundidade, cat /opt/zabbix/tmp/ confereyrofpoco. txt Depois disso, é só configurar o item, a trigger e uma ação para enviar os alertas. Neste tópico foi demonstrado que é possível fazer o monitoramento de tudo o que você desejar, basta ter imaginação. Eu costumo dizer que o Zabbix faz todo tipo de monitoração, desde que entreguemos um resultado que ele poderá ler. Portanto, invente, faça e entregue ao Zabbix, que ele trabalhará por você e não o deixará na mão. O exemplo que citei aqui foi utilizando uma aplicação web que confere os dados em duas bases de dados e entrega um resultado que o Zabbix irá analisar. Você pode estar perguntando por que eu não utilizei comandos SQL para fazer essa comparação. A resposta é que eu não tinha acesso á base de dados binária, por isso solicitei que a equipe de desenvolvimento fizesse uma aplicação que me entregasse dois resultados (problema e M. Cada caso é um caso e você deve analisar o que precisa monitorar em sua aplicação. O exemplo apresentado é apenas uma das possibilidades que temos de monitorar aplicações - neste caso, aplicações web. Porém, podemos utilizar outro recurso de monitorar aplicações realizando o monitoramento de Iogs, disponível no Zabbix. Esse tipo de monitoramento é utilizado para analisarmos uma determinada expressão impressa no Iog da aplicação. Por exemplo, se a aplicação imprimir uma mensagem de erro, poderá ser disparado um alerta para o Zabbix exibir no dashboai'd.
154 Monitoramento de Redes
com
Zabbix
18.8 Monitoramento distribuído com Zabbix Proxy Quando o objetivo é monitorar ambientes remotos, ou seja, em localidades diferentes (como no caso de matriz e filiais de uma empresa), é recomendado que se utilize em sua estrutura o Zabbix Server no site principal (matriz) e Zabbix Proxy para os sites dependentes (filiais). Conforme foi explicado no tópico 2.4,2, o Zabbix Proxy realiza a coleta de dados de clientes remotos e os envia para o Zabbix Server. Sem a utilização do Zabbix Proxy num cenário matriz x filial, o monitoramento corre o risco de ficar sem receber as informações dos hosts remotos, pois a comunicação é realizada diretamente dos clientes remotos com o Zabbix Server. Isso porque podem acontecer quedas de Iinks, atraso na comunicação, entre outros fatores. A figura a seguir representa um cenário somente com Zabbix Server com queda de Iink na comunicação entre matriz e filial. FILIAL 1
FILIAL 2
li li
Zabb&i
A1.nt
Z.bbx
Agnt
z&
*
Zabbix Ãn
Podemos observar que os dados dos hosts da filial 2 não seriam coletados devido à queda de Iink. Isso acarretaria, por exemplo, falha na plotagem dos gráficos dos itens que estão sendo monitorados, pois no intervalo em que o Iink estivesse sem comunicação não haveria coleta de dados.
Tópicos Especiais 155 Vejamos agora um exemplo com a utilização do Zabbix Proxy:
FiLIAL 1
FILIAL 2
Zabbx P,o
-ii---
ZabWx Piosty
1
MATRIZ
li Zabb&x S.evs
Mesmo com a queda de link entre matriz e a filial 2, não haveria falha na coleta de dados dos hosts, pois o Zabbix Proxy da filial 2 continuaria fazendo a coleta dos itens dos hosts clientes e, quando a comunicação voltasse, o Zabbix Proxy enviaria todo o conjunto de dados coletados para o Zabbix Server. Somente no instante em que o link estivesse sem comunicação que os gráficos referentes aos hosts da filial 2 estariam com atraso de dados. Porém, para efeito de estatísticas, os dados seriam plotados assim que o Zabbix Server recebesse os dados enviados pelo Zabbix Proxy. Vamos agora realizar a configuração básica para colocar em funcionamento um ambiente com Zabbix Proxy. Lembrando aqui que não estamos preocupados com regras de firewall e outros detalhes que irão estar presentes em um ambiente de produção. A máquina onde será instalado o Zabbix Proxy segue praticamente o mesmo padrão de instalação do Zabbix Server, apenas com algumas alterações. O Zabbix Proxy também precisa de um banco de dados para armazenar as informações dos hosts monitorados por ele. Porém, não é necessário ter um SGBD robusto para isso. Neste exemplo, iremos utilizar o SQLite, que é um banco de dados com baixo consumo dos recursos computacionais e que supre as necessidades do Zabbix Proxy. Obviamente estamos utilizando um banco de dados suportado pelo Zabbix.
156 Monitoramento de Redes com Zabbix
Para instalar os pacotes necessários para funcionamento do Zabbix Proxy, execute o seguinte comando: 4 yum instail make gcc gcc-c++ iksemel-devel net-snmp-devel libcurl-devel net-snmp-devel fping OpenIPMI-devel libssh2-devel fping sqlite-devel sqlite - y
Baixe o código-fonte do Zabbix e extraia o arquivo em um diretório temporário. 1 wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20 Latest%20Stable/2.0. 8/zabbix-2.0.8. tar gz/down]oad 4 tar xf zabbix-2.0.8.tar.gz
Agora precisamos compilar o código com a opção para habilitar o Zabbix Proxy. 1 cd zabbix-2.0.8 4 ./configure --prefix/opt/zabbix/ --enable-proxy --enable-agent --enable-java --with-sqlite3 --with-libcurl --with-net-snmp --with-openipmi --with-jabber --with-ssh2
Crie o usuário e o grupo do Zabbix. 1 groupadd zabbíx 1 useradd -m -g zabbix zabbix
O próximo passo é criarmos a base de dados no SQLite. * mkdir /var/lib/sqlite * sqlite3 /var/lib/sqiite/zabbix.db < database/sq1ite31schema.sq1 * sqlite3 /var/J.ib/sql.ite/zabbix.db < database/sqlite3/images.sql 1 sqlite3 /var/lib/sqlite/zabbix.db < database/sqlite3/data.sql
Dê permissão para o usuário e grupo zabbix para a pasta criada: 1 chown -R zabbix. /var/lib/sqlite
Podemos criar a mesma estrutura de pasta que temos no Zabbix Server.
Tópicos Especiais 157
• cd /opt/zabbix • mkdir log run tmp alertscripts externalscripts 1 cp /tmp/zabbix-2.0.8/conf/zabbixproxy.conf /opt/zabbix/etc/ • cp /tmp/zabbix-2.0.8/conf/zabbixaqentd.conf /opt/zabbix/etc/ 1 in -s /opt/zabbix/etc/ /etc/zabbix Os parâmetros de configuração do arquivo zabbix_proxy.conf que deveremos alterar estão listados a seguir.
ProxyMode=0 Server=< 1 PZABBIX SERVER> Hostname LogFile=/opt/zabbix/log/zabbix_proxy. log LogFi leSize=10 DebugLevel=3 PidFiler/opt/zabbix/run/zabbixj,roxy. pid DBName=/var/1 ib/sql ite/zabbix .db DBUse r=zabbi x ConfigFrequency= 120
Com essas informações, já é possível o host trabalhar no modo Proxy. Observe que configuramos o parâmetro ProxyMode para trabalhar no modo ativo. Se desejar que o Proxy trabalhe no modo ativo, altere este valor para 1. O valor do parâmetro Hostname não precisa ser o mesmo nome configurado no sistema operacional, mas é importante que seja o mesmo nome que será cadastrado no Zabbix Server, que veremos posteriormente. Para o serviço de inicia lização do proxy, podemos copiar o script destinado ao servidor, renomeá-lo para zabbix_proxy e aterar as seguintes configurações:
prog=" zabbi xyroxy" CONFIG_FILE="/etc/zabbix/zabbixyroxy. conf" ZABBIXBIN"/opt/ zabbix/sbin/zabbixproxy" P1D"/opt/zabbix/run/$prog .pid"
158 Monitoramento de Redes com Zabbix Para que o script inicie automaticamente sempre que o sistema operacional for iniciado, executaremos os comandos conforme segue.
t chkconÍig ---add zabbix_proxy 1 chkconfig --levei 35 zabbixyroxy on Dê permissão para execução no arquivo do script.
1 chmod 755 /etc/init.d/zabbix_proxy Podemos iniciar o serviço.
1 service zabbixproxy start Para a configuração do Zabbix Agent no servidor destinado ao Zabbix Proxy, basta apenas configurarmos o parâmetro Server para que o Zabbix Agent funcione. Se você desejar usar monitoramento ativo no agente instalado no Zabbix Proxy, você deve configurar os parâmetros ServerActive e Hostriame. A configuração do Zabbix Agent vai servir como base para a configuração de todos os hosts que serão monitorados pelo Zabbix Proxy. Os parâmetros de configuração do arquivo zabbix_proxy.conf que deveremos alterar estão listados a seguir.
Server= Hos tname= LogFi1e/opt/zabbix/1og/zabbixagentd. log LogFiieSi ze=1 O DebugLeve 1=3 PidFi le=/opt/zabbix/run/zabbix_agentd.pid
Tópicos Especiais 159 É importante que o parâmetro Server esteja configurado com o IP listado para sua interface de rede. Se você deixar configurado para o IP da interface loopback (127.0.0.1), ocorrerá o erro a seguir, que será impresso no arquivo de Iog zabbix_agentdiog: Listener error: Connection from (] rejected. Allowed server is [127.0.0.1]. Este erro também aparecerá na interface web do Zabbix na listagem dos hosts, conforme a figura a seguir:
o script de inicialização do serviço Zabbix Agent pode ser o mesmo que configuramos na instalação do Zabbix Server. Portanto, basta apenas copiar o arquivo /etc/ init.d/zabbix_agentd para a mesma pasta localizada no Zabbix Proxy ou nos hosts que serão monitorados. Realizamos toda a configuração necessária no servidor que ficará responsável pelo processo Zabbix Proxy. Agora precisamos cadastrar o proxy na interface web do Zabbix Server e também os hosts que serão monitorados via proxy. Podemos ajustar o dono do diretório /optlzabbix para usuário e grupo zabbix.
1 chown zabbix. /opt/zabbix/ -R Para cadastrarmos o proxy, acessamos o menu Administração > MD. Selecione 'Proxies' na caixa localizada no canto superior direito da tela e dique no botão 'Criar Proxy'. Informe os seguintes dados: Modo do proxy - Ativo Podemos salvar a configuração sem a necessidade de apontarmos hosts. No exemplo feito para esta obra, dei o nome de TestProxy para o Zabbix Proxy. Portanto, o cadastro do proxy ficará conforme a figura a seguir:
160 Monitoramento de Redes com Zabbix
- e
... —. —
.-.
.•,_ ,.,.
i
Agora iremos cadastrar um host que será monitorado via Zabbix Proxy. Informe os seguintes dados: , Nome do hosi
Windows7
Novo grupo de hosts
Windows Desktop
Interfaces do agente Monitorado por proxy - Templates
Template OS Windows
A figura a seguir exibe o host cadastrado:
$
• —.e
$ $
Le
Observe que, quando temos um host monitorado via proxy, antes do nome do host é exibido o nome do proxy que o monitora. Pronto, acabamos de finalizar todo o processo de monitoramento via Zabbix Proxy, e o seu Zabbix Server estará recebendo todos os itens coletados remotamente via Zabbix Proxy.
19 Verificando a Saúde do Zabbix Server A partir da versão 1.8.5, foi disponibilizado o monitoramento do próprio Zabbix Server. Isso significa que você, além de se preocupar com outros componentes que podem afetar o desempenho do servidor que está com o Zabbix Server instalado, também pode verificar os próprios processos do Zabbix que estão deixando o sistema lento. Na maioria das vezes, conseguimos melhorar o desempenho do Zabbix Server ajustando alguns parâmetros no arquivo de configuração zabbix_server.conf, conforme veremos a seguir. O Zabbix possui um template chamado Template App Zabbix Server, que possui vários itens coletados para verificação de processos internos do próprio Zabbix Server. É possível verificarmos as coletas de dados dos processos que estão ocupados separados por tipos. A lista desses processos disponíveis são:
Tapper Pooler ..
IPMI
r
Autobusca ICMP HTTP
Proxy . Desconhecidos p' Java SNMP
162 Monitoramento de Redes com Zabbix
Portanto, é indispensável monitorarmos através dos gráficos disponíveis nesse (emplate para sabermos se o Zabbix precisa de algum ajuste na configuração dos seus arquivos. Por exemplo: você ativou o monitoramento do Zabbix Server sem alterar os parâmetros que indicam o número de instâncias que serão iniciadas para coleta de dados de dispositivos IPMI. Por padrão, o valor do parâmetro StartlPMlPollers é O. Neste (emplate está estipulado que, se a porcentagem de processos ocupados atingir mais de 75%, um alerta será gerado. Esta é a hora de você ajustar este parâmetro. Este exemplo serve para todos os tipos listados anteriormente. A seguir, podemos ver um exemplo do gráfico que exibe o monitoramento desses processos: Zabbb Iuv,r Zsx
• gs3Mrg
r0%% buSy % 313)
300%
00%
00%
0%
00%
0%
2222252222.22 255555321535133533225$32325331222 3312
Isoldi 00000% bel) 000% 3 elo 00 dOSi 3 0% 30041 300db 0% .c.ss.s. e a ZOS. bisy o I Zo e 300db 009% 7 bisy iosy píeiSssI.e 000% 30043 37.b$ye00 pSs.IIø% 30043 0% Zelels -eCSSS. e 00 lodos) 3 ey .% 7 3 sOe bê lodos 1 1moi 10 )o 93) O ?IS9IV 700bs P0 p'oO01sos o.' Os 93% bi 3. 13) 00500.. Ze polo' o'os,ss., 00005 99% boly O 059.. £Sbo es Pelo' o's.'s.' o' 93% 1 v 0. 131
•• ••
:
• •
l. bisy p0 ecoOSs. .5% 7.bis7,00p0,S0000'.% I00OSI0 10000s £. b*y oow p.ss.s e
-
-
p -
% % % % % %
-
OS 0% 039%
0003392% 09%
002% 00%
0% 0% 0% 0% 0%
O 00101% 001% 003% 002% 000%
007% 03% 011% 032% 210%
**
51111
.
Observe que temos três modos para monitoramento desses parâmetros: mínimo, médio e máximo. É altamente recomendado que você leve em consideração a média em um determinado período para não se precipitar com escolhas que não surtirão efeito. Às vezes o problema pode ser externo ao Zabbix e está afetando o seu rendimento. Logicamente, este não é o cenário perfeito para verificação desse monitoramento, mesmo porque só temos três hos(s cadastrados sendo monitorados e com poucos itens sendo coletados. Temos ainda outros gráficos importantes neste template que são para monitoramento do uso de cache do Zabbix e dos processos internos, como por exemplo: tempo de ocupação para os processos de limpeza de dados, sincronização de processos, dados históricos, entre outros. Vale ressaltar que devemos estar cientes do que cada processo representa, para não alterarmos configurações que, em vez de melhorar a performance do sistema, contribuirão para a queda de seu desempenho.
Verificando a Saúde do Zabbix Server 163 Outra forma de verificar se o monitoramento não está com um bom desempenho é analisar a quantidade de itens que estão na fila de coleta. Isso pode ser verificado acessando o menu Administração > Fila, onde podemos ver a quantidade de processos que ainda não foram coletados em cinco segundos, dez segundos, trinta segundos, um minuto, cinco minutos ou mais de dez minutos. Esta fila está separada pelo tipo de item monitorado, o que contribui para que uma busca por solução fique mais especifica, já que você terá noção do que pode estar demorando a ser coletado. Também é possível verificarmos esta fila no nível de Zabbix Proxy que você tiver na sua rede. Para isso, basta selecionar a opção na caixa de seleção localizada no canto superior direito da tela de filas. Além de configurações que podem contribuir com a queda de desempenho do Zabbix Server, outros componentes instalados que podem afetar o desempenho do sistema como um todo são o servidor web e o servidor de banco de dados. Por isso, recomenda-se separar cada serviço em um servidor, para não ocorrer concorrência na utilização dos recursos computacionais. Mas se você não dispõe de servidores para separação desses serviços, é muito importante que mantenha um monitoramento eficiente, além do Zabbix Server, dos serviços de que ele depende para um bom funcionamento. No capítulo 18 nós abordamos monitoramento do servidor Apache e também dos SGBDs MySQL e PostgreSQL.
20 Atualizando o Zabbix para a Versão 2.2 Esta obra foi finalizada antes do lançamento oficial da versão 2.2. Sendo assim, resolvi adicionar este capítulo para demonstrar como realizar a atualização para esta versão. Antes de realizarmos o upgrade de versão, devemos verificar se o ambiente atual está apto a receber esta atualização. Os requisitos mínimos que mudaram para a versão 2.2 são: PHP 5.3.0 MySQL 5.0.3 Baixe a versão 2.2 de acordo com o seguinte comando:
t wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20 Latest%20Stable/2.2. O/zabbix-2.2.0. tar . gz/download Extraia o arquivo e acesse o diretório criado.
* tar xf zabbix-2.2.0.tar.gz t cd zabbix-2.2.0
Atualizando o Zabbix para a Versão 2.2 165 Devemos parar todos os serviços do Zabbix que estiverem em execução. • service zabbix_server stop * service zabbix_agentd stop $ service zabbix_proxy stop Você pode confirmar se ainda existem processos relacionados ao Zabbix executando o comando a seguir. Este comando não poderá retornar nenhum resultado com a expressão zabbix. t ps -ef 1 grep -i zabbix É altamente recomendado que você faça backup da base de dados existente e também dos arquivos de configuração, dos arquivos binários do Zabbix e do arquivo de inicialização do PHP Em versões anteriores, a atualização da base de dados era feita manualmente com scripts específicos para o SGBD utilizado. Para o upgade da versão 2.2, foi implementada a atualização automática da base de dados, que acontece no momento em que iniciamos o Zabbix Server atualizado. Você deverá tomar o cuidado de verificar se o seu sistema atual é da família 2.x, pois a atualização automática da base de dados funciona apenas para esta versão. Para atualização de versões anteriores, como por exemplo 1.8, você deverá realizar primeiro o upgrade para a versão 2.0 e em seguida aplicar o upgrade para a versão 2.2. Compile o código-fonte e instale conforme os comandos a seguir. * ./configure --prefix=/opt/zabbix/ --enable-server --enable-agent --enable-java --with-mysq]. --with-libcurl --with-net-snmp --withopenipmi --with-jabber --with-ssh2 • make instali Verifique se os arquivos de configurações foram modificados e execute os scripts de inicialização zabbix_server e zabbix_agentd. Neste momento será inicializada a atualização da base de dados automática. Dependendo do tamanho da sua base, este processo pode levar um tempo considerável, pois todas as tabelas serão atualizadas, incluindo os dados históricos. Você pode executar o comando a seguir para ir acompanhando o processo de atualização da base de dados: • tail -f /opt/zabbix/log/zabbixserver.log
166 Monitoramento de Redes com Zabbix Serão impressos no Iog registros como o exemplo a seguir:
27560:20131113:075109.940 completed 13% of database upgrade 27560:20131113:075109.940 query (txnlev:1J (begin;) 27560:20131113:075109.940 query [txnlev:1] [alter table dchecks add snmpv3authprotocol integer default 'O' not nuil) 27560:20131113:075110.235 query (txnlev:1) [update dbversion set mandatory2010024,optiona1=2010024] 27560:20131113:075110.268 query (txnlev:1I (commit;) 27560:20131113:075110.268 query (txnlev:1J (begin;I 27560:20131113:075110.268 query [txnlev:1) (alter table dchecks add snmpv3yrivprotocol integer default '0' not nuli) 27560:20131113:075110.503 query (txnlev:1) íupdate dbversion set mandatory2010025, optional=2010025) 27560:20131113:075110.536 query (txnlev:1) [commit;] Assim, qualquer erro na atualização será impresso no log. Caso tudo ocorra sem problemas, ao final do processo será impresso o seguinte registro, conforme o exemplo a seguir:
27560:20131113:075148.935 completed 100% of database upgrade 27560:20131113:075148.936 database upgrade fully completed 27560:20131113:075148.936 End of DBcheck_versionU:SKD 27560:20131113:075148.936 In DBconnect() flag:0 27560:20131113:075148.936 query [txnlev:0] [set names utf8] 27560:20131113:075148.936 End of DBconnectO:0 Verifique se o binário está com a versão atualizada com o comando a seguir:
• zabbix_server -v Zabbix server v2.2.0 (revision 40163) (12 November 2013) Compilation time: Nov 12 2013 09:37:50 Instale a nova interface
web.
• cp -a /tmp/zabbix-2.2.0/frontends/php1 /var/www/html/zabbix 1 chown -R apache. /var/www/html/zabbix
Atualizando o Zabbix para a Versão 2.2 167 Quando você acessar o endereço http:///zabbix, deverá aparecer a nova versão. Você deverá configurar a interface web para acessar a sua base de dados. Após este processo, seu Zabbix estará pronto para uso com a nova versão.
21 Obtendo Ajuda A comunidade de usuários no Brasil vem crescendo bastante nos últimos anos. Além da documentação oficial do Zabbix, disponível no endereço www.zabbix.com/ documentation, onde podemos selecionar a documentação entre as versões disponíveis, também podemos participar do fórum oficial para tirar dúvidas e obter ajuda dos membros participantes. No Brasil, temos dois meios de obtermos ajuda: o site da comunidade Zabbix Brasil e a lista de discussão oficial de usuários do Zabbix no Brasil. A lista de discussão é um fórum bastante ativo com membros dispostos a ajudar. A cada ano, as inscrições sobem a ritmo gradual, o que não faz a lista crescer apenas em número, mas também em qualidade nas respostas e discussões sadias. Endereços para obtenção de ajuda: Documentação oficial do Zabbix: https:/Iwww.zabbix.com/documentation/ r
Fórum oficial do Zabbix: https://www.zabbix.com/forum/
Ar
Site oficial da comunidade no Brasil: http://zabbixbrasil.org/ Lista oficial no Brasil: http:llbr.groups.yahoo.com/group/zabbix-brasil/
Além dos sites, listas e fóruns citados, também podemos obter ajuda em diversos blogs espalhados pela internet e também em páginas de manuais instaladas juntamente
com pacote do Zabbix. Arquivos de manuais do Zabbix: ÀW
zabbix_get zabbixsender zabbix_agentd
Obtendo Ajuda 169 zabbix_server zabbix_proxy Para que possamos ter acesso a esses manuais através do comando man, devemos adicionar o diretório dos manuais do Zabbix no arquivo de configuração /etc!man.config. Edite o arquivo e inclua o seguinte conteúdo:
MANPATH /opt/zabbix/share/man Após salvar o arquivo, já teremos acesso aos arquivos de manuais do Zabbix, conforme o exemplo a seguir: 1 man zabbix server
Índice Remissivo Administrador Zabbix 89
Monitoramento web 116
Apache 11,27,48,66,70,133,137.163 Arquitetura do Zabbix 8
MySQL 11, 14, 15, 16, 17, 20, 26, 38, 147, 163, 164
back-end 8, 9, 29
perf_counter 106, 107, 108
Características do Zabbix 6
perfmon 106
CONFIG FILE 157
php.ini 26. 28
Dashboard 35, 36, 58, 90, 91, 92, 95, 101, 122, 123
PostgreSQL 11, 66, 146, 152, 153, 163
DBName 21, 157
RefreshActiveChecks 64
DBUser 21, 157
Requisitos de Hardware 10
DebugLevel 21, 104, 126, 157, 158
Requisitos de Software 11
EnableRemoteCommands 124
ServerActive 65, 151, 158
front-end 9, 31, 32
SLA 84, 115, 116, 117. 118
IPMI 7, 9, 15, 17, 44, 45, 48, 52, 73, 124, 137, 138, 139, 140, 141, 161, 162
SNMP 7, 9, 15, 16, 17, 44, 45, 48, 52, 65, 141, 142, 143, 145, 161
ipmitool 138, 139
SNMPTRAP 142
Java Gateway 16, 45, 131, 132
snmpwalk 143, 145
JBoss 48, 63, 130, 131, 132
SQLite 11, 155, 156
JMX 44, 45, 52, 130, 131, 132
typeperf 106
LDAP 15,40
UserParameter 78, 119, 120, 121, 136, 146, 147, 148, 151, 153
Monitoramento distribuído 7, 40, 154
psql 146
snmpget 144
172 Monftoramento de Redes com Zabbix Usuário Zabbix 89 ZabbixAgent 9, 11,44,45,48,52,64, 65, 73, 103, 104, 105, 106, 124, 125, 126, 127, 128, 129, 146, 147, 149, 150, 151, 153, 158, 159 ZABBIX_BIN 22, 24, 157 zabbixget 18, 103, 107, 108, 120, 121, 129, 150, 151, 168 Zabbix Proxy 9, 154, 155, 156, 158, 159, 160, 163
zabbix_sender 18, 44, 103, 129, 151, 168 Zabbix Server 9, 10, 15, 21, 24, 29, 35, 36, 38, 44, 64, 84, 85, 89, 107, 125, 126, 127, 128, 129, 131, 132, 137, 139, 141, 149, 151, 152, 154, 155, 156. 157, 159, 160, 161, 162, 163,165
Referências Bibliográficas Documentação oficial do Zabbix, https:llwww.zabbix.com/documentation/doku.php, 2013. Zabbix webminars, http:llwww.zabbix.com/webinars. php, 2013.