131444591 97430634-apostila-468-zabbix

468 visualizações

Publicada em

Zabbix

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
468
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
47
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

131444591 97430634-apostila-468-zabbix

  1. 1. Soluções de Monitoramento com Zabbix Valter Douglas Lisbôa Júnior www.4linux.com.br
  2. 2. - 2 Sumário Capítulo 1 Conhecendo o Zabbix..................................................................................................................12 1.1. Objetivos...........................................................................................................................12 1.2. Conhecendo a ferramenta................................................................................................12 1.3. Comunidades e forums....................................................................................................13 Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema..........................................14 2.1. Objetivos...........................................................................................................................14 2.2. Introdução........................................................................................................................15 2.3. Configurando os componentes de recebimento de alertas............................................15 2.3.1. Configurando o cliente de correio eletrônico........................................................................16 2.3.2. Mensagens instantâneas.........................................................................................................24 2.4. Obtendo os fontes do Zabbix...........................................................................................26 2.5. Preparando o banco de dados.........................................................................................27 2.5.1. Instalação................................................................................................................................27 2.5.2. Criando o usuário e o banco...................................................................................................28 2.5.3. Carga inicial............................................................................................................................29 2.5.4. Concedendo as permissões necessárias ao usuário...............................................................30 2.6. Instalação do servidor Zabbix via código fonte..............................................................31 2.6.1. Dependências de compilação..................................................................................................33 2.6.2. Compilando e instalando.........................................................................................................34 2.6.3. Serviços de rede......................................................................................................................36 2.6.4. Arquivos de configuração.......................................................................................................36 2.6.5. Testando sua instalação..........................................................................................................38 2.6.6. Scripts de boot........................................................................................................................39 2.7. Instalação do agente Zabbix via compilação..................................................................40 2.7.1. Exercício: compile e instale o agente nas VM com Linux......................................................40 2.7.2. Acesso ao agente pelo servidor..............................................................................................40 2.7.3. Exercício sobre instalação de agente em Linux.....................................................................44 2.8. Instalando o agente em ambientes Windows..................................................................44 2.8.1. Executando o agente como serviço........................................................................................48 2.9. Instalação do agente Zapcat para JBoss.........................................................................49 2.9.1. Obtenção do binário................................................................................................................50 2.9.2. Deployment..............................................................................................................................50 2.9.3. Opções de inicialização do JBoss............................................................................................51 2.9.4. Liberando o firewall para acesso ao Zapcat...........................................................................52
  3. 3. - 3 2.10. Testando o acesso via SNMP.........................................................................................52 2.10.1. Conceitos de SNMP..............................................................................................................53 2.11. Instalando o servidor Zabbix via pacote.......................................................................55 2.12. Preparando o servidor web............................................................................................55 2.12.1. Instalação do Apache e PHP5...............................................................................................55 2.12.2. Configuração do Virtual Host...............................................................................................55 2.12.3. Configurando o front end......................................................................................................58 2.13. Exercícios de revisão.....................................................................................................69 Capítulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end.......................................71 3.1. Objetivos...........................................................................................................................71 3.2. Introdução........................................................................................................................71 3.2.1. Organização do front end.......................................................................................................72 3.3. Gerenciamento de usuários.............................................................................................74 3.3.1. Cadastrando os usuários do LDAP no Zabbix........................................................................77 3.4. Meios de alertas...............................................................................................................80 3.4.1. Correio eletrônico...................................................................................................................80 3.4.2. Mensagens instantâneas.........................................................................................................81 3.4.3. Apontando os alertas aos usuários.........................................................................................81 3.4.4. Boas práticas com Media types..............................................................................................83 3.5. Hosts, host groups e templates.......................................................................................84 3.5.1. Templates para o caso de estudo............................................................................................85 3.5.2. Vínculo entre templates..........................................................................................................86 3.5.3. Backup dos templates.............................................................................................................87 3.5.4. Hosts........................................................................................................................................88 3.5.5. Gerenciando os Host Groups..................................................................................................88 3.5.6. Criando um novo host.............................................................................................................89 3.5.7. Fazendo backup dos hosts......................................................................................................91 3.5.8. Configurando uma permissão de acesso................................................................................91 3.5.9. Exercícios sobre usuários, hosts, grupos e permissões.........................................................93 3.6. Mapas...............................................................................................................................94 3.6.1. Importando imagens para o mapa..........................................................................................94 3.6.2. Criando um mapa....................................................................................................................95 3.6.3. Adicionando um elemento.......................................................................................................98 3.6.4. Editando um elemento do mapa.............................................................................................99 3.6.5. Salvando o mapa...................................................................................................................101 3.6.6. Adicionando os outros elementos.........................................................................................101 3.6.7. Criando e editando links.......................................................................................................105 3.6.8. Exercícios sobre ...................................................................................................................106 3.6.9. Exercícios sobre Mapas........................................................................................................108
  4. 4. - 4 3.7. Templates, applications e items.....................................................................................109 3.7.1. Criando um Application e um Item dentro de um template................................................110 3.7.2. Interdependência de templates............................................................................................113 3.8. Associando os templates aos hosts................................................................................114 3.9. Ativando um host............................................................................................................118 3.9.1. Throubleshooting para items com problemas......................................................................119 Capítulo 4 Monitoramento voltado para disponibilidade..........................................................................123 4.1. Objetivos.........................................................................................................................123 4.2. Introdução......................................................................................................................124 4.3. Checagens manual via front end...................................................................................124 4.3.1. Adequando o script de traceroute........................................................................................127 4.3.2. Criando novos comandos para o menu.................................................................................129 4.3.3. Exercícios..............................................................................................................................132 4.4. Checando disponibilidade via protocolo ICMP.............................................................133 4.4.1. Como funciona o ping ICMP.................................................................................................133 4.4.2. Visualizando o ping ICMP no Front end...............................................................................134 4.4.3. Criando um gatilho de parada de host.................................................................................136 4.4.4. Lidando com os eventos........................................................................................................141 4.4.5. Criando uma action para envio de alerta.............................................................................145 4.4.6. Exercícios..............................................................................................................................148 4.4.7. Boas práticas com triggers...................................................................................................149 4.5. Checagem genérica de portas e serviços......................................................................151 4.5.1. Conexões TCP e handshakes................................................................................................152 4.5.2. Criando um teste de serviço via varredura de portas.........................................................154 4.5.3. Exercício sobre checagem de portas....................................................................................156 4.6. Validação de páginas WEB.............................................................................................157 4.6.1. Disponibilidade do site..........................................................................................................157 4.6.2. Exercícios..............................................................................................................................162 4.7. Checando disponibilidade via agentes..........................................................................163 4.7.1. Checando se o agente esta operacional...............................................................................163 4.7.2. Criando um trigger com a função nodata()..........................................................................165 4.7.3. Exercícios..............................................................................................................................169 4.8. Tempo on-line e última inicialização do S.O..................................................................169 4.8.1. Trigger para alerta de reinicialização..................................................................................175 4.8.2. Exercícios..............................................................................................................................177 4.9. Checando serviços pelo agente.....................................................................................177 4.9.1. Verificando os processos ativos na memória........................................................................178 4.9.2. Checagem de portas e serviços localmente via agente.......................................................184 4.9.3. Exercícios..............................................................................................................................189
  5. 5. - 5 4.9.4. Verificando serviços no Windows.........................................................................................189 4.9.5. Restabelecendo serviços offline via Zabbix.........................................................................203 4.9.6. Exercícios..............................................................................................................................207 4.10. Medindo a “saúde” de sua rede...................................................................................207 4.10.1. Latência de rede..................................................................................................................207 4.10.2. Macro para o limiar da latência de rede............................................................................208 4.10.3. Nosso primeiro gráfico.......................................................................................................212 4.10.4. Personalizando o mapa para exibição de informações......................................................216 4.10.5. Exercícios............................................................................................................................218 4.11. Espaço disponível em disco.........................................................................................218 4.11.1. Gráficos para espaço em disco...........................................................................................221 4.11.2. Gatilhos para alertas de espaço em disco..........................................................................224 4.11.3. Exercícios............................................................................................................................225 4.12. Scripts externos...........................................................................................................225 4.12.1. Checando a disponibilidade do PostgreSQL......................................................................226 4.12.2. Medindo a disponibilidade de um link Internet.................................................................230 4.12.3. Exercícios............................................................................................................................233 REFERÊNCIAS BIBLIOGRÁFICAS......................................................................................................................234 Anexo I Performance do Sistema Operacional..................................................................................236 Introdução.......................................................................................................................................236 Processamento.................................................................................................................................236 Métricas de memória......................................................................................................................237 Throughput e banda de rede...........................................................................................................238 Performance de Disco.....................................................................................................................238 Anexo II Performance de serviços.......................................................................................................239 Introdução.......................................................................................................................................239 PostgreSQL......................................................................................................................................239 JBoss................................................................................................................................................240 Apache.............................................................................................................................................240 Índice de tabelas Tabela 2.1: Opções de compilação do Zabbix........................................................................33 Tabela 2.2: Binários de uma instalação de servidor e agente do Zabbix..............................35 Tabela 2.3: Arquivos e diretórios de configuração................................................................37 Table 3.1: Usuários do cenário do curso................................................................................78 Table 4.1: Valores da key service_state................................................................................196
  6. 6. - 6 Índice de Figuras Figura 2.1: Configuração do evolution (1/10)........................................................................16 Figura 2.2: Configuração do evolution (2/10)........................................................................17 Figura 2.3: Configuração do evolution (3/10)........................................................................18 Figura 2.4: Configuração do evolution (4/10)........................................................................19 Figura 2.5: Configuração do evolution (5/10)........................................................................20 Figura 2.6: Configuração do evolution (6/10)........................................................................21 Figura 2.7: Configuração do evolution (7/10)........................................................................22 Figura 2.8: Configuração do evolution (8/10)........................................................................23 Figura 2.9: Configuração do evolution (9/10)........................................................................23 Figura 2.10: Configuração do evolution (10/10)....................................................................24 Figura 2.11: Tela de boas vindas do Pidgin............................................................................25 Figura 2.12: Configurando uma conta Jabber no Pidgin.......................................................25 Figura 2.13: Definindo o uso de criptografia.........................................................................26 Figura 2.14: Baixando o agente do Zabbix no Windows........................................................45 Figura 2.15: Instalando os executáveis no Windows.............................................................46 Figura 2.16: Diretório de configuração do Zabbix no Windows............................................46 Figura 2.17: Configurando o agente no Windows..................................................................47 Figura 2.18: Desbloqueando o agente no Windows...............................................................48 Figura 2.19: O agente do Zabbix sendo executado como serviço automático......................49 Figura 2.20: Tela de entrada do Zapcat.................................................................................52 Figura 2.21: Configuração do front end (1/10)......................................................................58 Figura 2.22: Configuração do front end (2/10)......................................................................59 Figura 2.23: Configuração do front end (3/10)......................................................................60 Figura 2.24: Configuração do front end (4/10)......................................................................62 Figura 2.25: Configuração do front end (5/10)......................................................................63 Figura 2.26: Configuração do front end (6/10)......................................................................64 Figura 2.27: Configuração do front end (7/10)......................................................................65 Figura 2.28: Configuração do front end (8/10)......................................................................66 Figura 2.29: Configuração do front end (9/10)......................................................................67 Figura 2.30: Configuração do front end (10/10)....................................................................68 Figura 2.31: Tela inicial do Zabbix após o primeiro login.....................................................68 Figura 3.1: Gerenciamento de usuários do Zabbix................................................................75 Figura 3.2: Editando o Admin.................................................................................................76 Figura 3.3: Configurando a autenticação LDAP....................................................................77 Figura 3.4: Novo Grupo JBoss Administrators.......................................................................78 Figura 3.5: Novo usuário Sysadmin.......................................................................................79 Figura 3.6: Media Types.........................................................................................................80
  7. 7. - 7 Figura 3.7: Configurando o Zabbix para enviar e-mails........................................................81 Figura 3.8: Configurando o Zabbix para enviar mensagens instantâneas...........................81 Figura 3.9: Media Types de um usuário sem apontamentos.................................................82 Figura 3.10: Adicionando o Media Type Email a um usuário................................................82 Figura 3.11: Adicionando um media type Jabber a um usuário............................................83 Figura 3.12: Media Types de um usuário após o cadastro....................................................83 Figura 3.13: Selecionando todos os templates pré cadastrados...........................................85 Figura 3.14: Excluindo os templates selecionados................................................................85 Figura 3.15: Criando um novo template.................................................................................86 Figura 3.16: Cadastrando um novo template.........................................................................86 Figura 3.17: Vinculando um template a outro.......................................................................87 Figura 3.18: Exportando um template...................................................................................87 Figura 3.19: Layout dos hosts a serem monitorados.............................................................88 Figura 3.20: Como criar um novo grupo de hosts.................................................................89 Figura 3.21: Novo host group.................................................................................................89 Figura 3.22: Host pré-cadastrado no front end na tela de Hosts..........................................89 Figura 3.23: Botão para criar um host...................................................................................90 Figura 3.24: Todos os hosts do cenário cadastrados.............................................................91 Figura 3.25: Concedendo permissões de acesso (1/4)...........................................................91 Figura 3.26: Concedendo permissões de acesso (2/4)...........................................................92 Figura 3.27: Concedendo permissões de acesso (3/4)...........................................................92 Figura 3.28: Concedendo permissões de acesso (4/4)...........................................................93 Figura 3.29: Tela inicial das imagens.....................................................................................94 Figura 3.30: Importando uma nova imagem..........................................................................95 Figura 3.31: Imagem do primeiro mapa a ser criado............................................................96 Figura 3.32: Mapas pré-cadastrados......................................................................................96 Figura 3.33: Novo mapa..........................................................................................................97 Figura 3.34: Barra de ferramentas para edição de mapas....................................................98 Figura 3.35: Criando um novo elemento................................................................................99 Figura 3.36: Posicionando um novo elemento com o mouse.................................................99 Figura 3.37: Editando um elemento na tela.........................................................................100 Figura 3.38: Botão Save do mapa.........................................................................................101 Figura 3.39: Dialogo de salvar mapa....................................................................................101 Figura 3.40: Outros elementos gráficos a serem adicionados............................................102 Figura 3.41: Editando o elemento que representa o host Presentation.............................103 Figura 3.42: Detalhes do host switch dentro do mapa........................................................104 Figura 3.43: Hosts acrescentados no mapa.........................................................................105 Figura 3.44: Criando um novo link entre o host Presentation e a imagem Internet..........106 Figura 3.45: Editando as propriedades do novo link...........................................................107
  8. 8. - 8 Figura 3.46: Link entre o host Presentation e o Switch......................................................108 Figura 3.47: Mapa final.........................................................................................................109 Figura 3.48: Templates e seus elementos............................................................................109 Figura 3.49: Criando um application (1/4)...........................................................................110 Figura 3.50: Criando um application (2/4)...........................................................................110 Figura 3.51: Criando um application (3/4)...........................................................................110 Figura 3.52: Criando um application (4/4)...........................................................................110 Figura 3.53: Criando seu primeiro item (1/3)......................................................................111 Figura 3.54: Criando seu primeiro item (2/3)......................................................................111 Figura 3.55: Criando seu primeiro item (3/3)......................................................................113 Figura 3.56: Campo para associação de templates.............................................................113 Figura 3.57: Tela para escolha de templates.......................................................................113 Figura 3.58: Template associado..........................................................................................113 Figura 3.59: Template associado na lista de templates.......................................................114 Figura 3.60: Inter-relação dos templates base....................................................................114 Figura 3.61: Associando o template do JBoss ao host JBoss AS (1/6).................................114 Figura 3.62: Associando o template do JBoss ao host JBoss AS (2/6).................................114 Figura 3.63: Associando o template do JBoss ao host JBoss AS (3/6).................................115 Figura 3.64: Associando o template do JBoss ao host JBoss AS (4/6).................................115 Figura 3.65: Associando templates a hosts (5/11)...............................................................115 Figura 3.66: Associando o template do JBoss ao host JBoss AS (6/6).................................115 Figura 3.67: Templates para Windows e SNMP associados aos seus respectivos hosts...115 Figura 3.68: Associando um template a múltiplos hosts simultaneamente (1/4)..............117 Figura 3.69: Associando um template a múltiplos hosts simultaneamente (2/4)..............117 Figura 3.70: Associando um template a múltiplos hosts simultaneamente (3/4)..............118 Figura 3.71: Associando um template a múltiplos hosts simultaneamente (4/4)..............118 Figura 3.72: Todos os templates associados aos hosts do cenário....................................118 Figura 3.73: Host presentation não monitorado..................................................................119 Figura 3.74: Dialogo de confirmação de ativação...............................................................119 Figura 3.75: Host presentation monitorado.........................................................................119 Figura 3.76: Item não suportado..........................................................................................120 Figura 3.77: Item suportado e ativo.....................................................................................122 Figura 4.1: Menu de Ferramentas acessado pelo mapa......................................................125 Figura 4.2: Saída de um comando ping................................................................................125 Figura 4.3: Saída de um comando que falhou do traceroute..............................................126 Figura 4.4: Saída do traceroute adequando a nova necessidade .......................................129 Figura 4.5: Criando um novo script para testar portas SSH (1/2)......................................130 Figura 4.6: Criando um novo script para testar portas SSH (2/2)......................................130 Figura 4.7: Nova entrada de menu com o script criado......................................................131
  9. 9. - 9 Figura 4.8: Resultado do comando ativado no host.............................................................132 Figura 4.9: Diagrama de comportamento do echo ICMP....................................................133 Figura 4.10: Hosts ativos com ping ICMP em funcionamento............................................134 Figura 4.11: Um value maps de estado de serviços............................................................134 Figura 4.12: Editando o value map para nossa necessidade...............................................135 Figura 4.13: Value map editado e pronto para uso..............................................................135 Figura 4.14: Selecionando um value map no trigger..........................................................135 Figura 4.15: Values maps no overview.................................................................................136 Figura 4.16: Pausando o host Database...............................................................................137 Figura 4.17: Host database parado no overview.................................................................137 Figura 4.18: Criando um trigger para a parada do host (1/9).............................................138 Figura 4.19: Criando um trigger para a parada do host (2/9).............................................138 Figura 4.20: Criando um trigger para a parada do host (3/9).............................................138 Figura 4.21: Criando um trigger para a parada do host (4/9).............................................138 Figura 4.22: Criando um trigger para a parada do host (5/9).............................................139 Figura 4.23: Criando um trigger para a parada do host (6/9).............................................139 Figura 4.24: Criando um trigger para a parada do host (7/9).............................................140 Figura 4.25: Criando um trigger para a parada do host (8/9).............................................140 Figura 4.26: Criando um trigger para a parada do host (9/9).............................................141 Figura 4.27: Indicação de problemas no Dashboard...........................................................141 Figura 4.28: Overview com indicação dos items com alerta...............................................142 Figura 4.29: Overview com visualização dos triggers ativos..............................................142 Figura 4.30: Mapa indicando o host Database como down.................................................143 Figura 4.31: Tela de Events, indicando a queda e o retorno dos hosts..............................143 Figura 4.32: Tela de acknowledgement...............................................................................144 Figura 4.33: Acknowledge (confirmação) aplicado..............................................................144 Figura 4.34: Criando um action para enviar o alerta (1/9).................................................145 Figura 4.35: Criando um action para enviar o alerta (2/9).................................................145 Figura 4.36: Criando um action para enviar o alerta (3/9).................................................146 Figura 4.37: Criando um action para enviar o alerta (4/9).................................................146 Figura 4.38: Criando um action para enviar o alerta (5/9).................................................146 Figura 4.39: Criando um action para enviar o alerta (6/9).................................................146 Figura 4.40: Criando um action para enviar o alerta (7/9).................................................147 Figura 4.41: Criando um action para enviar o alerta (8/9).................................................147 Figura 4.42: Criando um action para enviar o alerta (9/9).................................................147 Figura 4.43: Mensagens de alerta recebidas no Evolution.................................................148 Figura 4.44: Reiniciando o host Database...........................................................................149 Figura 4.45: Lógica de um gatilho com tempo de segurança.............................................150 Figura 4.46: Simple check para o SSH................................................................................155
  10. 10. - 10 Figura 4.47: Overview exibindo os serviços de SSH...........................................................156 Figura 4.48: Criando um cenário para disponibilidade Web (1/6)......................................158 Figura 4.49: Criando um cenário para disponibilidade Web (2/6)......................................158 Figura 4.50: Criando um cenário para disponibilidade Web (3/6)......................................159 Figura 4.51: Criando um cenário para disponibilidade Web (4/6)......................................160 Figura 4.52: Criando um cenário para disponibilidade Web (5/6)......................................161 Figura 4.53: Criando um cenário para disponibilidade Web (6/6)......................................161 Figura 4.54: Visualizando a checagem Web.........................................................................161 Figura 4.55: Detalhes do monitoramento Web....................................................................161 Figura 4.56: Gráfico de velocidade de download para o cenário Web................................162 Figura 4.57: Gráfico de tempo de resposta para o cenário Web.........................................162 Figura 4.58: Novo item para monitorar o agente................................................................164 Figura 4.59: Copiando o item de ping de agente para o template do JBoss (1/2)..............164 Figura 4.60: Copiando o item de ping de agente para o template do JBoss (2/2)..............165 Figura 4.61: Criando um trigger para o agent.ping (1/5)....................................................166 Figura 4.62: Criando um trigger para o agent.ping (2/5)....................................................166 Figura 4.63: Criando um trigger para o agent.ping (3/5)....................................................167 Figura 4.64: Criando um trigger para o agent.ping (4/5)....................................................167 Figura 4.65: Criando um trigger para o agent.ping (5/5)....................................................167 Figura 4.66: Trigger para o agent ping criado e ativo........................................................168 Figura 4.67: Trigger de agente ativado...............................................................................168 Figura 4.68: Dependência entre triggers evitando que o gatilho filho seja ativado..........168 Figura 4.69: Item para tempo de uptime.............................................................................172 Figura 4.70: Uptime via Zapcat............................................................................................173 Figura 4.71: Uptime via SNMP.............................................................................................173 Figura 4.72: Overview exibindo os uptimes a partir do agente padrão, Zapcat e SNMP..174 Figura 4.73: Um trigger para a reinicialização de um host................................................177 Figura 4.74: Item para verificação de número de processos..............................................182 Figura 4.75: Overview refletindo o número de processos...................................................182 Figura 4.76: Trigger para queda do daemon.......................................................................183 Figura 4.77: Teste de queda do sshd....................................................................................184 Figura 4.78: Reflexo da queda do daemon SSH no overview..............................................184 Figura 4.79: Item para verificação da porta local...............................................................185 Figura 4.80: Fluxograma da dependência entre triggers para análise de serviços...........186 Figura 4.81: Trigger para verificação da porta local...........................................................188 Figura 4.82: Trigger para verificação de porta remota.......................................................188 Figura 4.83: Serviço telnet do Windows..............................................................................189 Figura 4.84: Habilitando o serviço de telnet do Windows...................................................190 Figura 4.85: Ativando o serviço de telnet............................................................................190
  11. 11. - 11 Figura 4.86: Processo do telnet na memória.......................................................................195 Figura 4.87: Liberando o telnet no firewall do Windows (1/3)............................................198 Figura 4.88: Liberando o telnet no firewall do Windows (2/3)............................................199 Figura 4.89: Liberando o telnet no firewall do Windows (3/3)............................................200 Figura 4.90: item para monitorar serviços Windows...........................................................202 Figura 4.91: Estado do serviço Telnet no Overview............................................................203 Figura 4.92: Action para parada do SSH (1/3).....................................................................205 Figura 4.93: Action para parada do SSH (2/3).....................................................................205 Figura 4.94: Action para parada do SSH (3/3).....................................................................206 Figura 4.95: Comando remoto para o action de parada do serviço de SSH.......................206 Figura 4.96: Item para latência de rede...............................................................................208 Figura 4.97: Macro para latência de rede............................................................................209 Figura 4.98: Trigger para latência de rede usando a macro...............................................212 Figura 4.99: Gráfico para medir a latência de rede............................................................213 Figura 4.100: Criando um gráfico de latência de rede........................................................214 Figura 4.101: Adicionando métricas ao gráfico...................................................................215 Figura 4.102: Mapa com labels personalizadas exibindo dados.........................................217 Figura 4.103: Exemplo de labels com valores de métricas.................................................217 Figura 4.104: Exemplo de gráfico de latência de serviços para exercícios........................218 Figura 4.105: Macro para limite de espaço em disco utilizado...........................................219 Figura 4.106: Primeiro item de espaço em disco.................................................................220 Figura 4.107: Items a serem clonados para espaço em disco.............................................221 Figura 4.108: Botão para clonar items.................................................................................221 Figura 4.109: Gráfico de pizza para exibição de espaço livre e ocupado...........................222 Figura 4.110: Criando um gráfico de pizza..........................................................................222 Figura 4.111: Gráfico de histórico de espaço em disco.......................................................223 Figura 4.112: Criando o gráfico de histórico de uso de disco.............................................223 Figura 4.113: Trigger para cálculo de espaço em disco......................................................224 Figura 4.114: Trocando o template do host database para o PostgreSQL.........................229 Figura 4.115: Disponibilidade do PostgreSQL ativa no database.......................................230 Figura 4.116: Latência sendo exibida no label do link........................................................232 Figura 4.117: Latência de rede e trigger associados ao link com a Internet no mapa......233 Figura 4.118: Link no mapa identificando status do trigger...............................................233
  12. 12. Capítulo 1 Conhecendo o Zabbix - 12 Capítulo 1 Conhecendo o Zabbix 1.1. Objetivos 1) Apresentar a ferramento ao aluno. 1.1) Como front end organiza os componentes dentro do Zabbix. 1.2) Componentes visuais de monitoramento. 1.3) Alertas de incidentes. 1.4) Reinicialização de serviços 2) Mostrar ao aluno onde obter informações. 1.2. Conhecendo a ferramenta Siga os passos indicados pelo professor para acesso ao exemplo pronto na máquina dele. Você vai fazer um passo-a-passo conhecendo a ferramenta como um usuário comum (não superusuário).
  13. 13. Capítulo 1 Conhecendo o Zabbix - 13 1.3. Comunidades e forums O Zabbix tem uma documentação on-line que será usada durante o curso para consultas. O link de acesso é http://www.zabbix.com/documentation/. As comunidades também mantém uma série de forums em http://www.zabbix.com/forum/. Em destaque os seguinte: • Zabbix announcements: Anúncios e novas versões • Zabbix help: fórum principal de ajuda • Zabbix cookbook: várias configurações prontas postadas e comentadas. Muito útil. • Zabbix throubleshooting: se um problema persiste, este é o local para postar erros e soluções. • Zabbix em português y em espanhol: fórum em português e espanhol, útil quando você não lê inglês muito bem.
  14. 14. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 14 Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema 2.1. Objetivos 3) Preparar o ambiente de recebimento de alertas: 3.1) Configurar o Evolution para receber e-mails de alertas; 3.2) Configurar o Pidgin para receber mensagens instantâneas de alertas. 4) Preparar o ambiente para instalar o servidor do Zabbix: 4.1) Obter os fontes da ferramenta; 4.2) Preparar o PostgreSQL para servir de back end. 5) Instalar o servidor e agente: 5.1) Compilar o servidor e agente na máquina destinada a ser o monitorador; 5.2) Compilar e instalar o agente nas outras máquinas Linux; 5.3) Instalação dos binários dentro do Windows 2003 (com inicialização do agente como serviço); 5.4) Executar deploy do agente Zapcat no JBoss para monitoramento do
  15. 15. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 15 servidor de aplicações. 5.5) Testar o acesso ao SNMP de um switch a partir do monitorador. 6) Configuração de um virtual host dentro do Apache para o front end, incluindo modificação dos parâmetros do PHP. 2.2. Introdução Este capítulo apresenta todas as tarefas relacionadas a criação da base de sua solução de monitoramento. Aqui é onde será abordado a maior parte do conhecimento técnico de console Linux, deploying em JBoss, serviços de Windows e acesso à SNMP, visando incutir as competências necessárias para que, sozinho, você seja capaz de reproduzir estes passos em um ambiente de produção. Além disso, serão vistos os primeiros passos na utilização e familiarização com a interface web do Zabbix, mostrando como gerenciar os elementos mais básicos da ferramenta: usuários, hosts, templates, grupos de hosts e mapas. 2.3. Configurando os componentes de recebimento de alertas Por padrão o Zabbix possui quatro formas de alertas embutidos dentro de seu sistema: e-mails, cliente jabber, SMS via modem GSM e SMS via serviço de torpedos. De todos, o último não é muito útil aqui no Brasil, devido seguir os padrões das operadoras no Canadá e Estados Unidos. Dos restantes vamos ver o funcionamento do sistema de correios e de jabber dentro da sala de aula, devido a natureza do hardware, a emulação das máquinas virtuais do cenário e custos de mensagem não abordamos o uso dentro do nosso cenário com SMS. No entanto temos um apêndice que cobre o sistema de SMS com throubleshooting e dicas de configuração. Receber mensagens por cliente de e-mail é a maneira mais tradicional de
  16. 16. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 16 todas. Para caso de estudos precisamos configurar o evolution, cliente de e-mail padrão do Gnome. Abra o evolution pelo menu principal do Gnome e siga os passos descritos a seguir. 2.3.1. Configurando o cliente de correio eletrônico Esta é apenas um tela de boas vindas, clique em Avançar. Figura 2.1: Configuração do evolution (1/10)
  17. 17. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 17 Não há nada para ser restaurado, clique novamente em Avançar. Figura 2.2: Configuração do evolution (2/10)
  18. 18. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 18 Começaremos a configurar as contas de usuários dentro do sistema de LDAP que o cenário possui. Preencha os campos como abaixo para configurar a primeira conta e, em seguida, clique em Avançar. Figura 2.3: Configuração do evolution (3/10)
  19. 19. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 19 1) Nome Completo: System administrator 2) Endereço de e-mail: sysadmin@curso468.4linux.com.br. 1) Tipo de Servidor: devemos escolher POP, que é o recurso implantado para recepção de e-mails no cenário. 2) Servidor: é o endereço externo do servidor de e-mail. 3) Nome do usuário: O primeiro usuário que usaremos é o sysadmin. 4) Lembrar senha: para comodidade dos testes em curso ative o recurso de armazenamento de senha. Esta opção não é segura para ser usada em produção! Mas como no curso os usuários são fictícios e possuem a senha 123456 isso não vai nos impactar. Figura 2.4: Configuração do evolution (4/10)
  20. 20. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 20 Nesta tela, configure o recebimento automático a cada 1 minuto, assim não precisamos ficar esperando e-mails chegarem e, também não precisamos ficar clicando em Enviar/Receber a todo momento. Figura 2.5: Configuração do evolution (5/10)
  21. 21. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 21 Apesar de não utilizar o envio de e-mail sob o ponto de vista do usuário, é interessante configurar o SMTP para averiguar se os e-mails estão caminhando dentro do cenário. 1) No Tipo de Servidor escolha SMTP. 2) No Servidor coloque o mesmo endereço de e-mail que colocamos no POP3. Não reproduza este comportamento de aceite de e-mails sem autenticação em produção! O servidor de correio eletrônico dentro do cenário é apenas um meio de sabermos que as mensagens de alertas do Zabbix estão sendo enviadas por e-mail. Figura 2.6: Configuração do evolution (6/10)
  22. 22. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 22 1) Nome: Por final, configure um nome para esta conta. Isto é usado apenas para exibição no Evolution. Figura 2.7: Configuração do evolution (7/10)
  23. 23. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 23 Esta é apenas uma tela de finalização, clique em Aplicar. Torne o Evolution o seu cliente de e-mail padrão. Figura 2.9: Configuração do evolution (9/10) Figura 2.8: Configuração do evolution (8/10)
  24. 24. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 24 Na primeira vez que você entrar ele irá pedir a senha (123456) do usuário, digite-a e verifique se não houve nenhum erro. Não há nenhum e-mail na caixa de mensagens do sysadmin, logo nenhum mensagem vai aparecer. Agora que o Evolution esta é funcionamento, acesse o menu Editar → Preferências e clique no ícone Contas de Correio a esquerda. Através do botão Adicionar cadastre mais três contas seguindo os mesmos passos que anteriormente, mudando apenas os nomes e usuários. As contas a serem acrescentadas são Windows Administrator (winadmin), Java Engineer (javaeng) e DBA (dba). Após o término, escolha duas contas e teste o envio de mensagens entre elas. 2.3.2. Mensagens instantâneas Receber mensagens de alertas via Instant Messaging é útil em empresas que possuem um sistema interno de IM e os funcionários estão logados constantemente. O Zabbix suporta o envio destas mensagens via protocolo Jabber e o cenário já possui este tipo de serviço através de um servidor OpenFire instalado na máquina mestra do Zabbix. Vamos então configurar o Pidgin, um cliente de IM simples e eficiente para receber os alertas enviados via protocolo Jabber pelo servidor do Zabbix. Abra o aplicativo pelo menu principal do Gnome e siga os passos a seguir. Figura 2.10: Configuração do evolution (10/10)
  25. 25. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 25 Na tela de boas vindas clique em Adicionar. 1) O protocolo Jabber usa a opção XMPP. 2) No nome do usuário use sysadmin. Figura 2.12: Configurando uma conta Jabber no Pidgin Figura 2.11: Tela de boas vindas do Pidgin
  26. 26. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 26 3) No domínio, você deve apontar o nome da máquina cadastrada para IM e não o domínio. 4) Na senha coloque 123456. 5) Ative o Lembrar Senha. Não ative Lembrar Senha opção em produção! Isso seria uma terrível falha de segurança. Ela só esta sendo ativada para comodidade do curso. 1) Clique na aba Avançado. 2) Escolha para usar criptografia apenas se estiver disponível. Clique em Adicionar e ative a conta na interface do Pidgin. 2.4. Obtendo os fontes do Zabbix Antes de começar a trabalhar com as diversas partes básicas da instalação, precisamos baixar o código fonte do Zabbix. Você sempre pode fazê-lo através da Figura 2.13: Definindo o uso de criptografia
  27. 27. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 27 URL http://www.zabbix.com/download.php, mas o comando abaixo já vai colocar o pacote de fontes no local apropriado dentro da máquina virtual zabbixsrv. # cd /usr/src # wget http://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest %20Stable/1.8.4/zabbix-1.8.4.tar.gz # tar xf zabbix-1.8.4.tar.gz Você também pode escolher outros mirrors e trocar o endereço acima se desejar. 2.5. Preparando o banco de dados O Zabbix não utiliza recursos como o RRDTools para armazenar dados, ele faz uso apenas de um SGBD ou de um banco de dados mais simplórios (como o sqlite) para armazenar configurações, hosts, templates, histórico, etc. Por isso precisamos selecionar um dos bancos nativos ou usar ODBC (este último não é recomendado). No caso deste curso elegemos o PostgreSQL, um SGBD livre e de alta performance capaz de manipular uma grande quantidade de dados. Apesar da maioria das instalações de Zabbix estar em MySQL recomendamos fortemente que seja usado o PostgreSQL pois sua robustes se mostrou mais adequada aos tipos de dados que o Zabbix trabalha. Embora não pareça a princípio, o banco de dados do Zabbix é de extrema valia para a, empresa pois ele contém todo o histórico de funcionamento de sua infraestrutura e através dele podemos coletar SLAs e informações de capacity plan. É recomendado também que seu banco de dados possua um plano de backups regular via PITR. 2.5.1. Instalação Para instalar a versão do repositório do PostgreSQL: # aptitude install postgresql-8.4
  28. 28. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 28 # yum install postgresql84-server 2.5.2. Criando o usuário e o banco Com o banco de dados instalado devemos criar uma base de dados e um usuário com as devidas permissões de acesso ao mesmo. O nome de ambos elementos são totalmente opcionais, mas neste material vamos convencionar que o banco de dados se chamará zabbixdb e o usuário será zabbix. Muitas documentações e até o próprio arquivo padrão de configuração do zabbix server utiliza o nome do banco como zabbix, mas isso pode causar algumas confusões entre ele e o nome do usuário, foi por isso que optamos pela convensão acima. Somente o superusuário do PostgreSQL postgres tem permissão de realizar a criação dos objetos citados acima, para podermos acessar o terminal de console do banco (psql) temos que entrar como usuário postgres no linux e então usar o comando. Note que o prompt de comando irá se alterar indicando que estamos no console do PostgreSQL. # su – postgres $ psql psql (8.4.5) Digite "help" para ajuda. postgres=# Agora que conseguimos o acesso como superusuário, vamos primeiro criar o banco de dados. O comando create database irá cuidar desta tarefa, note que todos os comandos digitados dentro do console terminam com ponto-e-vírgula (;). postgres=# CREATE DATABASE zabbixdb; Com o banco de dados criado com sucesso vamos criar o usuário e definir sua senha, para propósito de organização deste material a senha do banco de dados do zabbix será zabbixdbpw. Ao digitar a senha note que ela não aparece como no quadro de comando abaixo! postgres=# CREATE ROLE zabbix LOGIN;
  29. 29. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 29 postgres=# password zabbix Digite nova senha: zabbixdbpw Digite-a novamente: zabbixdbpw É interessante definir a senha por password pois assim ela não fica armazenada no histórico de comandos do usuário. Agora precisamos liberar a conexão do servidor ao banco de dados do zabbix, para isso edite o arquivo pg_hba.conf conforme abaixo e acrescente a linha em destaque. postgres=# q $ logout # vim /etc/postgresql/8.4/main/pg_hba.conf … host zabbixdb zabbix 127.0.0.1/32 md5 Reinicie o banco de dados e realize o teste de conexão. # /etc/init.d/postgresql restart # psql -h localhost -U zabbix zabbixdb psql (8.4.5) conexão SSL (cifra: DHE-RSA-AES256-SHA, bits: 256) Digite "help" para ajuda. zabbixdb=> q # Se você estiver usando a versão 9.0 do PostgreSQL é importante lembrar que o suporte a imagens do Zabbix assume que o banco utiliza a forma antiga de armazenamento bytea (escape em vez de hex). Para configurar o comportamento antigo use o comando “ALTER DATABASE nome SET bytea_output=escape;” dentro do console do psql. Isso pode ser configurado no usuário ou no postgresql.conf também. 2.5.3. Carga inicial Agora vamos fazer a carga inicial do banco carregando os esquemas, os dados mais básicos. # su - postgres $ cd /usr/src/zabbix-1.8.4/create/schema
  30. 30. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 30 $ cat postgresql.sql | psql zabbixdb $ cd ../data $ cat data.sql | psql zabbixdb Não faça a carga do arquivos de imagens, iremos abordar como colocar figuras personalizadas e de melhor definição mais em frente neste capítulo. 2.5.4. Concedendo as permissões necessárias ao usuário Agora é o momento de conceder as permissões de acesso nas tabelas, o usuário Zabbix precisa de permissões de SELECT, INSERT, UPDATE e DELETE apenas. Com a sequência de comandos abaixo você conseguirá ativar todas as permissões necessárias. Embora este processo seja mais complicado do que fazer deixar o usuário zabbix como dono do banco ele é muito mais seguro e deve ser utilizado em produção $ psql zabbixdb postgres=# a  postgres=# t  postgres=# o /tmp/grantzabbix.sql  postgres=# SELECT 'GRANT SELECT,UPDATE,DELETE,INSERT ON ' || schemaname || '.' || tablename || ' TO zabbix ;' FROM pg_tables;  postgres=# o postgres=# i /tmp/grantzabbix.sql  postgres=# q $ logout 1) O comando a remove o alinhamento dos elementos na tabela; 2) O t mostra apenas tuplas, eliminando cabeçalhos e rodapés; 3) O comando o grava o output no arquivo definido (/tmp/grantzabbix.sql), note que é preciso de outro o sem o nome do arquivo para encerrar o output; 4) Este comando em SQL seleciona todas as tabelas do banco de dados e monta uma string com o comando de permissão (GRANT), você pode ver o conteúdo deste comando no arquivo /tmp/grantzabbix.sql; 5) O comando i carrega e executa o conteúdo do arquivo gerado acima. 2.6. Instalação do servidor
  31. 31. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 31 Zabbix via código fonte Em alguns casos a distribuição de Linux que você escolher pode possuir em seu repositório uma versão satisfatória do Zabbix disponível. Se for este o caso, ótimo! Simplesmente instale o pacote e comece a configurar. No entanto isso nem sempre é verdade e pode ser que seja necessário uma versão mais recente (devido a recursos novos, etc.) na sua solução de monitoramento. Para suprir esta necessidade é preciso compilar o Zabbix a partir de seu código fonte. Esta sessão toda é dedicada ao processo de criar os binários, cobrindo quais dependências devem ser instaladas e como escolher os recursos a serem compilados. Via de regra se algum tipo de recurso não se mostrar necessário a princípio não o ative, isso gera binários mais leves (com menos código embutido) e alivia o consumo de memória em servidores com altas cargas de métricas sendo monitoradas. Para começar, vamos instalar os dois pacotes mais básicos para compilação de fontes no Debian, o build-essential e o make. O primeiro é um meta pacote que irá instalar todos os pacotes mínimos de compilação de fontes (compilador, linkeditor, cabeçalhos do kernel e da libc, etc.) e o segundo é um automatizador de compilação. No terminal do zabbixsrv rode os seguintes comandos. # aptitude install build-essential make # cd /usr/src/zabbix-1.8.4 # ./configure --help | less O configure é um script gerado a partir do autotools, um conjunto de ferramentas para facilitar a compilação de fontes em C. A opção --help fornecida acima irá listar todas as opções que podemos ativar ou não para compilar o Zabbix. Note que o configure não compila nada ele apenas “prepara a cama” para realizar a compilação com o make. Na tabela a seguir estão as opções relevantes do configure para a nossa tarefa. Opção do configure Descrição --prefix=diretório Define onde o Zabbix será instalado, é importante lembrar que se nada for configurado nesta opção os
  32. 32. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 32 Opção do configure Descrição binários e manuais serão colocados em /usr/local como padrão. No entanto para manter a instalação organizada e faciliar atualizações de versões do Zabbix nós o colocaremos em /opt/zabbix-1.8.4. --mandir=/usr/share/man Aponta a localização correta das páginas de manual. Assim podemos usar o comando man para acessar as opções dos binários do Zabbix. --enable-static Ativa a geração de binários em forma estática (sem shared libraries), é recomendado deixar esta opção desligada. --enable-server Ativa a compilação do servidor, no caso presente iremos ativar esta opção, quando formos compilar apenas o agente iremos desabilitá-la. --enable-proxy Compila os binários para sistemas distribuidos. Como neste curso não abordaremos o sistema de proxy do Zabbix vamos deixar esta opção sempre desabilitada. --enable-agent Compila os binários para os agentes, é uma excelente ideia sempre deixar esta opção ativada. Mesmo em servidores dedicados do Zabbix é uma boa prática monitorar a própria máquina. --enable-ipv6 Compila com suporte a IPV6. Embora não seja absolutamente necessário, dado ao recente anúcio do esgotamento de endereços IP da IANA o IPV6 logo será necessário em muitos ambiente. --with-ibm-db2 Ativa o suporte ao back end do bando de dados IBM DB2. Vamos deixá-lo desabilitado uma vez que usaremos o PostgreSQL. Você pode escolher apenas um back end. --with-mysql Ativa o suporte ao back end do bando de dados MySQL. Vamos deixá-lo desabilitado uma vez que usaremos o PostgreSQL. Você pode escolher apenas um back end. --with-oracle Ativa o suporte ao back end do bando de dados Oracle. Vamos deixá-lo desabilitado uma vez que usaremos o PostgreSQL. Você pode escolher apenas um back end. --with-pgsql Ativa o suporte ao back end do bando de dados PostgreSQL, vamos deixá-lo habilitado. Você pode escolher apenas um back end. --with-sqlite3 Ativa o suporte ao back end do bando de dados sqlite versão 3. Vamos deixá-lo desabilitado uma vez que usaremos o PostgreSQL. Você pode escolher apenas um back end. --with-jabber Ativa o suporte do servidor de contato com servidores Jabber permitindo que o --with-libcurl Ativa o suporte a biblioteca de HTTP CURL. É necessária para o monitoramento de serviços Web e autentiação via HTTP.
  33. 33. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 33 Opção do configure Descrição --with-iodbc Ativa o suporte ao back end do bando de dados via ODBC. Não é recomendado. --with-unixodbc Como o anterior mas usa unixODBC ao invés de iODBC. Este pacote é mais encontrado do que o iODBC. --with-net-snmp Ativa o suporte a monitoramento via SNMP usando a biblioteca net-snmp do unix. Vamos deixá-la ativada. --with-ucd-snmp Mesmo que o anterior, mas usando a biblioteca ucd, menos comum. Vamos deixá-la desativada. --with-ssh2 Ativa suporte a monitoramento via SSH e verificação de status de um serviço de conexão remota segura. Vamos deixá-lo ativado. --with-openipmi Ativa suporte a comandos e monitoramento de hardware por IPMI. Só é relevante quando o hardware que você vai monitorar e o S.O. Instalado nele possuem esta especificação. Para este curso deixaremos ele desativado. --with-ldap Ativa suporte a autenticação via LDAP e monitoramento do status de um serviço de diretórios remoto. Vamos deixá-la ativada. Tabela 1: Opções de compilação do Zabbix 2.6.1. Dependências de compilação. Ao executar o comando abaixo, colete cada erro que aparecer e aponte na tabela o pacote que deve ser instalado para resolver a dependência. Isto vai servir de referência para você em futuras instalações e também tem como intenção ensinar a lidar com erros de depedências de compilação. Use o comando aptitude para encontrar os pacotes corretos. ./configure --prefix=/opt/zabbix-1.8.4 –mandir=/usr/share/man --enable-server --disable-static --disable-proxy --enable-agent --enable-ipv6 --with-pgsql --with- jabber --with-libcurl --with-net-snmp --with-ssh2 --without-openipmi --with-ldap Erro Dependência configure: error: PostgreSQL library not found Pacote postgresql-8.4-dev checking for IKSEMEL... configure: error: Jabber library not found Pacote libiksemel-dev e acrescentar --with-jabber=/usr configure: error: Curl library not found Pacote libcurl4-dev
  34. 34. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 34 Erro Dependência configure: error: Invalid NET-SNMP directory - unable to find net-snmp-config Pacote libsnmp-dev configure: error: SSH2 library not found Pacote libssh2-1-dev configure: error: Invalid LDAP directory - unable to find ldap.h Pacote libldap2-dev Você pode otimizar os binários tornando o Zabbix mais rápido mas dependente de uma CPU compatível se você exportar as variáveis de ambiente CFLAGS e CXXFLAGS com o seguinte valor “-O2 -pipe -march=native”, antes de executar o configure. Se você estiver usando um sistema de 32 bits acrescente ainda -fomit-frame-pointer. Cuidado com outros flags de compilação! Você pode acabar com um binário defeituoso! 2.6.2. Compilando e instalando Agora que o configure chegou ao ponto final e todas as dependências foram resolvidas é hora de executar a compilação com o comando make, de fato o make não é um compilador, ele apenas chama os comandos necessários para construir os binário através de um arquivo Makefile que foi gerado pelo configure. Execute conforme abaixo o comando os comandos, no final o comando ln irá criar um link simbólico para /opt/zabbix. Isso é uma boa prática a ajuda a trocar as versões do Zabbix durante uma migração apontando o link para a pasta com os novos binários, enquanto mantemos os anteriores no caso de um downgrade emergencial. Você pode substituir o -j2 por outro número para acelerar a sua compilação se você tiver múltiplos cores. Uma regra geral é 2xCores+1. # make -j2 # make install # ln -svf /opt/zabbix-1.8.4 /opt/zabbix # tree /opt/zabbix O comando tree vai mostrar a hierarquia de diretórios e arquivos abaixo do
  35. 35. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 35 caminho da instalação, a tabela abaixo tem um descritivo de cada um deles. Binário Funcionalidade zabbix_get Utilitário para realizar consultas nos agentes via linha de comando. Muito útil, nós o utilizaremos extensamente durante o curso. zabbix_sender Utilitário para envio de traps para o servidor do Zabbix. É necessário criar um item especial do tipo Zabbix trap para lidar com estes envios. Útil para alertar incidentes instantâneamente para o servidor como o início, termino ou erro de um backup. zabbix_agent Agente para ser usado com o super daemon xinetd ou similar, não é necessário na grande maioria dos casos e será removido do diretório. zabbix_agentd O daemon do agente do Zabbix. Que fica na memória a espera das requisições do servidor. zabbix_server O daemon do servidor do Zabbix. Este é o componente principal de toda a infraestrutura. Tabela 2: Binários de uma instalação de servidor e agente do Zabbix É preciso remover o zabbix_agent e sua página de manual, uma vez que iremos usar apenas o daemon zabbix_agentd. Também é uma boa prática não manter os símbolos de depuração nos binários de produção, o comando strip irá retirar estes símbolos e o executável final será ligeiramente menor em tamanho (o que ajuda a consumir menos memória também). # rm /opt/zabbix-1.8.4/sbin/zabbix_agent # rm /usr/share/man/man1/zabbix_agent.1* # strip --strip-all /opt/zabbix-1.8.4/*/* Não é aconselhável executar daemons de sistema como root, por isso vamos criar um grupo e usuário de nome zabbix para que o serviço entrem na memória como usuários não privilegiados. O nome do usuário que o Zabbix usa é hadcoded, ou seja, ele é programado dentro do código fonte e não pode ser alterado via configuração. Desse modo sempre temos que criar o usuário com o nome zabbix, já o nome do grupo é totalmente opcional.
  36. 36. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 36 # groupadd zabbix # useradd -g zabbix -m -s /bin/bash zabbix Ambos os daemons do agente e do servidor precisam de dois diretórios para armazenar os logs e o arquivo de PID. Com os comandos abaixo crie e dê as permissões necessárias para ambos. # mkdir /var/{log,run}/zabbix -p # chown zabbix. /var/{run,log}/zabbix 2.6.3. Serviços de rede Acrescente ao /etc/services o mapeamento de portas do Zabbix Agent e Zabbix Trapper. # vim /etc/services … zabbix-agent 10050/tcp Zabbix Agent zabbix-agent 10050/udp Zabbix Agent zabbix-trapper 10051/tcp Zabbix Trapper zabbix-trapper 10051/udp Zabbix Trapper Estas entradas permitem que programas como Wireshark e netstat reconheçam as portas do Zabbix. 2.6.4. Arquivos de configuração Os arquivos de configuração do Zabbix acompanham os seus fontes, mas a 4Linux preparou um conjunto de arquivos para uso em produção com uma organização melhorada. Ao invés de simplesmente colocar todas as configurações em um único arquivo, os parâmetros foram distribuídos em grupos lógicos separados em vários arquivos e diretórios. O Zabbix por padrão procura pelos seus arquivos em /etc/zabbix, a partir dos arquivos principais (zabbix_server.conf e zabbix_agentd.conf) outros arquivos foram chamados e inseridos na configuração. A tabela abaixo demonstra como ficaram organizados os diretórios e seu conteúdo. Diretório ou arquivo Descrição /etc/zabbix/agent.d Diretório para configurações extras do agente (carregado pelo arquivo principal)
  37. 37. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 37 Diretório ou arquivo Descrição /etc/zabbix/agent.d/checkings.conf Configuração de checagens ativas e passivas do agente. /etc/zabbix/agent.d/logs.conf Configuração de logs (local, nível de debug, etc.) do agente. /etc/zabbix/agent.d/network.conf Configurações de rede do agente. /etc/zabbix/agent.d/remote_commands.conf Configuração de recebimento de comandos remotos no agente. /etc/zabbix/alert.d Diretório para scripts de alertas externos /etc/zabbix/externalscripts Diretório para scripts de extenção do agente do Zabbix. /etc/zabbix/server.d Diretório para configurações extras do servidor (carregado pelo arquivo principal) /etc/zabbix/server.d/database.conf Configuração do back end de banco de dados do servidor. /etc/zabbix/server.d/logs.conf Configuração de logs (local, nível de debug, etc.) do servidor. /etc/zabbix/server.d/network.conf Configurações de rede do servidor. /etc/zabbix/server.d/process.conf Configurações de quais daemons devem iniciar e qual a quantidade deles, além de consumo de memória do servidor. /etc/zabbix/server.d/proxy.conf Configuração de monitoramento distribuído do servidor. /etc/zabbix/zabbix_agentd.conf Arquivo principal de configuração do agente /etc/zabbix/zabbix_server.conf Arquivo principal de configuração do servidor Tabela 3: Arquivos e diretórios de configuração Copie o arquivo compactado do DVD (confs/config-server.tar.bz2 e confs/config-agent.tar.bz2) para dentro do /tmp da máquina virtual. Este arquivos tem vários valores padrões razoáveis para começar e necessitam de pouca configuração. Não é de intenção deste material dissecar cada uma das opções de configuração vamos ver apenas as mais relevantes, porém os arquivos tem extensos comentários em português criados pelo autor deste material. # cd / # tar xf /tmp/config-server.tar.bz2 # tar xf /tmp/config-agent.tar.bz2 # chown root.zabbix /etc/zabbix -R 
  38. 38. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 38 # find /etc/zabbix -type d -exec chmod 0750 {} ;  # find /etc/zabbix -type f -exec chmod 0640 {} ;  1) Note que o grupo dos diretórios e seus arquivos foram apontados para zabbix. O dono continuou a ser o root; 2) Todos os diretórios tiveram a permissão de acesso global revogada, nenhum usuário do sistema tem que acessar esta pasta exceto o do Zabbix (existem informações sensíveis como senhas em text/plain nestes arquivos ). Também, apenas o root tem direitos de gravação nessas pastas o grupo zabbix tem apenas acesso de leitura. 3) Os arquivos seguem a mesma lógica que os diretórios. Não deixe de fazer o procedimento das permissões, ele vai tornar a sua instalação do Zabbix muito mais segura. Para finalizar vamos configurar o sistema para apontar o PATH para o link simbólico de instalação. Isso vai facilitar o acesso aos comandos. # vim /etc/profile.d/zabbix-path.sh 1 export PATH=”$PATH:/opt/zabbix/sbin:/opt/zabbix/bin” # . /etc/profile # zabbix_get --help # zabbix_agentd --help 2.6.5. Testando sua instalação Utilize o manual do zabbix_agentd para descobrir como listar as métricas suportadas pelo ambiente e como testar um delas individualmente. Depois inicie o agente, veja o contéudo do arquivo de logs e use os comandos ps e netstat para ver quais os processos ele iniciou e em quais portas eles se vincularam. Depois do termino com o agente vamos configurar o servidor conforme a seguir e realizar o mesmo procedimento de inicialização e pesquisa que no agente. # vim /etc/zabbix/server.d/database.conf DBHost=127.0.0.1  DBPort=5432  DBName=zabbixdb  DBUser=zabbix  DBPassword=zabbixdbpw  1) O endereço IP ou nome DNS do servidor que esta com o banco de dados. Como no nosso cenário o banco e o servidor Zabbix estão na mesma máquina virtual utilizamos o endereço de loopback;
  39. 39. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 39 2) A porta TCP de acesso do banco, esta é a porta padrão do PostgreSQL; 3) Nome do banco de dados que criamos no início do capítulo; 4) Nome do usuário que criamos e demos permissão; 5) Senha do usuário acima. Agora execute os comandos de inicialização dos daemons conforme indicado abaixo. # zabbix_agentd # zabbix_server Verifique se as últimas linhas do log indicam se ambos iniciaram corretamente, e também se todos os processos estão na memória. # tail -n1 /var/log/zabbix/zabbix_server.log 1203:20110207:092633.044 server #1 started [DB Cache] # tail -n1 /var/log/zabbix/zabbix_agentd.log 871:20110207:092607.522 zabbix_agentd collector started # ps u -C zabbix_agentd SER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND zabbix 863 0.0 0.1 4836 496 ? SN 09:25 0:00 /opt/zabbix/sbin/zabbix_agentd … # ps u -C zabbix_server USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND zabbix 1201 0.0 1.0 46696 2636 ? SN 09:26 0:03 /opt/zabbix/sbin/zabbix_server … Note que a saída do último comando é muito grande. Ao final dos testes mate os processos com o comando killall. # killall zabbix_server zabbix_agentd 2.6.6. Scripts de boot No CD temos alguns scripts de boot prontos para uso no Debian, copie os arquivos boot/debian/server-bootscripts.tar.bz2 e boot/debian/agent- bootscripts.tar.bz2 para o /tmp e descompacte-os na raiz. # cd / # tar xvf /tmp/server-bootscripts.tar.bz2 # tar xvf /tmp/agent-bootscripts.tar.bz2 Teste a instalação dos scripts.
  40. 40. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 40 # /etc/init.d/zabbix-server start # /etc/init.d/zabbix-agent start Por fim, coloque os scripts no boot da máquina virtual. # update-rc.d zabbix-agent defaults # update-rc.d zabbix-server defaults 2.7. Instalação do agente Zabbix via compilação Agora chegou o momento de instalar o agente do Zabbix nas outras máquinas virtuais com Linux. O procedimento de instalação é similar ao do servidor, mas não iremos habilitar a opção --enable-server no configure. Também não são necessários todos as opções de with usadas acima, o agente é certamente mais simples que o servidor em termos de funcionamento e só precisa do suporte a ldap. 2.7.1. Exercício: compile e instale o agente nas VM com Linux Com as informações acima em mãos realize os procedimentos de instalação dos agentes na máquina virtual Presentation. Não se esqueça também de colocar os scripts de boot e os arquivos de configuração nela e iniciar o processo na memória. 2.7.2. Acesso ao agente pelo servidor Agora que o agente esta instalado e rodando é preciso realizar algumas configurações básicas para que ele permita o acesso vindo do servidor. Primeiro vamos verificar se suas configurações de porta e rede estão de acordo, usando o netstat vamos listar as portas que ele esta escutando. # netstat -lntp | grep zabbix tcp 0 0 127.0.0.1:10050 0.0.0.0:* OUÇA 592/zabbix_agentd A saída do comando mostra que o daemon esta apenas vinculado ao endereço localhost da máquina, vamos modificar seu arquivo de configuração e reiniciá-lo. Identifique qual o IP local da máquina que pertence a DMZ (rede 172.27.0.0/24) e substitua 127.0.0.1 por ele dentro do arquivo /etc/zabbix/agent.d/networks.conf no parâmetro ListenIP.
  41. 41. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 41 # vim /etc/zabbix/agent.d/network.conf 1 # Este é o arquivo de configuração de rede do agente do Zabbix. 2 3 # ============================================================================ 4 # Qual porta e IP que o agente vai se vincular para receber checagens 5 # passivas do servidor. 6 # 7 ListenIP=172.27.0.1  8 ListenPort=10050 9 10 # ============================================================================ 11 # IP o qual o agente do Zabbix irá usar para enviar dados, é opcional pois o 12 # sistema usa o IP o qual esta designado a enviar dados conforme a tabela de 13 # roteamento. 14 # 15 SourceIP= 1) Mudar para o IP interno do Presentation. Agora reinicie o agente e confira novamente a qual IP ele esta vículado. # /etc/init.d/zabbix-agent restart Stopping Zabbix agent daemon: zabbix_agentd Starting Zabbix agent daemon: zabbix_agentd # netstat -lntp | grep zabbix tcp 0 0 172.27.0.1:10050 0.0.0.0:* OUÇA 654/zabbix_agentd Se o serviço agora estiver vinculado ao IP correto repita estes passos em cada VM. Neste ponto é importante paramos para que possamos verificar uma possível falha de conexão. Vamos forçar a VM zabbixsrv tentar se comunicar com o gateway (presentation) via zabbix_get. Vamos usar a key agent.ping como exemplo. # zabbix_get -s gateway -k 'agent.ping' zabbix_get [6646]: Get value error: *** Cannot connect to [gateway]:10050 [Connection timed out] Note a mensagem 'Connection timed out' no final da linha de erro, também repare que levou algum tempo para que o comando retornasse a mensagem. Isso acontece porque o filtro de pacotes da máquina esta bloqueando conexões, podemos averiguar isto com mais precisão usando a ferramenta nmap conforme abaixo: # nmap -P0 -p 10050 gateway
  42. 42. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 42 Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-30 02:17 BRST Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE 10050/tcp filtered unknown MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems) Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds O estado da porta que o nmap retornou é filtered, ou seja, não há retorno de pacotes do sistema. Para podermos liberar o acesso use o procedimento abaixo no terminal da máquina presentation. # iptables -A INPUT -j ACCEPT -p tcp --dport 10050 -s 172.27.0.10 # iptables-save > /etc/iptables/rules Repetindo o nmap a partir do servidor do Zabbix. # nmap -P0 -p 10050 gateway Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-30 02:34 BRST Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE 10050/tcp open unknown MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems) Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds Se o estado retornado for open, então o servidor é capaz de se conectar ao agente no nível da camada TCP, mas ainda precisamos ter certeza absoluta que ele esta permitindo conexões no nível de camada de aplicação. Vamos repetir o teste com o zabbix_get e ver se o agente retorna o valor 1. # zabbix_get -s gateway -k 'agent.ping' ← Note que ele não retorna nada! Apenas uma linha em branco aparece no resultado do comando. Isso esta ocorrendo porque o agente precisa liberar a consulta para o servidor, por padrão os arquivos de configuração apenas permitem que ele seja acessado a partir do localhost. Para liberar o acesso temos que editar o arquivo /etc/zabbix/agent.d/checkings.conf e mudar dois parâmetros. O primeiro, obviamente é o Server que aceita uma lista separada por vírgula
  43. 43. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 43 (,) dos endereços que são permitidos fazer a consulta. O segundo é o Hostname representando o nome da máquina com o qual o agente deve se apresentar ao servidor. Este nome deve ser único e não necessariamente precisa ser igual ao hostname real da máquina, de fato no nosso cenário iremos deixá-lo diferente. # vim /etc/zabbix/agent.d/checkings.conf 1 # Este é o arquivo para configuração de checagens no agente. Há dois tipos de 2 # checagens, a passiva e a ativa. 3 # 4 # Checagens passivas são o padrão, o servidor faz o agendamento das métricas e 5 # manda uma requisição ao agente que aguarda passivamente (dai o nome), este 6 # então coleta o dado do sistema e envia de volta ao servidor. 7 # 8 # Uma checagem ativa permite que o agente receba uma lista de itens a serem 9 # monitorados do servidor e ao invés deste último cuidar do agendamento e 10 # requisições é o agente que toma para si esta tarefa. 11 # 12 # Checagens ativas são úteis quando o Firewall não permite que o servidor de 13 # monitoramento alcance o agente via rede ou quando se utiliza um sistema de 14 # monitoramento de logs onde o monitoramento ativo é obrigatório. 15 # 16 17 # ============================================================================ 18 # Quais são os servidores para recebimento de requisições ou obtenção da lista 19 # de checagens ativas. 20 Server=172.27.0.10  21 22 # ============================================================================ 23 # Como este host esta cadastrado dentro do Zabbix. Isto não precisa corrsponder 24 # ao hostname da máquina ele é uma string de identificação do agente para com o 25 # servidor do Zabbix. 26 # 27 Hostname=Presentation  … 1) Sempre temos que mudar este parâmetro para o endereço do servidor ou nome DNS do mesmo. Se houverem mais de um servidor, separe os endereços/nome por vírgula; 2) Este é o nome a ser cadastrado no front end do Zabbix e não o nome de DNS (apesar que podem ser os mesmos). Reinicie o agente mais uma vez e faça o teste com zabbix_get a partir do servidor.
  44. 44. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 44 # zabbix_get -s gateway -k 'agent.ping' 1 ← Se o comando resultante retornou 1 então o servidor poderá acessar o agente a partir de agora. 2.7.3. Exercício sobre instalação de agente em Linux 1) Instale o agente do Zabbix via compilação nas máquinas virtuais Application e Database conforme mostrado neste capítulo. 2.8. Instalando o agente em ambientes Windows Um dos objetivos do curso é demonstrar como o Zabbix é capaz de monitorar redes heterogêneas com vários sistemas operacionais e ativos de rede. Esta sessão cuida de instalar o agente do Zabbix em um Windows 2003.
  45. 45. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 45 Primeiro é preciso baixar os executáveis pelo endereço http://www.zabbix.com/downloads.php, localize o link de binários para Windows como na Figura 2.14. Clique no link de download e escolha um local para colocar o arquivo compactado, no exemplo da apostila ele foi colocado em C:Downloads. Abra a pasta em que o arquivo foi salvo e descompacte o arquivo. Dentro dele você encontrará outras duas pastas para arquiteturas de 32 e 64 bits. No nosso caso iremos usar os de 32 bits. Figura 2.14: Baixando o agente do Zabbix no Windows
  46. 46. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 46 Volte a raiz e crie um diretório chamado Zabbix e dentro dele ainda crie mais três diretórios: conf, log e bin e copie os executáveis descompactados dentro deste último. Obtenha os arquivos do DVD com a configuração do agente do Windows (conf/agent-win-config.zip) e descompacte dentro da conf o seu conteúdo. Apague o arquivo zip depois disso. O arquivo zabbix_agentd.conf deve ficar na raiz da pasta conf, assim como os diretórios agent e externalscripts. Cuidado na hora de descompactar. Edite o arquivo c:Zabbixconfagentcheckings.conf e mude os parâmetros Server e HostName conforme a Figura 2.17, para permitir o acesso do servidor e o arquivo c:Zabbixconfagentnetwork.conf para vinculá-lo ao endereço IP da placa de rede. Use o Wordpad para alterar estes arquivos, o Notepad tem vários problemas com codificação e finais de linha. Figura 2.15: Instalando os executáveis no Windows Figura 2.16: Diretório de configuração do Zabbix no Windows
  47. 47. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 47 Agora vamos testar a instalação, abra dois prompts de comando, no primeiro acesse o diretório dos binários e execute o comando conforme abaixo. cd C:Zabbixbin zabbix_agentd -c ..zabbix_agentd.conf Note que uma mensagem dizendo que ele foi iniciado pelo console irá aparecer na tela. É porque o Windows não é capaz de executar o agente como um daemon da maneira que o Linux faz, mais a frente veremos como iniciá-lo como serviço do Windows que é maneira correta de se fazer. Outra mensagem, desta vez via caixa de dialogo, também vai aparecer na tela. É o serviço de segurança do Windows que esta perguntado se deve bloquear ou não esta aplicação. Obviamente devemos clicar em Desbloquear. Figura 2.17: Configurando o agente no Windows
  48. 48. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 48 Agora no segundo prompt de comando, use o comando netstat como abaixo para verificar se ele esta escutando no endereço correto. netstat -an 2.8.1. Executando o agente como serviço Instalar o agente do Zabbix como serviço é muito simples. No prompt de comando onde você o testou pressione CTRL+C para cancelar a execução do programa (demora alguns segundos). Quando o prompt retornar digite: zabbix_agentd.exe -c c:Zabbixconfzabbix_agentd.conf --install Duas mensagens irão aparecer indicando a instalação do agente como Service e Event source. Para conferir se o agente esta mesmo no ar abra o Painel de Controle → Ferramentas Administrativas → Serviços e procure pelo serviço chamado Zabbix Agent. Figura 2.18: Desbloqueando o agente no Windows
  49. 49. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 49 Nesta tela é também possível parar, reiniciar, etc. o agente através da barra de ícones na parte superior da janela. Como o serviço inicia parado devemos clicar sobre ele e no ícone Iniciar o Serviço (representado pelo símbolo de play). Certifique-se que ele esta para ser iniciado automaticamente, evitando que se a máquina for reiniciada ele pare. Teste no servidor do Zabbix se ele esta conseguindo alcançar o agente. # zabbix_get -s win2003 -k 'agent.ping' 1 Se ele retornar 1 como acima, então a instalação esta concluída. 2.9. Instalação do agente Zapcat para JBoss O Zabbix possui alguns agentes programado por terceiros além do nativo que acompanha os fontes padrão. Um destes agentes é o Zapcat, que é capaz de monitorar através de um deploy servidores JBoss e Tomcat. No nosso cenário temos um servidor JBoss na máquina virtual Application que será monitorado pelo Zapcat. Figura 2.19: O agente do Zabbix sendo executado como serviço automático.
  50. 50. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 50 O resto desta sessão é dedicado à instalação e configuração deste agente. O Zapcat é na verdade um JMX Bridge, ele é capaz de coletar os MBeans JMX do servidor e expô-lo para o Zabbix via Zabbix API. Diferente do agente ele escuta na porta 10051 (mas isso é configurável) e requer que outro host a parte seja criado dentro da interface do Zabbix (veremos isso mais adiante). 2.9.1. Obtenção do binário Siga o procedimento abaixo para obter o binário do zapcat. Você irá baixá-lo do Source Forge. # cd /var/tmp # wget http://ufpr.dl.sourceforge.net/project/zapcat/zapcat/zapcat-1.2/zapcat-1.2.zip # unzip zapcat-1.2.zip # cd zapcat-1.2 # ls bin build.xml COPYING lib openfire README samples src templates webapp zapcat-1.2.jar zapcat-1.2.war zapcat-openfire-1.2.jar Note que o zapcat vem na forma de um .war (aplicação web java) e .jar (applicativo java). Vamos nos ater apenas ao modo web. 2.9.2. Deployment Para instalar o Zapcat, simplesmente copie o binário para a pasta de deploy da instância em execução do JBoss. No nosso caso esta pasta é /opt/jboss/server/application/deploy/. # cp zapcat-1.2.war /opt/jboss/server/application/deploy/ # tail /opt/jboss/server/application/log/server.log … 2011-01-30 06:08:10,616 INFO [org.jboss.system.server.Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 27s:81ms 2011-01-30 06:10:25,679 INFO [org.jboss.web.tomcat.service.TomcatDeployer] deploy, ctxPath=/zapcat-1.2, warUrl=.../tmp/deploy/tmp3690979215130123277zapcat-1.2-exp.war/ A última mensagem do log indica que o pacote foi instalado com sucesso (deployed). Ele já esta funcionando e podemos averiguar isso com o comando netstat como anteriormente. # netstat -lntp | grep ':1005' tcp 0 0 172.27.0.20:10050 0.0.0.0:* OUÇA 28751/zabbix_agentd tcp 0 0 0.0.0.0:10052 0.0.0.0:* OUÇA 29181/java
  51. 51. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 51 Repare que, como ele é um aplicativo java, o netstat não vai informar o nome dele (Zapcat) na saída com -p. 2.9.3. Opções de inicialização do JBoss O JBoss precisa de três opções para permitir que o Zapcat possa ler todos os seus MBeans ( O Tomcat só precisa da primeira). Edite o arquivo de configurações do JBoss e e acrescente ao final dele o seguinte conteúdo. # vim /opt/jboss/bin/run.conf … JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"  JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"  JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl "  JAVA_OPTS="$JAVA_OPTS -Dorg.kjkoster.zapcat.zabbix.port=10052”  JAVA_OPTS="$JAVA_OPTS -Dorg.kjkoster.zapcat.zabbix.address=0.0.0.0”  1) O JMX remote ativa o sistema de consultas via JMX no JBoss e Tomcat. No caso do segundo apenas este parâmetro é necessário; 2) O Mbean server é a implementação do JBoss para acesso aos JMX via servidor; 3) Indica a classe que deve ser usada para manipular os Mbeans internamente no JBoss; 4) Esta opção define a porta do Zapcat, ela é opcional e por padrão o Zapcat escuta na porta 10052; 5) Esta opção define a qual IP o zapcat deve se vincular. Ela é opcional e por padrão ele se vincula a todos os endereços disponíveis do host (0.0.0.0). Reinicie o JBoss e teste o acesso ao Zapcat pelo endereço http://javaapp.curso468.4linux.com.br/zapcat-1.2/, a tela abaixo deve aparecer.
  52. 52. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 52 No próximo capítulo voltaremos a este acesso. Por hora já basta verificar se o Zapcat esta funcionando. 2.9.4. Liberando o firewall para acesso ao Zapcat No filtro de pacotes libere o acesso à porta 10052/TCP com os comandos abaixo. # iptables -A INPUT -j ACCEPT -p tcp --dport 10052 # iptables-save > /etc/iptables/rules 2.10. Testando o acesso via SNMP Uma das máquinas virtuais representa um ativo de rede, um switch para ser mais exato, nele nenhum agente pode ser instalado e vamos usar o SNMP para realizar o monitoramento. Para testar se o acesso ao SNMP esta OK, instale as ferramentas de snmp no Debian. Figura 2.20: Tela de entrada do Zapcat
  53. 53. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 53 # aptitude install snmp snmp-mibs-downloader Libere o acesso a todas as MIBs do seu sistema. # vim /etc/snmp/snmp.conf 1 # 2 # As the snmp packages come without MIB files due to license reasons, loading 3 # of MIBs is disabled by default. If you added the MIBs you can reenable 4 # loaging them by commenting out the following line. 5 #mibs : Agora utilize o comando snmpwalk para verificar se o switch retorna os dados de interfaces de rede. # snmpwalk -c public -v2c 172.27.0.135 if IF-MIB::ifIndex.1 = INTEGER: 1 IF-MIB::ifIndex.2 = INTEGER: 2 IF-MIB::ifIndex.3 = INTEGER: 3 IF-MIB::ifIndex.4 = INTEGER: 4 IF-MIB::ifIndex.5 = INTEGER: 5 IF-MIB::ifIndex.6 = INTEGER: 6 IF-MIB::ifDescr.1 = STRING: lo IF-MIB::ifDescr.2 = STRING: eth0 IF-MIB::ifDescr.3 = STRING: eth1 IF-MIB::ifDescr.4 = STRING: eth2 IF-MIB::ifDescr.5 = STRING: eth3 IF-MIB::ifDescr.6 = STRING: switch0 … IF-MIB::ifSpecific.1 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.2 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.3 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.4 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.5 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.6 = OID: SNMPv2-SMI::zeroDotZero Se o comando retornou a lista acima (que foi truncada pelo tamanho) então seu sistema já consegue ler o SNMP do switch. Se você estiver usando um hardware com uma MIB proprietária, localize e baixe o arquivo na Internet e copie-o no diretório /usr/share/snmp/mibs/ 2.10.1. Conceitos de SNMP O SNMP é um protocolo de monitoramento bem difundido, principalmente entre equipamentos de rede. A grande maioria do hardware embarcado para rede
  54. 54. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 54 suporta algum tipo de versão do mesmo, a mais comum é a versão 2, mas a versão 1 (considerada obsoleta) e a versão 3 (a mais segura) tem uma incidência regular. Se você tiver que optar por uma delas, sempre tente escolher a mais recente possível. Apesar de adicionar uma certa complexidade, a versão 3 ajuda em muito na segurança pois trabalha com ACLs por autenticação e criptografia. No curso veremos a versão 2 que é mais comum de se encontrar nos equipamentos (opção -v2c no comando usado anteriormente), mas a diferença de trabalho entre elas é bem pequena (praticamente alguns campos a mais na versão 3). Todas as três versões trabalham com MIBS, arquivos texto com definições de como coletar e das OIDS, as strings de acesso das métricas. Uma OID pode ser representada por um texto como DISMAN-EVENT-MIB::sysUpTimeInstance ou por uma representação numérica como .1.3.6.1.2.1.1.3.0. Se você possuir a MIB de um equipamento monitorado pelo Zabbix e quiser utilizar a forma textual mostrada acima em vez da numérica, terá que copiar o arquivo de texto dela dentro do diretório de sua distribuição Linux onde o servidor estiver instalado. Normalmente este diretório esta em /usr/share/snmp/mibs/, mas é recomendado que você confirme se isto vale para a distro que você esta usando. Por fim, a partir da versão 2 do protocolo SNMP passou-se a trabalhar com uma string de comunidade (community) por padrão esta string tem o valor public armazenado dentro dela (parâmetro -c do comando snmpwalk). Este valor tem como objetivo permitir apenas que quem conheça a community seja capaz de acessar o SNMP. Francamente, colocar a segurança de um sistema em cima de um valor em texto plano que viaja sem criptografia na rede não é nada seguro. Se você realmente quiser segurança deve usar a versão 3. Também proteja ao máximo o acesso a porta 161 (ou a qual você definiu) de acessos indevidos, o ideal é permitir apenas acesso dos endereços dos servidores de monitoramento. Apenas se lembre que ainda assim, nada é inviolável e o SNMP não é exceção.
  55. 55. Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema - 55 2.11. Instalando o servidor Zabbix via pacote No caso do repositório de uma versão de Debian possuir uma versão do Zabbix que é adequado a suas necessidades então ao invés de compilar é recomendado que você o utilize. No presente momento da escrita deste material esse não era o caso. # aptitude install zabbix-server-pgsql # aptitude install zabbix-agent O CentOS não tem pacotes no seu repositório. 2.12. Preparando o servidor web Como visto anteriormente o Zabbix é um sistema componetizado, sua interface web roda dentro de um servidor com suporte a PHP. Esta sessão descreve como instalar e configurar um servidor Apache 2.2 para tal intento. 2.12.1. Instalação do Apache e PHP5 Para instalar um novo pacote apache com suporte a PHP siga os passos abaixo. O Zabbix precisa ainda do suporte a GD (uma biblioteca gráfica) para geração de imagens e acesso ao PostgreSQL. # aptitude install apache2 libapache2-mod-php5 php5-gd php5-pgsql php5- ldap No centOS, use o seguinte comando. # yum install php http php-gd php-pgsql php-ldap 2.12.2. Configuração do Virtual Host Para criar uma configuração de host virtual no Apache para o Zabbix, vamos primeiro criar um diretório e copiar o conteúdo da pasta front ends do seu diretório

×