• Nenhum resultado encontrado

Monitoramento Com o Zabbix

N/A
N/A
Protected

Academic year: 2021

Share "Monitoramento Com o Zabbix"

Copied!
234
0
0

Texto

(1)

Valter Douglas Lisbôa Júnior

(2)

Capítulo 1

Conhecendo o Zabbix...12

1.1. Conhecendo a ferramenta...13

1.2. Comunidades e forums...13

Capítulo 2 Criando uma Infraestrutura de Monitoramento – Parte 1, Sistema...14

2.1. Introdução...15

2.2. Configurando os componentes de recebimento de alertas...15

2.2.1. Configurando o cliente de correio eletrônico...16

2.2.2. Mensagens instantâneas...24

2.3. Obtendo os fontes do Zabbix...27

2.4. Preparando o banco de dados...27

2.4.1. Instalação...28

2.4.2. Criando o usuário e o banco...28

2.4.3. Carga inicial...30

2.4.4. Concedendo as permissões necessárias ao usuário...30

2.5. Instalação do servidor Zabbix via código fonte...31

2.5.1. Dependências de compilação...34

2.5.2. Compilando e instalando...35

2.5.3. Serviços de rede...37

2.5.4. Arquivos de configuração...37

2.5.5. Testando sua instalação...39

2.5.6. Scripts de boot...41

2.6. Instalação do agente Zabbix via compilação...41

2.6.1. Exercício: compile e instale o agente nas VM com Gnu/Linux...42

2.6.2. Acesso ao agente pelo servidor...42

2.6.3. Exercício sobre instalação de agente em Linux...46

2.7. Instalando o agente em ambientes Windows...46

2.7.1. Executando o agente como serviço...50

2.8. Instalação do agente Zapcat para JBoss...52

2.8.1. Obtenção do binário...52

2.8.2. Deployment...52

2.8.3. Opções de inicialização do JBoss...53

2.8.4. Liberando o firewall para acesso ao Zapcat...55

2.9. Testando o acesso via SNMP...55

(3)

2.11.1. Instalação do Apache e PHP5...58

2.11.2. Configuração do Virtual Host...58

2.11.3. Configurando o front end...61

2.12. Exercícios de revisão...72

Capítulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end...74

3.1. Introdução...75

3.1.1. Organização do front end...75

3.2. Gerenciamento de usuários...77

3.2.1. Cadastrando os usuários do LDAP no Zabbix...81

3.3. Meios de alertas...83

3.3.1. Correio eletrônico...84

3.3.2. Mensagens instantâneas...84

3.3.3. Apontando os alertas aos usuários...85

3.3.4. Boas práticas com Media types...87

3.4. Hosts, host groups e templates...87

3.4.1. Templates para o caso de estudo...88

3.4.2. Vínculo entre templates...90

3.4.3. Backup dos templates...91

3.4.4. Hosts...91

3.4.5. Gerenciando os Host Groups...92

3.4.6. Criando um novo host...93

3.4.7. Fazendo backup dos hosts...95

3.4.8. Configurando uma permissão de acesso...95

3.4.9. Exercícios sobre usuários, hosts, grupos e permissões...97

3.5. Mapas...98

3.5.1. Importando imagens para o mapa...98

3.5.2. Criando um mapa...100

3.5.3. Adicionando um elemento...103

3.5.4. Editando um elemento do mapa...104

3.5.5. Salvando o mapa...106

3.5.6. Adicionando os outros elementos...106

3.5.7. Criando e editando links...110

3.5.8. Prática Dirigida...111

3.5.9. Exercícios sobre Mapas...113

3.6. Templates, applications e items...114

3.6.1. Criando um Application e um Item dentro de um template...115

3.6.2. Interdependência de templates...118

(4)

Monitoramento voltado para disponibilidade...128

4.1. Introdução...129

4.2. Checagens manual via front end...129

4.2.1. Adequando o script de traceroute...132

