SlideShare uma empresa Scribd logo
1 de 224
Baixar para ler offline
Soluções de Monitoramento com
Zabbix
Valter Douglas Lisbôa Júnior
www.4linux.com.br
- 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
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
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
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
Í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
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
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
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
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
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
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).
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.
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
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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
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;
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
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
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
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.
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
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
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.
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)
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 
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;
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.
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.
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
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
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.
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.
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
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
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
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
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.
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
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.
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
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
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.
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
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura
Monitoramento com Zabbix: guia completo para configuração de infraestrutura

Mais conteúdo relacionado

Mais procurados

Manipulando pacotes
Manipulando pacotesManipulando pacotes
Manipulando pacotesTiago
 
Slackbookptbr 1.0.2
Slackbookptbr 1.0.2Slackbookptbr 1.0.2
Slackbookptbr 1.0.2SoftD Abreu
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2surdido
 
Texto base -_metodologia_de_pesquisa_aplicada
Texto base -_metodologia_de_pesquisa_aplicadaTexto base -_metodologia_de_pesquisa_aplicada
Texto base -_metodologia_de_pesquisa_aplicadaVerandir Araujo
 
Livro nmap mapeador de redes
Livro  nmap mapeador de redesLivro  nmap mapeador de redes
Livro nmap mapeador de redesSoftD Abreu
 
Manual Aker Firewall UTM 6.7 PT
Manual Aker Firewall UTM 6.7 PTManual Aker Firewall UTM 6.7 PT
Manual Aker Firewall UTM 6.7 PTAr Ok
 
50718286 apostila-de-asp-net-c-e-visual-basic-net
50718286 apostila-de-asp-net-c-e-visual-basic-net50718286 apostila-de-asp-net-c-e-visual-basic-net
50718286 apostila-de-asp-net-c-e-visual-basic-netThais Rodrigues
 
Caelum java-web-vraptor-hibernate-ajax-fj28
Caelum java-web-vraptor-hibernate-ajax-fj28Caelum java-web-vraptor-hibernate-ajax-fj28
Caelum java-web-vraptor-hibernate-ajax-fj28Valdinho Pereira
 
Manual do usuario_sugar_crm-community_edition versao_5.2
Manual do usuario_sugar_crm-community_edition versao_5.2Manual do usuario_sugar_crm-community_edition versao_5.2
Manual do usuario_sugar_crm-community_edition versao_5.2SITEL IBERICA TELESERVICES
 
Caelum java-testes-jsf-web-services-design-patterns-fj22
Caelum java-testes-jsf-web-services-design-patterns-fj22Caelum java-testes-jsf-web-services-design-patterns-fj22
Caelum java-testes-jsf-web-services-design-patterns-fj22Lindomar ...
 
Apresentação Comercial (Quarta Etapa)
Apresentação Comercial (Quarta Etapa)Apresentação Comercial (Quarta Etapa)
Apresentação Comercial (Quarta Etapa)Quarta Etapa
 
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTOREDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTORogerio Silva
 
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8Habro Group
 
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6Habro Group
 

Mais procurados (20)

Manctran
ManctranManctran
Manctran
 
Manipulando pacotes
Manipulando pacotesManipulando pacotes
Manipulando pacotes
 
Access avançado
Access avançadoAccess avançado
Access avançado
 
Slackbookptbr 1.0.2
Slackbookptbr 1.0.2Slackbookptbr 1.0.2
Slackbookptbr 1.0.2
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
 
Texto base -_metodologia_de_pesquisa_aplicada
Texto base -_metodologia_de_pesquisa_aplicadaTexto base -_metodologia_de_pesquisa_aplicada
Texto base -_metodologia_de_pesquisa_aplicada
 
Livro nmap mapeador de redes
Livro  nmap mapeador de redesLivro  nmap mapeador de redes
Livro nmap mapeador de redes
 
Rslinx classic portugues
Rslinx classic portuguesRslinx classic portugues
Rslinx classic portugues
 
Manual Aker Firewall UTM 6.7 PT
Manual Aker Firewall UTM 6.7 PTManual Aker Firewall UTM 6.7 PT
Manual Aker Firewall UTM 6.7 PT
 
50718286 apostila-de-asp-net-c-e-visual-basic-net
50718286 apostila-de-asp-net-c-e-visual-basic-net50718286 apostila-de-asp-net-c-e-visual-basic-net
50718286 apostila-de-asp-net-c-e-visual-basic-net
 
Caelum java-web-vraptor-hibernate-ajax-fj28
Caelum java-web-vraptor-hibernate-ajax-fj28Caelum java-web-vraptor-hibernate-ajax-fj28
Caelum java-web-vraptor-hibernate-ajax-fj28
 
K19 sql
K19 sqlK19 sql
K19 sql
 
Word
WordWord
Word
 
Manual do usuario_sugar_crm-community_edition versao_5.2
Manual do usuario_sugar_crm-community_edition versao_5.2Manual do usuario_sugar_crm-community_edition versao_5.2
Manual do usuario_sugar_crm-community_edition versao_5.2
 