4.2.2. Criando novos comandos para o menu...135

4.2.3. Exercícios...138

4.3. Checando disponibilidade via protocolo ICMP...138

4.3.1. Como funciona o ping ICMP...138

4.3.2. Visualizando o ping ICMP no Front end...139

4.3.3. Criando um gatilho de parada de host...141

4.3.4. Lidando com os eventos...146

4.3.5. Criando uma action para envio de alerta...150

4.3.6. Exercícios...153

4.3.7. Boas práticas com triggers...154

4.4. Checagem genérica de portas e serviços...156

4.4.1. Conexões TCP e handshakes...157

4.4.2. Criando um teste de serviço via varredura de portas...159

4.4.3. Exercício sobre checagem de portas...162

4.5. Validação de páginas WEB...163

4.5.1. Disponibilidade do site...163

4.5.2. Exercícios...168

4.6. Checando disponibilidade via agentes...169

4.6.1. Checando se o agente esta operacional...169

4.6.2. Criando um trigger com a função nodata()...171

4.6.3. Exercícios...175

4.7. Tempo on-line e última inicialização do S.O...175

4.7.1. Trigger para alerta de reinicialização...180

4.7.2. Exercícios...181

4.8. Checando serviços pelo agente...181

4.8.1. Verificando os processos ativos na memória...181

4.8.2. Checagem de portas e serviços localmente via agente...185

4.8.3. Exercícios...190

4.8.4. Verificando serviços no Windows...190

4.8.5. Restabelecendo serviços offline via Zabbix...198

4.8.6. Exercícios...202

4.9. Medindo a “saúde” de sua rede...202

4.9.1. Latência de rede...202

(5)

4.9.5. Exercícios...210

4.10. Espaço disponível em disco...210

4.10.1. Gráficos para espaço em disco...213

4.10.2. Gatilhos para alertas de espaço em disco...216

4.10.3. Exercícios...217

4.11. Scripts externos...218

4.11.1. Checando a disponibilidade do PostgreSQL...218

4.11.2. Medindo a disponibilidade de um link Internet...223

4.11.3. Exercícios...227

REFERÊNCIAS BIBLIOGRÁFICAS...228

Anexo I Performance do Sistema Operacional...230

Introdução...230

Processamento...230

Métricas de memória...231

Throughput e banda de rede...232

Performance de Disco...232 Anexo II Performance de serviços...233 Introdução...233 PostgreSQL...233 JBoss...234 Apache...234

Índice de tabelas

Tabela 1: Opções de compilação do Zabbix...34

Tabela 2: Binários de uma instalação de servidor e agente do Zabbix...36

Tabela 3: Arquivos e diretórios de configuração...38

Tabela 4: Função dos menus no front end...77

Table 5: Usuários do cenário do curso...81

Tabela 6: Relação de permissões entre hosts e usuários...98

Tabela 7: Lista de imagens iniciais para o mapa...100

Tabela 8: Serviços do cenário do curso...163

Tabela 9: Responsáveis de cada host...175

(6)

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...47

Figura 2.15: Instalando os executáveis no Windows...48

Figura 2.16: Diretório de configuração do Zabbix no Windows...48

Figura 2.17: Configurando o agente no Windows...49

Figura 2.18: Desbloqueando o agente no Windows...50

Figura 2.19: O agente do Zabbix sendo executado como serviço automático...51

Figura 2.20: Tela de entrada do Zapcat...54

Figura 2.21: Configuração do front end (1/10)...61

Figura 2.22: Configuração do front end (2/10)...62

Figura 2.23: Configuração do front end (3/10)...63

Figura 2.24: Configuração do front end (4/10)...65

Figura 2.25: Configuração do front end (5/10)...66

Figura 2.26: Configuração do front end (6/10)...67

Figura 2.27: Configuração do front end (7/10)...68

Figura 2.28: Configuração do front end (8/10)...69

Figura 2.29: Configuração do front end (9/10)...70

Figura 2.30: Configuração do front end (10/10)...71

Figura 2.31: Tela inicial do Zabbix após o primeiro login...71

Figura 3.1: Gerenciamento de usuários do Zabbix...78

Figura 3.2: Editando o Admin...79

Figura 3.3: Configurando a autenticação LDAP...80

Figura 3.4: Novo Grupo JBoss Administrators...81

(7)

Figura 3.8: Configurando o Zabbix para enviar mensagens instantâneas...84

Figura 3.9: Media Types de um usuário sem apontamentos...85

Figura 3.10: Adicionando o Media Type Email a um usuário...85

Figura 3.11: Adicionando um media type Jabber a um usuário...86

Figura 3.12: Media Types de um usuário após o cadastro...86

Figura 3.13: Selecionando todos os templates pré cadastrados...88

Figura 3.14: Excluindo os templates selecionados...89

Figura 3.15: Criando um novo template...89

Figura 3.16: Cadastrando um novo template...89

Figura 3.17: Vinculando um template a outro...90

Figura 3.18: Exportando um template...91

Figura 3.19: Layout dos hosts a serem monitorados...92

Figura 3.20: Como criar um novo grupo de hosts...93

Figura 3.21: Novo host group...93

Figura 3.22: Host pré-cadastrado no front end na tela de Hosts...93

Figura 3.23: Botão para criar um host...93

Figura 3.24: Todos os hosts do cenário cadastrados...95

Figura 3.25: Concedendo permissões de acesso (1/4)...95

Figura 3.26: Concedendo permissões de acesso (2/4)...96

Figura 3.27: Concedendo permissões de acesso (3/4)...96

Figura 3.28: Concedendo permissões de acesso (4/4)...97

Figura 3.29: Tela inicial das imagens...99

Figura 3.30: Importando uma nova imagem...99

Figura 3.31: Imagem do primeiro mapa a ser criado...100

Figura 3.32: Mapas pré-cadastrados...101

Figura 3.33: Novo mapa...101

Figura 3.34: Barra de ferramentas para edição de mapas...103

Figura 3.35: Criando um novo elemento...103

Figura 3.36: Posicionando um novo elemento com o mouse...104

Figura 3.37: Editando um elemento na tela...105

Figura 3.38: Botão Save do mapa...106

Figura 3.39: Dialogo de salvar mapa...106

Figura 3.40: Outros elementos gráficos a serem adicionados...107

Figura 3.41: Editando o elemento que representa o host Presentation...108

Figura 3.42: Detalhes do host switch dentro do mapa...109

Figura 3.43: Hosts acrescentados no mapa...110

(8)

Figura 3.48: Templates e seus elementos...114

Figura 3.49: Criando um application (1/4)...115

Figura 3.50: Criando um application (2/4)...115

Figura 3.51: Criando um application (3/4)...115

Figura 3.52: Criando um application (4/4)...116

Figura 3.53: Criando seu primeiro item (1/3)...116

Figura 3.54: Criando seu primeiro item (2/3)...117

Figura 3.55: Criando seu primeiro item (3/3)...118

Figura 3.56: Campo para associação de templates...119

Figura 3.57: Tela para escolha de templates...119

Figura 3.58: Template associado...119

Figura 3.59: Template associado na lista de templates...119

Figura 3.60: Inter-relação dos templates base...120

Figura 3.61: Associando o template do JBoss ao host JBoss AS (1/6)...120

Figura 3.62: Associando o template do JBoss ao host JBoss AS (2/6)...120

Figura 3.63: Associando o template do JBoss ao host JBoss AS (3/6)...120

Figura 3.64: Associando o template do JBoss ao host JBoss AS (4/6)...121

Figura 3.65: Associando templates a hosts (5/11)...121

Figura 3.66: Associando o template do JBoss ao host JBoss AS (6/6)...121