Caelum java-testes-jsf-web-services-design-patterns-fj22
Caelum java-testes-jsf-web-services-design-patterns-fj22Caelum java-testes-jsf-web-services-design-patterns-fj22
Caelum java-testes-jsf-web-services-design-patterns-fj22
 
Apresentação Comercial (Quarta Etapa)
Apresentação Comercial (Quarta Etapa)Apresentação Comercial (Quarta Etapa)
Apresentação Comercial (Quarta Etapa)
 
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTOREDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
 
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
 
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
 
Grelha 06-elementos finitos de placas
Grelha 06-elementos finitos de placasGrelha 06-elementos finitos de placas
Grelha 06-elementos finitos de placas
 

Destaque

Gnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPGnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPWellington Silva
 
Criando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrsCriando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrsMarcos Freccia
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppetDaniel Sobral
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppetRamon Mota
 
Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3suk kim
 
Workshop SQL Server 2012
Workshop SQL Server 2012Workshop SQL Server 2012
Workshop SQL Server 2012Viviane_ribeiro
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.Eduardo Medeiros
 
Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2Fabio Hara
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvemCodificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvemMarcos Freccia
 

Destaque (15)

Gnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPGnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USP
 
Criando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrsCriando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrs
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppet
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppet
 
Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
Workshop SQL Server 2012
Workshop SQL Server 2012Workshop SQL Server 2012
Workshop SQL Server 2012
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.
 
Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Treinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12cTreinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12c
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008
 
12c on RHEL7
12c on RHEL712c on RHEL7
12c on RHEL7
 
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvemCodificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
 

Semelhante a Monitoramento com Zabbix: guia completo para configuração de infraestrutura

K19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com AndroidK19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com AndroidAline Diniz
 
K19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidK19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidMaluco Rafael
 
K19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidK19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidRaytssa Martins
 
Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02a2m
 
teamviewer_manual_pt
teamviewer_manual_ptteamviewer_manual_pt
teamviewer_manual_ptSelma Donato
 
My sql
My sqlMy sql
My sqlTiago
 
Apostila linux prof_luis
Apostila  linux prof_luisApostila  linux prof_luis
Apostila linux prof_luisPessoal
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHPFernando Palma
 
Programando ooo b
Programando ooo bProgramando ooo b
Programando ooo bvangney
 
Open solaris
Open solarisOpen solaris
Open solarisTiago
 
Aprenda a fazer temas wordpress
Aprenda a fazer temas wordpressAprenda a fazer temas wordpress
Aprenda a fazer temas wordpressRafael Stromdahl
 
11ª Edição dos Manuais Siscoserv Módulo Aquisição
11ª Edição dos Manuais Siscoserv Módulo Aquisição11ª Edição dos Manuais Siscoserv Módulo Aquisição
11ª Edição dos Manuais Siscoserv Módulo Aquisiçãogabrielwelter
 
Tutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swingTutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swingEverson Wolf
 

Semelhante a Monitoramento com Zabbix: guia completo para configuração de infraestrutura (20)

K19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com AndroidK19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com Android
 
Installdebian
InstalldebianInstalldebian
Installdebian
 
K19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidK19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-android
 
K19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-androidK19 k41-desenvolvimento-mobile-com-android
K19 k41-desenvolvimento-mobile-com-android
 
Guia Ubuntu Server
Guia Ubuntu ServerGuia Ubuntu Server
Guia Ubuntu Server
 
Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02Ubuntuserverguide 111121194031-phpapp02
Ubuntuserverguide 111121194031-phpapp02
 
Samba
SambaSamba
Samba
 
Apostilando mysql
Apostilando mysqlApostilando mysql
Apostilando mysql
 
teamviewer_manual_pt
teamviewer_manual_ptteamviewer_manual_pt
teamviewer_manual_pt
 
My sql
My sqlMy sql
My sql
 
Apostila JSF 2.0 - K19
Apostila JSF 2.0 - K19Apostila JSF 2.0 - K19
Apostila JSF 2.0 - K19
 
Apostila linux prof_luis
Apostila  linux prof_luisApostila  linux prof_luis
Apostila linux prof_luis
 
Cake php cookbook
Cake php cookbookCake php cookbook
Cake php cookbook
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHP
 
Programando ooo b
Programando ooo bProgramando ooo b
Programando ooo b
 
Open solaris
Open solarisOpen solaris
Open solaris
 
Aprenda a fazer temas wordpress
Aprenda a fazer temas wordpressAprenda a fazer temas wordpress
Aprenda a fazer temas wordpress
 
Zope
ZopeZope
Zope
 
11ª Edição dos Manuais Siscoserv Módulo Aquisição
11ª Edição dos Manuais Siscoserv Módulo Aquisição11ª Edição dos Manuais Siscoserv Módulo Aquisição
11ª Edição dos Manuais Siscoserv Módulo Aquisição
 
Tutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swingTutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swing
 

Monitoramento com Zabbix: guia completo para configuração de infraestrutura

  • 1. Soluções de Monitoramento com Zabbix Valter Douglas Lisbôa Júnior www.4linux.com.br
  • 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 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 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 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 Í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 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 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 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 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 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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