Figura 3.67: Templates para Windows e SNMP associados aos seus respectivos hosts. . .121

Figura 3.68: Associando um template a múltiplos hosts simultaneamente (1/4)...122

Figura 3.69: Associando um template a múltiplos hosts simultaneamente (2/4)...122

Figura 3.70: Associando um template a múltiplos hosts simultaneamente (3/4)...123

Figura 3.71: Associando um template a múltiplos hosts simultaneamente (4/4)...123

Figura 3.72: Todos os templates associados aos hosts do cenário...123

Figura 3.73: Host presentation não monitorado...124

Figura 3.74: Dialogo de confirmação de ativação...124

Figura 3.75: Host presentation monitorado...124

Figura 3.76: Item não suportado...125

Figura 3.77: Item suportado e ativo...127

Figura 4.1: Menu de Ferramentas acessado pelo mapa...130

Figura 4.2: Saída de um comando ping...130

Figura 4.3: Saída de um comando que falhou do traceroute...131

Figura 4.4: Saída do traceroute adequando a nova necessidade ...135

Figura 4.5: Criando um novo script para testar portas SSH (1/2)...136

(9)

Figura 4.9: Diagrama de comportamento do echo ICMP...139

Figura 4.10: Hosts ativos com ping ICMP em funcionamento...140

Figura 4.11: Um value maps de estado de serviços...140

Figura 4.12: Editando o value map para nossa necessidade...140

Figura 4.13: Value map editado e pronto para uso...141

Figura 4.14: Selecionando um value map no trigger...141

Figura 4.15: Values maps no overview...141

Figura 4.16: Pausando o host Database...142

Figura 4.17: Host database parado no overview...142

Figura 4.18: Criando um trigger para a parada do host (1/9)...143

Figura 4.19: Criando um trigger para a parada do host (2/9)...143

Figura 4.20: Criando um trigger para a parada do host (3/9)...143

Figura 4.21: Criando um trigger para a parada do host (4/9)...143

Figura 4.22: Criando um trigger para a parada do host (5/9)...144

Figura 4.23: Criando um trigger para a parada do host (6/9)...144

Figura 4.24: Criando um trigger para a parada do host (7/9)...145

Figura 4.25: Criando um trigger para a parada do host (8/9)...145

Figura 4.26: Criando um trigger para a parada do host (9/9)...146

Figura 4.27: Indicação de problemas no Dashboard...146

Figura 4.28: Overview com indicação dos items com alerta...147

Figura 4.29: Overview com visualização dos triggers ativos...147

Figura 4.30: Mapa indicando o host Database como down...148

Figura 4.31: Tela de Events, indicando a queda e o retorno dos hosts...148

Figura 4.32: Tela de acknowledgement...149

Figura 4.33: Acknowledge (confirmação) aplicado...149

Figura 4.34: Criando uma action para enviar o alerta (1/9)...150

Figura 4.35: Criando uma action para enviar o alerta (2/9)...150

Figura 4.36: Criando uma action para enviar o alerta (3/9)...151

Figura 4.37: Criando uma action para enviar o alerta (4/9)...151

Figura 4.38: Criando uma action para enviar o alerta (5/9)...151

Figura 4.39: Criando uma action para enviar o alerta (6/9)...152

Figura 4.40: Criando uma action para enviar o alerta (7/9)...152

Figura 4.41: Criando uma action para enviar o alerta (8/9)...152

Figura 4.42: Criando uma action para enviar o alerta (9/9)...153

Figura 4.43: Mensagens de alerta recebidas no Evolution...153

Figura 4.44: Reiniciando o host Database...154

(10)

Figura 4.49: Criando um cenário para disponibilidade Web (2/6)...164

Figura 4.50: Criando um cenário para disponibilidade Web (3/6)...165

Figura 4.51: Criando um cenário para disponibilidade Web (4/6)...166

Figura 4.52: Criando um cenário para disponibilidade Web (5/6)...167

Figura 4.53: Criando um cenário para disponibilidade Web (6/6)...167

Figura 4.54: Visualizando a checagem Web...167

Figura 4.55: Detalhes do monitoramento Web...167

Figura 4.56: Gráfico de velocidade de download para o cenário Web...168

Figura 4.57: Gráfico de tempo de resposta para o cenário Web...168

Figura 4.58: Novo item para monitorar o agente...170

Figura 4.59: Copiando o item de ping de agente para o template do JBoss (1/2)...170

Figura 4.60: Copiando o item de ping de agente para o template do JBoss (2/2)...171

Figura 4.61: Criando um trigger para o agent.ping (1/5)...172

Figura 4.62: Criando um trigger para o agent.ping (2/5)...172

Figura 4.63: Criando um trigger para o agent.ping (3/5)...173

Figura 4.64: Criando um trigger para o agent.ping (4/5)...173

Figura 4.65: Criando um trigger para o agent.ping (5/5)...173

Figura 4.66: Trigger para o agent ping criado e ativo...173

Figura 4.67: Trigger de agente ativado...174

Figura 4.68: Dependência entre triggers evitando que o gatilho filho seja ativado...174

Figura 4.69: Item para tempo de uptime...177

Figura 4.70: Uptime via Zapcat...178

Figura 4.71: Uptime via SNMP...178

Figura 4.72: Overview exibindo os uptimes a partir do agente padrão, Zapcat e SNMP..179

Figura 4.73: Um trigger para a reinicialização de um host...180

Figura 4.74: Item para verificação de número de processos...183

Figura 4.75: Overview refletindo o número de processos...183

Figura 4.76: Trigger para queda do daemon...184

Figura 4.77: Teste de queda do sshd...185

Figura 4.78: Reflexo da queda do daemon SSH no overview...185

Figura 4.79: Item para verificação da porta local...186

Figura 4.80: Fluxograma da dependência entre triggers para análise de serviços...187

Figura 4.81: Trigger para verificação da porta local...189

Figura 4.82: Trigger para verificação de porta remota...189

Figura 4.83: Serviço telnet do Windows...190

(11)

Figura 4.87: Liberando o telnet no firewall do Windows (1/3)...194

Figura 4.88: Liberando o telnet no firewall do Windows (2/3)...194

Figura 4.89: Liberando o telnet no firewall do Windows (3/3)...195

Figura 4.90: item para monitorar serviços Windows...197

Figura 4.91: Estado do serviço Telnet no Overview...197

Figura 4.92: Action para parada do SSH (1/3)...200

Figura 4.93: Action para parada do SSH (2/3)...200

Figura 4.94: Action para parada do SSH (3/3)...201

Figura 4.95: Comando remoto para o action de parada do serviço de SSH...201

Figura 4.96: Item para latência de rede...203

Figura 4.97: Macro para latência de rede...205

Figura 4.98: Trigger para latência de rede usando a macro...205

Figura 4.99: Gráfico para medir a latência de rede...206

Figura 4.100: Criando um gráfico de latência de rede...206

Figura 4.101: Adicionando métricas ao gráfico...207

Figura 4.102: Mapa com labels personalizadas exibindo dados...209

Figura 4.103: Exemplo de labels com valores de métricas...209

Figura 4.104: Exemplo de gráfico de latência de serviços para exercícios...210

Figura 4.105: Macro para limite de espaço em disco utilizado...211

Figura 4.106: Primeiro item de espaço em disco...212

Figura 4.107: Items a serem clonados para espaço em disco...213

Figura 4.108: Botão para clonar items...213

Figura 4.109: Gráfico de pizza para exibição de espaço livre e ocupado...214

Figura 4.110: Criando um gráfico de pizza...214

Figura 4.111: Gráfico de histórico de espaço em disco...215

Figura 4.112: Criando o gráfico de histórico de uso de disco...215

Figura 4.113: Trigger para cálculo de espaço em disco...217

Figura 4.114: Trocando o template do host database para o PostgreSQL...222

Figura 4.115: Disponibilidade do PostgreSQL ativa no database...223

Figura 4.116: Latência sendo exibida no label do link...226

Figura 4.117: Latência de rede e trigger associados ao link com a Internet no mapa...226

(12)

Capítulo 1 

Conhecendo o Zabbix

OBJETIVOS • Apresentar a ferramento ao aluno. • Como o “front end” organiza os componentes dentro do Zabbix. • Componentes visuais de monitoramento. • Alertas de incidentes. • Reinicialização de serviços. • Mostrar ao aluno onde obter informações.

(13)

1.1. 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).

1.2. 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   fóruns   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

OBJETIVOS • Preparar o ambiente de recebimento de alertas: • Configurar o Evolution para receber e­mails de alertas; • Configurar o Pidgin para receber mensagens instantâneas de alertas. • Preparar o ambiente para instalar o servidor do Zabbix: • Obter os fontes da ferramenta; • Preparar o PostgreSQL para servir de back end. • Instalar o servidor e agente: • Compilar o servidor e agente na máquina destinada a ser o monitorador e nas demais; • Instalação dos binários dentro do Windows 2003 (com inicialização do agente como  serviço);

• Executar   deploy   do   agente   Zapcat   no   JBoss   para   monitoramento   do   servidor   de  aplicações

• Configuração de um virtual host dentro do Apache para o  front end, incluindo modificação  dos parâmetros do PHP.

(15)

2.1. 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.2. 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 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.

(16)

Esta é apenas um tela de boas vindas, clique em Avançar.

(17)

Não há nada para ser restaurado, clique novamente em Avançar.

(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.

 1)  Nome Completo:  System administrator

 2)  Endereço de e­mail: sysadmin@curso468.4linux.com.br.

(19)

 3)  Tipo de Servidor: devemos escolher POP, que é o recurso implantado para recepção 

de e­mails no cenário.

 4)  Servidor: é o endereço externo do servidor de e­mail.

 5)  Nome do usuário: o primeiro usuário que usaremos é o sysadmin.

 6)  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.

(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.

(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.

(22)

 1)  Nome:  Por  final,  configure   um   nome  para   esta  conta.  Isto  é  usado   apenas   para 

exibição no Evolution.

(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)

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 nenhuma 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.2.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.

(25)

Na tela de boas vindas clique em Adicionar.

Figura 2.12: Configurando uma conta Jabber no Pidgin Figura 2.11: Tela de boas vindas do Pidgin

(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 a opção “Lembrar Senha” 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.

(27)

2.3. 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   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.4. 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ório (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 robustez se mostrou mais adequada aos tipos de dados que o Zabbix manipula.  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 – Point in Time Recovery.

(28)

Para instalar a versão do repositório do PostgreSQL:

# aptitude install postgresql­8.4

# yum install postgresql84­server

2.4.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 convenção acima. Somente o superusuário do PostgreSQL, chamado postgres tem permissão de realizar a  criação dos objetos citados acima, logo, para podermos acessar o terminal de console do banco  (psql) temos que entrar como usuário  postgres  no Gnu/Linux e então usar o comando correto. 

Note que o prompt de comando irá se alterar indicando que estamos no console do PostgreSQL. # su – postgrespsql psql (8.4.5) Digite "help" para ajuda. postgres=# 

(29)

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 deste 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!  Este é apenas um demonstrativo didático. postgres=# CREATE ROLE zabbix LOGIN; 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 restartpsql ­h localhost ­U zabbix zabbixdb psql (8.4.5) conexão SSL (cifra: DHE­RSA­AES256­SHA, bits: 256)

(30)

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   nomedabase  SET 

bytea_output=escape;”  dentro  do  console  do  psql.  Isso   pode  ser  configurado  no  

usuário ou no “postgresql.conf” também.

2.4.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 $ 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 a frente, neste capítulo.

2.4.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 assim em produção

(31)

1 postgres=# \t  2 postgres=# \a  3 postgres=# \o /tmp/grantzabbix.sql  4 postgres=# SELECT 'GRANT SELECT,UPDATE,DELETE,INSERT ON '  || schemaname || '.'  || tablename || ' TO zabbix ;' FROM pg_tables;   5 postgres=# \o 6 postgres=# \i /tmp/grantzabbix.sql  7 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.5. Instalação do servidor Zabbix via código fonte

Em   alguns   casos   a   distribuição   Gnu/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 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 

(32)

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”, que é 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 binários e manuais serão colocados em /usr/local como padrão. No entanto para manter a instalação organizada e facilitar 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 distribuídos. 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.

(33)

absolutamente necessário, dado ao recente anúncio 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 Zabbix envie alertas taravés deste serviço de mensagens instantâneas. Vamos ativar essa opção.

--with-libcurl Ativa o suporte a biblioteca de HTTP CURL. É necessária para o monitoramento de serviços Web e autenticação via HTTP.

--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.

(34)

Tabela 1: Opções de compilação do Zabbix

2.5.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 dependê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

(35)

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.5.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”.  Na   verdade   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,   os   comandos.   No   final   o   comando   “ln”  irá   criar   um   link 

simbólico para /opt/zabbix. Isso é uma boa prática para ajudar 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 para o 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 caminho da  instalação. A tabela abaixo tem o descritivo de cada um deles. Binário Funcionalidade

zabbix_get Utilitário para realizar consultas nos agentes via linha de comando. Muito útil e 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

(36)

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 com o usuário root, por isso vamos  criar um grupo e usuário de nome zabbix para que o serviço entre na memória como usuário não  privilegiado. 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. # groupadd zabbix # useradd ­g zabbix ­m ­s /bin/bash zabbix

(37)

ambos.

# mkdir /var/{log,run}/zabbix ­p # chown zabbix. /var/{run,log}/zabbix

2.5.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.5.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

(38)

/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 extensã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 quantos de cada um 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  abordar apenas  as  mais relevantes,  porém os arquivos tem extensos comentários em português criados pelo autor deste material.

(39)

# tar xf /tmp/config­server.tar.bz2  # tar xf /tmp/config­agent.tar.bz2 # chown root.zabbix /etc/zabbix ­R  # 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 8 export PATH=”$PATH:/opt/zabbix/sbin:/opt/zabbix/bin” # . /etc/profile # zabbix_get ­­help # zabbix_agentd ­­help

2.5.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 conteúdo do  arquivo de logs e use os comandos “ps” e “netstat” para ver quais os processos que ele iniciou e  em quais portas eles se vincularam. Depois do término com o agente vamos configurar o servidor conforme os passos a seguir  e realizar o mesmo procedimento de inicialização e pesquisa que no agente.

(40)

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”;  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

(41)

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.5.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. # /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.6. Instalação do agente Zabbix via compilação

Agora chegou o momento de instalar o agente do Zabbix nas outras máquinas virtuais  com Gnu/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. 

(42)

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.6.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  comando “netstat” para 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. # 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 passivas do servidor. 5 # 6 ListenIP=172.27.0.1  7 ListenPort=10050 8 9 #==================================================================== 10 # IP o qual o agente do Zabbix irá usar para enviar dados, é opcional pois o sistema usa o IP  o qual esta designado a enviar dados conforme a tabela de oteamento. 11 #

(43)

 1)  Mudar para o IP interno do Presentation. Agora reinicie o agente e confira novamente a qual IP ele esta vinculado. # /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 verificar uma possível falha de conexão. Vamos  forçar a VM “zabbixsrv” a 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 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

(44)

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.

(45)

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 checagens, a  passiva e a ativa. 2 # 3 # Checagens passivas são o padrão, o servidor faz o agendamento das métricas e manda  uma requisição ao agente que aguarda passivamente (dai o nome), este então coleta o dado  do sistema e envia de volta ao servidor. 4 # 5 # Uma checagem ativa permite que o agente receba uma lista de itens a serem monitorados  do servidor e ao invés deste último cuidar do agendamento e requisições é o agente que toma  para si esta tarefa. 6 # 7 # Checagens ativas são úteis quando o Firewall não permite que o servidor de monitoramento  alcance o agente via rede ou quando se utiliza um sistema de monitoramento de logs onde o  monitoramento ativo é obrigatório. 8 #==================================================================== 9 # Quais são os servidores para recebimento de requisições ou obtenção da lista de  checagens ativas. 10 Server=172.27.0.10  11 12 #==================================================================== 13 # Como este host esta cadastrado dentro do Zabbix isto não precisa corrsponder ao  hostname da máquina ele é uma string de identificação do agente para com o servidor do  Zabbix. 14 # 15 Hostname=Presentation 

(46)

 2)  Este é o nome a ser cadastrado no “front end” do Zabbix e não o nome de DNS  (apesar de poderem ser os mesmos).  Reinicie o agente mais uma vez e faça o teste com “zabbix_get” a partir do servidor. # 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.6.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.7. 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.

(47)

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.

(48)

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:\Zabbix\conf\agent\checkings.conf   e   mude   os   parâmetros  Server  e  HostName  conforme   a   Figura  2.17,   para   permitir   o   acesso   do   servidor   e   o   arquivo 

c:\Zabbix\conf\agent\network.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

(49)

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:\Zabbix\bin 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.

(50)

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.7.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:\Zabbix\conf\zabbix_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”.

(51)

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, assim quando o sistema for  reiniciado o serviço também será. 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.

(52)

2.8. Instalação do agente Zapcat para JBoss

O   Zabbix   possui   alguns   agentes   programados   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. 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.8.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.8.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/. 

(53)

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   fizemos  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 Repare que, como ele é um aplicativo java, o “netstat” não vai informar o nome dele  (Zapcat) na saída com ­p.

2.8.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 … 1 JAVA_OPTS="$JAVA_OPTS ­Dcom.sun.management.jmxremote" 2 JAVA_OPTS="$JAVA_OPTS ­Djboss.platform.mbeanserver" 3 JAVA_OPTS="$JAVA_OPTS  ­Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImp l" 4 JAVA_OPTS="$JAVA_OPTS ­Dorg.kjkoster.zapcat.zabbix.port=10052”

Referências

Documentos relacionados

Quais são as oportunidades e barreiras identificadas na cadeia produtiva com a inserção da construção modular no setor.. Quais são os impactos, problemas e

Chefia do Departamento de Ensino, Pesquisa e Extensão do Câmpus Xanxerê MARCELO ANDRÉ TOSO.. 2º Esta portaria entra em vigor na data da sua publicação... ANDRÉ

Torna-se necessário, então, termos capacidade de planejar a nossa defesa na expressão de poder nacional por nós definida como Poder Cibernético para garantir a segurança de nossa

QUADRO N.º 17 - Instituições referidas como mais vocacionadas para a promoção de formação contínua de professores. SUB-CATEGORIAS SUJEITOS

Este white paper resume a Política de suporte de ciclo de vida da Oracle para produtos com tecnologia Oracle (incluindo sua política sobre o suporte a um Oracle

Os resultados da análise descritiva dos dados apontaram que com a adoção dos fatores sociais para a repartição dos 25% da cota-parte dos municípios, localidades com

FATO: O OPN oferece aos membros acesso ao interessante portfólio de produtos da Oracle e à possibilidade de desenvolver e vender produtos líderes de mercado e bem aceitos no

O Conselho de Curso de Graduação em Matemática do IGCE, UNESP, campus de Rio Claro, entende que o total de horas de prática como componente curricular devem estar