Você está na página 1de 234

Solues de Monitoramento com

Zabbix

Valter Douglas Lisba Jnior

www.4linux.com.br

-2

Sumrio
Captulo 1
Conhecendo o Zabbix..................................................................................................................12
1.1. Conhecendo a ferramenta................................................................................................13
1.2. Comunidades e forums....................................................................................................13
Captulo 2
Criando uma Infraestrutura de Monitoramento Parte 1, Sistema..........................................14
2.1. Introduo........................................................................................................................15
2.2. Configurando os componentes de recebimento de alertas............................................15
2.2.1. Configurando o cliente de correio eletrnico........................................................................16
2.2.2. Mensagens instantneas.........................................................................................................24

2.3. Obtendo os fontes do Zabbix...........................................................................................27


2.4. Preparando o banco de dados.........................................................................................27
2.4.1. Instalao................................................................................................................................28
2.4.2. Criando o usurio e o banco...................................................................................................28
2.4.3. Carga inicial............................................................................................................................30
2.4.4. Concedendo as permisses necessrias ao usurio...............................................................30

2.5. Instalao do servidor Zabbix via cdigo fonte..............................................................31


2.5.1. Dependncias de compilao..................................................................................................34
2.5.2. Compilando e instalando.........................................................................................................35
2.5.3. Servios de rede......................................................................................................................37
2.5.4. Arquivos de configurao.......................................................................................................37
2.5.5. Testando sua instalao..........................................................................................................39
2.5.6. Scripts de boot........................................................................................................................41

2.6. Instalao do agente Zabbix via compilao..................................................................41


2.6.1. Exerccio: compile e instale o agente nas VM com Gnu/Linux..............................................42
2.6.2. Acesso ao agente pelo servidor..............................................................................................42
2.6.3. Exerccio sobre instalao de agente em Linux.....................................................................46

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


2.7.1. Executando o agente como servio........................................................................................50

2.8. Instalao do agente Zapcat para JBoss.........................................................................52


2.8.1. Obteno do binrio................................................................................................................52
2.8.2. Deployment.............................................................................................................................52
2.8.3. Opes de inicializao do JBoss............................................................................................53
2.8.4. Liberando o firewall para acesso ao Zapcat...........................................................................55

2.9. Testando o acesso via SNMP...........................................................................................55


2.9.1. Conceitos de SNMP.................................................................................................................56

-3
2.10. Instalando o servidor Zabbix via pacote.......................................................................57
2.11. Preparando o servidor web............................................................................................58
2.11.1. Instalao do Apache e PHP5...............................................................................................58
2.11.2. Configurao do Virtual Host...............................................................................................58
2.11.3. Configurando o front end......................................................................................................61

2.12. Exerccios de reviso.....................................................................................................72


Captulo 3
Criando uma Infraestrutura de Monitoramento - Parte 2, Front end.......................................74
3.1. Introduo........................................................................................................................75
3.1.1. Organizao do front end.......................................................................................................75

3.2. Gerenciamento de usurios.............................................................................................77


3.2.1. Cadastrando os usurios do LDAP no Zabbix........................................................................81

3.3. Meios de alertas...............................................................................................................83


3.3.1. Correio eletrnico...................................................................................................................84
3.3.2. Mensagens instantneas.........................................................................................................84
3.3.3. Apontando os alertas aos usurios.........................................................................................85
3.3.4. Boas prticas 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. Vnculo 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 permisso de acesso................................................................................95
3.4.9. Exerccios sobre usurios, hosts, grupos e permisses.........................................................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. Prtica Dirigida.....................................................................................................................111
3.5.9. Exerccios 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. Interdependncia de templates............................................................................................118

3.7. Associando os templates aos hosts................................................................................120

-4
3.8. Ativando um host............................................................................................................123
3.8.1. Throubleshooting para itens com problemas.......................................................................124

Captulo 4
Monitoramento voltado para disponibilidade..........................................................................128
4.1. Introduo......................................................................................................................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. Exerccios..............................................................................................................................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. Exerccios..............................................................................................................................153
4.3.7. Boas prticas com triggers...................................................................................................154

4.4. Checagem genrica de portas e servios......................................................................156


4.4.1. Conexes TCP e handshakes................................................................................................157
4.4.2. Criando um teste de servio via varredura de portas.........................................................159
4.4.3. Exerccio sobre checagem de portas....................................................................................162

4.5. Validao de pginas WEB.............................................................................................163


4.5.1. Disponibilidade do site..........................................................................................................163
4.5.2. Exerccios..............................................................................................................................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 funo nodata()..........................................................................171
4.6.3. Exerccios..............................................................................................................................175

4.7. Tempo on-line e ltima inicializao do S.O..................................................................175


4.7.1. Trigger para alerta de reinicializao..................................................................................180
4.7.2. Exerccios..............................................................................................................................181

4.8. Checando servios pelo agente.....................................................................................181


4.8.1. Verificando os processos ativos na memria........................................................................181
4.8.2. Checagem de portas e servios localmente via agente.......................................................185
4.8.3. Exerccios..............................................................................................................................190
4.8.4. Verificando servios no Windows.........................................................................................190
4.8.5. Restabelecendo servios offline via Zabbix.........................................................................198
4.8.6. Exerccios..............................................................................................................................202

4.9. Medindo a sade de sua rede.....................................................................................202


4.9.1. Latncia de rede....................................................................................................................202
4.9.2. Macro para o limiar da latncia de rede..............................................................................204

-5
4.9.3. Nosso primeiro grfico.........................................................................................................205
4.9.4. Personalizando o mapa para exibio de informaes........................................................208
4.9.5. Exerccios..............................................................................................................................210

4.10. Espao disponvel em disco.........................................................................................210


4.10.1. Grficos para espao em disco...........................................................................................213
4.10.2. Gatilhos para alertas de espao em disco..........................................................................216
4.10.3. Exerccios............................................................................................................................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. Exerccios............................................................................................................................227

REFERNCIAS
BIBLIOGRFICAS......................................................................................................................228
Anexo I
Performance do Sistema Operacional..................................................................................230
Introduo.......................................................................................................................................230
Processamento.................................................................................................................................230
Mtricas de memria......................................................................................................................231
Throughput e banda de rede...........................................................................................................232
Performance de Disco.....................................................................................................................232

Anexo II
Performance de servios.......................................................................................................233
Introduo.......................................................................................................................................233
PostgreSQL......................................................................................................................................233
JBoss................................................................................................................................................234
Apache.............................................................................................................................................234

ndicedetabelas
Tabela 1: Opes de compilao do Zabbix............................................................................34
Tabela 2: Binrios de uma instalao de servidor e agente do Zabbix.................................36
Tabela 3: Arquivos e diretrios de configurao....................................................................38
Tabela 4: Funo dos menus no front end..............................................................................77
Table 5: Usurios do cenrio do curso...................................................................................81
Tabela 6: Relao de permisses entre hosts e usurios.......................................................98
Tabela 7: Lista de imagens iniciais para o mapa.................................................................100
Tabela 8: Servios do cenrio do curso................................................................................163
Tabela 9: Responsveis de cada host...................................................................................175
Table 10: Valores da key service_state.................................................................................193

-6

ndicedeFiguras
Figura 2.1: Configurao do evolution (1/10)........................................................................16
Figura 2.2: Configurao do evolution (2/10)........................................................................17
Figura 2.3: Configurao do evolution (3/10)........................................................................18
Figura 2.4: Configurao do evolution (4/10)........................................................................19
Figura 2.5: Configurao do evolution (5/10)........................................................................20
Figura 2.6: Configurao do evolution (6/10)........................................................................21
Figura 2.7: Configurao do evolution (7/10)........................................................................22
Figura 2.8: Configurao do evolution (8/10)........................................................................23
Figura 2.9: Configurao do evolution (9/10)........................................................................23
Figura 2.10: Configurao 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 executveis no Windows.............................................................48
Figura 2.16: Diretrio de configurao 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 servio automtico......................51
Figura 2.20: Tela de entrada do Zapcat.................................................................................54
Figura 2.21: Configurao do front end (1/10)......................................................................61
Figura 2.22: Configurao do front end (2/10)......................................................................62
Figura 2.23: Configurao do front end (3/10)......................................................................63
Figura 2.24: Configurao do front end (4/10)......................................................................65
Figura 2.25: Configurao do front end (5/10)......................................................................66
Figura 2.26: Configurao do front end (6/10)......................................................................67
Figura 2.27: Configurao do front end (7/10)......................................................................68
Figura 2.28: Configurao do front end (8/10)......................................................................69
Figura 2.29: Configurao do front end (9/10)......................................................................70
Figura 2.30: Configurao do front end (10/10)....................................................................71
Figura 2.31: Tela inicial do Zabbix aps o primeiro login.....................................................71
Figura 3.1: Gerenciamento de usurios do Zabbix................................................................78
Figura 3.2: Editando o Admin.................................................................................................79
Figura 3.3: Configurando a autenticao LDAP....................................................................80
Figura 3.4: Novo Grupo JBoss Administrators.......................................................................81
Figura 3.5: Novo usurio Sysadmin.......................................................................................82

-7
Figura 3.6: Media Types.........................................................................................................83
Figura 3.7: Configurando o Zabbix para enviar e-mails........................................................84
Figura 3.8: Configurando o Zabbix para enviar mensagens instantneas...........................84
Figura 3.9: Media Types de um usurio sem apontamentos.................................................85
Figura 3.10: Adicionando o Media Type Email a um usurio................................................85
Figura 3.11: Adicionando um media type Jabber a um usurio............................................86
Figura 3.12: Media Types de um usurio aps 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: Boto para criar um host...................................................................................93
Figura 3.24: Todos os hosts do cenrio cadastrados.............................................................95
Figura 3.25: Concedendo permisses de acesso (1/4)...........................................................95
Figura 3.26: Concedendo permisses de acesso (2/4)...........................................................96
Figura 3.27: Concedendo permisses de acesso (3/4)...........................................................96
Figura 3.28: Concedendo permisses 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 edio 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: Boto Save do mapa.........................................................................................106
Figura 3.39: Dialogo de salvar mapa....................................................................................106
Figura 3.40: Outros elementos grficos 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
Figura 3.44: Criando um novo link entre o host Presentation e a imagem Internet..........111

-8
Figura 3.45: Editando as propriedades do novo link...........................................................112
Figura 3.46: Link entre o host Presentation e o Switch......................................................113
Figura 3.47: Mapa final.........................................................................................................114
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 associao 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-relao 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 mltiplos hosts simultaneamente (1/4)..............122
Figura 3.69: Associando um template a mltiplos hosts simultaneamente (2/4)..............122
Figura 3.70: Associando um template a mltiplos hosts simultaneamente (3/4)..............123
Figura 3.71: Associando um template a mltiplos hosts simultaneamente (4/4)..............123
Figura 3.72: Todos os templates associados aos hosts do cenrio....................................123
Figura 3.73: Host presentation no monitorado..................................................................124
Figura 3.74: Dialogo de confirmao de ativao...............................................................124
Figura 3.75: Host presentation monitorado.........................................................................124
Figura 3.76: Item no suportado..........................................................................................125
Figura 3.77: Item suportado e ativo.....................................................................................127
Figura 4.1: Menu de Ferramentas acessado pelo mapa......................................................130
Figura 4.2: Sada de um comando ping................................................................................130
Figura 4.3: Sada de um comando que falhou do traceroute..............................................131
Figura 4.4: Sada do traceroute adequando a nova necessidade .......................................135
Figura 4.5: Criando um novo script para testar portas SSH (1/2)......................................136
Figura 4.6: Criando um novo script para testar portas SSH (2/2)......................................136

-9
Figura 4.7: Nova entrada de menu com o script criado......................................................137
Figura 4.8: Resultado do comando ativado no host.............................................................137
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 servios............................................................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: Indicao de problemas no Dashboard...........................................................146
Figura 4.28: Overview com indicao dos items com alerta...............................................147
Figura 4.29: Overview com visualizao 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 (confirmao) 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
Figura 4.45: Lgica de um gatilho com tempo de segurana.............................................155

- 10
Figura 4.46: Simple check para o SSH................................................................................161
Figura 4.47: Overview exibindo os servios de SSH...........................................................162
Figura 4.48: Criando um cenrio para disponibilidade Web (1/6)......................................164
Figura 4.49: Criando um cenrio para disponibilidade Web (2/6)......................................164
Figura 4.50: Criando um cenrio para disponibilidade Web (3/6)......................................165
Figura 4.51: Criando um cenrio para disponibilidade Web (4/6)......................................166
Figura 4.52: Criando um cenrio para disponibilidade Web (5/6)......................................167
Figura 4.53: Criando um cenrio 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: Grfico de velocidade de download para o cenrio Web................................168
Figura 4.57: Grfico de tempo de resposta para o cenrio 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: Dependncia 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 padro, Zapcat e SNMP..179
Figura 4.73: Um trigger para a reinicializao de um host................................................180
Figura 4.74: Item para verificao de nmero de processos..............................................183
Figura 4.75: Overview refletindo o nmero 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 verificao da porta local...............................................................186
Figura 4.80: Fluxograma da dependncia entre triggers para anlise de servios...........187
Figura 4.81: Trigger para verificao da porta local...........................................................189
Figura 4.82: Trigger para verificao de porta remota.......................................................189
Figura 4.83: Servio telnet do Windows..............................................................................190
Figura 4.84: Habilitando o servio de telnet do Windows...................................................191

Captulo 1 Conhecendo o Zabbix - 11


Figura 4.85: Ativando o servio de telnet............................................................................191
Figura 4.86: Processo do telnet na memria.......................................................................192
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 servios Windows...........................................................197
Figura 4.91: Estado do servio 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 servio de SSH.......................201
Figura 4.96: Item para latncia de rede...............................................................................203
Figura 4.97: Macro para latncia de rede............................................................................205
Figura 4.98: Trigger para latncia de rede usando a macro...............................................205
Figura 4.99: Grfico para medir a latncia de rede............................................................206
Figura 4.100: Criando um grfico de latncia de rede........................................................206
Figura 4.101: Adicionando mtricas ao grfico...................................................................207
Figura 4.102: Mapa com labels personalizadas exibindo dados.........................................209
Figura 4.103: Exemplo de labels com valores de mtricas.................................................209
Figura 4.104: Exemplo de grfico de latncia de servios para exerccios........................210
Figura 4.105: Macro para limite de espao em disco utilizado...........................................211
Figura 4.106: Primeiro item de espao em disco.................................................................212
Figura 4.107: Items a serem clonados para espao em disco.............................................213
Figura 4.108: Boto para clonar items.................................................................................213
Figura 4.109: Grfico de pizza para exibio de espao livre e ocupado...........................214
Figura 4.110: Criando um grfico de pizza..........................................................................214
Figura 4.111: Grfico de histrico de espao em disco.......................................................215
Figura 4.112: Criando o grfico de histrico de uso de disco.............................................215
Figura 4.113: Trigger para clculo de espao 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: Latncia sendo exibida no label do link........................................................226
Figura 4.117: Latncia de rede e trigger associados ao link com a Internet no mapa......226
Figura 4.118: Link no mapa identificando status do trigger...............................................226

Captulo 1 Conhecendo o Zabbix - 12

Captulo1
ConhecendooZabbix

OBJETIVOS
Apresentaraferramentoaoaluno.
ComoofrontendorganizaoscomponentesdentrodoZabbix.
Componentesvisuaisdemonitoramento.
Alertasdeincidentes.
Reinicializaodeservios.
Mostraraoalunoondeobterinformaes.

Captulo 1 Conhecendo o Zabbix - 13

1.1.Conhecendoaferramenta
Sigaospassosindicadospeloprofessorparaacessoaoexemploprontonamquinadele.
Voc vai fazer um passoapasso conhecendo a ferramenta como um usurio comum (no
superusurio).

1.2.Comunidadeseforums
OZabbixtemumadocumentaoonlinequeserusadaduranteocursoparaconsultas.
Olinkdeacessohttp://www.zabbix.com/documentation/.
As comunidades tambm mantm uma srie de fruns em
http://www.zabbix.com/forum/.Emdestaqueosseguinte:
Zabbixannouncements:annciosenovasverses
Zabbixhelp:frumprincipaldeajuda
Zabbixcookbook:vriasconfiguraesprontaspostadasecomentadas.Muitotil.
Zabbixthroubleshooting:seumproblemapersiste,este olocalparapostarerrose
solues.
Zabbixemportugusyemespanhol:frumemportuguseespanhol,tilquandovoc
nolinglsmuitobem.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 14

Captulo2
CriandoumaInfraestruturadeMonitoramento
Parte1,Sistema

OBJETIVOS
Prepararoambientederecebimentodealertas:
ConfiguraroEvolutionparareceberemailsdealertas;
ConfiguraroPidginpararecebermensagensinstantneasdealertas.
PrepararoambienteparainstalaroservidordoZabbix:
Obterosfontesdaferramenta;
PrepararoPostgreSQLparaservirdebackend.
Instalaroservidoreagente:
Compilaroservidoreagentenamquinadestinadaaseromonitoradorenasdemais;
InstalaodosbinriosdentrodoWindows2003(cominicializaodoagentecomo
servio);
Executar deploy do agente Zapcat no JBoss para monitoramento do servidor de
aplicaes
ConfiguraodeumvirtualhostdentrodoApacheparaofrontend,incluindomodificao
dosparmetrosdoPHP.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 15

2.1.Introduo
Estecaptuloapresentatodasastarefasrelacionadasacriaodabasedesuasoluo
demonitoramento.Aquiondeserabordadoamaiorpartedoconhecimentotcnicodeconsole
Linux, deploying em JBoss, servios de Windows e acesso SNMP, visando incutir as
competnciasnecessriasparaque,sozinho,vocsejacapazdereproduzirestespassosemum
ambientedeproduo.
Almdisso,serovistososprimeirospassosnautilizaoefamiliarizaocomainterface
webdoZabbix,mostrandocomogerenciaroselementosmaisbsicosdaferramenta:usurios,
hosts,templates,gruposdehostsemapas.

2.2.Configurandooscomponentesderecebimentodealertas
PorpadrooZabbixpossuiquatroformasdealertasembutidosdentrodeseusistema:e
mails,clientejabber,SMSviamodemGSMeSMSviaserviodetorpedos.Detodos,oltimono
muitotilaquinoBrasil,devidoseguirospadresdasoperadorasnoCanadeEstadosUnidos.
Dosrestantesvamosverofuncionamentodosistemadecorreiosedejabberdentroda
saladeaula,devidoanaturezadohardware,aemulaodasmquinasvirtuaisdocenrioe
custosdemensagemnoabordamosousodentrodonossocenriocomSMS.Noentantotemos
umapndicequecobreosistemadeSMScomthroubleshootingedicasdeconfigurao.
Recebermensagensporclientedeemail amaneiramaistradicionaldetodas.Para
casodeestudosprecisamosconfiguraroEvolution,clientedeemailpadrodoGnome.Abrao
EvolutionpelomenuprincipaldoGnomeesigaospassosdescritosaseguir.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 16

2.2.1.Configurandooclientedecorreioeletrnico

Figura 2.1: Configurao do evolution (1/10)

Estaapenasumteladeboasvindas,cliqueemAvanar.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 17

Figura 2.2: Configurao do evolution (2/10)

Nohnadaparaserrestaurado,cliquenovamenteemAvanar.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 18

Figura 2.3: Configurao do evolution (3/10)

Comearemos a configurar as contas de usurios dentro do sistema de LDAP que o


cenriopossui.Preenchaoscamposcomoabaixoparaconfiguraraprimeiracontae,emseguida,
cliqueemAvanar.
1) NomeCompleto:Systemadministrator
2) Endereodeemail:sysadmin@curso468.4linux.com.br.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 19

Figura 2.4: Configurao do evolution (4/10)

3) TipodeServidor:devemosescolherPOP,queorecursoimplantadopararecepo
deemailsnocenrio.
4) Servidor:oendereoexternodoservidordeemail.
5) Nomedousurio:oprimeirousurioqueusaremososysadmin.
6) Lembrar senha: para comodidade dos testes em curso ative o recurso de
armazenamentodesenha.
Estaoponoseguraparaserusadaemproduo! Mascomonocursoos
usuriossofictciosepossuemasenha123456issonovainosimpactar.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 20

Figura 2.5: Configurao do evolution (5/10)

Nestatela,configureorecebimentoautomticoacada1minuto,assimnoprecisamos
ficaresperandoemailschegareme,tambmnoprecisamosficarclicandoemEnviar/Recebera
todomomento.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 21

Figura 2.6: Configurao do evolution (6/10)

Apesardenoutilizaroenviodeemailsobopontodevistadousurio,interessante
configuraroSMTPparaaveriguarseosemailsestocaminhandodentrodocenrio.
1) NoTipodeServidorescolhaSMTP.
2) NoServidorcoloqueomesmoendereodeemailquecolocamosnoPOP3.
Noreproduzaestecomportamentodeaceitedeemailssemautenticaoem
produo! Oservidordecorreioeletrnicodentrodocenrioapenasummeiode
sabermosqueasmensagensdealertasdoZabbixestosendoenviadasporemail.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 22

Figura 2.7: Configurao do evolution (7/10)

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

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 23

Figura 2.8: Configurao do evolution (8/10)

Estaapenasumateladefinalizao,cliqueemAplicar.

Figura 2.9: Configurao do evolution (9/10)

TorneoEvolutionoseuclientedeemailpadro.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 24

Figura 2.10: Configurao do evolution (10/10)

Naprimeiravezquevocentrareleirpedirasenha(123456)dousurio,digiteae
verifiquesenohouvenenhumerro.Nohnenhumemailnacaixademensagensdosysadmin,
logonenhumamensagemvaiaparecer.
Agoraqueo Evolution estafuncionamento,acesseomenu Editar Preferncias e
cliquenocone ContasdeCorreio aesquerda.Atravsdoboto Adicionar cadastremaistrs
contasseguindoosmesmospassosqueanteriormente,mudandoapenasosnomeseusurios.
AscontasaseremacrescentadassoWindowsAdministrator(winadmin),JavaEngineer
(javaeng)eDBA(dba).Apsotrmino,escolhaduascontasetesteoenviodemensagensentre
elas.

2.2.2.Mensagensinstantneas
RecebermensagensdealertasviaInstantMessagingtilemempresasquepossuem
umsistemainternodeIMeosfuncionriosestologadosconstantemente.OZabbixsuportao
enviodestasmensagensviaprotocoloJabbereocenriojpossuiestetipodeservioatravsde
umservidorOpenFireinstaladonamquinamestradoZabbix.
Vamosentoconfiguraro Pidgin, umclientedeIMsimpleseeficienteparareceberos
alertas enviados via protocolo Jabber pelo servidor do Zabbix. Abra o aplicativo pelo menu
principaldoGnomeesigaospassosaseguir.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 25

Figura 2.11: Tela de boas vindas do Pidgin

NateladeboasvindascliqueemAdicionar.

Figura 2.12: Configurando uma conta Jabber no Pidgin

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 26

1) OprotocoloJabberusaaopoXMPP.
2) Nonomedousuriousesysadmin.
3) Nodomnio,vocdeve apontaronomedamquinacadastradaparaIMenoo
domnio.
4) Nasenhacoloque123456.
5) AtiveoLembrarSenha.
No ative a opo Lembrar Senha em produo! Isso seria uma terrvel falha de
segurana.Elasestasendoativadaparacomodidadedocurso.

Figura 2.13: Definindo o uso de criptografia

1) CliquenaabaAvanado.
2) Escolhaparausarcriptografiaapenasseestiverdisponvel.
CliqueemAdicionareativeacontanainterfacedoPidgin.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 27

2.3. Obtendo os fontes do Zabbix


Antesdecomearatrabalharcomasdiversaspartesbsicasdainstalao,precisamos
baixar o cdigo fonte do Zabbix. Voc sempre pode fazlo atravs da URL
http://www.zabbix.com/download.php,masocomandoabaixojvaicolocaropacotedefontesno
localapropriadodentrodamquinavirtualzabbixsrv.
#cd/usr/src
#wgethttp://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest
%20Stable/1.8.4/zabbix1.8.4.tar.gz
#tarxfzabbix1.8.4.tar.gz
Voctambmpodeescolheroutrosmirrorsetrocaroendereoacimasedesejar.

2.4.Preparandoobancodedados
O Zabbix no utiliza recursos como o RRDTools para armazenar dados, ele faz uso
apenasdeumSGBDoudeumbancodedadosmaissimplrio(comoosqlite)paraarmazenar
configuraes,hosts,templates,histrico,etc.
PorissoprecisamosselecionarumdosbancosnativosouusarODBC(esteltimono
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
instalaesdeZabbixestaremMySQLrecomendamosfortementequesejausadooPostgreSQL
poissuarobustezsemostroumaisadequadaaostiposdedadosqueoZabbixmanipula.
Emboranopareaaprincpio,obancodedadosdoZabbixdeextremavaliaparaa
empresa,poiselecontmtodoohistricodefuncionamentodesuainfraestruturaeatravsdele
podemoscoletarSLAseinformaesdecapacityplan.
recomendadotambmqueseubancodedadospossuaumplanodebackupsregular
viaPITRPointinTimeRecovery.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 28

2.4.1.Instalao
ParainstalaraversodorepositriodoPostgreSQL:
#aptitudeinstallpostgresql8.4

#yuminstallpostgresql84server

2.4.2.Criandoousurioeobanco
Comobancodedadosinstaladodevemoscriarumabasededadoseumusuriocomas
devidas permisses de acesso ao mesmo. O nome de ambos elementos so totalmente
opcionais,masnestematerialvamosconvencionarqueobancodedadossechamarzabbixdbe
ousurioserzabbix.
Muitasdocumentaeseatoprprioarquivopadrodeconfiguraodozabbixserver
utilizaonomedobancocomozabbix,masissopodecausaralgumasconfusesentre
eleeonomedousurio,foiporissoqueoptamospelaconvenoacima.
SomenteosuperusuriodoPostgreSQL,chamadopostgrestempermissoderealizara
criaodosobjetoscitadosacima,logo,parapodermosacessaroterminaldeconsoledobanco
(psql)temosqueentrarcomousurio postgres noGnu/Linuxeentousarocomandocorreto.
NotequeopromptdecomandoirsealterarindicandoqueestamosnoconsoledoPostgreSQL.
#supostgres
$psql
psql(8.4.5)
Digite"help"paraajuda.
postgres=#

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 29

Agoraqueconseguimosoacessocomosuperusurio,vamosprimeirocriarobancode
dados. O comando create database ir cuidar desta tarefa. Note que todos os comandos
digitadosdentrodesteconsoleterminamcompontoevrgula(;).
postgres=#CREATEDATABASEzabbixdb;
Comobancodedadoscriadocomsucessovamoscriarousurioedefinirsuasenha.
Para propsito de organizao deste material a senha do banco de dados do zabbix ser
zabbixdbpw.Aodigitarasenhanotequeelanoaparececomonoquadrodecomandoabaixo!
Esteapenasumdemonstrativodidtico.
postgres=#CREATEROLEzabbixLOGIN;
postgres=#\passwordzabbix
Digitenovasenha:zabbixdbpw
Digiteanovamente:zabbixdbpw
interessantedefinirasenhapor\passwordpoisassimelanoficaarmazenadano
histricodecomandosdousurio.
Agoraprecisamosliberaraconexodoservidoraobancodedadosdozabbix,paraisso
editeoarquivopg_hba.confconformeabaixoeacrescentealinhaemdestaque.
postgres=#\q
$logout
#vim/etc/postgresql/8.4/main/pg_hba.conf

hostzabbixdbzabbix127.0.0.1/32md5
Reinicieobancodedadoserealizeotestedeconexo.
#/etc/init.d/postgresqlrestart
#psqlhlocalhostUzabbixzabbixdb
psql(8.4.5)
conexoSSL(cifra:DHERSAAES256SHA,bits:256)

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 30


Digite"help"paraajuda.
zabbixdb=>\q
#
Se voc estiver usando a verso 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


usurioounopostgresql.conftambm.

2.4.3.Cargainicial
Agoravamosfazeracargainicialdobancocarregandoosesquemas,osdadosmais
bsicos.
#supostgres
$cd/usr/src/zabbix1.8.4/create/schema
$catpostgresql.sql|psqlzabbixdb
$cd../data
$catdata.sql|psqlzabbixdb
No faa a carga do arquivos de imagens, iremos abordar como colocar figuras
personalizadasedemelhordefiniomaisafrente,nestecaptulo.

2.4.4.Concedendoaspermissesnecessriasaousurio
Agoraomomentodeconcederaspermissesdeacessonastabelas.OusurioZabbix
precisadepermissesdeSELECT,INSERT,UPDATEeDELETEapenas.Comasequnciade
comandosabaixovocconseguirativartodasaspermissesnecessrias.
Emboraesteprocessosejamaiscomplicadodoquefazerdeixarousuriozabbixcomo
donodobancoelemuitomaisseguroedeveserutilizadoassimemproduo

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 31


$psqlzabbixdb
1

postgres=#\t

postgres=#\a

postgres=#\o/tmp/grantzabbix.sql

postgres=#SELECT'GRANTSELECT,UPDATE,DELETE,INSERTON'||schemaname||'.'

||tablename||'TOzabbix;'FROMpg_tables;
5

postgres=#\o

postgres=#\i/tmp/grantzabbix.sql

postgres=#\q

$logout
1) Ocomando\aremoveoalinhamentodoselementosnatabela;
2) O\tmostraapenastuplas,eliminandocabealhoserodaps;
3) Ocomando\ogravaooutputnoarquivodefinido(/tmp/grantzabbix.sql).Noteque
precisodeoutro\osemonomedoarquivoparaencerrarooutput;
4) EstecomandoemSQLselecionatodasastabelasdobancodedadosemontauma
string com o comando de permisso (GRANT), voc pode ver o contedo deste
comandonoarquivo/tmp/grantzabbix.sql;
5) Ocomando\icarregaeexecutaocontedodoarquivogeradoacima.

2.5.InstalaodoservidorZabbixviacdigofonte
Em alguns casos a distribuio Gnu/Linux que voc escolher pode possuir em seu
repositrioumaversosatisfatriadoZabbixdisponvel.Seforesteocaso,timo!Simplesmente
instaleopacoteecomeceaconfigurar.
Noentantoissonemsempreverdadeepodesernecessrioumaversomaisrecente
(devidoarecursosnovos,etc.)nasuasoluodemonitoramento.Parasuprirestanecessidade
precisocompilaroZabbixapartirdeseucdigofonte.
Esta sesso toda dedicada ao processo de criar os binrios, cobrindo quais
dependnciasdevemserinstaladasecomoescolherosrecursosaseremcompilados.Viade
regra se algum tipo de recurso no se mostrar necessrio a princpio no o ative, isso gera
binriosmaisleves(commenoscdigoembutido)ealiviaoconsumodememriaemservidores

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 32


comaltascargasdemtricassendomonitoradas.
Paracomear,vamosinstalarosdoispacotesmaisbsicosparacompilaodefontesno
Debian, o buildessential e o make. O primeiro um meta pacote que ir instalar todosos
pacotesmnimosdecompilaodefontes(compilador,linkeditor,cabealhosdokerneledalibc,
etc.)eosegundoumautomatizadordecompilao.Noterminaldozabbixsrvrodeosseguintes
comandos.
#aptitudeinstallbuildessentialmake
#cd/usr/src/zabbix1.8.4
#./configurehelp|less
Oconfigureumscriptgeradoapartirdoautotools,queumconjuntodeferramentas
parafacilitaracompilaodefontesemC.Aopohelpfornecidaacimairlistartodasas
opesquepodemosativarounoparacompilaroZabbix.Notequeoconfigurenocompila
nadaeleapenaspreparaacamapararealizaracompilaocomomake.
Natabelaaseguirestoasopesrelevantesdoconfigureparaanossatarefa.
Opo do configure
--prefix=diretrio

Descrio
Define onde o Zabbix ser instalado. importante
lembrar que se nada for configurado nesta opo os
binrios e manuais sero colocados em /usr/local como
padro. No entanto para manter a instalao organizada
e facilitar atualizaes de verses do Zabbix ns o
colocaremos em /opt/zabbix-1.8.4.

--mandir=/usr/share/man Aponta a localizao correta das pginas de manual,


assim podemos usar o comando man para acessar as
opes dos binrios do Zabbix.
--enable-static

Ativa a gerao de binrios em forma esttica (sem


shared libraries). recomendado deixar esta opo
desligada.

--enable-server

Ativa a compilao do servidor. No caso presente iremos


ativar esta opo, quando formos compilar apenas o
agente iremos desabilit-la.

--enable-proxy

Compila os binrios para sistemas distribudos. Como


neste curso no abordaremos o sistema de proxy do
Zabbix vamos deixar esta opo sempre desabilitada.

--enable-agent

Compila os binrios para os agentes. uma excelente


ideia sempre deixar esta opo ativada. Mesmo em
servidores dedicados do Zabbix uma boa prtica
monitorar a prpria mquina.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 33


Opo do configure

Descrio

--enable-ipv6

Compila com suporte a IPV6. Embora no seja


absolutamente necessrio, dado ao recente anncio do
esgotamento de endereos IP da IANA o IPV6 logo ser
necessrio 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


verso 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 taravs
deste servio de mensagens instantneas. Vamos ativar
essa opo.

--with-libcurl

Ativa o suporte a biblioteca de HTTP CURL. necessria


para o monitoramento de servios Web e autenticao via
HTTP.

--with-iodbc

Ativa o suporte ao back end do bando de dados via


ODBC. No recomendado.

--with-unixodbc

Como o anterior mas usa unixODBC ao invs 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 verificao de


status de um servio de conexo 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
especificao. Para este curso deixaremos ele desativado.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 34


Opo do configure
--with-ldap

Descrio
Ativa suporte a autenticao via LDAP e monitoramento
do status de um servio de diretrios remoto. Vamos
deix-la ativada.

Tabela 1: Opes de compilao do Zabbix

2.5.1.Dependnciasdecompilao.
Ao executar o comando abaixo, colete cada erro que aparecer e aponte na tabela o
pacotequedeveserinstaladopararesolveradependncia.Istovaiservirderefernciaparavoc
emfuturasinstalaesetambmtemcomointenoensinaralidarcomerrosdedependncias
decompilao.
Useocomandoaptitudeparaencontrarospacotescorretos.
./configureprefix=/opt/zabbix1.8.4mandir=/usr/share/manenableserverdisablestatic
disableproxyenableagentenableipv6withpgsqlwithjabberwithlibcurlwithnet
snmpwithssh2withoutopenipmiwithldap
Erro

Dependncia

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 35


VocpodeotimizarosbinriostornandooZabbixmaisrpidomasdependentedeuma
CPUcompatvelsevocexportarasvariveisdeambiente CFLAGSe CXXFLAGS
comoseguintevalorO2pipemarch=native,antesdeexecutaroconfigure.Sevoc
estiverusandoumsistemade32bitsacrescenteaindafomitframepointer. Cuidado
comoutrosflagsdecompilao!Vocpodeacabarcomumbinriodefeituoso!

2.5.2.Compilandoeinstalando
Agoraqueoconfigurechegouaopontofinaletodasasdependnciasforamresolvidas
hora de executar a compilao com o comando make. Na verdade o make no um
compilador,eleapenaschamaoscomandosnecessriosparaconstruirosbinrioatravsdeum
arquivoMakefilequefoigeradopeloconfigure.
Execute conforme abaixo, os comandos. No final o comando ln ir criar um link
simblicopara/opt/zabbix.Isso umaboaprticaparaajudaratrocarasversesdoZabbix
duranteumamigrao,apontandoolinkparaapastacomosnovosbinrios,enquantomantemos
osanterioresparaocasodeumdowngradeemergencial.
Vocpodesubstituiroj2poroutronmeroparaacelerarasuacompilaosevoc
tivermltiploscores.Umaregrageral2xCores+1.
#makej2
#makeinstall
#lnsvf/opt/zabbix1.8.4/opt/zabbix
#tree/opt/zabbix
Ocomandotreevaimostrarahierarquiadediretriosearquivosabaixodocaminhoda
instalao.Atabelaabaixotemodescritivodecadaumdeles.
Binrio

Funcionalidade

zabbix_get

Utilitrio para realizar consultas nos


agentes via linha de comando. Muito til
e ns o utilizaremos extensamente
durante o curso.

zabbix_sender

Utilitrio para envio de traps para o


servidor do Zabbix. necessrio criar um

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 36


Binrio

Funcionalidade
item especial do tipo Zabbix trap para
lidar com estes envios. til para alertar
incidentes instantaneamente para o
servidor como o incio, termino ou erro
de um backup.

zabbix_agent

Agente para ser usado com o super


daemon xinetd ou similar. No
necessrio na grande maioria dos casos e
ser removido do diretrio.

zabbix_agentd

O daemon do agente do Zabbix que fica


na memria a espera das requisies do
servidor.

zabbix_server

O daemon do servidor do Zabbix. Este o


componente
principal
de
toda
a
infraestrutura.

Tabela 2: Binrios de uma instalao de servidor e agente do Zabbix


precisoremoverozabbix_agentesuapginademanual,umavezqueiremosusar
apenas o daemon zabbix_agentd. Tambm uma boa prtica no manter os smbolos de
depuraonosbinriosdeproduo.Ocomandostripirretirarestessmboloseoexecutvel
finalserligeiramentemenoremtamanho(oqueajudaaconsumirmenosmemriatambm).
#rm/opt/zabbix1.8.4/sbin/zabbix_agent
#rm/usr/share/man/man1/zabbix_agent.1*
#stripstripall/opt/zabbix1.8.4/*/*
Noaconselhvelexecutardaemonsdesistemacomousurioroot,porissovamos
criarumgrupoeusuriodenomezabbixparaqueoservioentrenamemriacomousuriono
privilegiado.
OnomedousurioqueoZabbixusahadcoded,ouseja,eleprogramadodentrodo
cdigofonteenopodeseralteradoviaconfigurao.Dessemodosempretemosque
criarousuriocomonomezabbix,jonomedogrupototalmenteopcional.
#groupaddzabbix
#useraddgzabbixms/bin/bashzabbix

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 37


Ambososdaemons,doagenteedoservidor,precisamdedoisdiretriosparaarmazenar
oslogseoarquivodePID.Comoscomandosabaixocrieedaspermissesnecessriaspara
ambos.
#mkdir/var/{log,run}/zabbixp
#chownzabbix./var/{run,log}/zabbix

2.5.3.Serviosderede
Acrescente ao /etc/services o mapeamento de portas do Zabbix Agent e Zabbix
Trapper.
#vim/etc/services

zabbixagent10050/tcpZabbixAgent
zabbixagent10050/udpZabbixAgent
zabbixtrapper10051/tcpZabbixTrapper
zabbixtrapper10051/udpZabbixTrapper
Estas entradas permitem que programas como wireshark e netstat reconheam as
portasdoZabbix.

2.5.4.Arquivosdeconfigurao
Os arquivos de configurao do Zabbix acompanham os seus fontes, mas a 4Linux
preparouumconjuntodearquivosparausoemproduocomumaorganizaomelhorada.Ao
invsdesimplesmentecolocartodasasconfiguraesemumnicoarquivo,osparmetrosforam
distribudosemgruposlgicosseparadosemvriosarquivosediretrios.
OZabbixporpadroprocurapelosseusarquivosem/etc/zabbix,apartirdosarquivos
principais(zabbix_server.confezabbix_agentd.conf)outrosarquivosforamchamadoseinseridos
na configurao. A tabela abaixo demonstra como ficaram organizados os diretrios e seu
contedo.

Diretrio ou arquivo
/etc/zabbix/agent.d

Descrio
Diretrio para configuraes extras do

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 38


Diretrio ou arquivo

Descrio
agente
principal)

(carregado

pelo

arquivo

/etc/zabbix/agent.d/checkings.conf

Configurao de checagens ativas e


passivas do agente.

/etc/zabbix/agent.d/logs.conf

Configurao de logs (local, nvel de


debug, etc.) do agente.

/etc/zabbix/agent.d/network.conf

Configuraes de rede do agente.

/etc/zabbix/agent.d/remote_commands.conf

Configurao de recebimento
comandos remotos no agente.

/etc/zabbix/alert.d

Diretrio
externos

/etc/zabbix/externalscripts

Diretrio para scripts de extenso do


agente do Zabbix.

/etc/zabbix/server.d

Diretrio para configuraes extras do


servidor (carregado pelo arquivo
principal)

/etc/zabbix/server.d/database.conf

Configurao do back end de banco


de dados do servidor.

/etc/zabbix/server.d/logs.conf

Configurao de logs (local, nvel de


debug, etc.) do servidor.

/etc/zabbix/server.d/network.conf

Configuraes de rede do servidor.

/etc/zabbix/server.d/process.conf

Configuraes de quais daemons


devem iniciar e quantos de cada um
deles, alm de consumo de memria
do servidor.

/etc/zabbix/server.d/proxy.conf

Configurao
de
monitoramento
distribudo do servidor.

/etc/zabbix/zabbix_agentd.conf

Arquivo principal de configurao do


agente

/etc/zabbix/zabbix_server.conf

Arquivo principal de configurao do


servidor

para

scripts

de

de

alertas

Tabela 3: Arquivos e diretrios de configurao


Copie o arquivo compactado do DVD (confs/configserver.tar.bz2 e confs/config
agent.tar.bz2)paradentrodo/tmpdamquinavirtual.Estearquivostemvriosvalorespadres
razoveisparacomearenecessitamdepoucaconfigurao.Nodeintenodestematerial
dissecar cada uma das opes de configurao, vamos abordar apenas as mais relevantes,
pormosarquivostemextensoscomentriosemportuguscriadospeloautordestematerial.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 39


#cd/
#tarxf/tmp/configserver.tar.bz2
#tarxf/tmp/configagent.tar.bz2
#chownroot.zabbix/etc/zabbixR
#find/etc/zabbixtypedexecchmod0750{}\;
#find/etc/zabbixtypefexecchmod0640{}\;
1) Notequeogrupodosdiretrioseseusarquivosforamapontadosparazabbix.O
donocontinuouaseroroot;
2) Todososdiretriostiveramapermissodeacessoglobalrevogada,nenhumusurio
do sistema tem que acessar esta pasta exceto o do Zabbix (existem informaes
sensveiscomosenhasemtext/plainnestesarquivos).Tambm,apenasoroottem
direitosdegravaonessaspastasogrupozabbixtemapenasacessodeleitura.
3) Osarquivosseguemamesmalgicaqueosdiretrios.

Nodeixedefazeroprocedimentodaspermisses,elevaitornarasuainstalaodo
Zabbixmuitomaissegura.
ParafinalizarvamosconfigurarosistemaparaapontaroPATHparaolinksimblicode
instalao.Issovaifacilitaroacessoaoscomandos.
#vim/etc/profile.d/zabbixpath.sh
8

exportPATH=$PATH:/opt/zabbix/sbin:/opt/zabbix/bin

#./etc/profile
#zabbix_gethelp
#zabbix_agentdhelp

2.5.5.Testandosuainstalao
Utilizeomanualdozabbix_agentdparadescobrircomolistarasmtricassuportadas
peloambienteecomotestarumdelasindividualmente.Depoisinicieoagente,vejaocontedodo
arquivodelogseuseoscomandospsenetstatparaverquaisosprocessosqueeleinicioue
emquaisportaselessevincularam.
Depoisdotrminocomoagentevamosconfiguraroservidorconformeospassosaseguir
erealizaromesmoprocedimentodeinicializaoepesquisaquenoagente.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 40


#vim/etc/zabbix/server.d/database.conf
DBHost=127.0.0.1
DBPort=5432
DBName=zabbixdb
DBUser=zabbix
DBPassword=zabbixdbpw
1) OendereoIPounomeDNSdoservidorqueestacomobancodedados.Comono
nossocenrioobancoeoservidorZabbixestonamesmamquinavirtualutilizamos
oendereodeloopback;
2) AportaTCPdeacessodobanco.EstaaportapadrodoPostgreSQL;
3) Nomedobancodedadosquecriamosnoinciodocaptulo;
4) Nomedousurioquecriamosedemospermisso;
5) Senhadousurioacima.
Agoraexecuteoscomandosdeinicializaodosdaemonsconformeindicadoabaixo.
#zabbix_agentd
#zabbix_server
Verifiqueseasltimaslinhasdologindicamseambosiniciaramcorretamenteetambm
setodososprocessosestonamemria.
#tailn1/var/log/zabbix/zabbix_server.log
1203:20110207:092633.044server#1started[DBCache]
#tailn1/var/log/zabbix/zabbix_agentd.log
871:20110207:092607.522zabbix_agentdcollectorstarted
#psuCzabbix_agentd
SERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
zabbix8630.00.14836496?SN09:250:00/opt/zabbix/sbin/zabbix_agentd

#psuCzabbix_server
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
zabbix12010.01.0466962636?SN09:260:03/opt/zabbix/sbin/zabbix_server

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 41

Note que a sada do ltimo comando muito grande. Ao final dos testes mate os
processoscomocomandokillall:
#killallzabbix_serverzabbix_agentd

2.5.6.Scriptsdeboot
No CD temos alguns scripts de boot prontos para uso no Debian, copie os arquivos
boot/debian/serverbootscripts.tar.bz2 e boot/debian/agentbootscripts.tar.bz2 para o /tmp e
descompacteosnaraiz.
#cd/
#tarxvf/tmp/serverbootscripts.tar.bz2
#tarxvf/tmp/agentbootscripts.tar.bz2
Testeainstalaodosscripts.
#/etc/init.d/zabbixserverstart
#/etc/init.d/zabbixagentstart
Porfim,coloqueosscriptsnobootdamquinavirtual.
#updaterc.dzabbixagentdefaults
#updaterc.dzabbixserverdefaults

2.6.InstalaodoagenteZabbixviacompilao
AgorachegouomomentodeinstalaroagentedoZabbixnasoutrasmquinasvirtuais
comGnu/Linux.Oprocedimentodeinstalaosimilaraodoservidor,masnoiremoshabilitara
opoenableservernoconfigure.Tambmnosonecessriostodosasopesdewith
usadasacima.Oagentecertamentemaissimplesqueoservidoremtermosdefuncionamentoe
sprecisadosuporteaLDAP.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 42

2.6.1.Exerccio:compileeinstaleoagentenasVMcomGnu/Linux
Comasinformaesacimaemmosrealizeosprocedimentosdeinstalaodosagentes
namquinavirtual Presentation.Noseesqueatambmdecolocarosscriptsdebooteos
arquivosdeconfiguraonelaeiniciaroprocessonamemria.

2.6.2.Acessoaoagentepeloservidor
Agoraqueoagenteestainstaladoerodando precisorealizaralgumasconfiguraes
bsicasparaqueelepermitaoacessovindodoservidor.
Primeirovamosverificarsesuasconfiguraesdeportaeredeestodeacordo,usandoo
comandonetstatparalistarasportasqueeleestaescutando.
#netstatlntp|grepzabbix
tcp00127.0.0.1:100500.0.0.0:*OUA592/zabbix_agentd
Asadadocomandomostraqueodaemonestaapenasvinculadoaoendereolocalhost
damquina,vamosmodificarseuarquivodeconfiguraoereinicilo.IdentifiquequaloIPlocal
da mquina 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.confnoparmetroListenIP.
#vim/etc/zabbix/agent.d/network.conf
1

#EsteoarquivodeconfiguraoderededoagentedoZabbix.

2
3

#====================================================================

#QualportaeIPqueoagentevaisevincularparareceberchecagenspassivasdoservidor.

ListenIP=172.27.0.1

ListenPort=10050

8
9

#====================================================================

10

#IPoqualoagentedoZabbixirusarparaenviardados,opcionalpoisosistemausaoIP

oqualestadesignadoaenviardadosconformeatabeladeoteamento.
11

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 43


12

SourceIP=
1) MudarparaoIPinternodoPresentation.
AgorareinicieoagenteeconfiranovamenteaqualIPeleestavinculado.

#/etc/init.d/zabbixagentrestart
StoppingZabbixagentdaemon:zabbix_agentd
StartingZabbixagentdaemon:zabbix_agentd
#netstatlntp|grepzabbix
tcp00172.27.0.1:100500.0.0.0:*OUA654/zabbix_agentd
SeoservioagoraestivervinculadoaoIPcorretorepitaestespassosemcadaVM.
Nestepontoimportanteparamosparaverificarumapossvelfalhadeconexo.Vamos
foraraVMzabbixsrvasecomunicarcomogateway(presentation)viazabbix_get.Vamos
usarakeyagent.pingcomoexemplo.
#zabbix_getsgatewayk'agent.ping'
zabbix_get[6646]:Getvalueerror:***Cannotconnectto[gateway]:10050[Connectiontimed
out]
Noteamensagem'Connectiontimedout'nofinaldalinhadeerro,tambmrepareque
levoualgumtempoparaqueocomandoretornasseamensagem.Issoaconteceporqueofiltrode
pacotes da mquina esta bloqueando conexes, podemos averiguar isto com mais preciso
usandoaferramentanmapconformeabaixo:
#nmapP0p10050gateway

StartingNmap5.00(http://nmap.org)at2011013002:17BRST
Interestingportsongateway.curso468.4linux.com.br(172.27.0.1):
PORTSTATESERVICE
10050/tcpfilteredunknown
MACAddress:08:00:27:BD:55:12(CadmusComputerSystems)
Nmapdone:1IPaddress(1hostup)scannedin0.47seconds

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 44

Oestadodaportaqueonmapretornoufiltered,ouseja,nohretornodepacotesdo
sistema.Para podermos liberaro acesso use o procedimento abaixo no terminal da mquina
presentation.
#iptablesAINPUTjACCEPTptcpdport10050s172.27.0.10
#iptablessave>/etc/iptables/rules
RepetindoonmapapartirdoservidordoZabbix:
#nmapP0p10050gateway
StartingNmap5.00(http://nmap.org)at2011013002:34BRST
Interestingportsongateway.curso468.4linux.com.br(172.27.0.1):
PORTSTATESERVICE
10050/tcpopenunknown
MACAddress:08:00:27:BD:55:12(CadmusComputerSystems)
Nmapdone:1IPaddress(1hostup)scannedin0.27seconds
Seoestadoretornadoforopen,entooservidorcapazdeseconectaraoagenteno
nvel da camada TCP, mas ainda precisamos ter certeza absoluta que ele esta permitindo
conexesnonveldecamadadeaplicao.Vamosrepetirotestecomozabbix_geteverseo
agenteretornaovalor1.
#zabbix_getsgatewayk'agent.ping'

Notequeelenoretornanada!Apenasumalinhaembrancoaparecenoresultadodo
comando.Issoestaocorrendoporqueoagenteprecisaliberaraconsultaparaoservidor,por
padroosarquivosdeconfiguraoapenaspermitemqueelesejaacessadoapartirdolocalhost.
Paraliberaroacessotemosqueeditaroarquivo/etc/zabbix/agent.d/checkings.confemudar
doisparmetros.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 45


Oprimeiro,obviamenteoServer queaceitaumalistaseparadaporvrgula(,)dos
endereosquesopermitidosfazeraconsulta.Osegundo oHostname representandoo
nomedamquinacomoqualoagentedeveseapresentaraoservidor.Estenomedevesernico
enonecessariamenteprecisaserigualaohostnamerealdamquina,defatononossocenrio
iremosdeixlodiferente.
#vim/etc/zabbix/agent.d/checkings.conf
1

#Esteoarquivoparaconfiguraodechecagensnoagente.Hdoistiposdechecagens,a

passivaeaativa.
2

#Checagenspassivassoopadro,oservidorfazoagendamentodasmtricasemanda

umarequisioaoagentequeaguardapassivamente(daionome),esteentocoletaodado
dosistemaeenviadevoltaaoservidor.
4

#Umachecagemativapermitequeoagenterecebaumalistadeitensaseremmonitorados

doservidoreaoinvsdesteltimocuidardoagendamentoerequisiesoagentequetoma
parasiestatarefa.
6

#ChecagensativassoteisquandooFirewallnopermitequeoservidordemonitoramento

alcanceoagenteviaredeouquandoseutilizaumsistemademonitoramentodelogsondeo
monitoramentoativoobrigatrio.
8

#====================================================================

#Quaissoosservidorespararecebimentoderequisiesouobtenodalistade

checagensativas.
10

Server=172.27.0.10

11
12

#====================================================================

13

#ComoestehostestacadastradodentrodoZabbixistonoprecisacorrsponderao

hostnamedamquinaeleumastringdeidentificaodoagenteparacomoservidordo
Zabbix.
14

15

Hostname=Presentation

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 46

1) SempretemosquemudaresteparmetroparaoendereodoservidorounomeDNS
domesmo.Sehouveremmaisdeumservidor,separeosendereos/nomeporvrgula;
2) EsteonomeasercadastradonofrontenddoZabbixenoonomedeDNS
(apesardepoderemserosmesmos).
Reinicieoagentemaisumavezefaaotestecomzabbix_getapartirdoservidor.
#zabbix_getsgatewayk'agent.ping'
1
Seocomandoresultanteretornou1entooservidorpoderacessaroagenteapartirde
agora.

2.6.3.ExercciosobreinstalaodeagenteemLinux
1) Instale o agente do Zabbix via compilao nas mquinas virtuais Application e
Databaseconformemostradonestecaptulo.

2.7.InstalandooagenteemambientesWindows
Um dos objetivos do curso demonstrar como o Zabbix capaz de monitorar redes
heterogneascomvriossistemasoperacionaiseativosderede.Estasessocuidadeinstalaro
agentedoZabbixemumWindows2003.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 47

Figura 2.14: Baixando o agente do Zabbix no Windows

Primeiro

preciso

baixar

os

executveis

pelo

endereo

http://www.zabbix.com/downloads.php,localizeolinkdebinriosparaWindowscomonaFigura
2.14.
Cliquenolinkdedownloadeescolhaumlocalparacolocaroarquivocompactado,no
exemplodaapostilaelefoicolocadoemC:\Downloads.Abraapastaemqueoarquivofoisalvoe
descompacteoarquivo.Dentrodelevocencontraroutrasduaspastasparaarquiteturasde32e
64bits.Nonossocasoiremosusarosde32bits.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 48

Figura 2.15: Instalando os executveis no Windows

Volte a raiz e crie um diretrio chamado Zabbix e dentro dele ainda crie mais trs
diretrios:conf,logebinecopieosexecutveisdescompactadosdentrodesteltimo.
ObtenhaosarquivosdoDVDcomaconfiguraodoagentedoWindows(conf/agentwin
config.zip)edescompactedentrodaconfoseucontedo.Apagueoarquivozipdepoisdisso.
O arquivo zabbix_agentd.conf deve ficar na raiz da pasta conf, assim como os
diretriosagenteexternalscripts.Cuidadonahoradedescompactar.

Figura 2.16: Diretrio de configurao do Zabbix no Windows

Edite o arquivo c:\Zabbix\conf\agent\checkings.conf e mude os parmetros Server e


HostName conforme a Figura 2.17, para permitir o acesso do servidor e o arquivo
c:\Zabbix\conf\agent\network.confparavinculloaoendereoIPdaplacaderede.

Use o Wordpad para alterar estes arquivos, o Notepad tem vrios problemas com
codificaoefinaisdelinha.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 49

Figura 2.17: Configurando o agente no Windows

Agoravamostestarainstalao,abradoispromptsdecomando,noprimeiroacesseo
diretriodosbinrioseexecuteocomandoconformeabaixo.
cdC:\Zabbix\bin
zabbix_agentdc..\zabbix_agentd.conf
Notequeumamensagemdizendoqueelefoiiniciadopeloconsoleiraparecernatela.
porqueoWindowsnocapazdeexecutaroagentecomoumdaemondamaneiraqueoLinux
faz,maisafrenteveremoscomoinicilocomoserviodoWindowsquemaneiracorretadese
fazer.Outramensagem,destavezviacaixadedialogo,tambmvaiaparecernatela.oservio
de segurana do Windows que esta perguntado se deve bloquear ou no esta aplicao.
ObviamentedevemosclicaremDesbloquear.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 50

Figura 2.18: Desbloqueando o agente no Windows

Agora no segundo prompt de comando, use o comando netstat como abaixo para
verificarseeleestaescutandonoendereocorreto.
netstatan

2.7.1.Executandooagentecomoservio
InstalaroagentedoZabbixcomoserviomuitosimples.Nopromptdecomandoonde
voc o testou pressione CTRL+C para cancelar a execuo do programa (demora alguns
segundos).Quandoopromptretornardigite:
zabbix_agentd.execc:\Zabbix\conf\zabbix_agentd.confinstall
DuasmensagensiroaparecerindicandoainstalaodoagentecomoServiceeEvent
Source.ParaconferirseoagenteestamesmonoarabraoPaineldeControle Ferramentas
AdministrativasServioseprocurepeloserviochamadoZabbixAgent.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 51

Figura 2.19: O agente do Zabbix sendo executado como servio automtico.

Nestatelatambmpossvelparar,reiniciar,etc.oagenteatravsdabarradeconesna
partesuperiordajanela.ComooservioiniciaparadodevemosclicarsobreeleenoconeIniciar
oServio(representadopelosmbolodeplay).
Certifiquesequeeleestaparaseriniciadoautomaticamente,assimquandoosistemafor
reiniciadooserviotambmser.TestenoservidordoZabbixseeleestaconseguindoalcanaro
agente.
#zabbix_getswin2003k'agent.ping'
1
Seeleretornar1comoacima,entoainstalaoestaconcluda.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 52

2.8. Instalao do agente Zapcat para JBoss


O Zabbix possui alguns agentes programados por terceiros alm do nativo que
acompanhaosfontespadro.UmdestesagentesoZapcat,quecapazdemonitoraratravs
de um deploy, servidores JBoss e Tomcat. No nosso cenrio temos um servidor JBoss na
mquinavirtualApplicationquesermonitoradopeloZapcat.Orestodestasessodedicado
instalaoeconfiguraodesteagente.
O Zapcat na verdade um JMX Bridge, ele capaz de coletar os MBeans JMX do
servidoreexploparaoZabbixviaZabbixAPI.Diferentedoagente,eleescutanaporta10051
(masissoconfigurvel)erequerqueoutrohostapartesejacriadodentrodainterfacedo
Zabbix(veremosissomaisadiante).

2.8.1.Obtenodobinrio
Sigaoprocedimentoabaixoparaobterobinriodozapcat.VocirbaixlodoSource
Forge.
#cd/var/tmp
#wgethttp://ufpr.dl.sourceforge.net/project/zapcat/zapcat/zapcat1.2/zapcat1.2.zip
#unzipzapcat1.2.zip
#cdzapcat1.2
#ls
binbuild.xmlCOPYINGlibopenfireREADMEsamplessrctemplateswebappzapcat
1.2.jarzapcat1.2.warzapcatopenfire1.2.jar
Notequeozapcatvemnaformadeum.war(aplicaowebjava)e.jar(applicativojava).
Vamosnosaterapenasaomodoweb.

2.8.2.Deployment
ParainstalaroZapcat,simplesmentecopieobinrioparaapastadedeploydainstncia
emexecuodoJBoss.Nonossocasoestapasta/opt/jboss/server/application/deploy/.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 53

#cpzapcat1.2.war/opt/jboss/server/application/deploy/
#tail/opt/jboss/server/application/log/server.log

2011013006:08:10,616INFO[org.jboss.system.server.Server]JBoss(MXMicroKernel)
[4.2.3.GA(build:SVNTag=JBoss_4_2_3_GAdate=200807181417)]Startedin27s:81ms
2011013006:10:25,679INFO[org.jboss.web.tomcat.service.TomcatDeployer]deploy,
ctxPath=/zapcat1.2,warUrl=.../tmp/deploy/tmp3690979215130123277zapcat1.2exp.war/
Altimamensagemdologindicaqueopacotefoiinstaladocomsucesso(deployed).Ele
j esta funcionando e podemos averiguar isso com o comando netstat como fizemos
anteriormente.
#netstatlntp|grep':1005'
tcp00172.27.0.20:100500.0.0.0:*OUA28751/zabbix_agentd
tcp000.0.0.0:100520.0.0.0:*OUA29181/java
Repare que, como ele um aplicativo java, o netstatno vai informar o nome dele
(Zapcat)nasadacomp.

2.8.3.OpesdeinicializaodoJBoss
O JBoss precisa de trs opes para permitir que o Zapcat possa ler todos os seus
MBeans ( O Tomcat s precisa da primeira). Edite o arquivo de configuraes do JBoss e e
acrescenteaofinaldeleoseguintecontedo.
#vim/opt/jboss/bin/run.conf

JAVA_OPTS="$JAVA_OPTSDcom.sun.management.jmxremote"

JAVA_OPTS="$JAVA_OPTSDjboss.platform.mbeanserver"

JAVA_OPTS="$JAVA_OPTS

Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImp
l"
4

JAVA_OPTS="$JAVA_OPTSDorg.kjkoster.zapcat.zabbix.port=10052

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 54


5

JAVA_OPTS="$JAVA_OPTSDorg.kjkoster.zapcat.zabbix.address=0.0.0.0
1) OJMXremoteativaosistemadeconsultasviaJMXnoJBosseTomcat.Nocasodo
segundoapenasesteparmetronecessrio;
2) OMbeanserveraimplementaodoJBossparaacessoaosJMXviaservidor;
3) Indica a classe que deve ser usada para manipular os Mbeans internamente no
JBoss;
4) EstaopodefineaportadoZapcat.ElaopcionaleporpadrooZapcatescutana
porta10052;
5) EstaopodefineaqualIPozapcatdevesevincular.Elaopcionaleporpadroele
sevinculaatodososendereosdisponveisdohost(0.0.0.0).
Reinicie o JBoss e teste o acesso ao Zapcat pelo endereo

http://javaapp.curso468.4linux.com.br/zapcat1.2/,atelaabaixodeveaparecer.

Figura 2.20: Tela de entrada do Zapcat

Noprximocaptulovoltaremosaesteacesso.PorhorajbastaverificarseoZapcatesta
funcionando.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 55

2.8.4.LiberandoofirewallparaacessoaoZapcat
Nofiltrodepacoteslibereoacessoporta10052/TCPcomoscomandosabaixo.
#iptablesAINPUTjACCEPTptcpdport10052
#iptablessave>/etc/iptables/rules

2.9.TestandooacessoviaSNMP
Umadasmquinasvirtuaisrepresentaumativoderede,umswitchparasermaisexato.
NelenenhumagentepodeserinstaladoevamosusaroSNMPpararealizaromonitoramento.
ParatestarseoacessoaoSNMPestaOK,instaleasferramentasdesnmpnoDebian.
#aptitudeinstallsnmpsnmpmibsdownloader
LibereoacessoatodasasMIBsdoseusistema.
#vim/etc/snmp/snmp.conf
1

#AsthesnmppackagescomewithoutMIBfilesduetolicensereasons,loading

#ofMIBsisdisabledbydefault.IfyouaddedtheMIBsyoucanreenable

#loagingthembycommentingoutthefollowingline.

#mibs:
Agora utilize o comando snmpwalk para verificar se o switch retorna os dados de

interfacesderede.
#snmpwalkcpublicv2c172.27.0.135if
IFMIB::ifIndex.1=INTEGER:1
IFMIB::ifIndex.2=INTEGER:2
IFMIB::ifIndex.3=INTEGER:3
IFMIB::ifIndex.4=INTEGER:4
IFMIB::ifIndex.5=INTEGER:5
IFMIB::ifIndex.6=INTEGER:6

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 56


IFMIB::ifDescr.1=STRING:lo
IFMIB::ifDescr.2=STRING:eth0
IFMIB::ifDescr.3=STRING:eth1
IFMIB::ifDescr.4=STRING:eth2
IFMIB::ifDescr.5=STRING:eth3
IFMIB::ifDescr.6=STRING:switch0

IFMIB::ifSpecific.1=OID:SNMPv2SMI::zeroDotZero
IFMIB::ifSpecific.2=OID:SNMPv2SMI::zeroDotZero
IFMIB::ifSpecific.3=OID:SNMPv2SMI::zeroDotZero
IFMIB::ifSpecific.4=OID:SNMPv2SMI::zeroDotZero
IFMIB::ifSpecific.5=OID:SNMPv2SMI::zeroDotZero
IFMIB::ifSpecific.6=OID:SNMPv2SMI::zeroDotZero
Seocomandoretornoualistaacima(quefoitruncadapelotamanho)entoseusistemaj
consegueleroSNMPdoswitch.
Se vocestiverusandoumhardwarecomumaMIBproprietria,localizee baixe o
arquivonaInternetecopieonodiretrio/usr/share/snmp/mibs/

2.9.1.ConceitosdeSNMP
O SNMP um protocolo de monitoramento bem difundido, principalmente entre
equipamentosderede.Agrandemaioriadohardwareembarcadopararedesuportaalgumtipode
versodomesmo.Amaiscomumaverso2,masaverso1(consideradaobsoleta)eaverso
3(amaissegura)temumaincidnciaregular.Sevoctiverqueoptarporumadelas,sempre
tenteescolheramaisrecentepossvel.Apesardeadicionarumacertacomplexidade,averso3
ajudaemmuitonaseguranapoistrabalhacomACLsporautenticaoecriptografia.Nocurso
veremos a verso 2 que mais comum de se encontrar nos equipamentos (opo v2c no
comando usado anteriormente), mas a diferena de trabalho entre elas bem pequena
(praticamentealgunscamposamaisnaverso3).
Todas as trs verses trabalham com MIBS, arquivos texto com definies de como
coletarasOIDS,asstringsdeacessodasmtricas.UmaOIDpodeserrepresentadaporumtexto
como DISMANEVENTMIB::sysUpTimeInstance ou por uma representao numrica como .

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 57


1.3.6.1.2.1.1.3.0.
SevocpossuiraMIBdeumequipamentomonitoradopeloZabbixequiserutilizara
formatextualmostradaacimaemvezdanumrica,terquecopiaroarquivodetextodeladentro
dodiretriodesuadistribuioGnu/Linuxondeoservidorestiverinstalado.
Normalmenteestediretrioestaem/usr/share/snmp/mibs/,masrecomendadoque
vocconfirmeseistovaleparaadistroquevocestausando.
Porfim,apartirdaverso2doprotocoloSNMPpassouseatrabalharcomumastring
decomunidade(community).Porpadroestastringtemovalorpublicarmazenadodentrodela
(parmetrocdocomandosnmpwalk).Estevalortemcomoobjetivopermitirapenasquequem
conheaacommunitysejacapazdeacessaroSNMP.
Francamente,colocaraseguranadeumsistemaemcimadeumvaloremtextoplano
que viaja sem criptografia na rede no nada seguro. Se voc realmente quiser
seguranadeveusaraverso3.Tambmprotejaaomximooacessoaporta161(ou
a qual voc definiu) de acessos indevidos, o ideal permitir apenas acesso dos
endereosdosservidoresdemonitoramento. Apenasselembrequeaindaassim,
nadainviolveleoSNMPnoexceo.

2.10.InstalandooservidorZabbixviapacote
NocasodorepositriodeumaversodeDebianpossuirumaversodoZabbixque
adequadoasuasnecessidadesentoaoinvsdecompilarrecomendadoquevocoutilize.No
presentemomentodaescritadestematerialessenoeraocaso.
#aptitudeinstallzabbixserverpgsql
#aptitudeinstallzabbixagent

OCentOSnotempacotesnoseurepositrio.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 58

2.11.Preparandooservidorweb
ComovistoanteriormenteoZabbixumsistemacomponentizadoesuainterfaceweb
rodadentrodeumservidorcomsuporteaPHP.Estasessodescrevecomoinstalareconfigurar
umservidorApache2.2paratalintento.

2.11.1.InstalaodoApacheePHP5
ParainstalarumnovopacoteapachecomsuporteaPHPsigaospassosabaixo.OZabbix
precisaaindadosuporteaGD(umabibliotecagrfica)parageraodeimagenseacessoao
PostgreSQL.
#aptitudeinstallapache2libapache2modphp5php5gdphp5pgsqlphp5ldap
NocentOS,useoseguintecomando.
#yuminstallphphttpphpgdphppgsqlphpldap

2.11.2.ConfiguraodoVirtualHost
ParacriarumaconfiguraodehostvirtualnoApacheparaoZabbix,vamosprimeiro
criarumdiretrioecopiarocontedodapastafrontendsdoseudiretriodefontes.
#mkdirp/var/lib/zabbix/frontend
#cd/usr/src/zabbix1.8.4/frontends/php/
#cp*/var/lib/zabbix/frontend/a
Paraassegurarqueoapachetenhaacessoapenasdeleituraapastaeseusarquivos
executeoprocedimentoabaixo.
#cd/var/lib/zabbix/
#findfrontendtypedexecchmod0750{}\;
#findfrontendtypefexecchmod0640{}\;
#chownroot.wwwdatafrontendR
#chmod0770frontend/conf

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 59

O ltimo comando d permisses de escrita na pasta conf ao servidor, isso


necessrioapenasinicialmenteeserremovidodepoisdoterminodaconfiguraodo
frontend.
Agora vamos criar o arquivo de virtual host. Note que o diretrio criado acima
apontadocomoraizeosarquivosdelogssoseparadosdopadroparafacilitaradepuraode
erros.
#cd/etc/apache2/sitesavailable
#vimzabbixfrontend.conf
1

<VirtualHost*:80>

ServerAdminsysadmin@curso468.4linux.com.br

3
4

DocumentRoot/var/lib/zabbix/frontend

5
6

<Directory/>

OptionsFollowSymLinks

AllowOverrideNone

</Directory>

10

<Directory/var/lib/zabbix/frontend>

11

OptionsIndexesFollowSymLinksMultiViews

12

AllowOverrideNone

13

Orderallow,deny

14

allowfromall

15

</Directory>

16
17

ErrorLog${APACHE_LOG_DIR}/errorzabbixfrontend.log

18
19

#Possiblevaluesinclude:debug,info,notice,warn,error,crit,

20

#alert,emerg.

21

LogLevelwarn

22
23

CustomLog${APACHE_LOG_DIR}/accesszabbixfrontend.logcombined

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 60


24
25

</VirtualHost>

1) DocumentRootprecisaapontarparaodiretrioondeinstalamosofrontend.
2) Em ErrorLog,vamosdirecionaroslogsdeerrosparaumarquivoespecficodeste
virtualhost.
3) OmesmodeveserfeitocomoCustomLog,apontandoparaumarquivoespecficode
acessos.
EstepassoestasubstituindoositepadropelodoZabbix.Sehouveremoutroshosts
virtuaisnamesmamquina no necessrio removlos,apenas ajuste asconfiguraesdo
arquivoacimaparareceberconexesapenasdeumaURLemparticular.
#cd/etc/apache2/sitesenabled
#rm000default
#lnsv../sitesavailable/zabbixfrontend000zabbixfrontend
Reinicie o Apache, abra a porta 80 do firewall e teste acessando a URL
http://zabbix.curso468.4linux.com.br/.
#/etc/init.d/apache2restart
#iptablesAINPUTjACCEPTptcpdport80
#iptablessave>/etc/iptables/rules
O primeiro acesso ao front end vai enviar o browser direto para o wizzard de
inicializaodosite.Sigaospassoscomodescritoaseguirparaativarainterface.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 61

2.11.3.Configurandoofrontend

Figura 2.21: Configurao do front end (1/10)

Aprimeiratelaapenasumamensagemdeboasvindas.CliqueemNextparacomear.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 62

Figura 2.22: Configurao do front end (2/10)

MarqueaopoIagreeparaconcordarcomalicenadoZabbixecliqueemNext.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 63

Figura 2.23: Configurao do front end (3/10)

Nesta tela muitos alertas de falha iro aparecer, isso porque o Zabbix requer uma
configurao muito alm dos padres do PHP. Neste ponto preciso editar o arquivo de
configuraodoPHPemodificarosvaloresnecessrios.
Note que o status de cada parmetro pode ser um OK em verde (o servidor j esta
configurado para o recomendado ou superior), Ok em vermelho claro (o servidor j esta
configuradoparaomnimo,masnoalcanouoideal)ouFailemvermelhoqueindicaquenem
omnimofoiatingido.Oideal deixartudonoRecommended,pormprecisoavaliarseo
servidor ter os recursos necessrios para a execuo dessas configuraes. Normalmente
teremosservidoresquesocapazesdefornecerrecursososuficienteparatal.
Comovimabraoarquivoconformeabaixo.
#vim/etc/php5/apache2/php.ini

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 64

Procure com o apoio da tabela abaixo e da tela de configurao todas as opes


relevanteseconfigureasparaatingiroRecommended.
Parmetro do PHP

Significado

date.timezone

Qual fuso horrio o PHP deve usar?


Mesmo que o seu sistema esteja
corretamente configurado importante
configurar este parmetro para o seu
fuso
horrio
(usualmente
America/Sao_Paulo).

max_execution_time

Tempo mximo que um processo do PHP


pode rodar antes de ser morto.

max_input_time

Tempo mximo que um processo do PHP


pode gastar interpretando dados.

memory_limit

O quanto uma nica instncia de


execuo do PHP pode usar de memria.

post_max_size

O mximo tamanho que uma requisio


POST pode enviar ao servidor.

upload_max_filesize

Tamanho mximo para upload de um


arquivo.

Depoisdealteraresalvaroarquivo,reinicieoapache.
#/etc/init.d/apache2reload
EntocliquenobotoRetry.Atelaqueserrecarregadairsersimilaraabaixo.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 65

Figura 2.24: Configurao do front end (4/10)

Se todos os prrequisitos foram supridos clique em Next. Seno refaa os passos


acimaatconseguirchegaraosvaloresrecomendados.
OsuporteaGDdoPHPnoDebianSqueezenoatingeorecomendadomasfunciona
semproblemascomoZabbix.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 66

Figura 2.25: Configurao do front end (5/10)

Ateladeconexoaobancodedadosprecisaserpreenchidaconformeexplicaoabaixo
eFigura2.26.
1) Escolhaobancodedados,nonossocenriooPostgreSQL.
2) ColoqueonomeouIPdohostdobancodedados,nonossocasolocalhost.
3) ColoqueaportaTCPparaoacesso,porpadroadoPostgreSQL5432.
4) EmNamecoloqueonomedobancodedados,zabbixdbemnossocaso.
5) EmUsercoloqueonomedousurioquecriamosanteriormente,zabbix.
6) EmPasswordcoloqueasenhadousurioacima.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 67

Figura 2.26: Configurao do front end (6/10)

Depoisdepreencheroformulriocliqueemtestconnection parasecertificardeque
tudocorreubem.SeumOkapareceracimadoboto,cliqueemNext.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 68

Figura 2.27: Configurao do front end (7/10)

Preenchaoformulriocomosdadosdoserviodemonitoramento,
1) OservidordeZabbixestaem localhost,masateno paraambientesdeproduo
ondeoservidordoZabbixestaemoutramquina,nestecasodeveserpreenchidoo
endereoounomedamquinaremota.
2) Ocampo Port correspondeaportaTCPemqueoZabbixestaescutando(Zabbix
trapper),normalmenteestaportaa10051.
3) O Name um ttulo do servio de front end do Zabbix. Este ttulo vai ficar
estampandonabarradobrowseresomenteajudaaidentificaro frontend quando
voctemvriasbarrasdenavegao.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 69

Figura 2.28: Configurao do front end (8/10)

RepasseasconfiguraesnestatelaecliqueemNextsetudoestiverOK.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 70

Figura 2.29: Configurao do front end (9/10)

Estajanelaindicaqueoarquivodeconfiguraofoigravadocomsucessonodiretrio
confquedeixamoscompermissesdeescritaanteriormente.horaderevogaraspermisses
deescritanestediretrio.
#cd/var/lib/zabbix/frontend/
#lslhdconf
drwxrwx2rootwwwdata4,0KJan2722:58conf
#chmod0750conf
#lslhconf
total28K

rwrr1wwwdatawwwdata440Jan2722:58zabbix.conf.php

#chownroot.wwwdataconf/zabbix.conf.php
#chmod0640conf/zabbix.conf.php

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 71

AgorapressioneNextparairparaaprximatela.

Figura 2.30: Configurao do front end (10/10)

CliqueemFinish.Ofrontendirabrirumateladelogin,vocpodeacessarusandoo
usurioAdmin(comoAemmaiscula)easenhazabbix.Atelaaseguirseramostradapara
voc.

Figura 2.31: Tela inicial do Zabbix aps o primeiro login

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 72

2.12.Exercciosdereviso
1) possvelcolocaroagentedoZabbixparaserexecutadonoWindowscomoservio?
Como?
________________________________________________________________________
________________________________________________________________________
2) QuaisospossveisbackendsdebancosdedadosqueoservidordoZabbixsuporta?
________________________________________________________________________
________________________________________________________________________
3) possvelinstalaraInterfacedofrontendemqualquerservidorquesuportePHP?
________________________________________________________________________
________________________________________________________________________
4) ComosnmpwalkpodemoslistarvriaspartesoumesmotodasasmtricasSNMP.
Qualocomandovocusariaparapegarapenasumamtrica?
________________________________________________________________________
________________________________________________________________________
5) RealizeumabrevepesquisanaInterneterelacionetodososagentesdeZabbixque
vocencontrar.
________________________________________________________________________
________________________________________________________________________
6) Comozabbix_get,coleteviaterminaldeconsoleovalordaschavesabaixodos
hostswin2003eapplication:
6.1) agent.version:

_________________________________________

6.2) system.cpu.num:

_________________________________________

6.3) vm.memory.size:

_________________________________________

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 73

7) (Desafio)Sevoctentarusarozabbix_getparacoletardadosdoZapcatverque
elevaifalharretornandoumvalornosuportado.Vocconseguedescobrircomo,via
linha de comando poderamos coletar os valores deste agente? Se sim crie um
pequenoscriptparafazeracoletapassandoparaelehost,portaechave.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 74

Captulo3
CriandoumaInfraestruturadeMonitoramento
Parte2,Frontend

OBJETIVOS
ConheceraconfiguraodoZabbixviaFrontend.
Gerenciaroshostsetemplatesparaomonitoramento.
Criarmtricasdemonitoramento.
Depuraritensnosuportados.
Gerenciar acessos e permisses aos hosts monitorados atravs de usurios
cadastradosnumabaseLDAP.
Configurarosmeiosdealerta.
Criarmapas.
Realizarbackupsdasconfiguraes.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 75

3.1.Introduo
Apartirdestepontoainteraoadministrativaviaconsolevaidiminuirconsideravelmente,
poisvamoscomearatrabalharcomainterfacewebdoZabbix.Quase100%detodasastarefas
comaferramentaexecutadaatravsdessainterface.
Nestasessoenasprximasseroapresentadasdicasdeuso,organizao,todasas
configuraesdoncleodofrontendecriaodoselementosmaisbsicosdemonitoramento
(hosts,templates,grupos,etc.).

3.1.1.Organizaodofrontend
OK,voccolocounoartodaainfraestruturadasoluodemonitoramento,agoraumweb
sitecomalgunsmenusestadiantedevoc.Eagora?
Bom,oprimeiropasso entendercomoosmenusdoZabbixtrabalhameaprendera
encontrarasopesquevocdesejatrabalhar.Estainterfaceextremamentepoderosaeao
mesmo tempo simples de se operar. No incio provvel que haja uma certa confuso na
distribuiodasjanelasefunes,masacredite,elafoidesenvolvidaparaserfcildeusaraps
aprenderosentremeiosdosmenus.
Aproveite e passeie com o mouse nos menus. Note que no necessrio clicar em
nenhum dos menus superiores, somente a passagem do ponteiro j exibir as opes dos
submenus.Nestessimnecessrioclicarparaabrirateladesejada!NaTabelaabaixohuma
descriosuperficialdoquecadaitemdemenufaz.
Menu
Monitoring

Funo
Menuparaacessoaomonitoramento,depoisqueoZabbixestiver
completamenteconfiguradoesteomenumaisacessadodetodos.

Dashboard

Teladecentralizaodasinformaesdemonitoramento.

Overview

Permite a visualizao global ou por grupos das mtricas


monitoradasedosalarmes.

Web

Visualizaodomonitoramentodosserviosdeweb(noconfundir
commonitoramentodoservidorweb).

Latestdata

Mostra os ltimos dados (e quando eles foram coletados) do


monitoramentodeumhost.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 76


Menu

Funo

Triggers

Mostraostatusdosltimostriggers(gatilhos)epermiteinterao
com eles (como por exemplo dar um Acknowledge a um
determinadogatilho)

Events

Mostra os ltimos eventos causados pelos triggers ou pelo


autodiscovery.

Graphs

Visualizaoindividualdosgrficoscadastradosnoshosts.

Screens

Visualizao dos screens. Telas que agrupam elementos


monitorados(comomapas,grficosewidgets).

Maps

Visualizaodosmapas.

Discovery

Hosts e elementos que foram descobertos pelo sistema de auto


detecodehosts.

ITServices

Visualizao de SLA baseada no monitoramentodehosts,ativos


e/ouservios.

Inventory

Hosts

Report

Inventriodehosts
Hostsquefazempartedoinventrio.
Menuderelatrio.

StatusdoZabbix

Umateladeresumo(quetambmmostradanoDashboard)para
avalizaodaperformancedoservidorZabbix.

AvaliabilityReport

Relatriosdedisponibilidadeporhostsoutriggers.

Most busy triggers Os100triggersmaisativosnosistema.


Top100

BarReport

Configuration

Mostradadosagregadosdentrodegrficosdebarra,porexemplo,
vocpoderiaveramdiadeusodelinkporsemanaaoinvsde
usarosgrficospadro.
Menuparaacessoasopesdeconfiguraodemonitoramento.

Hostgroups

Gruposlgicosparadividiroshosts.

Templates

Gerenciamento de templates (modelos), uma das telas que mais


vamosacessarduranteocurso.

Hosts

Gerenciamentodoshostsmonitorados.

Maintenance

Tela para colocar ou tirar um determinado host em estado de


manuteno.

Web

Configuraodecenriosdetestedeserviosweb.

Actions

Gerenciamentodeaesqueostriggersdevemtomaraoalertarem
algum comportamento (exemplo: enviar um email quando o
servidorXYZcair).

Screens

Gerenciamentoeconstruodescreens.

Slides

Gerenciamentoeconstruodeslideshows.

Maps

Gerenciamentoeconstruodemapas.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 77


Menu

Funo

ITServices

GerenciamentodosserviosparaclculodeSLA

Discovery

Gerenciamentodoautodiscovery.

Administration

Menuparaacessosopesdeadministraodofrontend.

General

Opesglobaisdofrontend.

DM

Configuraodemonitoramentodistribudo.

Authentication

Mtodosdeautenticao.

Users

Gerenciamentodeusuriosparaacessoaofrontend.

MediaTypes

Gerenciamentodeformasdealertas(emails,SMS,etc.)

Scripts

Gerenciamentodescriptsparatestesonlinepelofrontend.

Audit

Logs de auditoria de aes dos usurios e de eventos gerados


pelasActions.

Queue

Filadealertasaseremacknowledged.

Notifications

Notificaesenviadasporusurio/tempo.

Locales

Personalizao das strings de exibio para traduo (portugus


brasileirojestapronto,portantonoprecisamosmexeraqui).

Instalation

Telasdeinstalao(asmesmasquepassamosagoraapoucopara
configurarofrontend).

Tabela 4: Funo dos menus no front end


Nointenodocursodetalhartodosositensdetodasastelas(issoprovavelmente
seriatarefadeumlivrobemgrande).EmborasimplesainterfacedoZabbixtemumamagnitude
deopesbemgrandeevamosnosconcentrarnelasaospoucosconformeanecessidadee
escopodocurso.

3.2.Gerenciamentodeusurios
Opontomaislgicoparacomearadministrarquempodeacessarofrontendedefinir
umasenhaaousurioAdmin.VamosentrarnomenuAdministration Users.Nocantodireito
datelaquevaiaparecer,vocverumcomboboxaoladodobotoCreateUsercliquesobre
eleeselecioneUsers.AFigura3.1mostraatelaqueirserexibida.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 78

Figura 3.1: Gerenciamento de usurios do Zabbix

Doisusuriosseroexibidos: Admin,superusuriodofrontend,comoqualestamos
logadoseguest,usadoparaacessosemautenticao.
No tente apagar o usurio guest. Ele necessrio para a tela de login quando
entramosnainterface.
Esta tela mostra vrias informaes interessantes, como por exemplo, quando foi
realizadooultimologinequemestaonlinenofrontend.
ParaeditaroAdmincliquesobreolinkcomonomedele.Umanovatelairaaparecer.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 79

Figura 3.2: Editando o Admin

CliqueemChangepasswordecoloqueasenhaasuaescolha,noesqueaessasenha
ouvaisernecessrioreinicilanobancodedados.ParaevitarqueoZabbixfiquedesligando
nossasessoatodomomentodesligueaopoAutologout.Depoisdeterminarcliquenoboto
Save.IssoapenasumsalvaguardaemcasosdeproblemasdeautenticaocomoLDAP,
comovocverlogoaseguiriremospassartodaaautenticaoparaosistemadediretrio(que
tambmpossuiumusurioAdmin).
Em produo no desligue o autologout de nenhum usurio a menos que seja
absolutamentenecessrio!Paraserexato,onicomotivovlidoqueoautorencontrou
emdeixarumusurio100%dotempologadoquandooZabbixestasendousado
paraexibirummapa,screensouslideshowemumteloouTVcomacompanhamento
visual24x7.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 80

AgoraqueoAdminteveasenhamodificada,omomentodeconfiguraroZabbixpara
autenticarnodiretrioLDAPinstaladonoservidor.Entreem Administration Authetication,
selecioneemDefaultAutheticationaopoLDAPepreenchaoscamposconformeabaixo.

Figura 3.3: Configurando a autenticao LDAP

Osdadosaquipreenchidosvariamdeumambienteparaoutro,nocasodeestudodo
cursoestamosdizendoaoZabbixondeestoservidor(LDAPHost e Port),qual araizdo
domnio(BaseDN),qualoatributousadoembusca(porprofundidade),nofoifornecidousurio
esenhadeacessoaoLDAP,ouseja,elereadonlyguestbased(BindDNeBindPassword)e
ativamosaautenticao(LDAPAuthenticationEnabled).
possvelerecomendadoqueasenhadousurioAdmincadastradadentrodoLDAP
sejatestada,preenchaasenhaecliquenobotoTest.OZabbixvaidizersefoibemsucedido
ouno.Parasalvartambmobrigatrioqueasenhasejadigitadacorretamente.
NormalmenteteremosumusurioesenhacomreadonlyparaacessodoLDAPem
produo.Permitiracessoreadonlyguestbasednoaformamaisseguradese
fazeracessoabasedediretrios.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 81

3.2.1.CadastrandoosusuriosdoLDAPnoZabbix
ApesardoZabbixestarapontandoparaoLDAPeoAdminestarfuncionando preciso
mapearquaisusuriosdarvoredediretriosparadentrodofrontend.Sevocnoofizer,no
sercapazdelogarcomumdeterminadousurio.
NocenrioqueestamosusandotemosalgunsusuriosdescritosnaTabelaquedevem
seradicionadosealgunsnovosgruposdeusuriosqueiroorganizaralgunsdeles.
Usurio

Descrio

Grupos

sysadmin

Administrador
sistemas UNIX

de Network
Administrators,
UNIX
Administrators, Web Administrators

winadmin

Administrador
de Network
Administrators,
sistemas Windows
Administrators

javaeng

Administrador
JBoss AS

do JBoss Administratros

dba

Administrador
banco de dados

do Database Administrators

Windows

Table 5: Usurios do cenrio do curso


NotemososgruposWindowsAdministratorseJBossAdministratorsprcadastrados
noZabbix.Portantooprimeiropassojustamentecrilos.EntreemAdministration Userse
cliquenobotoCreateGroup.NaFigura 3.4 temosumexemplodateladecriaodoJBoss
Administrators.NonecessriomaisdoqueonomedogruponocampoGroupName,pois
iremosdefinirsuaspermissesmaisadiante.

Figura 3.4: Novo Grupo JBoss Administrators

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 82

SalveeescolhaUsersnocomboboxaoladodobotoCreateGroup,issovainosfazer
voltarteladeusuriosondeeditamosoAdmin.CliquenobotoCreateUser ecadastreos
usuriosdaTabela5conformeaFigura3.5.

Figura 3.5: Novo usurio Sysadmin

OAliasocampocomonomedousurioedeveestar100%igualaodentrodoLDAP.
NameeSurnamesoapenaslabelsparaexibioenoquadroGroupsuseobotoadd
paraacrescentaraquaisgruposousuriopertence.
Umcampoquemereceumaatenoespecialo UserType quepermitedaralguns
privilgiosiniciaisconta.Nonossocasoiremosutilizarotipomaissimples,oZabbixUser,que
permiteapenasacessoaomenudemonitoramento.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 83

Podemosainda criar outros dois tipos de usurios,como o Zabbix Admin que pode
acessaromonitoramentoeaconfiguraodehosts.Estecasotilquandoalgumdeveter
permissesdeverificaoetambmdireitodecadastraremodificarhostsmonitoradosassim
comoseustemplatesegrupos.PorfimtemosoZabbixSuperAdminqueocasodonosso
usurioAdmin.Esteltimopodefazertudo,inclusiveadicionareremoverdireitosaousurios.
Maisafrenteiremosacrescentardireitosaosusuriosetambmmudaremosseustipos
conformeanecessidade.

3.3.Meiosdealertas
OsMediaTypesosnomesqueoZabbixatribuiaosmeiosdeenviodealertas.Comoj
foiditooZabbixsuportacorreioeletrnico,SMSviamodem,SMSviaservioderede(EUAe
Canadaapenas),mensageiroinstantneoviaJabberechamadadescriptsexternos.Nonosso
cenriodecursoiremosaprenderatrabalharcomestesrecursosusandoosistemadeemaile
jabber (os quaisconfiguramosos clientesno incio do captulo). Entre em Administration
Media Types a tela da Figura 3.6 ser exibida com os trs meios de comunicao pr
configuradosnoservidor.Paraeditarqualquerumdelescliquenonomedacoluna Description.
Paracriarumnovo,cliqueemCreateMediaType.
possveltermltiplosmeiosdomesmotipo,porexemplo,tervriosservidoresdeemail
paraajudarnaredundnciadoserviodealertaoudedicardeterminadostiposdeemailspara
diferentesservidores.

Figura 3.6: Media Types

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 84


Tambmaconselhvellimparos MediaTypes nousados,comononossocasode
uso,nousaSMS,marquenocheckboxafrentedeseunome,eemseguidaselecioneDelete
selectednacaixadeaesaofimdatabelaecliqueemGo(1).Confirmeaexcluso.
Ambas,aoperaodelimpezaeomododefazla,sobemtriviaiseseromuito
comunsnocurso.Elaserrepetidaemmuitosoutroslocais.

3.3.1.Correioeletrnico
Agora edite oitemde email,a tela da Figura 3.7 ser exibida. Preencha oscampos
conformeamesma.Descriptionumcampodescritivoapenasenotemefeitosnaconfigurao
a no ser identificar este Media type na interface; SMTP Server aponta para o nome/IP do
servidordeemails(portaTCP/25);SMTPhelousadonamensageminicialtrocadaentreZabbix
eservidores,aconselhvelcolocarodomniodaprpriaempresa;SMTPemailoendereode
remetentequeoZabbixusarparaenviaramensagem.

Figura 3.7: Configurando o Zabbix para enviar e-mails

CliqueemSavequandoterminar.

3.3.2.Mensagensinstantneas
AgorairemoseditaroJabber,cliquesobreonomedeleepreenchaoscamposconforme
aFigura3.8.

Figura 3.8: Configurando o Zabbix para enviar mensagens instantneas

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 85

Os campos Jabber identifier e Password so o usurio e senha de uma conta


cadastradanoIMdestinadaexclusivamenteaoZabbix,asenhanocurso 123456.Salveos
dados.
SemprequeutilizarumidentificadordeusurionoJabbervocdeveincluironomedo
servidorcompletoapso@enoapenasodomnio.

3.3.3.Apontandoosalertasaosusurios
AgoravamosdizerquaisusuriosusamqualMediaType.Editeousuriosysadmine
notequenofinaldatelaumcampoMediaestacomovalorNomediadefined.

Figura 3.9: Media Types de um usurio sem apontamentos

CliqueemAddparaadicionarumnovomeiodealertaaousurio.Vamoscomearpelo
email.

Figura 3.10: Adicionando o Media Type Email a um usurio

Coloqueoemaildousurio(queomesmoqueseuAliasmaisodomniodocursono
exemplo:sysadmin@curso468.4linux.com.br).Nestatelapodemosaindaescolherquandoeste
meiovaificarativonocampoWhenactive.Estecampotemumasintaxebempeculiar,eleindica
quaisosdiasdasemanaeafaixadehorrioqueousuriopodereceberalertas.Issotilpara
noenviaralertasapessoasforadoexpediente,issoclaro,supondoquehajaoutrapessoade
prontidonohorriodeterminado.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 86


AsintaxedoWhenActiveusa1comosegundae7comodomingo,definirporexemplo
segundaasextaficaria15.Umavrgulaseparaodiadohorrio,segundaasextadas09:00at
as18:00ficaria15,09:0018:00.Podemosaindausaropontoevrgulaparadefiniroutrasfaixas,
porexemplosegundaasexta,das09:00s18:00esbadodas09:00s13:00ficaria15,09:00
18:00;6,09:0013:00.
OUseifseverityfiltraostiposdeseveridadedeumcampo.Elessoimportantespara
quemeiosdealertascomcusto(SMS)nosejamusadosparaalertasdepoucaimportncia.
Tambmsousadosparanocausaravalanchesdealertasemummeioosquaiselesmais
incomodariamdoqueajudariam,imagineseralertadotodominutopormensageminstantnea
queumserviofoireiniciado!Seriatotalmenteimprodutivo.
Porfim,StatuscontrolaseesteMediaTypeestarounoativo.Issoparticularmente
tilquandoofuncionrioresponsvelestiverdefolga,afastadooudefrias.
CliqueemAddparasalvareadicioneoutroMediaTypeparaoJabber.

Figura 3.11: Adicionando um media type Jabber a um


usurio

NonossoexemplodeixeoJabberapenascomseveridadeHigheDisaster.Onomedo
usurioemSendtoomesmoqueoAlias.SalveevejanaFigura3.12comoocampoMedia
ficar.

Figura 3.12: Media Types de um usurio aps o cadastro

Salveerepitaparatodososusuriosagora.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 87

3.3.4.BoasprticascomMediatypes
Halgumasrecomendaesaseremfeitasquandosetrabalhacomalertasdesistemas
monitorados.
1) Mantenha mais de um meio de alerta para sistemas crticos. Isso pode ser feito
mantendovriosserviosdemesmotipo(doisservidoresdeemail,doismodems
SMS,etc.)ou melhor,fazendo comque eleseja enviado porvriasmdias(SMS,
Jabbereemail,todosaosmesmotempo).
2) EscolhaosMediaTypesdemaneiralgica.NoadiantaenviaralertasviaJabberse
ostcnicosraramenteestoonlinedosistemademensagensinstantneas.Tambm
noadiantaenviarumemaildedesastreastrsdamadrugadaquandoningumesta
olhandoemails.
3) Procuredeixaralertasqueprecisamderespostaimediataemmeiosquealcanamo
usuriocomfacilidade.SMSmaisclssico,masoautorjimplementouumquese
vinculavaaoasteriskefaziaumaligaodescrevendooproblema(comoumaURA
ativa).
4) Planeje!Faaescalasentreosfuncionrios,evitedaraltaprioridadeaalertastriviaise
cuidadocomosfalsospositivos,elespodemgeraroproblemadolobo.
OproblemadoloboaquelahistriadomeninopastorquegritavaLOBO!LOBO!na
vilaondemoravaetodosiamcorreraoseusocorro,paradescobrirqueeraapenas
umabrincadeira.Apsvriosepisdios,osaldeescomearamaignorarosapelos
falsosdogaroto,ejustonestediaumloboapareceudeverdade.
Receber alertas seguidos vai treinar o nosso crebro a ignorlos se eles se
comprovarem falsos positivos. Veremos ao longo do curso como diminuir os falsos
positivos.

3.4.Hosts,hostgroupsetemplates
Nesta sesso iremos abordar os conceitos mais fundamentais de monitoramento do
Zabbix:hosts,hostgroupsetemplates.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 88

Hostssoarepresentaodeumservidor,servioouativoderedeasermonitorado.
Elesnormalmenterepresentamumsistemafsico,masissonototalmenteverdade,oagente
doZapcatporexemplo,serrepresentadoporumhostaparteeelenoumhardware.
Hostgroupsseparamlogicamenteoshostsepermitemquesejamatribudaspermisses
deacessosdosusuriosaumdeterminadohost.
Templates(modelos)soosblocosdeconstruodomonitoramento,enquantonoso
obrigatrios, pois podemos acrescentar mtricas de monitoramentos direto a um host, eles
ajudamagerenciardemaneiraefetivaosdiversostiposdemonitoramentospossveiserepliclos
atantoshostsquantoquisermos(ouoquantonossossistemasaguentarem,oquevierprimeiro).
Ostemplatesagregammtricasdemonitoramentochamadositems,macroseoutrosvaloresque
soimportantesparaconstruirumasoluodemonitoramento.Amaiorpartedoseutrabalhono
cursoseremcimadostemplates.

3.4.1.Templatesparaocasodeestudo
OprimeiropassolimpartodosostemplatespreexistentesnoZabbix.Apesardeparecer
umtantoagressivoexcluirtodososmodelosprcriados,partedointuitodocursoconstruiros
seustemplatesdemaneiraadequadaasuanecessidade.Emproduovocpodeconservlos
se desejar, mas isso no um requerimento a menos que voc tenha garantidamente um
equipamentoparaoqualumdosmodelostenhasidoconstrudo.Outraopofazerbackupdos
originais(vejaaprximasesso).

Figura 3.13: Selecionando todos os templates pr


cadastrados

Paraselecionartodosostemplates,entreem Configuration Templates e cliqueno


checkboxdotopodatabelaconformeindicadoaFigura3.13.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 89

Figura 3.14: Excluindo os templates selecionados

Depois escolha no combobox no final da tabela o valor Delete selected with linked
elementsepressioneobotoGo.
Perceba que o Zabbix indica quantos elementos sero afetados pela ao do
comboboxnobotoGononmeroentreparnteses.

EstaoperaopodedemoraralgunsminutosdependendodaCPUedoI/Odedisco
queseuequipamentopossui.
Agoraomomentodecriaroprimeirotemplate.

Figura 3.15: Criando um novo


template

Paracriarumnovotemplate,cliquenobotoadireitadatelaCreateTemplateconforme
indicadonaFigura3.15.Umanovatelavaiseabrirconformeafiguraaseguir.

Figura 3.16: Cadastrando um novo template

1) NocampoNamesercolocadoonomedonovotemplate.Queser4LinuxICMP
base.EstetemplateconterasmtricasmaisbsicasdetestesporICMP.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 90

2) Nocampo Groups,quadro InGroups ogrupo Templates deveficarselecionado.


Notequeosgruposparahostssomisturadoscomosgruposdetemplates.
VocpodecriarumnovogrupousandoocampoNewgroupsemanecessidadede
fazlonateladegruposdehosts.

3.4.2.Vnculoentretemplates
possvel estabelecerum relao de dependnciasentre um modelo e outro,isso
extremamentetilparacriarestruturasdetemplatesquesocompostosporvriaspartes,por
exemplo,umconjuntodetemplatesquetestaumserviosobreumsistemaoperacional.Quando
o template de servio adicionado ao host todos os outros aos quais ele dependem so
adicionados.
Umdetalhedeextremaimportnciadesterecursoquepodemoscriarumadependncia
entreastriggers(gatilhos)queativamosalertasdoZabbix.Issoimportanteporqueumatrigger
dealtonvelnodeveserativadaseumamaisbsicaestiverativa(noprecisotestarseo
agentedoZabbixestempseopingICMPestiveracusandohostinalcanvel).
Seguindo as mesmas instrues mencionadas acima, crie mais um modelo chamado
4LinuxS.O.Base.

Figura 3.17: Vinculando um template a outro

1) Na parte inferiorda tela voc ver um boto Add ao lado do campo Link with
template
2) Escolhaotemplaterelacionado(4LinuxICMPnonossocaso).
3) Salveotemplate.
Agoraseassociarmosumhostcomotemplate4LinuxS.O.Baseeleautomaticamente
vai receber todos os objetos definidos no 4Linux ICMP. Aproveite e crie mais um ltimo
templateparausarmosnaprticadirigida,4LinuxSNMPBasetambmvinculadoao4Linux
ICMP.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 91

3.4.3.Backupdostemplates
Umaaoimportanteemtodosistemacriarumbackupdasconfiguraes.Apartirde
agoratodamodificaoquefizermosnosmapas,templates,gruposehostsdeverserseguidade
umbackup.Aoperaodebackup,chamadaExport bastantepadronizada,todasastelas
pertinentesafazerbackuputilizamomesmoprocedimentoexplicadoabaixo.Oresultado um
arquivoXMLcontendoosdadosdeconfigurao.

Figura 3.18: Exportando um template

1) Selecionetodosostemplatesquevocdesejar.
2) SelecioneExportSelectednacaixadeopesdofinaldatabela.
3) CliquenobotoGo.
Umateladedownloadirserexibida,escolhaonomeelocaldoarquivoesalveo.
Mantenhaestesdadosemumlocalseguroesemprerealizeestaoperaoapsalgum
tipodealterao.

3.4.4.Hosts
Agoraqueumtemplatefoidefinidovamoscriarumhosteassociloaestemodelo.Na
Figura3.19estaumarepresentaodecomoasmquinasvirtuaisestodispostasemtermosde
layoutderede.EmnossaprticadirigidairemoscadastraroshostsPresentationeSwitch,
almdemodificaroZabbixServerquecriadoautomaticamentenomomentodoimportede
dadosdoPostgreSQL.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 92

Figura 3.19: Layout dos hosts a serem monitorados

Tambmdevemoscriaralgunsgruposadicionaisparasepararlogicamentecadaservidor,
paraissovamosgerenciarosHostGroups.

3.4.5.GerenciandoosHostGroups
UmHostgrouptemduasfunesdentrodoZabbix:aprimeiraemaisbviamanter
oshostsorganizadosdetalformaquesejamaisfcillocalizarouexibirumgrupodeservidores
comservioscorrelacionados.Asegundaosistemadepermissionamentodeacessoaoshosts
quesertrabalhadoaolongodocurso.
Para exemplificar a criao dos hosts vamos criar apenas um deles, que conter os
equipamentos de rede. Clique no menu Configuration Host Groups, e clique no boto
CreateGroupconformeaFigura.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 93

Figura 3.20: Como criar um novo grupo


de hosts

Aseguintetelairsurgir.

Figura 3.21: Novo host group

1) NocampoGroupnamecoloqueonomedonovogrupo(NetworkDevicesnonosso
caso).

3.4.6.Criandoumnovohost
Agora que geramos um host group, vamos criar os hosts, acesse Configuration
Hosts,algosimilaraFigura3.22iraparecer.Comoditoanteriormentealistadehostsjpossuio
prprioservidordoZabbixprcadastrado.

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

Para criar um novo host para o host Presentation da infraestrutura clique no boto
CreateHost(Figura3.23).

Figura 3.23: Boto para criar um host

Epreenchaosdadosconformeafiguraaseguir.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 94

1) OcampoNamecoloqueonomedohost(Presentationnonossocaso).
2) No Groups escolha quais grupos este host deve pertencer. Lembrese que estes
gruposvoindicarquempodeounoacessarestehostpelofrontend.
3) Sehouverumnovogruponocadastradoacimapossvelcriloaqui.
4) QualonomeDNSdamquina.
5) Qualoendereodamquina.
6) OcampoConnecttopermitequesejaescolhidooacessopeloendereoIPoupelo
nomedeDNS.Oclssicousaroendereo(evitandoconsultasDNSexcessivasno
ladodoservidor),maspossvelquesejanecessriomonitorarestaesdeusurios
ouservidoresqueestejamemambientescomIPdinmico(viaDHCP)enestecaso
somenteviaDNSpossvelencontrarohost.
7) QualaportaTCPdoagente.Vamosmudaristoparamonitoraro Zapcat,masem
todososoutroscasosdeixaremoselanopadro10050.
8) Nomonitoraremosestehostviaproxy.
9) No Status deixe como Not monitored por enquanto, quando associarmos os
templatesiremosativarestehost.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 95

CrietodososhostsdocenrioconformeindicadonaFigura3.24.

Figura 3.24: Todos os hosts do cenrio cadastrados

10)

3.4.7.Fazendobackupdoshosts
Oprocessodebackupdoshostssegueomesmoprocedimentodotemplate.Selecione
todososhostscriadosefaaobackupdosmesmos.

3.4.8.Configurandoumapermissodeacesso
Comosusurios,grupos,mquinasemodelosdefinidos,vamosvercomodaroacesso
ao monitoramento de determinadas pores do Zabbix para a conta sysadmin. Isso feito
atravsdosgruposdeusuriosegrupodehosts.AcesseAdministrationUsers.

Figura 3.25: Concedendo permisses de acesso (1/4)

1) SelecioneUsergroupssejnoestivernestaopo.
2) CliquenonomedogrupoUnixadministrators.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 96

Figura 3.26: Concedendo permisses de acesso (2/4)

Dentrodateladogrupolocalizenaparteinferiordatelaascaixasdepermisses(Figura
3.26).CliquenobotoAdddacaixaReadWrite.

Figura 3.27: Concedendo permisses de acesso (3/4)

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 97

NodialogoqueaparecerselecioneogrupodehostsLinuxServersecliqueemselect.

Figura 3.28: Concedendo permisses de acesso (4/4)

Aoretornarvocverogruponacaixa.Cliqueem Save epronto,quempertencerao


grupoUnixadministratorsvaipoderleregravarnoshostsdentrodeLinuxservers.
Os direitos de deny tem precedncia aos de read only, que por sua vez tem
precednciasobreosdereadwrite.

3.4.9.Exercciossobreusurios,hosts,gruposepermisses.

1) OcenriodocursoprecisadeumconjuntodepermissesconformeaTabelaabaixo.
Criegruposdehostseusurios,eatribuapermissesconformefornecessriopara
chegaraesteresultado.Notequehumnovousurio.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 98

Usurio Applica- Databa- JBoss AS Presention


se
tation
suporte

Switch

Windows
2003

Zabbix
server

read only read only read only read only read only read only read only

sysadmin readwrite

readwrite

read only readwrite

readwrite

winadmin read only read only read only read only readwrite
dba

read only readwrite

javaeng

read only read only readwrite

read only readwrite


readwrite

read only

read only read only read only read only read only
read only read only read only read only

Tabela 6: Relao de permisses entre hosts e usurios


ExcetopelosusuriossuporteeAdmin,todososusuriosdevemterpermissode
mudanadeconfiguraodoshostsnoqualelestemdireitodeescrita.

3.5.Mapas
Osmapassoelementosvisuaisteisparadeterminarondefoiopontodefalhadentrode
umainfraestrutura.Elessodeextremavaliaparaequipesqueavaliamasadedasmquinas
constantementeeprecisamreagirrapidamentediantedeumincidente.
OMapatambmpodeajudaradiagramarestruturasfsicasderedeeajudamamostrar
como os equipamentos se relacionam, embora o front end no seja uma ferramenta de
desenhosdediagramaspropriamentedita.

3.5.1.Importandoimagensparaomapa
Antesde criarummapa preciso definirasfigurarque faro parte de seu desenho.
AnteriormentenspulamosodumpdasfiguraspadrodoZabbix,issofoipropositalpoisiremos
inserirfigurasdemelhorqualidadedentrodofrontend.
OconjuntodefigurasqueutilizaremosestadentrodofrumdoZabbixatravsdolink
http://www.zabbix.com/wiki/_media/contrib/zabbix_icons_set_generic.zip. Acesseo e baixe o
arquivoparaumapastaemsecomputador(nonecessrioenvilasmquinadestinadaao
servidor, todo o procedimento de insero ser feitopelo front end).Depoisdescompacte o
arquivoparateracessosimagens.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 99

AcesseomenuAdministration General,eescolhanacaixadeopesaesquerda.A
opoImages.

Figura 3.29: Tela inicial das imagens

NestatelacliquenobotoCreateImageparaabrirodilogodeimportaodeumanova
imagem.Conformeasinstruesabaixoimporteaprimeiraimagem.

Figura 3.30: Importando uma nova imagem

1) Nome da imagem a ser inserido, este nome precisa ser nico. No primeiro caso
coloqueovalorServerOn.
2) Podemosenviarcones(Icons)oufundodetelas(Background)aofrontend.cones
sousadosnoselementoscomohosts,triggerseimagensestticas,telasdefundo
obviamentesousadascomoumfundoparaomapa.
3) Nocampo Upload,cliquenoboto Browse... eescolhaolocalondeaimagemse
encontra,nocasodocursoaimagemutilizadaoconedetamanho48x48enome
48_g_srv_tower_on.png.
Realizeomesmoprocedimentoparaoutrasimagensconformeatabelaabaixo.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 100

Nome da imagem

cone

Link

48_g_network_on.png

Server Disable

48_g_srv_tower_disable.png

Server Off

48_g_srv_tower_off.png

Server Unknown

48_g_srv_tower_unknown.png

Switch Disable

48_g_switch_disable.png

Switch Off

48_g_switch_off.png

Switch On

48_g_switch_on.png

Switch Unknown

48_g_switch_unknown.png

Tabela 7: Lista de imagens iniciais para o mapa


Comissotodasasimagensnecessriasparaoprimeiroestgiodomapaforamcriadas.

3.5.2.Criandoummapa
Agoraquetodososconesestodentrodofrontendvamoscriaroprimeiroprottipode
mapa.AimagemfinaldeleestarepresentadonaFigura3.31.

Figura 3.31: Imagem do primeiro


mapa a ser criado

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 101

Estemapanotemtodososelementosasereminseridosnomapa,masvaiproporcionar
um bom primeiro exemplo. Abra a tela de gerenciamento de mapas acessando o menu
Configuration Maps,ummapaprcadastrado(Localnetwork)irserexibido,marqueacaixa
dechecagemdeleeexcluaeledalista.

Figura 3.32: Mapas pr-cadastrados

Depoisdeapagaromapaexistentecrieoutronovoclicandonoboto CreateMap no
cantodireitodatela.UmatelacomonaFigura3.33irsurgireprecisocadastrarosdadosdo
novomapaconformeaseguir.

Figura 3.33: Novo mapa

1) OcampoNameindicaonomedonovomapa,nocasodestaprticadirigidacoloque
InfraestruturaCurso468.
2) Alarguraempixelsdomapa,600umbomtamanhoparaonossocaso.
3) Aalturadomapa,500umbomtamanhoparaonossocurso.
4) Nocampo BackgroundImage podemosescolherumafiguradefundoparaeste
mapa.Vamosdeixaromapasemfiguradefundo.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 102

5) AopoIconhighlightingserveparapediraoZabbixdesenharfundosnoscones
pararepresentarestados,elaumtantoredundanteemrelaoamltiplasfigurasde
conescomovamosvermaisafrente,pormiremosdeixlasligadasmesmoassim.
6) Se o cone possuir um trigger que teve seu estado mudado recentemente, uma
bordaserdesenhaemvoltadocone.
7) Nocasodehaverumincidentecomumitememparticular,eelefornico(somente
um problema para aquele item em particular) podemos deixar o campo Expand
singleproblemligadoparaqueadescriodoproblemasejaapresentadonomapa
(evitandoterqueclicarnoitemparaexibilo).
8) Qualotipodemensagemqueseradicionadaaonomedoitemnatelaquandoum
trigger forexibido.Osvalorespossveisso: Label,odefaultindicandoquedeve
exibironomedortulo; IPAddress,mostraoendereoderededohost; Element
name, o nome do elemento que esta apresentando problemas; Statusonly, que
indicaostatusdotrigger(OKouPROBLEM);Nothing,nadamostrado.
9) Localizaopadrodoslabels.
10)

NocampoProblemdisplaypodemosescolhersedesejamosmostrartodos

os problemas em uma nica linha (All), duas linhas com os problemas com
acknowlegment e outro sem (Separated), ou ainda somente os problemas sem
acknowlegmentchamadosdeUnacknowledged.
DepoiscliquenobotoSave.Vocirretornaratelaanterior.Agoraparacriaromapa
visualcliquesobreonomedomapa.

Nosepreocupeemdecoraretestartodasasopesdemapas,iremosdetalhara
maiorpartedelasduranteocurso.

Decidirotamanhodareademapasumaarte,eladependedevriosfatorescomo
porexemplootamanhodomonitorondeeleserexibido.Noseacanhederetornara
ediodeconfiguraesdomapaseotamanhodareanoficaraseugostoemum
primeiromomento.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 103

3.5.3.Adicionandoumelemento
Dentrodatelademapas,umareaembrancodivididaporlinhasdealinhamentoser
exibida.Seutamanhoodefinidonateladecadastrodemapas.Napartesuperiordatelavoc
podeverumabarradeferramentascomonaFigura3.34,aexplicaoqueseguedefineousode
cadaboto.

Figura 3.34: Barra de ferramentas para edio de mapas

1) Obotocomsinaldemais(+)adicionaumnovocone,queoelementoprincipal
dentrodeummapa.Este conepodeserumafiguraesttica,umtrigger,umlink
paraoutromapa,etc.Sevocselecionarumoumaiselementoseclicarnobotocom
sinaldemenos()vocirexcluiresteselementos.
2) Aoclicaremdoiselementospossvelcriarumlinkentreeles,representadoporuma
linha(cor,formato,etc.podemserpersonalizados).Estelinkpodeconterumalabele
indicaramudanadeestadosdeumgatilho.
3) NocampoGridpodemosdeixaragradedealinhamentoocultaounoclicandoem
Shown/Hide.
4) TambmpodemosligaroudesliglaclicandoemOn/Off.
5) Nacaixadecombinaoaseguiraresoluodagradepodeserescolhida,variando
desde20x20(paraajustefinodecones)at100x100(paracasosdemapasextensos
ouconesbemgrandes).
6) Porfim,oboto AlignIcons foraoZabbixaalinhartodososelementosdomapa
noslimitesmaisprximosdagrade.
Paraopropsitoinicialdocursoaresoluode50x50osuficiente.Vamosinserirum
novoconepararepresentarolinkdeinternet.CliquenobotomaisdocampoIconeumnovo
elemento ir aparecer no canto superior do mapa. Note que o Zabbix escolher o primeiro
elementogrficodisponvelparaele.

Figura 3.35: Criando um novo


elemento

Arrasteoatapartedatelaquevocdesejarparaposicionlo.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 104

Figura 3.36: Posicionando um novo elemento com o mouse

VersesanterioresdoZabbixnoeramcapazesdeusarDrag&Drop.Tudotinhaque
serfeitocomcoordenadasmanuais.

3.5.4.Editandoumelementodomapa
Umavezqueoconeestejaposicionado,possveleditarosseusatributosconformeos
passosdescritosaseguir.Umelementonatelapodeserdevriostipos,elepodeporexemplo
representarumaimagemesttica,umhostouumgatilho.
Quandooconerepresentaumelementodinmicoelevaireagiramudanasdosestados
de qualquer um dos triggers associados visualmente. Como j foi dito antes isso
extremamenteimportanteparaacompanhamentosvisuais,especialmenteseforutilizadoteles
oumonitoresnumasaladeacompanhamentodeincidentes.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 105

Figura 3.37: Editando um elemento na tela

1) Cliquesobreoobjetocriadoanteriormente.Atelaadireitairserexibidaepodeser
reposicionadanatelapermitindoenxergarumdeterminadotrechodomapanatela.
2) OcampoTypeindicaotipodeobjetomencionadoanteriormente,noprimeirocaso
iremosescolher Image porqueolinknorepresentanenhumelementomonitorado
(apesar que posteriormente vamos monitorar o estado do link). Conforme o
andamentodocursoveremosmuitosoutrostipos.
3) No campo Label digite o texto a ser exibido como rtulo do cone. Aqui como
veremosmaistardepossvelcolocarvariveisespeciaischamadasdeMacrosque
oservidorassociaavaloresdinmicos.
4) AlocalizaodestertulopodeserescolhidaemLabellocation.Porpadroelafica
comofoidefinidonopadrodacriaodoMapa.
5) Qualaimagemdoconeaserexibida?Nestecasovamosdeixarcomoesta,mas
todasasimagensquefizemosuploadestosendoexibidasnestacaixadeseleo.
6) Porfimpodemosconfigurarascoordenadasdaposiodoelementodentrodomapa
empixels.NormalmentefazemosissopelosistemaDragandDrop.
NotrminocliqueemApplyparaaceitarasmodificaes.Issonovaifecharatelade
edio,paraissoaindatemosqueclicaremClose.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 106

3.5.5.Salvandoomapa
importantequesalvemosconstantementeomapa,poissevocclicaremoutrolinkde
menudofrontendirperdertodasasalteraesfeitasatessemomento.Parasalvaromapa
cliquenobotoSave(Figura3.38).

Figura 3.38:
Boto Save do
mapa.

Umdilogosempreapareceraosalvarummapa.Elenoestaconfirmandosevocquer
salvar,esimperguntandosedeveretornaratelaanterioroucontinuarnomapa.Cancelusado
paracontinuarnomapaeOKparavoltarateladegerenciamentodemapas.

Figura 3.39: Dialogo de salvar mapa

3.5.6.Adicionandoosoutroselementos
AgoraadicionemaisdoiselementosnomapapararepresentaroshostsPresentatione
SwitcheposicioneoscomonaFigura3.40.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 107

Figura 3.40: Outros elementos


grficos a serem adicionados

Cliquenoelementodomeioparaeditloconformeabaixo,eleservirderepresentao
paraohostPresentationagora.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 108

Figura 3.41: Editando o elemento que representa o host Presentation

1) Neste campo vamos escolher o valor host. Visto que vamos utilizar um dos
previamentecadastrados,vocverqueporeleestardesativado,quandoclicarem
Apply,olabelDISABLEDsermostradoemvermelho.
2) Neste campo o valor da macro {HOSTNAME} ser substitudo pelo nome que
cadastramosohostnogerenciamentodosmesmos.EstamacrointernadoZabbixe
no precisa ser definida pelo usurio. Durante o curso aprenderemos outras e
definiremosvriasqueseropersonalizadasparaanossanecessidade.
3) Neste campo, que aparece sempre que escolhemos Host em Type clique em
Selecteescolhaohostdesejado.NestecasooPresentation.
4) TroqueoconeparaServerOn,visualmenteeledeverepresentarumamquina.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 109

5) Aoativar Useadvancedicons oscamposdoitem6seroexibidos.Issopermite


escolhermos um cone diferente para cada estado. Como foi mencionado
anteriormenteissoumtantoredundantecomosistemade highlighting domapa,
masvamosativarambosparaquevocvejaadiferenaentreeles.
5.1) Nestescamposescolhaosconesconformeindicado.Cadaumdosestadosir
exibirumconediferente.PercebaqueoexibidonatelaaoclicaremApplyo
ServerDisable.
OmesmoserfeitoparaoelementodohostSwitch,aFigura3.42mostraquaissoos
valoresutilizados.

Figura 3.42: Detalhes do host switch dentro do mapa

ComoresultadofinalumaimagemparecidacomaFigura3.43deveestarnomeiodesua
reademapa.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 110

Figura 3.43: Hosts


acrescentados no mapa

3.5.7.Criandoeeditandolinks
Comoselementosdehostseimagensnomapaaindafaltacriaroslinksqueinterligam
umelementoaoutro.Oslinkspodemtantoserumsimplestraoparamostrarumaligaoentre
dois elementos como tambm podem ser usados para demonstrar estados de gatilhos com
problemas.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 111

3.5.8.PrticaDirigida

Figura 3.44: Criando um novo link entre o host Presentation e a imagem Internet

1) PrimeiroselecioneoconedaInternet.
2) PressioneCTRLecliquenoconedohostPresentation.Ateladireitadeedio
vairepresentarumamescladosdoisitens.
3) Cliquenobotodeadicionarlink.UmanovapartedajanelaintituladaConnectors
irsurgir.
4) DentrodelaumlinkchamadoLink_1vaiestarcadastradoeirindicarquaissoos
elementosqueeleinterliga.Cliquesobreonomedeleparaexibirsuaspropriedades
naabaConnectEditor.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 112

Figura 3.45: Editando as propriedades do novo link

1) NocampoLabelpodemoscolocarumaidentificaodestelink.Assimcomoortulo
doselementoscomimagenselatambmaceitamacros.
2) NosdoiscamposdeElementsositensqueestovinculadospodemseralterados.
3) Em Link indicators vamos, mais a frente, associar um link com gatilhos. No
momentodeixeovalorcomoesta.
4) EmType(OK)escolhaBoldline parapodervisualizarolinkcommaisfacilidade.
Estecampousadoquandoumoumaisgatilhosaoqualolinkestaassociadono
estejoativos.
5) PorfimemColour(OK)podemosescolherumacorparaolink.

Cliqueem Apply esalveomapa.Agorasprecisoadicionarmaisumlinkentreo


PresentationeoSwitch.Afigura3.46mostracomoesteltimovinculodevesercadastrado

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 113

Figura 3.46: Link entre o host Presentation e o Switch

Agoravocjtemomapafinaldestaprticadirigida.Salveeconfirmeoretornoparaa
tela de gerenciamentode mapas.No esquea de fazero backupdo mapa exportandoo do
mesmomodoquefezcomostemplatesehosts.

3.5.9.ExercciossobreMapas

1) FaauploaddasfigurasdoDVDcontidasnapastaImagensMapas.Soimagensdo
logotipo do servidorJboss.Osnomesno front enddevemcorresponderaosdas
imagens.
2) ConstruaomapafinalconformeaFigura3.47.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 114

Figura 3.47: Mapa final

3.6.Templates,applicationseitems
Dentro dos tempates temos diversos elementos usados para realizar a coleta
e anlise das mtricas. Considere um modelo como o corao de seu gerenciamento
de monitoramento. A Figura 3.48 mostra quais so estes elementos. Acesse
Configuration Templates para chegar esta tela.

Figura 3.48: Templates e seus elementos

1) Applications sopequenosgruposparaorganizaroprximotipodeelemento(os
Items)dentrodeumtemplate.ElessosignificativosnateladeLatestdata.
2) OsItemssoprovavelmenteoobjetomaisimportantedentrodetodooZabbix.Eles
soasdefiniesdasmtricasdecoletas.Quaseque90%detodootrabalhode
monitoramentogiraemtornodeumItem.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 115

3) OsTriggers,ougatilhos,montamalgicaparageraralertasbaseadonainformao
coletadapelosItems.ApartemaiscomplexadoZabbix montarasexpresses
booleanasdosgatilhosdemaneiraconcisaeequilibrada,evitandofalsospositivosao
mesmotempoquegeraalertasemumtempohbil.Inciaremosoestudodelesno
prximocaptulo.
4) OsGraphssoelementosqueexibemgrficos.Tambminiciaremosseuestudono
prximocaptulo.
Nesta sesso nos concentraremos apenas nos Applications e Items.

3.6.1.CriandoumApplicationeumItemdentrodeumtemplate
AindaemConfiguration Templates,cliquenolinkApplications(0)comoindicadona
Figura3.49.

Figura 3.49: Criando um application (1/4)

Umanovatelasurgir.LocalizenocantosuperiordireitodelaobotoCreateapplication
comonaFigura3.50ecliquesobreele.

Figura 3.50: Criando um application (2/4)

AteladeNewapplicationsurgirconformeabaixo.

Figura 3.51: Criando um application (3/4)

1) Coloqueonomedaapplicationaqui,quenestecasoelaserICMP.
2) Podemos opcionalmente escolher outro template ou host para associar este
application.Poucoprovvelquevenhamosaalterarestetipodeoponestatela.
CliqueemSaveparaconcluireretornaratelaquelistatodasasapplications.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 116

Figura 3.52: Criando um application (4/4)

Nossonovoapplication estaexibidonatabela.Agoraomomentodecriarumnovo
item. Clique sobre o link Items (0) nesta tela (no caso de estar em outra tela, acesse
Configuration Templates ecliquenolinkdemesmonomenalinhadotemplatequevoc
desejaacrescentar).

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

Nateladeitems,cliquenobotoCreateItem paraexibiratelaaseguir.Aindano
serexplicadocampoacampodocadastrodeumnovoitem.Issoserfeitonodecorrerdocurso.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 117

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

1) NocampoDescriptioncoloqueumidentificador(depreferncianico,masissono
necessrio). O nome dele ser o exibido em grficos, usado em triggers, etc.
Escolhacoerentemente.
2) OTypeindicacomoesteitemvaifazeracoletadeumamtrica.Osdiversostipos
que sero abordados neste curso sero explicados nos prximos captulos, aqui
vamosusarSimplecheckquesignificausarchecagensviaprotocoloderede.
3) O Key o campo maisimportante de todos,eledeveser nico dentro de cada
template e host. Sua funo definir qual mtrica ser coletada. Como dito
anteriormenteumitemapartemaisimportantedeumtemplateeoseukeya
partemaisimportantedeumitem.Saberqualusaremqualsituao,fazparteda
competnciadeusaraferramentaedecriarummonitoramentoeficaz.Nonossocaso
vamos criar um item que faz um ping via ICMP no host, logo a chave ser
icmpping.ClicaremSelect abreumajanelacominfindveiskeysevocpode
selecionlasporessajanela,sedesejar.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 118

4) Repetindo:CadaitemdoZabbixcapazdearmazenarapenasum,esomenteum
valor. No possvel armazenar objetos complexos dentro dos items, por isso
precisamosdefinirqualoformatodovalorqueserarmazenado.Nocasodakey
icmppingeleretorna1seopingfoibemsucedidoe0seno.Valoresinteirossem
sinalcomoestessoNumeric(Unsigned).
5) OUpdateinterval,otempoentreumacoletaeoutra,emsegundos.Porpadroo
Zabbixusa30segundos.Emnossocenriousaremos10,mastenhaemmenteque
estesnosobonsvalores.Enquantopodemosnossentirtentadosausarintervalos
curtosparatermosumagranulidadededadosbemalta(emaisprximadarealidade)
eleimpactapesadamenteemduascoisas:espaoemdisco,queaparentemente
pequeno mascomea a tomargrandes propores em ambiente commilhares de
mtricaseoenfileiramentodemtricasaseremprocessadaspeloservidor.Altima
em particular muito ruim, pois causar todo tipo de buraco possvel nos seus
grficos.Veremoscomocalcularumbomintervaloapartirdoprximocaptulo.
6) OscamposKeephistoryeKeeptrendsindicamporquantotempo,emdias,os
dadoscoletadosseroarmazenados.Oprimeirotempodelenatabelahistorydo
bancodedadosquemantmosdadosipsesliteriscomocoletados.Asegunda
uma mdia de 3 horas dos valores coletados para economizar espao. Como
veremos,o Zabbix temumaoperaorotineirachamadahousekeeping quelimpa
osdadosvencidos(depoisquepassarosdiasemkeephistory)databelahistory,
passandoamdiaparaatrends.DepoisquevencerotempoemKeeptrendsos
dadossoapagadosdefinitivamente.
7) Escolhao application ICMP quecriamosanteriormente.Seexistiremmaisdeum
applicationnestalista,vocpodepressionarCTRLparaselecionarvrios.
8) CliqueemSaveparafinalizar.

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

OresultadofinalmostradonaFigura3.55.

3.6.2.Interdependnciadetemplates
Emvriassituaesprticasseremosobrigadosacriarumalgicadechecagensentreos
triggersqueirogeraralertaseusarapplications queestoemoutrostemplates.Issos
pode ser feito se criarmos templates que so associados a outros. No nosso cenrio de
exemplosteremosvrioscasosdestetipo.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 119

Normalmenteostemplatesmaisprximosda raizsoaquelesque realizamostestes


maisprimrios,comootemplatedeICMPcriadoanteriormente.Defatoeleseraraizdamaioria
dos outros templates, com destaque para o de JBoss, sistemas operacionais e SNMP. Para
exemplificarcrieumnovotemplatechamado4LinuxJBossBase.Antesdesalvarnotequeh
umcamponofinaldoformulriochamadoLinkwithtemplate.

Figura 3.56: Campo para associao de


templates

CliquenobotoAddparaabrirateladetemplates.

Figura 3.57: Tela para escolha de templates

Najaneladedialogoqueaparecerselecione4LinuxICMPecliqueemSelect.Voc
podeescolhertantostemplatesquantoprecisarnestatela.

Figura 3.58: Template associado

AFigura 3.58 mostracomoatelaficar.Elaindicaqueonovotemplatevinculadoao


4LinuxICMP.Finalmentesalveotemplate.

Figura 3.59: Template associado na lista de templates

NotequetodotemplatequetemalgumaassociaosermostradonacolunaLinked
templstesnateladeTemplatesList.Agoratodohostqueforassociadoaotemplate4Linux
JBossserautomaticamenteassociadoao4LinuxICMP,almdissooprimeiropodeutilizar
osapplicationsdosegundoeseustriggerspodemdependerdosdosegundo.
Parafinalizarcomostemplates,crietodosostemplatesindicadosabaixoeassocieos
conformeaestruturadervoreindicada:

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 120

Figura 3.60: Inter-relao dos templates base

3.7.Associandoostemplatesaoshosts
Agora que temos os templates criados podemos vincular cada um deles aos hosts
criados.Fazerissoparaumhostmuitosimples,sigaospassosabaixo.

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

Vat Configuration Hosts ecliquesobreonomedohost(nonossocasovamos


usarJBossAS)paraeditarasprefernciasdomesmo.

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

NapartedireitadatelalocalizeoquadroLinkedtemplates(Figura3.62)ecliquesobre
obotoAdd.
Figura 3.63: Associando o template do JBoss ao host JBoss AS

(3/6)

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 121

Nodilogoquesurgir,escolhaotemplatedesejado(4LinuxJBossBase)ecliqueem
Select.Vocpodeescolhertantostemplatesoquantoquiseraqui,desdequeelesnoestejam
associadosentresienemtenhamumtemplatepaiemcomum.

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

Vocveronomedostemplatesescolhidosapareceremnestequadro,conformeaFigura
3.64demonstra.

Figura 3.65: Associando templates a hosts


(5/11)

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

Notequeotemplateescolhidoesuasdependncias,entreparnteses,seroexibidasna
Listadetemplates.

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

Agoravamosfazerumpequenoexerccioquevaidemonstraroutrorecursointeressante
doZabbix:oMassupdate.Imaginequevocpossuiumaquantidadegrandedehostseprecisa
associlos ao mesmo template, temos um caso destes no nosso cenrio: os hosts
Presentation,application,DatabaseeZabbixserverprecisamservinculadosaotemplate
4LinuxLinux,umavezquetodasestasmquinasvirtuaissoservidoresGnu/Linux.Vata
teladehostsesigaospassosaseguir.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 122

Figura 3.68: Associando um


template a mltiplos hosts
simultaneamente (1/4)

1) Selecionetodosos4hostsindicados
2) NacaixadeopesmarqueMassupdate.
3) CliqueemGo(4),notequeonmerodehostsselecionadosindicadonesteboto
entreparnteses.

Figura 3.69: Associando um template a mltiplos


hosts simultaneamente (2/4)

1) MarqueaopoLinkaddictionaltemplates;
2) CliqueemAdd.Nossavelhateladetemplatesirsurgir.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 123

Figura 3.70: Associando um template a mltiplos hosts


simultaneamente (3/4)

Marque4LinuxS.O.LinuxecliqueemSelect.

Figura 3.71: Associando um template a mltiplos hosts simultaneamente (4/4)

Note queo template ficar logo acima dosbotesde adicionare remover.Clique em


Saveparafinalizar.

Figura 3.72: Todos os templates associados aos hosts do cenrio

Todos os hosts selecionados est agora associados ao mesmo template.

3.8.Ativandoumhost
Criamos os templates e hosts, demos permisses e montamos um mapa, mas
nada esta sendo monitorado ainda. Isso porque temos que habilitar todos os hosts.
Realizar esta tarefa muito simples.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 124

Figura 3.73: Host presentation no monitorado

VemConfiguration HostsecliquesobreolinkNotmonitored conformeaFigura


3.73indica.

Figura 3.74: Dialogo de confirmao de ativao

Umdialogoirsurgirperguntandoseohostdevesermesmoativado.Confirmeclicando
emOK.

Figura 3.75: Host presentation monitorado

AcolunaondeclicamosinicialmenteagoradeveestarcomolinkMonitored emverde.
Aproveiteeativetodososhosts.
Ao invs de ativar um por um. Use o recurso de ativao de todos os hosts
simultaneamente ativando Enable selected na caixa de opes abaixo da lista de
hosts.

3.8.1.Throubleshootingparaitenscomproblemas
Tecnicamente, com os templates, a instalao e a ativao em ordem, a esta
altura o Zabbix estar coletando dados. Mas se formos at Monitoring Overview
veremos que nada aparece.
Isso aconteceu porque, deliberadamente, um componente da instalao foi
omitido: o item que o criamos dentro do template 4Linux ICMP. O objetivo
deste tpico justamente ensinar a voc como lidar com itens com problemas dentro
do Zabbix.
Sempre que suspeitar que uma mtrica no esta funcionando devidamente, o
lugar correto para descobrir o que pode estar acontecendo, est dentro dos itens do
host. V at Configuration Hosts e clique sobre um dos nomes dos hosts.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 125

Figura 3.76: Item no suportado

AFigura 3.76 mostracomooitemICMPPingdeveestarcomproblemas.Notequeo


Status do mesmo Not supported e um sinal de erro est aparecendo na ltima coluna
Error.
Passe o mouse por cima do cone e o Zabbix ir mostrar uma dica do que esta
acontecendo.Amensagemnestecaso/usr/sbin/fping:[2]Nosuchfileordirectory.Oservidor
noestaconseguindoencontraroexecutvelqueeleutilizapararealizarospingsICMP(fping).
Umoutrolugarquetambmindicaoquepodeestaracontecendo ologdoservidor.
EntrenoconsoledoZabbixserverelisteofinaldoarquivodelogconformeabaixo.
#tail/var/log/zabbix/zabbix_server.log
2518:20110201:202018.896server#18started[Escalator]
2519:20110201:202018.900server#19started[ProxyPoller]
2506:20110201:202020.097server#6started[Poller.SNMP:YES]
2511:20110201:202020.108Deleted0recordsfromhistoryandtrends
2504:20110201:202020.147server#4started[Poller.SNMP:YES]
2502:20110201:202020.150server#2started[Poller.SNMP:YES]
2507:20110201:202020.218server#7started[Pollerforunreachablehosts.SNMP:YES]
2503:20110201:202020.242server#3started[Poller.SNMP:YES]
2505:20110201:202020.293server#5started[Poller.SNMP:YES]
2509:20110201:202023.022/usr/sbin/fping:[2]Nosuchfileordirectory
A ltima linha mostra a mesma mensagem que no front end. Para remediar esta
situaodevemosinstalarofpingpelogerenciadordepacotesdadistroqueestamosutilizando.
NocasodoDebian:
#aptitudeinstallfping
Notequemesmodepoisdeinstalaroaplicativooerropersiste!Novamenteconsulteos
logs(ouofrontend).

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 126

#tail/var/log/zabbix/zabbix_server.log
2506:20110201:202020.097server#6started[Poller.SNMP:YES]
2511:20110201:202020.108Deleted0recordsfromhistoryandtrends
2504:20110201:202020.147server#4started[Poller.SNMP:YES]
2502:20110201:202020.150server#2started[Poller.SNMP:YES]
2507:20110201:202020.218server#7started[Pollerforunreachablehosts.SNMP:YES]
2503:20110201:202020.242server#3started[Poller.SNMP:YES]
2505:20110201:202020.293server#5started[Poller.SNMP:YES]
2509:20110201:202023.022/usr/sbin/fping:[2]Nosuchfileordirectory
2509:20110201:202923.237/usr/sbin/fping:[2]Nosuchfileordirectory
2509:20110201:203002.281/usr/sbin/fping:[2]Nosuchfileordirectory
Mesmoapsinstalaropacote,oerropersiste!EntoprovavelmenteoZabbixdeveestar
procurandooexecutvelnolugarerrado. Vamosusarocomando which (podesero whereis
tambm)parasaberondeeleestarmazenado.
root@zabbixsrv:~#whichfping
/usr/bin/fping
Notequeeleestem/usr/bineoservidorestaprocurandoeleem/usr/sbin.Isso
claro varia de uma distribuio de Gnu/Linux para outra. O que fazer neste caso? Simples
mudaremosaconfiguraodoservidorparaseadequaraoambienteemqueelefoiinstalado.
Editeoarquivo /etc/zabbix/zabbix_server.conf eprocureaslinhascomasopesindicadas
abaixo.
#vim/etc/zabbix/zabbix_server.conf

#
========================================================================
====
#Localizaodoprogramadeping(ipv4eipv6)
#
FpingLocation=/usr/bin/fping

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 127


Fping6Location=/usr/bin/fping6

1) FpingLocaltion: indica o caminho do fping para pacotes ICMP usando IPV4.


Mudepara/usr/bin/fping.
2) Fping6Localtion:comoacima,masparaIPV6.Mudepara/usr/bin/fping6.
Comasopesmodificadasreinicieoservidor.
#/etc/init.d/zabbixserverrestart
StoppingZabbixserverdaemon:zabbix_server
StartingZabbixserverdaemon:zabbix_server

Umaoutrapossibilidadepararesolveroproblema fazerumlinksimbliconosistema
operacional.Avantagemdestemtodoquenosernecessrioalterarnenhumarquivode
configuraoenemreiniciaroZabbix.
lns/usr/bin/fping/usr/sbin/fping
Confira no s logs se alguma outra mensagem apareceu e acesse Coonfiguration
hosts,seoitemaparecercomonosuportadoaindanosepreocupeeleretornarembreve.Se
quiserque eleseja ativado agora,cliquesobre o Notsupported eeleser restabelecido.A
imagemabaixomostracomoeledeveficaraofinaldaoperao.

Figura 3.77: Item suportado e ativo

Captulo 4 Monitoramento voltado para disponibilidade - 128

Captulo4
Monitoramentovoltadoparadisponibilidade

OBJETIVOS
UtilizaroZabbixcomoumaferramentaparamedirdisponibilidade:
Medir a disponibilidade dos equipamentos via checagens simples e agente
(incluindoaquioZapcat)
Alertarquedasdehosts,serviosereinicializaes.
Medirasadedainfraestrutura:
Latnciaderedeedeservios.
Espaoemdisconosservidores.
Serviosativos.
Interface
Testemanual.
Usodegrficosemapas.
Comandosexternos.

Captulo 4 Monitoramento voltado para disponibilidade - 129

4.1.Introduo
Disponibilidade! Provavelmente o que vem na mente da maioria dos consultores e
gerentesdeTIquandoouvemapalavramonitoramento.Enquantoadisponibilidadenosejao
nico motivo de se monitorar ativos e servios, ela o fator que mais impacta em custo e
investimentos realizados. Quanto custa uma hora de seu principal servio parado para sua
empresa?
Neste captulo ser abordado uma multitude de possibilidades para medir o quo
disponvelestoseusservidores,servioseativosderede.OZabbixpossuidiversasmaneirasde
descobrir se algo no esta funcionando e aqui veremos como fazer isso usando protocolos
bsicosderede,testadoresdeprotocolos,cenriosdetesteweb,oprprioagentedoZabbix,
SNMPeoagentedoZabbixparaJBoss.
Tambmvamosentendercomocriartriggers(gatilhos)eActions(aestomadasquando
umgatilhomudadeestado)eenviaralertasdeparadademaneirainteligente,paraevitarfalsos
positivosepermitirqueaequipedesuportereajaatempoquandoumincidenteacontecer.
Almdisso,vamosvercomomedirdiversasmtricasegerarnossosprimeirosgrficos
dentrodofrontend.

4.2.Checagensmanualviafrontend
ObviamenteoZabbixpermitequerealizemosvriaschecagensdemaneiraautomtica,
afinalessasuaprincipalfuno,masantesdecomearacoletarmtricasemaismtricas,
vamos ver como usar o front end para realizar testes manuais, incluindo tambm a
personalizaodestestestes.
VatMonitoring MapsecliquesobreohostDatabasecomobotoesquerdodo
mouse(defatopodeserqualquerhostasuaescolha).Ummenu popup irsurgircomona
Figura4.1.

Captulo 4 Monitoramento voltado para disponibilidade - 130

Figura 4.1: Menu de


Ferramentas acessado pelo
mapa

NotequeumaabadivisriachamadaToolsapresentaduasopesdecomandoque
podemos pedir ao servidor para realizar: Ping e Traceroute. Ambos so comandos bem
conhecidosdeumadministradordesistemas*nix.Realizeumtesteclicandosobreocomando
Ping.

Figura 4.2: Sada de um comando ping

DepoisdealgunssegundosvocverumdialogosurgircomonaFigura4.2.Eleasada
textualdocomando.Nocasodemonstradoopingfoibemsucedidoeocomandoexecutado
inclusivemostradonottulodatela.
Vamosagoraaooutrocomando.CliqueemClose parafecharestajanelaeexecuteo
outrocomandoviaomenupopup.

Captulo 4 Monitoramento voltado para disponibilidade - 131

Figura 4.3: Sada de um comando que falhou do traceroute

Apesar do comando ter retornado uma sada, ela extremamente inadequada, pois
sabemosqueoshostsdocenrioestoa1oudoishops(saltosderoteadores)apenas.Isso
aconteceuporqueoFirewalldasmquinasestabloqueandopacotesUDP,quesoopadrodo
traceroute.Nestecasoteramosduaspossibilidades:
1) LiberarnofirewallumaregrapermitindoqueoservidordoZabbixalcanceoshostspor
UDP;
2) ModificarocomandoparaqueelerealizetraceroutebaseadoemICMPquejesta
liberadonoFirewall.
Nestacasovamosoptarpelasegunda,parademonstrarcomoalterarasconfiguraes
destescomandos(queoZabbixchamadescripts).Masdependendodeseucenrioreal,pode
serprecisoliberaroFirewallparapermitirapassagemdedeterminadospacotes.
Semprecabeaoadministradorougerentederedetomarestasdecisescombasena
simplicidade,seguranaenecessidadedoambiente.Infelizmenteestassoregrasque
sempreentramemconflito,ponderebastanteparanodeixarfalhasdeseguranae
verifiqueseocomandoaserhabilitadomesmonecessrio.

Captulo 4 Monitoramento voltado para disponibilidade - 132

4.2.1.Adequandooscriptdetraceroute
OservidordoZabbix,assimcomoseuagente,soexecutadoemformadedaemone
porquestesdeseguranaelessoexecutadoscompermissesdousurio6zabbix(egruposao
qualestacontapertena).
Este usurio no deve ter permisses de superusurio (conforme sua criao nos
captulosanteriores)esendoassim,somosobrigadosachecarseoscomandosquecolocaremos
nofrontendpodemserexecutadospelodaemon.
Primeirovamostestarcomorootofuncionamentodocomando.Nocasodotraceroutea
opopararealizartraamentoderotasviaICMPoI.
#tracerouteIwin2003
traceroutetowin2003(172.28.0.10),30hopsmax,60bytepackets
1gateway.curso468.4linux.com.br(172.27.0.1)0.954ms0.820ms0.724ms
2172.28.0.10(172.28.0.10)1.158ms1.066ms1.054ms
Perfeito!ViaICMPotracerouteconseguechegaratodestinoemostrarasrotas.Agora
vamostentarcomousurioZabbix.
#suzabbix
$tracerouteIwin2003
Thespecifiedtypeoftraceroutingisallowedforsuperuseronly
$logout
#
Voc no pensou que seria to fcil, pensou? Como verificado, o usurio no tem
permissodeexecutarotraceroutecomICMP.Issoaconteceuporquesomenteousurioroottem
direitosdecriarpacotesdacamadaderedearbitrariamente.Programascomoping,fping,entre
outrostempermissoSUIDativaparagarantirqueusuriosconvencionaissejamcapazesde
executarestesprogramas.
EviteusarSUIDparadarpermissesdeexecuesaosusuriosnormais!Issopode
causarfalhasdesegurana.

Captulo 4 Monitoramento voltado para disponibilidade - 133

FelizmenteexisteumaalternativanomundoUNIX:osudo,umprogramaqueverificase
umusuriotempermissodeexecuoapartirdesuasconfiguraes.
Mesmo o sudo teve seu histrico de segurana comprometido, por isso sempre
mantenha sua distribuio atualizada com os ltimos patches de segurana, pois
nuncasesabequandoumanovafalhavaisair.
InstaleosudoapartirdorepositriodoDebiannohostZabbixserver.
#aptitudeinstallsudo
Agora use o comando visudo para adicionar a permisso do usurio zabbix de
executar o comando traceroute.
#visudo
1

#/etc/sudoers

#ThisfileMUSTbeeditedwiththe'visudo'commandasroot.

#Seethemanpagefordetailsonhowtowriteasudoersfile.

7
8

Defaultsenv_reset

9
10

#Hostaliasspecification

11
12

#Useraliasspecification

13
14

#Cmndaliasspecification

15
16

#Userprivilegespecification

17

rootALL=(ALL)ALL

18
19

#Allowmembersofgroupsudotoexecuteanycommand

Captulo 4 Monitoramento voltado para disponibilidade - 134


20

#(Notethatlaterentriesoverridethis,soyoumightneedtomove

21

#itfurtherdown)

22

%sudoALL=(ALL)ALL

23

24

#includedir/etc/sudoers.d

25
26

zabbixALL=NOPASSWD:/usr/bin/traceroute
Salveoarquivoetestenovamenteocomandousandoagoraosudoantesdele.

#suzabbix
$sudotracerouteIwin2003
traceroutetowin2003(172.28.0.10),30hopsmax,60bytepackets
1gateway.curso468.4linux.com.br(172.27.0.1)0.980ms0.855ms0.926ms
2172.28.0.10(172.28.0.10)3.805ms4.292ms4.211ms
Voil!SeuusurioZabbixjconsegueusarocomandonosistema.Vamosvoltaraofront
end.EntreemAdministration ScriptsecliquesobreonomedocomandoTraceroute.Uma
teladeediodoscriptirsurgir.

NocampoCommandmodifiqueovalor,colocandosudoseguidodeespaoantesdo
traceroute e clique em Save. Agora volte at o mapa (Monitoring Maps) e execute o
comandoemvrioshosts.

Captulo 4 Monitoramento voltado para disponibilidade - 135

Figura 4.4: Sada do traceroute adequando a nova necessidade

AsadadaFigura4.4mostraasadadocomandosobreohostWindows2003.Noteque
elaidnticasadadoterminal.

4.2.2.Criandonovoscomandosparaomenu
Quandoascoisascomeamadarerradoeosalertaschegam,vocpodenecessitarque
usuriosdeprimeironvelsemconhecimentoprofundodeUnixouWindows,econsequentemente
semacessoaosconsolesdoservidor,precisemrealizartestes.Logo,existirocasosemqueseu
ambientedemandedevriosscriptsaseremexecutadoapartirdoservidorviafrontend.Um
exemplomuitocomumodetestesdeportasdeserviosTCP.
Paraexemplificarestecaso,vamoscriarumscriptquechamaumcomandnmappara
testar a porta 22/TCP (SSH) dos servidores Gnu/Linux em nosso cenrio. Volte para
AdministrationScripts.

Captulo 4 Monitoramento voltado para disponibilidade - 136

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

CliquesobreobotoCreatescriptconformeaFigura4.5paraacessarateladecriao
decomandos.

Figura 4.6: Criando um novo script para testar portas SSH (2/2)

1) Name:onomedocomandoaserexibidonomenu;
2) Command: O comando a ser executado, no nosso caso nmap P04 p 22
{HOST.CONN}.OparmetroP0donmapindicaqueohostnodeveserpingado
antesdetestaraporta(p22).{HOST.CONN}umamacrodoZabbixquecontmo
IPdoservidor(ounomeDNSdomesmo,dependedoqueescolhemosnacriaodo
host).Vriasmacros,inclusivepersonalizadaspodemserusadasnestecaso.
3) Usergroups:Indicao grupo usuriosquepodemexecutarestecomando.Escolha
Allparaestecenrio.
Se voc possuir vrios tipos de usurios que precisem executar apenas alguns
comandos,compensacriarumgrupodeusuriossparaissoeatribuirquaisusurios
pertencem a estes grupos. No esquea de dar permisso conforme os campos a
seguirparaqueelesejacapazdeveroscomandos.
4) Hostgroups:indicaemquaisgruposdehostsumcomandopodeserexecutado.Em
combinaocomaopoanteriorpossvelcriarregrasbemcomplexas.Almdisso
nofazsentidotestarumSSHemumWindowsporexemplo.EscolhaLinuxservers.

Captulo 4 Monitoramento voltado para disponibilidade - 137

5) Qualtipodepermissoogrupodousuriodeveternohostgroupsparaexibiro
comando.AomenosapermissodeREADrequerida.
DepoisdecadastraroscamposcliqueemSaveevatomapaparatestarocomando.
CliquesobreumhostGnu/Linux.

Figura 4.7: Nova entrada de


menu com o script criado

AFigura4.7demonstracomoopopupsermostrado.CliquesobreonovosciptSSH
paraexecutlo.

Figura 4.8: Resultado do comando ativado no host

SetudocorreubemasadadocomandodevesermostradaconformeaFigura4.8.Note
queoshostsswitch,JBossASeWindows2003nodevemexibirestecomando.

Captulo 4 Monitoramento voltado para disponibilidade - 138

4.2.3.Exerccios
1) Gerencie o permissionamento para que o comando SSH seja somente executado
pelosusuriossuporteesysadmin.
2) Crieoseguinteconjuntodecomandosparatestedeportas:
2.1) Testaraporta445/TCPdoshostscomsistemaoperacionalWindows.Somente
osusuriossuporteewinadmindevempodeexecutlo.
2.2) Testar as portas 8009/TCP do servidor de aplicaes. Somente os usurios
suporteejavaengdevempoderexecutlo
2.3) (Desafio)Testaraporta80/TCPdo gateway ondeficaosistemadecachee
proxyreverso e do servidorde aplicaes. Somenteos usurios suporte e
sysadmin podemexecutlos.Nocasodesteexercciovocdeveverificarse
foiretornadoHTTP200.
2.4) (Desafio)Testaraporta5432/TCPdohost Database.Somenteos usurios
suporteedbapodemexecutlo.Nocasodesteexercciovocdeveverificar
sefoiretornadoovalorumapartirdeumSELECT1.
2.5) (Desafio)O Varnish temumconsolelocaldecomandosacessadoporuma
porta.Namquina Presentation crieumscriptqueacessaesteconsolee
limpaocachedoVarnishparaserchamadoviascriptdoZabbix.Somenteo
sysadminpodeexecutarestecomando.

4.3.ChecandodisponibilidadeviaprotocoloICMP
Criar comandos de teste interessante mas no automatiza o monitoramento que o
servidordeve fazerconstantemente.Logo,chegou o momentode verificarcomo o hostpode
apresentarindisponibilidadeapartirdachecagemderetornodepacotesICMPreply.
NemtodosossistemaspermitempacotesICMP.Seesteforocaso,noadiantacriar
testescomooaseguir,pulediretoparaverificaodeagenteseportas.

4.3.1.ComofuncionaopingICMP
O ICMPInternetControlMessageProtocol umprotocolodacamadaderededo
modeloTCP/IPresponsvelportrocarmensagensdecontroleentreoshosts(porexemplo,falhas
derotas).

Captulo 4 Monitoramento voltado para disponibilidade - 139

Outilitriopingoufping(instaladonocaptuloanterioreusadopeloZabbixparaenviar
testesdeICMP)etantosoutros,utilizamapenasduasmensagensdefinidasnaRFC792para
fazertestesderede.Umparaenviodamensagemeoutropararesposta(Figura4.9).

Figura 4.9: Diagrama de comportamento do echo


ICMP

Estetestejestasendorealizadoemnossocenrio,vistoquecriamosoitemicmpping
dentrodotemplate4LinuxICMPeativamososhosts.Emboramuitoprimrio,estetestevalida
todoocaminhofsicoentreoscomponentesderededodestinoedaorigem(switches,cabos,
placas,roteadores,etc.)eporissomuitoutilizadodentrodevrioscenriosreais.Podemosver
atrocadepacotesaconteceratravsdocomandotsharkaseguir.
#tsharknieth0icmpandhost172.27.0.1
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingoneth0
0.000000172.27.0.10>172.27.0.1ICMPEcho(ping)request
0.000959172.27.0.1>172.27.0.10ICMPEcho(ping)reply
1.000731172.27.0.10>172.27.0.1ICMPEcho(ping)request
1.001954172.27.0.1>172.27.0.10ICMPEcho(ping)reply
2.000778172.27.0.10>172.27.0.1ICMPEcho(ping)request
2.001882172.27.0.1>172.27.0.10ICMPEcho(ping)reply
Notequeparatodosospacotesechorequest,umechoreplyretornadodestino.

4.3.2.VisualizandoopingICMPnoFrontend
Podemos visualizar o resultado dentro da tela de Overview do front end. Acesse
MonitoringOverviewparaexibila.

Captulo 4 Monitoramento voltado para disponibilidade - 140

Figura 4.10: Hosts ativos com ping ICMP em funcionamento

NaFigura4.10temosumexemplodestatelamostrandotodososhosts.Seelanoestiver
aparecendonoseesqueadeselecionarnocomapoTypeovalorData.
Embora o Overview esteja exibindo corretamente o valor 1 da key icmpping no
muitointuitivoolharparaumnmeroemmeioaumatabela(semlevaremcontaqueestatabela
podeserdemasiadamenteextensa).PorissooZabbixofereceumrecursointeressantechamado
ValuesMapsquepermitemdarnomesaosvalores. J existem vrios deles definidos por
padro. Entre em Administration General, no canto direito da tela e selecione
Value Maps. Aproveite a oportunidade e apague todos eles, exceto Service State
e Windows Services, assim mantemos o ambiente limpo.

Figura 4.11: Um value maps de


estado de servios

Agora conforme a Figura 4.11 indica, clique sobre o nome do Value Map chamado
ServiceStateparaeditlo.VamostransformarseusvaloresUpeDownemOkeFalha.

Figura 4.12: Editando o value map para nossa necessidade

1) Name:Aqui definido o nome do novo conjunto de valores,vamosmudlo para


Estado.

Captulo 4 Monitoramento voltado para disponibilidade - 141

2) Mapping e Newmapping:Estescampospermitemaediodosvaloresqueso
mapeados. Clique sobre os valores de Up e Down e clique no boto Delete
Selected pararemovlose depois useo NewMapping paraadicionarosnovos
valoresconformeailustraodemonstra.
CliqueemSaveparasalvaresair.

Figura 4.13: Value map editado e


pronto para uso

Note que o Value Map foi alterado. Agora vamos associar o Ping ICMP ao novo
Estado.VatConfiguration templates,cliquesobreovaloritemsdo4LinuxICMPe
depoissobreonomedoitemICMPPing.

Figura 4.14: Selecionando um value map no trigger

ProcureocomandoShowvalueconformeindicadonaFigura 4.14 eescolhaaopo


Estado.SalveoitemevolteaoOverview.

Figura 4.15: Values maps no overview

Notequeagoratodasasopesquepossuemovalor1estocomastringOK.Isso
facilitaemuitoavisualizaodosvaloresesemprequepossveliremoscriarouusarValues
Mapsprontosparamelhoraraapresentaodedados.

4.3.3.Criandoumgatilhodeparadadehost
EmborajsaibamosqualhostestaOK,aindanopedimosaoservidorparanosalertar
viaemail/Jabberaparadadeumdeles.Vamosprimeirotestaroqueofrontendjnosmostrae
depoisiremoscriarnossoprimeirotriggerquevaiavisarquandoalgodeerradoacontecercom

Captulo 4 Monitoramento voltado para disponibilidade - 142


nossoshosts.
Primeiropauseumadasmquinasvirtuais(oexemploutilizaoDatabase),peloconsole
doVirtualBoxselecioneomenuMachinePause(OuuseCTRLDireito+P).

Figura 4.16: Pausando o host Database

Depoisdealgunssegundos(dez para sermaisexato)o Overviewvaiindicarque o


Databaseestaparado.

Figura 4.17: Host database parado no overview

1) CasodesejepodeseescolherogrupoDatabaseserversparafacilitaravisualizao
dentrodoOverview.
Agora que j sabemos que o item esta funcionando corretamente, vamos criar nosso
trigger.Antesativeamquinavirtual,assimotriggerentrardesligado.

Captulo 4 Monitoramento voltado para disponibilidade - 143

Umtrigger,ougatilho,umtestedecondioquepossuiumestado(OK,PROBLEMou
UNKNOWN)epermitequeoZabbixtomeumadecisosobreaocorrnciadeumincidentedentro
docenriomonitorado. Umnicotriggerpodeconterumsimplestesteboleanocomooque
usaremosdaquiapouco,comotambmverdadeirasequaesboleanasquetestaminmeras
possibilidadesparadecidiroqueaconteceu.Felizmenteagrandemaioriadoscasosrequerem
testessimplesdevaloresdeumnicoitem.Vparaateladetemplatesem Configuration
Templatesondeestao4LinuxICMP.

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

EditeostriggersdotemplateconformemostradonaFigura4.18.

Figura 4.19: Criando um trigger para a parada do host


(2/9)

NocantodireitodatelacliquenobotoCreateTrigger.Umanovatelairaparecer.

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

1) Name: indica o nome do gatilho. Este nome ser exibido quando o gatilho for
disparado em vrios lugares e pode ser referenciado nos emails, SMS e outras
formasdealerta.Porissoonomepermiteousodemacros.Noexemplodestaprtica
dirigidausamosovalorHost{HOSTNAME}inalcanvel.Onde{HOSTNAME}ser
substitudopelonomedohostcujotriggerforativado.
2) Expression: onde iremos escrever o teste do gatilho, ou seja, sua expresso
boleana.CliqueemToggleinputmethodparamudaromododeescritadogatilho,
porpadroteramosqueescreveraexpressonamo,mascomovocaindaesta
iniciandonoZabbixiremosusaroauxiliardeexpresses.

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

Captulo 4 Monitoramento voltado para disponibilidade - 144


NotequeatelavaimudarconformeaFigura4.21.Paracriarnossaexpressouseoboto
Edit.AtelaConditionirsurgirparaquepossamosmontaraopodoteste.

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

1) Item:indicaamtricacoletadanestetemplateaseravaliada.Cliqueem Select e
escolhaoICMPPing.
2) Function:afunousadaparaverificarogatilho.Aoclicarnacaixadecombinao
vocverumagrandequantidadedefunespossveis.OZabbixmuitoextensoe
provvelquevocnovenhaausartodasestasfunesemproduo,noentanto
elasestolsevocprecisar.Nocursoveremosapenasasmaisrelevantes.Escolha
Lastvalue=Nparaquepossamostestarseoltimovalordopingfoiumafalha.
3) Last of (T): define o tempo ou contagem de coletas a serem analisadas. Vamos
selecionar1coleta(altima).
4) N:OvalordeNnaexpressodafunoescolhidanoitem2.zerononossocaso,
quedefineumpingmalsucedido.
TemosaindaoTimeshiftquepermiteretrocedernotempoparacoletarmtricasaum
espaodefinidodesegundos,nopassado.Nousaremoseleainda.CliquenobotoInsertpara
retornaratelaanterior.

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

Vejaqueoconstrutordeexpressojescreveuparanstodaafrmula.Ovalor{4Linux
ICMP:icmpping.last(#1)}=0oresultadofinaldasescolhasfeitasnatelaanterior.Elaestano
formato {Template:item.funo(parmetros)}=valor. No se preocupe tanto com isso por
enquanto, mas voc deve ser capaz de ler as expresses e comparlas com o gerador
automtico,poisnomanualasrefernciassomostradascomoonomedecadafunoeno
pelosmenus.ParaacrescentlauseobotoAdd.

Captulo 4 Monitoramento voltado para disponibilidade - 145

um erro muito comum dos iniciantes (e mesmo de alguns veteranos) que


esqueamosdeclicaremAdd.Nocasodevocreceberumerroaosalvardizendo
queaexpressoinvlidaverifiquesevocdeixoudeadicionarafrmula.

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

Comanovaexpressoativadapodemosnosateraoutrospontosdotrigger.
ObotoTestpodeajudararesolverumaexpressomaiscomplexa,mastenhaem
mentequeaentradadedadosdaexpressospodeserobtidamanualmente(vocvai
digitlas).Nopossvelcoletarosdadosdoitemparaaveriguarsevocfezcerto.

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

1) Thetriggerdependson:aquipodemosescolherseestetriggerdependedeoutros,
deformaqueelenosejaativadoseoutromaisbsicoestacomstatusPROBLEM.
Vamosverdependnciasmaisafrente,porhoradeixevazio.
2) Eventgeneration:indicaseotriggervaigerarumeventoapenasumaoumltiplas
vezes.
3) Severity:umdoscamposmaisimportantedetodos,indicaoquogravepodesera
ocorrnciadeumincidente.

Captulo 4 Monitoramento voltado para disponibilidade - 146

4) Comments:umtextoexplicandooqueestetriggerrepresentaeoqueacarretaele
esta ligado. til para o pessoal de primeiro nvel de suporte que no tem
conhecimentoprofundodosistema.
CliqueemSaveparafinalizarestepasso.

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

Ogatilhodeveestarsendoexibidonalistadetriggers.

4.3.4.Lidandocomoseventos
Todogatilhogeraumeventoquerepresentaumnicoincidente,normalmenteumevento
representaoinciooutrminodomesmo.DentrodoZabbixvocdeveaprenderalidarcomos
eventos e usar o front end para verificar se um deles ocorreu. So muitas as telas onde
podemosverificarqueumincidenteaconteceuemumhost.Pausenovamenteohost Database
paraprovocaroincidentedechamadadeleevatMonitoringDashboard.

Figura 4.27: Indicao de problemas no Dashboard

NotequeacolunaDisasterdoquadroSystemstatusestaindicandoqueumhostdo
grupo DatabaseServers e LinuxServers estcomproblemas.Naverdadeomesmohost
Databasequeestanosdoisgrupos.
OutrolugarquedeveestarrefletindoacondiodefalhaoprprioOverviiew,tantono
mododedadoscomonaFigura4.28comonadegatilhosnaFigura4.29.

Captulo 4 Monitoramento voltado para disponibilidade - 147

Figura 4.28: Overview com indicao dos items com


alerta

Figura 4.29: Overview com visualizao dos triggers


ativos

OMapatambmdeveestarmostrandoostatusdotriggernohostDatabase.Vat
Monitoring MapsepercebacomooZabbixcolocouumcrculovermelhonofundodohost.O
nomedogatilhotambmestaaparecendoabaixodolabeldenome.

Captulo 4 Monitoramento voltado para disponibilidade - 148

Figura 4.30: Mapa indicando o host Database como down

Porfimexistea tela de eventos em Monitoring Events, onde podemosmanipular


esteseventos.Antesdeentrarnela, removaapausadamquina Database.Issovaiforaro
Zabbixagerarumeventoderetornoqueservisualizadonaprximatela.

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

1) Group:filtraasopesdehostgroups.
2) Host:filtraoshostsdogrupoescolhido.
3) Source:defineaorigemdoseventos,umeventopodesergeradoporumgatilhoou
pordetecesdehostsfeitaspeloZabbix.

Captulo 4 Monitoramento voltado para disponibilidade - 149

PercebaqueacolunaStatustemduaslinhas:umaparaaativaodotriggereoutra
paraadesativao.Estecomportamentodesejadopoisparasabemosporquantotempoum
determinadotriggerficouativo(eporconsequncia,porquantotempooincidenteocorreuna
suainfra),bastaanalisaracolunaDuration.
NacolunaDurationseumeventomudoudeestadoumaltimavez,ovalormostrado
indicaotempodesdeaquelepontoatopresentemomento.
OutropontoimportanteacolunaAck(acknowledgement,ouconfirmao).Elamostra
seumdeterminadoeventofoipercebidoporalgum,edeboaprticasemprepreenchlocom
algorelevante,mesmoquesejaumsimplestextodeestasendoverificado.Issopermitequeo
Zabbixsejausadocomoumsinalizadordetickets.CliquesobreolinkNo indicadonaFigura
4.31dalinhacomstatusPROBLEM.

Figura 4.32: Tela de acknowledgement

NatelaquesurgirpreenchaoquadrodetextoecliqueemAcknowledge&Return.

Figura 4.33: Acknowledge (confirmao) aplicado

Note que a coluna Ack agora apresenta o valor Yes em azul. Faa o mesmo
procedimentoparaofinaldoincidente.
Nuncadeixeeventossemacknowledgement,issofazcomqueohistricodeeventos
doZabbixfiqueimprecisoedeixedeserconfivel.

Captulo 4 Monitoramento voltado para disponibilidade - 150

ATENO! A partir de agora voc obrigado a colocar confirmao em todos os


eventosqueocorreremnocurso,principalmenteseelesestiveremdentrodasprticas
dirigidaseexerccios.

4.3.5.Criandoumaactionparaenviodealerta
Usarainterfacewebparalidarcomeventosimportante,masvocsvaisaberquealgo
ocorreusealgumficarnafrentedeummonitor.Enquantoestasetornandocomumousode
teles(normalmenteTVsdeLCDmodernas)paraexibirmapasescreenscomosstatusdos
hosts, de suma importncia que o Zabbix envie mensagens pelas mdias de alertas aos
envolvidos.
ParaissotemosquecriarumaAction,queacolaentreosMediaTypesdosusurios
eamudanadestatusdos triggers.Vat Configuration Actions paraexibiratelade
aes.

Figura 4.34: Criando uma action para enviar o alerta


(1/9)

ConformenaFigura4.34,nocantodiretodatelacliqueemCreateAction.Umajanela
decadastrodaaoirsurgirconformeaseguir.

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

Captulo 4 Monitoramento voltado para disponibilidade - 151


1) Name:indicaonomedaaoeeledevesernico.
2) Eventsource:mostradeondeoeventofoioriginado.Nonossocasoumtrigger.
3) Default subject: o campo assunto do email a ser enviado ou valor do
SMS/mensagemjabber.Notequepossvel,eindicado,ousodemacros.
4) DefaultMessage:umadescriodetalhadadoevento,tambmaconselhvelo
usodemacros.
Osoutroscamposdestequadronosorelevantesnomomento,deixeosnodefault.
AntesdeclicaremSavehmaisdoislugaresaseremconfigurados.

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

Um deles o quadro Action condition logo abaixo do quadro principal. Clique em


NewconformeindicadonaFigura4.36.

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

1) Naprimeiracaixadeopes,escolhaTrigger,notequehvriostiposdevalores
quepodemserusadosparadispararumaao.
2) Nasegundacaixaescolha=.
3) PorfimcliqueemSelecteativeotriggerquecriamosanteriormente.
Estacondiodizquetodavezqueogatilhoescolhidomudardeestadoestaactionser
disparada.CliqueemAddparaadicionarefinalizarestaparte.

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

Note que a condio exibida no Action conditions. possvel adicionar quantas


condiesvocdesejar.

Captulo 4 Monitoramento voltado para disponibilidade - 152

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

Agoraprecisamosescolheroqueaactiondevefazer.NoquadroActionoperationa
esquerdadoprincipal,podemoslistarvriasoperaesparaseremativadasquandoaactionfor
disparada. aqui onde escolhemos qual meio de alerta ser usado para uma action em
particular.CliqueemNewconformemostradonaFigura4.39.

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

1) Operation type:podemosescolhersevamos enviar uma mensagemdealerta ou


executarumcomandoremoto.
2) Send message to: indica para quem a mensagem deve ser enviada. Podemos
escolhergruposouusuriosemparticular.Paraonossocaso,umaparadadeping
deveserenviadaaogrupoNetworkadministrattors.
3) Sendonlyto:aquiescolhemosquaismediatypesdevemosusar.Podeseoptarpor
usartodososdisponveis.
4) Default message: envia a mensagem padro operao. Geralmente este o
desejado,maspodemhavercasosdeoperaesqueprecisemdeumamensagem
maisespecfica,comoumSMScomumcorpodetextomaiscompacto.
CliqueemAddevocverqueanovaoperaoseradicionadaaoquadro.

Figura 4.41: Criando uma action para enviar o alerta


(8/9)

ApsissocliqueemSavenoquadroprincipal.

Captulo 4 Monitoramento voltado para disponibilidade - 153

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

Chegou o momento de testar nossa action. Pause por alguns minutos a mquina
Database e volte ela ao normal. Nesse nterim, consulte os emails no Evolution e as
mensagensnoPidgin.

Figura 4.43: Mensagens de alerta recebidas no Evolution

Voc deve receber dois alertas: um de parada (PROBLEM) e outro de retorno (OK).
PercebaqueosvaloresdasmacrosforamsubstitudospeloZabbix.

4.3.6.Exerccios
1) Aproveiteomomentoquevoctemcomumaactionplenamentefuncionaleconsulte
omanualonlinedoZabbixparaconhecerasmacrosdisponveisnoservidor,ealtere
os textos e ttulos das mensagens para experimentar os valores possveis nas
mensagens.
2) ReinicieamquinavirtualDatabaseconformeaFiguraabaixoindica,edigaoque
aconteceucomoseventos.Vocachaqueissoumcomportamentocorreto?
________________________________________________________________________
________________________________________________________________________

Captulo 4 Monitoramento voltado para disponibilidade - 154

Figura 4.44: Reiniciando o host Database

4.3.7.Boasprticascomtriggers
Sevocfezoltimoexerccio,deveterpercebidoqueoeventofoiacionadopeloreboot
damquinavirtual.Estetipodecomportamentoesperado,afinalarespostadopingdeixoude
ser enviado ao servidor. No entanto a mquina no caiu, e uma simples reinicializao
providencialemumservidorouservio,nodeveseracusadacomoquedadehost.Ambosso
situaesdiferentes.
Porissodevemossempreteremmentequenossostriggersnodevemselimitara
verificarumnicovalordemudanadeestado.precisodeumalgicamaisbemtrabalhadae
fazerusodeumrecursochamadojaneladetempo.AFigura4.45ilustracomoajaneladetempo
funciona.

Captulo 4 Monitoramento voltado para disponibilidade - 155

Figura 4.45: Lgica de um gatilho com tempo de segurana

As janelas de tempo so intervalos de segurana nos quais nos baseamos a fim de


permitirqueoservidordemonitoramentoseadapteaumamudananosvaloresdecoleta.Seu
principalefeitonoalertarfalsospositivos,quepodemserpioresdoquefalsosnegativosem
certascircunstncias(lembradahistriadolobo?).Oalertadequedadehostaoreiniciarohost
umfalsopositivo,nohouvequedareal,apenasumareinicializao.
Notequequandooservidorpararderesponder,nenhumalertaenviadoimediatamente.
Otriggeriraguardarotempodeterminadonajanelaatdecidirmudardeestado.Omesmo
acontececomoretornodohost.Emborapareacontraprodutivoissoreduzoriscodeenviode
mensagensdealertaatoa.Dependendodotipodemensagem,issopodeinclusiverepresentar
umaeconomiaparaaempresaseoMediatypeusadoforpago(comooSMS).Imaginereceber
centenas(oumilharesdeSMS)porcausadetrafegoexcessivoqueimpediuqueospingsICMP
chegassemaoservidor!Nadasaiudoar,apenasotrafegoderedeficouinsuportavelmentelento.
Eaintermitnciadospacotespodegerarmaisdoresdecabeadoqueauxlio.
Obviamentetemosquetomarcuidadosparaquehajamalertasdeoutrosestadosque
umhostoutodaainfraestruturapodealcanar.Maisadiantenestecaptulovamos,por
exemplo,criarumatriggerparaalertasdereinicializaes.
Definirgatilhoseaesparatodasaspossibilidadesdesuainfraestruturajustamente
omaiordesafiodepoisderesponderaperguntaoquedevomonitorar?.Geralmente
estetipodegranulaosalcanadodepoisdealgunsmesescomomonitoramento
ativado,eamelhormaneiradeseplanejartudoissocomearpequenoecobrirnovas
necessidades conforme elas aparecem. Receitas de bolo como a ITIL so
excelentesguiasparasedecidirporondeequandocomear.

Captulo 4 Monitoramento voltado para disponibilidade - 156

Vamosentocriarumtriggercomumajaneladetempo.Editeacondiodonosso
triggercriadoanteriormente,acessandoConfiguration Templates,cliquenovalortriggers
dotemplate4LinuxICMPedepoisabraacondiodogatilho.Doiscamposseroalterados
comoaseguir:

1) Function:mudeafunoparaSumofvaluesforperiodoftimeT=N,justamenteo
Tnossajanela.
2) Lastof(T):adefiniodajanela,nonossoexemplo,serde60segundos,vistoque
nossoitempingaohostdedestinoacada10segundos.Procuredeixarajanela
prximaaotempodecoletaentrex3ax6.
Salvetudoereinicieohostnovamente.Setudocorrerbemajanelavaievitarqueoalerta
sejaenviado.Seaindaassimvocreceberoalertaprecisoaumentarajaneladetempo.
Qual um bom tamanho de janela de tempo? Isso uma pergunta que depende
inteiramentedeseussistemas.Amaioriadoscasosnorequerumajanelamenordo
que5minutos.Janelasmuitoextensaspodemdiminuirotempoderespostadaequipe
de TI e janelas muito pequenas tendem a gerar falsos positivos. Tente achar o
equilbrio.

4.4.Checagemgenricadeportaseservios
ComoditoanteriormenteICMPrequestspodemserbarradosporFirewalls.Seesteforo
seucaso,entovocnopodedependerdelesparamedirasuadisponibilidadeedeverecorrera
outrosmtodos.Nestetpicoveremosummuitocomum,achecagemdeportasTCP.

Captulo 4 Monitoramento voltado para disponibilidade - 157

4.4.1.ConexesTCPehandshakes
ComosedaverificaoremotadeumserviorodandoemumsoqueteTCP?Vamos
fazer uma pequena prtica para a verificao do mesmo, e entender o famoso Three wy
handshakedoprotocoloTCP.
PrimeiroativenohostApplicationoseguintecomando:
#tsharknieth0host172.27.0.10andport8080
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingoneth0
OtsharkocomandodelinhasdeconsoledoWireshark,emuitomaispoderoso
que o tcpdump. No caso do comando acima pedimos que ele capture todo o trafego da
interfaceeth0quevierdoZabbixservereusaraporta8080.
AgoranoservidordoZabbixdenossocenrio,useocomandonmapparavarreraporta
8080dohostApplication.
#nmapsTP0p8080172.27.0.20

StartingNmap5.00(http://nmap.org)at2011020917:08BRST
Interestingportsonapplication.curso468.4linux.com.br(172.27.0.20):
PORTSTATESERVICE
8080/tcpopenhttpproxy

Nmapdone:1IPaddress(1hostup)scannedin0.04seconds
NotequeusamosoparmetrosTparaforaronmapausarohandshakecompleto
emvezdoSYNscan1padro.VolteaoApplicationparaveroresultadonotshark.
#tsharknieth0host172.27.0.10andport8080
Runningasuser"root"andgroup"root".Thiscouldbedangerous.

1 O SYN Scan um mtodo considerado furtivo antigamente. Ele fazia apenas metade dos passos para abertura
de uma conexo.

Captulo 4 Monitoramento voltado para disponibilidade - 158


Capturingoneth0
0.000000172.27.0.10>172.27.0.20TCP50952>8080[SYN]Seq=0Win=5840Len=0
MSS=1460TSV=4629163TSER=0WS=4
0.000090172.27.0.20>172.27.0.10TCP8080>50952[SYN,ACK]Seq=0Ack=1Win=5792
Len=0MSS=1460TSV=4617797TSER=4629163WS=4
0.000602172.27.0.10>172.27.0.20TCP50952>8080[ACK]Seq=1Ack=1Win=5840
Len=0TSV=4629163TSER=4617797
0.000727172.27.0.10>172.27.0.20TCP50952>8080[RST,ACK]Seq=1Ack=1Win=5840
Len=0TSV=4629163TSER=4617797
Percebaque4pacotesforamtrocados.OprimeirooSYN(syncronization)quepedea
aberturadaconexo.OsegundoquepartedoservidordedestinocomorespostaoSYN/ACK
(syncronizationandacknowledgement)queconfirmaaaberturadepacoteseoterceirooACK
apenasparaconcluiraabertura.Onmapusaraindaumltimopacotepararesetaraconexo
(RST,ACK)quenovemaocaso.
Atrocadestespacotesnestaordemoesperadopelasfunesdesoquetedosistema
operacional,seelaforrealizadadessaformaissosignificaqueaportaremotaestaemestadode
escuta(listening)ouqueestaaberta.Masaivemaperguntaeumaportafechada,oqueretorna?
Vamosseguircomaprtica,novamentenohostApplicationexecuteosseguintescomandos.
#iptablesAINPUTjACCEPTptcpdport10000
#tsharknieth0host172.27.0.10andport10000
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingoneth0
Oiptables2liberanofiltrodepacotesdeentradaaporta10000/TCP.Agoraapartirdo
servidorZabbixtesteaporta10000.
#nmapsTP0p10000172.27.0.20

StartingNmap5.00(http://nmap.org)at2011020917:13BRST
Interestingportsonapplication.curso468.4linux.com.br(172.27.0.20):
PORTSTATESERVICE
10000/tcpclosedsnetsensormgmt

Captulo 4 Monitoramento voltado para disponibilidade - 159

Nmapdone:1IPaddress(1hostup)scannedin0.10seconds
Noteoestadocloseddasadadonmap!VatotsharkdoApplicationevejao
trafegodospacotescapturado.
#tsharknieth0host172.27.0.10andport10000
Runningasuser"root"andgroup"root".Thiscouldbedangerous.
Capturingoneth0
0.000000172.27.0.10>172.27.0.20TCP47673>10000[SYN]Seq=0Win=5840Len=0
MSS=1460TSV=4696578TSER=0WS=4
0.000096172.27.0.20>172.27.0.10TCP10000>47673[RST,ACK]Seq=1Ack=1Win=0
Len=0
#iptablesDINPUTjACCEPTptcpdport10000
Notequehapenasdoispacotes,oSYNdeinciodeconexocomonoexemploanterior
e outro com RST/ACK pedindo para encerrar imediatamente a conexo. assim que um
sistemaoperacionalinformaqueumaportaestafechadaparaumatentativadeconexoremota.
UmtimeoutnaaberturadeumaconexoTCPporqueoclientenorecebeunem
umRST/ACKouumSYN/ACKapsumperodo(quenamaioriadasvezesde60
segundos).

4.4.2.Criandoumtestedeservioviavarreduradeportas
Comestesdadosdisponveisvamoscriarumasituaoondehavertrscasosdeportas:
aberta,fechadaefiltradaporfirewall.
Noexisteumamaneiraconfiveldesechecarserviosqueusam"UDPsemapelar
paraacamadadeapresentaodomodeloTCP/IP.
PrimeiropareoserviodeSSHnoDatabase.
#/etc/init.d/sshstop
DepoisremovaaregrasdepermissodeacessodeSSHdaApplication.

Captulo 4 Monitoramento voltado para disponibilidade - 160

#iptablesDINPUTjACCEPTptcpdport22
Apartirdozabbixsrvfaaaseguintevarreduradeportas.
#nmapp22applicationpresentationdatabaseP0

StartingNmap5.00(http://nmap.org)at2011020914:04BRST
Interestingportsonapplication.curso468.4linux.com.br(172.27.0.20):
PORTSTATESERVICE
22/tcpfilteredssh
MACAddress:08:00:27:4B:97:E3(CadmusComputerSystems)
Interestingportsongateway.curso468.4linux.com.br(172.27.0.1):
PORTSTATESERVICE
22/tcpopenssh
MACAddress:08:00:27:BD:55:12(CadmusComputerSystems)
Interestingportsondatabase.curso468.4linux.com.br(172.27.0.30):
PORTSTATESERVICE
22/tcpclosedssh
MACAddress:08:00:27:A3:73:61(CadmusComputerSystems)
Nmapdone:3IPaddresses(3hostsup)scannedin0.48seconds
Note que no Database que desligamos o SSH retornou closed e o firewall do
Applicationretornoufiltered,somenteoPresentationdeuumopen.Anoteesteresultados
poisiremoscomparloscomoqueoZabbixretornar.
Notemplate4LinuxS.O.Linuxcrieumnovoitemdesimplecheckcomakeyssh.
ParaqueoservidorpossauslaprecisoqueeleestejacompiladocomsuportealibSSH(opo
enablelibssh).

Captulo 4 Monitoramento voltado para disponibilidade - 161

Figura 4.46: Simple check para o SSH

1) Key:achavesshfazumtestenaporta22dosservidores.
2) Showvalue:escolhaovaluemapEstado comofizemosnoICMPping.Achave
escolhidatambmretorna1parasucessoe0parafalha.
3) Newapplication:crieumaaplicaoexclusivaparaoserviodeSSH.
Noesqueadepreencherosoutroscamposconformeailustrao.Depoisdesalvar
estenovoitem,consulteasadadoOverview.

Captulo 4 Monitoramento voltado para disponibilidade - 162

Figura 4.47: Overview exibindo os servios de SSH

NotecomoosdoisservioscomfirewallecomoSSHdesligadoretornaramFalha(0)eo
queestavaemfuncionamentoretornou1.
UmadasgrandesvantagensdetestarportasTCPqueapossibilidadedeincidnciade
perdasdepacotesbembaixaemrelaoaotesterealizadocomoUDP.
Enquanto o manual do Zabbix contma informao de que a checagem de vrios
serviosretornamovalor2aoacharumtimeout,oautornofoicapazdereproduzir
estecomportamentocomsucesso.

4.4.3.Exercciosobrechecagemdeportas
1) SeguindoomesmoprocedimentodoICMPPing.Crieumtriggerparaalertasde
quedasdeportas.
2) Crieositensparamonitorartodososserviosviasimplecheckconformeatabela
abaixo.
Nopossvelmonitorarumdosserviosmencionadosnatabela,aodescobrirqual
anoteomesmoexplicandoporquenofoipossvelrealizarumsimplechecknele.
Maisafrentevoltaremosaestecasoefaremosomonitoramentodeoutramaneira.

Captulo 4 Monitoramento voltado para disponibilidade - 163


Servios
OpenSSH
Varnish
cacher)

Porta
22/TCP

(HTTP 80/TCP

Host

Template

Key

Todos os Linux

S.O. Linux

ssh

Presentation

Varnish

http

Presentation

Apache

http

JBoss base

tcp,8009

Apache (proxy)

8080/TCP

JBoss
(Aplicativo)

8009/TCP (AJP) Application

Apache
(Aplicativo)

80/TCP

Application

Apache

http

PostgreSQL

5432/TCP

Database

PostgreSQL

tcp,5432

OpenLDAP

389/TCP

Database

OpenLDAP

ldap

8080/TCP
(HTTP)

http,8080

Tabela 8: Servios do cenrio do curso


Servionomonitorvel:___________________________________________________
________________________________________________________________________

4.5.ValidaodepginasWEB
UmrecursoapartenosistemademonitoramentodoZabbixotestedecenriosweb.O
servidorcapazdedispararchecagempeloprotocoloHTTPereconhecimentodepadresHTML
paravalidarpginasHTML,inclusivecomvalidaodeformulrios(tantocomGETouPOST).
Para suportar este tipo de checagem o servidor deve ser compilado com suporte
bibliotecaCURL(enablecurl).

4.5.1.Disponibilidadedosite.
OZabbixdenominaumtestedeumsitecomoumscenario(cenrio),edentrodeste
cenriohvrioselementoschamadosdesteps(passos)quecorrespondemaumarequisio,
ouseja,aumaURL.
O principal uso deste tipo de teste verificar se a URL esta respondendo
adequadamente,podemos,porexemplo,verificarseoHTMLcontmumadeterminadastringou
seocdigo de retorno corresponde aumsucesso,quenormalmente 200 OK.Masestas
checagenstemoutrositensembutidosnela.Oservidorcalculaautomaticamentealatnciade
redeeavelocidadededownloaddosdadosnaURLejgeragrficosdestasestatsticas.Um

Captulo 4 Monitoramento voltado para disponibilidade - 164


triggertambmcriadoautomaticamenteparaalertarcdigosderetornosinesperadosoufalta
em uma determinada string na pgina de resposta. Ele no entanto, no gera uma action
sozinho.
MuitasdestasfuncionalidadessoencontradasemoutrasferramentascomooJMeter
(que possui asserts capazes de realizar este tipo de verificao), porm uma soluo no
substituiaoutra,poisaintenodoZabbixnoserumvalidadordeaplicativoswebesimum
verificadordefuncionalidadespontuaisdeURL.Eletambmnodeveserusadocomogeradorde
cargas para testes de performance. No entanto o Zabbix consegue armazenar o histrico de
resultadosonlineporumlongotempo.
ParacriarumnovocenrioacesseConfiguration Web.Natelaquesurgirvocver
queobotodecriaoestardesabilitado(Figura 4.48).Parahabilitloprecisoescolherum
grupoehostconformeabaixo:

Figura 4.48: Criando um cenrio para disponibilidade


Web (1/6)

1) Group:escolhaogrupoLinuxservers.
2) Host:escolha Application,queohostinternodenossocenrioquepossuium
JBosseumApacheexecutandoaplicaes.
Aoescolherosdoisvaloresobotoserhabilitado.Issoaconteceporquenopossvel
colocarumcenriodentrodeumtemplate,apenasdentrodeumhost.Daanecessidadedese
escolherumhost.

Figura 4.49: Criando um cenrio para disponibilidade


Web (2/6)

CliquesobreCreatescenario,umanovajaneladecadastroirsurgir.

Captulo 4 Monitoramento voltado para disponibilidade - 165

Figura 4.50: Criando um cenrio para disponibilidade Web (3/6)

1) Application: o application de identificao para o cenrio. Como ele no


cadastradoemnenhumtemplatetomecuidadoparanoescolherum application
queexisteemoutrapartedoZabbix.ColoqueCenrioHTTPparaonossoexemplo.
2) Name:oidentificadornicodocenriodentrodohost.Estenomevaiaparecerno
momentodomonitoramento.OvalorquecolocaremosTestedeaplicaoPHPno
Apache.
3) Authetication:nocasodaURLrequereralgumtipodeautenticaoHTTP,vocpode
definilaaqui.Nohnecessidadedeautenticaononossoexemplo.
4) Updateinverval(insec):otempoentreumacoletaeoutra.Deixe10segundospara
nossocenrio.
5) Agent:comooZabbixvaiseidentificarparaoservidorweb.Essencialmenteastring
dobrowserpeloqualelevaisefazerpassar.
6) Status:Seeleestouno,ativo.
7) Variables: um conjunto de variveis para serem enviadas ao servidor. Deixe em
branconestecaso.
Note que em lugar algum foi definido qual a URL que este cenrio vai acessar. Isso
porquepossveldefinirvriasURLsdentrodele,cadaumaumstep.CliquenobotoAdd
docampoStepsparacriarumnovopasso.

Captulo 4 Monitoramento voltado para disponibilidade - 166

Figura 4.51: Criando um cenrio para disponibilidade Web (4/6)

1) Name: o nome deste step normalmente representa a URL a ser testada (por
exemplopginaprincipal,carrinhodecompras,blog,etc.)
2) URL:oendereowebaseracessado.PodeincluirparmetrosdemtodoGETse
desejado.Nonossocasocolocaremosphpapp.curso468.4linux.com.br.
3) Post:seapginareceberdadosviaPOST,asvariveisevalores(umemcada
linha)podemseracrescentadosaqui.Nestecasonohnenhuma.
4) Timeout:porquantotempooZabbixvaiesperararespostadoservidorwebondea
URLaponta.Ovaloremsegundos.Deixe15.Valoresmenorespodemserusadosse
o teste for executado em infraestruturas locais, sites de baixo movimento ou em
servidoresdealtssimondicedetempoderesposta.
5) Required:umtextoqueesperadonapginaderesposta.Seoservidorfalharem
entregarumapginacomestastringumtriggeracionado.
6) Statuscode:qualocdigoHTTPesperadoparaaresposta.Normalmenteele200
quesignificaOK,pginaencontrada.VocpodeverarelaodecdigosHTTPem
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Note que este
camponoobrigatrio,vocpodesimplesmentepedirproZabbixverseoservidor
estaretornandoalgo,masissonomuitotilnamaioriadasvezes.
Paraterminarainserodo step cliqueem Add.Antesdecontinuarvalemencionar
queaURLdetestesusadanestesteppassapelaestruturadecacheeproxyreversodocenrio
(Varnish Apache+mod_proxy Apache+PHP5) e por isso esta testando toda esta
infraestrutura.PoderamosfazerumtestediretonoservidorApachesenecessrio.

Captulo 4 Monitoramento voltado para disponibilidade - 167

Figura 4.52: Criando um cenrio para disponibilidade Web (5/6)

Notequenofinaldoquadrodajaneladecenrioonovostepficalistadoemformade
tabela. Ainda no vamos acrescentar outros steps neste cenrio. Salve clicando no boto
Save.

Figura 4.53: Criando um cenrio para disponibilidade Web (6/6)

Nalistadecenrios,temosagoraonossocadastrado.Paraverificarestemonitoramento
temosumatelaespecialsparaele.AcesseMonitoringWeb.

Figura 4.54: Visualizando a checagem Web

Cliquesobreonomedocenrioenotequeeleestasendoorganizadopelaapplication
escolhidaquandoocadastramos.

Figura 4.55: Detalhes do monitoramento Web

Natelaseguinteumresumodaltimacoletacomavelocidade(Speed),latnciaderede
(Response time), ltimo cdigo HTTP de resposta (Response code) e Status dos triggers
geradosautomaticamente.Logoabaixodestequadrotemosdoisgrficosdevelocidadeetempo
derespostaprontos.

Captulo 4 Monitoramento voltado para disponibilidade - 168

Figura 4.56: Grfico de velocidade de download para o cenrio Web

Figura 4.57: Grfico de tempo de resposta para o cenrio Web

Comovocpodever,acriaodeumcenriosimples,maspermiteumaflexibilidade
muitogrande.Vamosemseguidavercomorealizarumavalidaodeumformulrioweb.

4.5.2.Exerccios
1) Crieumactionparaostriggersqueocenriogerouefaaosseguintestestes:
1.1) PararoservidorApachenohostApplication.
1.2) PararoservidorApachenohostPresentation.
1.3) PararoservidorVarnishnohostPresentation.
1.4) MudaroHTMLdapginaprincipalparanoretornarastringesperada.

Captulo 4 Monitoramento voltado para disponibilidade - 169

4.6.Checandodisponibilidadeviaagentes
Asduassimplechecksicmppingesshqueusamoseocenriowebcriadonoutilizam
oagente,porissosodenominadasagentless.Issotilquandoosistemafinalnopermite
quesejainstaladooagenteporummotivoqualquereusaapenasprotocolosderedeparaavaliar
adisponibilidadedoobjetofinal.
Porm essas checagens so muito limitadas e se no houver, ao menos, um agente
SNMPnohostdedestinonopossvelcoletarmtricasdoservidoredeterminaroquecausou
umadeterminadaparada.PorissooZabbixvemcomumagentequepodeserinstaladonoshosts
dedestino,comofizemosnoCaptulo 2.Chegouahoradeutilizaresteagentepararealizaras
checagens de disponibilidade. Vamos comear com mtricas simples e depois passaremos a
checarmtricasdesistemaoperacionalmuitomaisricas.

4.6.1.Checandoseoagenteestaoperacional
Oprimeiro passo verificarseoagenteestafuncionandoe escutando na suaporta,
normalmente10050/TCP.Usamosemcaptulosanterioresozabbix_getparacoletardadosda
keyagent.pingcomoumteste.Estakeyretorna1seoagenteestaoperando,masconsidere
queseelenoestiverfuncionandonohcomoeleretornar0paraalertarumaqueda!
PorissoessakeytemumtratamentoespecialdentrodoZabbix.Sealgumproblemade
rede,firewall,daemon,etcnopermitirqueoagentesejaalcanadoeoservidorregistrarerroele
ir gravarumvalornulonacoleta.Este valorpoder sertestadonumtriggercomafuno
nodata()(vejamaisafrente)oquerequerumtratamentoespecialparaocaso.Vatatelade
itemsdotemplate4LinuxS.O.Baseecrieumnovoitem.
Aocriaroitemaquiostemplates 4LinuxS.O.Linux e 4LinuxS.O.Windows
automaticamenteherdaroele.

Captulo 4 Monitoramento voltado para disponibilidade - 170

Figura 4.58: Novo item para monitorar o agente

Opreenchimentodoscamposjbemtrivialaestaaltura.AFigura 4.58 mostraquais


soosvaloresquedevemsercolocadosemcadaum.ComoesteitemsuportadopeloZapcat
tambmiremoscopiloparaooutrotemplate.Salveesigaospassosabaixo.

Figura 4.59: Copiando o item de ping de agente para o template do JBoss


(1/2)

1) Selecioneoitemdentrodalista
2) EscolhaCopyselectedto...nacaixadeaes.
3) CliqueemGo(1).

Captulo 4 Monitoramento voltado para disponibilidade - 171

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

1) Target Type: esta parte um pouco confusa, pois antigamente o Zabbix no


diferenciavahostsetemplates(defatoeleainda fazpouca dissociao entre eles
algumasvezes).VocvaiescolherHost nestecampoparaquelogoabaixopossa
escolherostemplates.
2) Group:escolhaohostgroupTemplates.
3) Target:marqueotemplatedoJBosscomoindicado.
CliqueemCopyparafinalizaraoperao.Oitemagorafazpartedeambostemplates.
ConfirapeloOverviewsetodososhostsGnu/LinuxeWindow,almdoJBossclaro,estocom
esteitemfuncionando.

4.6.2.Criandoumtriggercomafunonodata()
Agora vamos criar um trigger que opera com a funo nodata() conforme citao
anterior.OprocedimentomuitosimilaraodogatilhoparaoICMP,excetopelafunousada.
Anodata()operacombaseemerrosdecoletaparadefiniraquedadeumagente.Se
algumerroocorrerelaretorna1,casocontrrioumdadofoirecebidoearmazenadoeelaretorna
0. Usaremos este truque mais a frente para triggers que podem parar de receber dados e
apresentarconstantementeosindesejveisestadosUNKNOWN.
Dentrodotemplate4LinuxS.O.Basecrieumnovotrigger.
NotequeotriggerherdadodoICMPBaseestaaparecendonasualistadetriggers
destetemplate.

Captulo 4 Monitoramento voltado para disponibilidade - 172

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

ExcetopeloExpression preenchaoscamposconformeaFigura 4.61.Depoismudeo


mtododeentradaecliqueemEdit.

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

1) Item:EscolhaoitemAgentPingparaseravaliado.
2) Function:Procurenofinaldalistaafunoescolhidanaimagem.Elarepresentaa
nodata().
3) Last of (T): Nossa janela de tempo. Como no icmpping vamos esperar por um
minutosemrespostaeentoativarotrigger.
4) N:Ovaloresperadoparaafuno.Conformecitado,eleser1.
VocnopodeescolherumvalordeLastof(T)menordoque30segundosparaa
funonodata(sec).OZabbixfazchecagensdefaltaderecebimentoacadameio
minuto,porissodeixarestecampomenorqueestevalornovaiterfunoalguma.

Captulo 4 Monitoramento voltado para disponibilidade - 173

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

Adicioneaexpressoaotrigger.

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

Agoravamosadicionarumadependnciaaestetrigger,elesdeveseravaliadoseo
testedepingICMPforbemsucedido.Issoevitasuascoisas:primeiroquemaisdeumaction
sejaativadoemcasodeumcongelamentodohost(oqueeconomizaalertas),segundopermite
queoZabbixnopercatempocomprocessamentodegatilhosquesodesnecessriosparaa
ocasio(quegastamtempodeCPUnoservidordemonitoramento).Nonossocenrioseohost
noestiverrespondendorequisioICMPintiltestaroagente.
Notequeistopodenoserverdadenocenriodesuaempresa!Avaliaradependncia
dos triggers importante quando se est construindo uma soluo eficiente de
monitoramento.
CliquenobotoAddeselecioneotriggerdoICMP.

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

Notequeagoraeleaparecenalistadedependncias.Salveonovogatilho.

Figura 4.66: Trigger para o agent ping criado e ativo

Captulo 4 Monitoramento voltado para disponibilidade - 174


Percebaqueambas,adependnciaeanovafuno,aparecemnalistadetriggers.
Vamosrealizarumtesteagora,parandooagentedozabbixsrv.
#/etc/init.d/zabbixagentstop
VatoOverview,selecionetriggers nocampo Type eaguardeoativamentodo
mesmo.

Figura 4.67: Trigger de agente ativado

Note que h setas nos detalhes dos Triggers para o servidor. Uma seta para cima
significaqueotriggerjcaiuevoltouaoestadodeOK.Umasetaparabaixosignificaqueseu
estadoatualPROBLEM.Retorneoagenteaoestadonormal,atribuaumacknowledgemente
vamosaoutroteste.
Destavezderrubaremosdoishosts,pausandoamboseverificandoseelesvoativaro
triggerdeagentealmdodoICMP.PareohostWindows2003 e Database eretorneao
Overview.

Figura 4.68: Dependncia entre triggers evitando que o gatilho filho


seja ativado

Perceba como ambos os triggers de agente ficaram cinzas enquanto os de ICMP


alertaramumaqueda.

Captulo 4 Monitoramento voltado para disponibilidade - 175

Seoseutestenofuncionoupodesernecessrioaumentarajaneladetempoem
relaoaotriggerpai.Nuncadeixeajaneladofilhoexatamenteigualoumenorquea
dopai,afolgapodeserpequenamasdeveexistir.

Nopossvelusarafunonodata()paraverificaradisponibilidadeviaSNMP.

4.6.3.Exerccios
1) CopieotriggerparaotemplatedoJBoss.
2) Crie as actions necessrias para enviar os alertas de paradas doshosts a seus
respectivosresponsveis,conformeatabelaabaixo.
Host

Responsveis

Application

sysadmin, javaeng

Database

sysadmin, dba

JBoss AS

javaeng

Presentation

sysadmin

Switch

sysadmin, winadmin

Windows2003

winadmin

Zabbixsrv

sysadmin

Tabela 9: Responsveis de cada host

4.7.TempoonlineeltimainicializaodoS.O.
Vimosanteriormente que o Zabbix alertou uma queda de host quando nosso trigger
ICMP estava realizando uma checagem ruim sem janela de tempo. Ao concertar este
comportamentodeixamosdesaberquandoumhostfoireiniciado.Verificarareinicializaode
hostsimportantenamediodadisponibilidadedomesmo.Estetpicotratajustamentedesta
questo.
Primeirovamosaoproblemaprticoquetemosemmos:temosquemedirotempode
uptimedetodososhostsincluindoaiosGnu/Linux,Windows,switcheamquinavirtualjavana
qualoJBossexecutado.Issonosdtrscasosdecoleta:peloagentenormal,peloagente
ZapcatepeloSNMP.

Captulo 4 Monitoramento voltado para disponibilidade - 176

Isso vai demonstrar como o sistema do Zabbix consegue lidar com ambiente
heterogneosevaidemonstrarquedepoisdacoletaotratamento,armazenamentoeanliseno
muda.
Oprimeiropassoanalisaroretornodosvaloresviaconsole.Issoimportanteparaque
tenhamosparmetrosdetiposdedados(inteiros,float);nomecorretodaskeys,OIDs,etce
acesso.OagentedoZabbixpossuiumakeychamadasystem.uptime queretornaotempo
desde o ltimo boot. De maneira equivalente o JBoss tem um JMX
java.lang:type=Runtime,Uptimequetambmfazisso,masparaainicializaodaJVMeoSNMP
porpadrotemoOIDDISMANEVENTMIB::sysUpTimeInstance.
AOIDdoSNMPmuitovariveldeumequipamentoparaoutro,sempreconsulteo
manualouaMIBdoseufabricanteparadeterminaroqueestadisponvelparacoleta.
Vamosusarosseguintescomandosparaoscasosdeuso.
#zabbix_getk"system.uptime"sapplication
59545
#echo"jmx[java.lang:type=Runtime][Uptime]"|ncapplication10052;echo
ZBX59374361
#snmpgetv2ccpublic172.27.0.135DISMANEVENTMIB::sysUpTimeInstance
DISMANEVENTMIB::sysUpTimeInstance=Timeticks:(6026194)16:44:21.94
Sevocfezodesafiodotpico 2.12,pgina 72 podeusaroseuscriptemvezdo
segundocomando.
Cadacomandoretornouumvalorinteiro,todosrepresentandoouptimedosistema.A
grandediferenaentreelesaprecisodetempoutilizada,oagentedoZabbixretornaovalorem
segundos,oZapcatemmilissegundoseoagenteSNMPemcentsimosdesegundos(queele
chamadetimeticks).
Noseincomodecomasadaemtextodevriosdessescomandos,oZabbixlidacom
osnmerosdestacadosemnegritoapenas.
Toda essa diferena requer um tratamento no momento da coleta, ou seja, na

Captulo 4 Monitoramento voltado para disponibilidade - 177


configuraodecadaitem.PrimeirovamoscoletarodadodoagentedoZabbix.Notemplate
4LinuxS.O.Basecrieumnovoitemconformeaseguir.

Figura 4.69: Item para tempo de uptime

1) Description:coloqueadescrio,conformeafigura.
2) Key:comousamosnocomandozabbix_get,achavesystem.uptime vaicoletaro
tempodefuncionamentodohost.
3) Units:estecampopermitequefaamosalgumaspersonalizaesnotratamentoda
sadadoitemnoOverviewegrficos.EmborasimilaraoValuesmapselemais
sofisticado,poisformataasadaconformenecessrioemvezdesimplesmentedar
umapelidoparaumatabeladevalores.Nestecasouseouptime.
4) Newapplication:definaumnovoapplicationparaositemsdesistema.
Salveefaaomesmoparaotemplate4LinuxJBossBasemascomasmodificaesa
seguir.

Captulo 4 Monitoramento voltado para disponibilidade - 178

Figura 4.70: Uptime via Zapcat

1) Key: aqui usaremos a sintaxe da key jmx pela primeira vez. Ela normalmente
compostaporduaspartes,onomedoJMXeseuatributocadaumdentrodeseu
prpriocolchetes.CadajmxapontaparaumMbeannoservidor.
ParasaberquaisMbeansestodisponveisemumservidorcomZapcat,acessea
URL http://<servidor>/zapcat-1.2/mbeans.jsp substituindo <servidor> pelo seu
DNS ou IP conforme for o caso. Um estudo mais aprofundado dos MBeans
realizadonoscursos436e467sobreJBossna4Linux.
2) Usecustommultiplier:nestecampofaremosotratamentodedadosparaconvertero
resultadoparasegundos.ComoaJVMretornaumvaloremmilissegundo,temosque
multiplicarpor.001.
Salveesteitemecrieoltimo,dentrodotemplate4LinuxSNMPconformeaseguir.

Figura 4.71: Uptime via SNMP

1) Type:comoesteitemobtidopeloSNMP,temosqueconfiguraroitemparaqueo
Zabbixentendacomocoletlo.NonossocasoestamosusandoSNMPverso2,no
caso de outros equipamentos a verso 1 (obsoleta) ou 3 (mais segura) pode ser
usada.Consulteomanualdeseufabricante.Estaoporequerqueoservidorseja
compiladocomsuporteanetsnmp(enablesnmp).Notequeoscamposabaixose
alteramconformevocescolheoutrostiposdevalores.

Captulo 4 Monitoramento voltado para disponibilidade - 179


2) SNMP OID: coloque a object identifier da mtrica desejada conforme sua
necessidade,nonossocasoDISMANEVENTMIB::sysUpTimeInstance.
3) SNMPCommunity:coloquea string decomunidadedoSNMP,normalmenteeste
valorpublic.
4) SNMPPort:AportaUDPemqueoagenteSNMPestaouvindo,opadro161.
5) Key: invente uma key a seu gosto, ela s no pode conflitar com outras keys
criadasourepetirumakeyregistrada.Parapadronizarocurso,todasaschavesde
SNMPsodefinidascomosnmp.funo.Nesteexemploutilizamossnmp.uptime.
6) Units:repitaousadonoitemdoagente.
7) Usecustommultiplier:comooSNMP,retornaumvaloremcentsimosdesegundos
temosquemultipliclopor.01paraconverterparasegundos.
SalveoitemevatoOverview.

Figura 4.72: Overview exibindo os uptimes a partir do agente padro, Zapcat e SNMP

AFigura4.72mostratodososhosts,comasmtricasdetempoligadoobtidasconforme
suainterfacedecoleta.GraasaocampoUnit todasestoexibindootempoemumformato
legvelporhumanoseocampoUsecustommultiplierajustouosvaloresparasegundos,que
umaunidadecomaqualoZabbixsabetrabalhar.

Novamente,issodemonstrouacapacidadeemcoletardadosdeambienteheterogneos,
desdequevoctenhaumagentesuportadonohproblemas.OagentepadrodoZabbix
compatvelcom9sistemasoperacionaisdomercado,asJVMscomTomcate/ouJBossso
suportadas pelo Zapcat e a maioria esmagadora de ativos de redes (desde switches at

Captulo 4 Monitoramento voltado para disponibilidade - 180


impressoras,passandopornobreaks)suportamalgumaversodeSNMPhojeemdia.

4.7.1.Triggerparaalertadereinicializao
Avaliarseumhostfoireinicializadofcil.Devemosverificarseouptimedelemenor
queumvalorprestabelecido.Noentanto,reinicializaodeservidorespodenoumincidente
crtico,defato,normalmenteeleapenasumeventoplanejado(amenosquevocpossuauma
hardwarecomproblemassrios),porissoiremoscategorizlacomoumeventodeseveridade
warning(aviso).Noumerro,masaindaassimdignadeumaatenomaispontual.Vamoscriar
atriggerparao4LinuxS.O.Baseprimeiro.

Figura 4.73: Um trigger para a reinicializao de um host

1) Expression: defina a expresso como sendo o ltimo valor da ltima hora como
sendo menordoque1800(meiahora).Doispontosimportantesaqui:primeiro o
tempodejaneladafunolast()devesersempremaiordoqueovalorcomparadoe
segundo,otempodeativaodevesermaiordoqueotempodecoleta.

2) Triggerdependson:coloquecomodependnciadestetriggerodaverificaodo
agente.Nohsentidoemtentaranalisarumamtricaquenoestasendorecebida.
Issoevitaqueelaapresentevaloresdesconhecidos.

Captulo 4 Monitoramento voltado para disponibilidade - 181

4.7.2.Exerccios
1) CrieastriggersparaostemplatesdoJBossedoSNMP.
2) Crieasdevidasactionsparaalertadereinicializaoenviandomensagensapenas
aosindivduosresponsveisporcadahost(consulteaTabela 9 napgina 175 para
detalhes).

4.8.Checandoserviospeloagente
Checar se um determinado servio est em funcionamento atravs de sua porta
funcional,masalgumasvezesprecisamosdemaisinformaesdoqueexatamenteocorreuno
host.
Imaginequeporexemploaoinvsdequedadodaemon,umsistemaproteocomoo
OSSECbarrouacidentalmenteaportadedestinodehostslegtimoscomooprprioservidorde
monitoramento.Issonofoiumaquedadeservioeoutroshostspodemaindanoconseguirse
conectar.Paradetectarestetipodecoisaprecisamosdemaisdadossobreosistemaondeo
servioestasendoexecutadoepodemosfazloatravsdoagentedoZabbix.

4.8.1.Verificandoosprocessosativosnamemria
OZabbixtemumakeychamadaproc.numquepodeserusadaparaverificaronmero
deprocessosnamemria.Seusadasemnenhumparmetroelafazumacontagemdetodosos
processossemdiscriminao,paraexemplificarousodelevamosverificarseoprocessodoSSH
estanamemriadasmquinasGnu/Linux.
Asintaxedachaveaseguinte(todososparmetrossoopcionais):
proc.num[<name>,<user>,<state>,<cmdline>]
Onde,
name: o nome do processo. Se voc estiver checando processos numa mquina
Windows,certifiquesequeoprocessodelecontmaextenso.exe(ousimilar)nofinal
donome.
user:qual ousurioqueestaexecutando umdeterminado processoouconjuntode
processos.Opadroverificardetodososprocessos.

Captulo 4 Monitoramento voltado para disponibilidade - 182


state:qualoestadodoprocesso.Podendoserall(padro),run,sleepouzombie
(esteltimosomenteemambientes*nix).
cmdline:filtrapelalinhadecomando.Issotilparaaplicaesquesempreiniciamo
mesmoprocesso,comoojava.
Emnossa prtica atual,o nico parmetro relevante o primeiro, poisvamosbuscar
apenasumprocessobemdefinidodentrodamemria(odaemondoSSH).Paradescobrirqual
oprocessousaremosocomandops.EntrenoconsoledoservidordoZabbixsrv.
#psuax|grepsshi
root11610.00.35496988?Ss14:090:00/usr/sbin/sshd
root35940.21.183042868?Ss14:400:00sshd:root@pts/0
root36740.00.33316836pts/0S+14:410:00grepcolorssh
O primeiro processo o daemon, o segundo uma conexo ssh acontecendo e o
terceirooprpriogrepnamemriaqueusamosnalinhadecomandoeportantopodeser
ignorado.Notequeonomedoprocessosshdenosimplesmentessh.Comissoemmos,
podemossermaispontuaiscomops,aopoCpoucoconhecidaeusada,listaapenasos
processoscomonomeindicado.Elaincompatvelcomasopesaex,porissousaremos
emcombinaocomau,apenas.
#psuCsshd
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root11610.00.25496624?Ss14:090:00/usr/sbin/sshd
root35940.00.883042204?Ss14:400:00sshd:root@pts/0
Guardeestaopodops,vocvaiprecisardelanofuturo.
Vamosusarozabbix_getparacoletarainformaodachaveagora.

#zabbix_getslocalhostk"proc.num[sshd]"
2
Achaveretornou2,queexatamenteonmerodeprocessosquecontamoscomops.
Comotesteconcludovamoscriaodoitemetrigger.Useotemplate4LinuxS.O.Linux.

Captulo 4 Monitoramento voltado para disponibilidade - 183

Figura 4.74: Item para verificao de nmero de processos

AFigura4.74ilustracomooitemparacontagemdeprocessodevesercriado,elebem
trivial.

Figura 4.75: Overview refletindo o nmero de processos

NoOverview,jpodemosrastrearofuncionamentodacontagemdeprocessos.Note

Captulo 4 Monitoramento voltado para disponibilidade - 184


queonmerodeprocessosdohostZabbixServer estacom2porquehumaconexossh
ocorrendonele,nosoutrosapenasodaemon,aguardandoaconexo,estsendoexecutado.
Comosdadossendocoletadojpodemoscriarumtrigger.

Figura 4.76: Trigger para queda do daemon

1) Acondiodotriggerbempadroemrelaoaosnossosgatilhosanteriores:use
afunosum()paradescobrirsealgumprocessoestarodandonajaneladetempo
de1minuto.

2) Eledevedependerdachecagemdeagenteporquenohsentidoemtestaruma
mtricaquedependedelamesmo.Almdissosenoofizermosestatriggervai
resultaremumunknownseoagentecair.
3) AseveridadedesteincidentevaiserclassificadacomoAveragepoisoSSHnoum
servio prioritrio para o funcionamento das aplicaes, no entanto ele no um
Warning,poisaindaclassificadocomoerroeprecisadeintervenoimediata.
SalveotriggerevatoconsoledohostDatabaseeparaoSSH.
#/etc/init.d/sshstop
Acesse a lista de eventosem Monitoring Events para acompanhar a ativao do

Captulo 4 Monitoramento voltado para disponibilidade - 185


trigger.

Figura 4.77: Teste de queda do sshd

TambmolhenoOverviewcomootriggerficouexibido.

Figura 4.78: Reflexo da queda do daemon SSH no overview

Notequeotestedeportatambmfalhou,masnoemitiualertapoisaindanotemos
triggersassociadosaele.
#/etc/init.d/sshstart

4.8.2.Checagemdeportaseservioslocalmenteviaagente
Almdotestefeitopeloservidornaporta22/TCP,tambmpodemospediraoagente
para realizar o mesmo teste. Este tipo de teste de agente til para criarmos lgicas mais
inteligentesdeanlisedocenrio.
Akeynet.tcp.service[ssh]temomesmoefeitoecomportamentoqueassh.Suasolene
diferenaqueeladotipozabbixagent emvezdesimplecheck.Crieoitemconformea
Figuraaseguir.

Captulo 4 Monitoramento voltado para disponibilidade - 186

Figura 4.79: Item para verificao da porta local

Apsacriaodoitem,verifiqueseacoletaestasendorealizada.Setudoestivercorreto,
horadepassarparaaverificaodasmudanasdestatus.Atomomentotemos3maneirasde
checaroservio:contandoosprocessosativosnamquina,checandoaportaremotamentepelo
servidordoZabbixe/ouchecandoaportalocalmentepeloagentedoZabbix.
Todas tem suas vantagens e desvantagens, mas em vez de uslas de forma
discriminada,vamosjuntaraforadetodaselasefazercomquealgicadetodososgatilhos
trabalhememconjunto.Essacapacidadedeoferecerdependnciaentreumachecagemeoutra
queoZabbixoferecedeextremopoder,emesmosemexpressesbooleanascomplexasdentro
decadatriggerseremoscapazesdedeterminarqualopossvelacontecimento,dependendode
qualtriggerfoiativado.Acompanheaexplicaoaseguir,comeandopelaleituradofluxograma
naFigura4.80.

Captulo 4 Monitoramento voltado para disponibilidade - 187

Figura 4.80: Fluxograma da dependncia entre triggers para


anlise de servios

Oprimeirotrigger(cadaumrepresentadopelolosango)oquecriamosanteriormente
paraverificarseh,aomenos,umprocessosshdsendoexecutado.Nocasodenohaver
nenhum,eledevealertaroadministradorresponsvelpeloservio.Notequeserealmentenoh
nenhumtipodeprocessodoserviosendoexecutado,entonohsentidoemverificarportas,
correto?

Osegundo, aanlise daportalocalmente a partirdoagente,se noh processos


escutandonaportaapartirdaprpriamquinalocalentooprocessomasterdaaplicao
provavelmentecaiu.Notequesevocpararosshpeloserviodebootasconexesqueestoem
andamentonosointerrompidas!Logopossvelterumasituaoondehprocessossshdna
memria que esto apenas atendendo a conexes que foram estabelecidas anteriormente
quedadoprocessoprincipalesvomorrerseestasconexesforemencerradas.

Captulo 4 Monitoramento voltado para disponibilidade - 188


Essetipodecomportamentomuitocomumemserviosquesobaseadosemforks,
como o Apache, o prprio Zabbix, muitos daemons escritos em Perl, etc. Programas que
trabalhampuramentecomthreads,comoasaplicaesfeitasemjava,incluindoaquioTomcate
oJBosstemumprocessomonolticoenoseguemestaregra.
Finalmente, o terceiro trigger checa se servidor consegue abriruma conexo com a
portaremotamente.Nocasodeumbloqueioporfiltrodepacotesnohostdedestinoounomeio
docaminho,oufalhasderotas,estegatilhoativado.Estecasocobreaocorrnciadodaemon
estaremperfeitofuncionamentomasospacotesderedenoestaremalcanandoodestino(ou
noestovoltandoapropriadamente).
ComooterceiroschecadoseosegundoestivercomstatusOK,eesteltimoseo
primeiroestivercomstatusOK,oZabbixnogastaprocessamentocomostrsgatilhos,amenos
quetudoestejanamaisperfeitaordem.Seumdosprimriosfalharementoosoutrosnosero
executados.
Obviamentepodehavermuitomaistiposdeproblemas,quevoalmdacontagemde
processos e verificao de portas. Um binrio corrompido pode causar quedas de
conexeslegtimasalgunssegundosdepoisdeseremestabelecidaspeloservio,ou
aindaelepodesempreretornarumerronacaradoclientesemsaircompletamentedo
ar.Paraestescasoscontinueempilhandooutraschecagensapsverificarestastrs
quegeralmenteestosemprepertodabase.
Masvamoscontinuarcomnossaprticadirigidaecriarosdoistriggersquefaltam,pois
oprimeirojestaprontodesdeotpicoanterior.

Captulo 4 Monitoramento voltado para disponibilidade - 189

Figura 4.81: Trigger para verificao da porta local

OtriggerdaFigura 4.81 asegundachecagem(portalocal).Notequeeletemcomo


dependnciaotriggerdacontagemdeprocessos.

Figura 4.82: Trigger para verificao de porta remota

Captulo 4 Monitoramento voltado para disponibilidade - 190


JodaFigura 4.82 fazaverificaodaportaremotamenteetemcomodependnciao
segundogatilho.Outropontoimportantequesuajaneladetempode70segundos(10amais
queoanterior),estafolgaevitaqueambossejamativadossimultaneamente.
Deixarumamargementre10e5segundosnajaneladeumtriggerquedependede
outroumaboaprtica.

Comofoiditoanteriormente,nohcomoverificardemaneiraconfivelseumaporta
UDPestaberta.Masoagentetemumachavechamadanet.udp.listenqueverifica
selocalmenteumadadaportaUDPestaesperandorequisies.

4.8.3.Exerccios
1) Agoratesteosgatilhosrealizandoasseguintestarefas:
1.1) Pare o daemon ssh de um Gnu/Linux sem conexes abertas para ele
(somenteoprimeirogatilhodevedisparar).Restaureodaemon.
1.2) PareodaemonsshdeumGnu/Linuxcomaomenosumaconexoaberta
(somenteosegundogatilhodevedisparar).Restaureodaemon.
1.3) Cortearegra deSSHdosfiltrodepacotes(iptables)deumdosGnu/Linux,
somenteoterceirogatilhodevedisparar.Restaurearegraapsotermino.

4.8.4.VerificandoserviosnoWindows
Assim como o Gnu/Linux, o Windows tem seu sistema de gerenciamento do servios
ativosnamemria.Usamoselenotpico2.7.1.,pgina50paraexecutaroserviodoagentedo
Zabbix.AcesseoPaineldeControlesFerramentasAdministrativasServios.
Natelaquelistaosservios,localizeoserviodeTelnet.Eledeveestardesativado.

Figura 4.83: Servio telnet do Windows

VamosuslocomoexemploparamonitoramentodeserviosnoWindows.OTelnet
simplesdesecolocaremfuncionamento,defatoquasenadaconfigurado.Cliqueduasvezes
sobreonomedele.

Captulo 4 Monitoramento voltado para disponibilidade - 191

Figura 4.84: Habilitando o servio de telnet do Windows

1) Nomedoservio:anoteonomedoservio!OZabbixprecisadeleparaconseguir
localizlonosistema.NonossocasoTlntSvr.
2) Tipodeinicializao:mudeparaautomtico.
DepoisdeterminarcliqueemOK,oserviovaientrarregistradomasaindanoiniciado.

Figura 4.85: Ativando o servio de telnet

ParainiciaruseabarradeferramentasnotopodatelacomoindicadonaFigura 4.85.
AgorapressioneCTRL+ALT+DEL,eabraoGerenciadordetarefas.

Captulo 4 Monitoramento voltado para disponibilidade - 192

Figura 4.86: Processo do telnet na memria

Confiraseumdosprocessosbatecomonomedoservio.Provavelmentevocacharo
processotlntsvr.exe.Anotetambmestenome.
Antes de cadastrar novos items vamos fazer um pequeno teste via console: use o
zabbix_getparacoletaronmerodeprocessostelnetnamemria(deveretornar1).
NovamentelembramosquenoWindows,deveseincluiraextenso.exenofinaldos
processosparaakeyproc.num.
#zabbix_getswin2003k'proc.num[tlntsvr.exe]'
1
Agoravamostestarakeyservice_statequefazaverificaodosserviosdoWindows
noZabbix.UseonomequepegamosdasconfiguraesdoTelnetcomoparmetrodela.
#zabbix_getswin2003k'service_state[TlntSvr]'
0

Captulo 4 Monitoramento voltado para disponibilidade - 193

Notequeoresultadofoizero.Issoporquezerosignificarodando,experimentepausaro
servionoWindowseexecuteocomandonovamente.
#zabbix_getswin2003k'service_state[TlntSvr]'
1
Agoraretornou1.Sim,parececontraprodutivo,masestatabelafoibaseadaemnmeros
queaprpriaAPIdosistemaWindowsretorna.OsvalorespossveisestonaTabelaabaixo.
Valor

Estado

Rodando

Pausado

Incio requisitado

Pausa requisitada

Continuao requisitada

Parada requisitada

Parado

Desconhecido

255

Servio no existe (no esta cadastrado


na lista de servios do Windows)

Table 10: Valores da key service_state


Mas isso ainda no suficiente. Temosque pedir ao Windows que libere a porta do
FirewallparaoacessoaoTelnet.Porpadrotodosostelnetsusamaporta23/TCP.Acesse
PaineldeControlesFirewallparaabriraspreferncias.

Captulo 4 Monitoramento voltado para disponibilidade - 194

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

Clique em Adicionar Porta... e preencha a janela que aparecer conforme indicado a


seguir.

Figura 4.88: Liberando o telnet no firewall do Windows


(2/3)

Captulo 4 Monitoramento voltado para disponibilidade - 195

1) Nome:onomedoservioapenasumlabelparaoFirewall.Definacomotelnet.
2) Nmerodaporta:coloque23.
3) OprotocolousadooTCP.
CliqueemOKparafinalizar.

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

Porfim,cliqueemOKnovamente.Paraaveriguarsetudoestacorretofaaumtestea
partirdoconsoledohostZabbixserver.

Captulo 4 Monitoramento voltado para disponibilidade - 196

#nmapP0p23win2003

StartingNmap5.00(http://nmap.org)at2011021518:39BRST
Interestingportson172.28.0.10:
PORTSTATESERVICE
23/tcpopentelnet
Nmapdone:1IPaddress(1hostup)scannedin0.31seconds
#telnetwin2003
Trying172.28.0.10...
Connectedtowin2003.curso468.4linux.com.br.
Escapecharacteris'^]'.
WelcometoMicrosoftTelnetService
login:administrador
password:
*===============================================================
BemvindoaoMicrosoftTelnetServer.
*===============================================================

C:\DocumentsandSettings\Administrador>exit
Seotestecorreubem,vatotemplate4LinuxS.O.Windows2003ecrieumnovo
itemconformeabaixo.

Captulo 4 Monitoramento voltado para disponibilidade - 197

Figura 4.90: item para monitorar servios Windows

Nenhuma grande novidade aqui, apenas atente para a key e para o campo New
application.OutropontoimportanteousodoValuemapWindowsservicestate.

Figura 4.91: Estado do servio Telnet no Overview

Captulo 4 Monitoramento voltado para disponibilidade - 198

VerifiquequenoOverviewoservioestaaparecendoefuncionando.

4.8.5.RestabelecendoserviosofflineviaZabbix
Umavisodecautelalogonoincio.Permitirqueoagenteexecutecomandosremotos
nohostmonitoradopodecausarfalhasdeseguranasenohouvercuidadotriplicado.
Somenteuseesterecursosevocrealmenteprecisaretiverabsolutacertezadoque
estafazendo.
Um recurso poderoso a capacidade do agente do Zabbix de executar comandos
remotosapedidodoservidor.Issopossibilitaquesejamoscapazesderestaurarumservioque
caiu,oureiniciarumqueestcomproblemasnoatendimentoderequisies.
Obviamente o agente por padro no executa nada, tampouco capaz de executar
comandosadministrativosarbitrariamente.Issosedeveadoisfatos:osdefaultsdosarquivosde
configuraoeaexecuododaemondoZabbixcomousurionoprivilegiado.
Nossaprimeiraprioridadejustamenteliberaroagenteparaexecutaroscomandos.O
arquivo /etc/zabbix/agent.d/remote_command.conf contm as configuraes para tal
procedimento.ElejaumadasmquinasvirtuaisGnu/Linuxecomecearealizarosprocedimentos
aseguir.
#vim/etc/zabbix/agent.d/remote_commands.conf
1

#EsteoarquivodeconfiguraodoagentedoZabbixparacomandos

#remotos.

3
4

========================================================================
5

#Liga/Desligaorecursodecomandosremotosdoagente.

#Estetipodefeaturevemdesligadaporpadrodevidoaoriscodesegurana

#queelapodeapresentarsemalconfigurada.

10

#NotequeousuriodoZabbixtemqueterdireitosdeexecuodocomandoem

Captulo 4 Monitoramento voltado para disponibilidade - 199


11

#questoenviadopeloservidor.Paraissooueleexecutadocomoroot

12

#(desaconselhvel)ouchamaexecutveiscomsuid(desaconselhvel)ouutiliza

13

#sudopararodaroscomandos.Esteltimoaopomaisseguradastrs,mas

14

#requerconfiguraesextrasnoarquivosudoers.

15

16

EnableRemoteCommands=1

17
18

========================================================================
19

#Nocasodehabilitadaaexecuodecomandosremotos,aconselhveldeixar

20

#estaopoativadaparaauditoriadosistema.Elavairegistrarnoarquivo

21

#delogsdoagentequandoequalcomandofoiexecutado(ounomnimofoi

22

#tentado).

23

24

LogRemoteCommands=1

#/etc/init.d/zabbixagentrestart
preciso mudar para 1 ambos EnableRemoteCommands e LogRemoteCommands.
Seusnomessobemsubjetivos,eapesardenohavernecessidadedeativarosegundopara
queacoisatodafuncioneextremamenteaconselhvelfazlo.
J estamos ampliando bastante a confiana do agente no servidor, vamos ser
cautelososeaomenoscolocarastentativasdeexecuodecomandosnoslogspara
auditoria.
recomendvelquevocdesabiliteoarquivodelogtambmefaaoagentegravarno
syslog,dessaformaelenoterdireitodeescritanosarquivosusadosparaarmazenar
suasmensagens.
Agora a segunda parte: como usurio zabbix, o agente no ser capaz de iniciar
nenhum servio do Gnu/Linux, somente o root pode fazlo. Ento vamos apelar ao sudo
novamenteparaexecuodocomando(instaleosudosenecessrio).
Configure o sudo para permitir que o agente execute sem senha o script de
reinicializaodossh.

Captulo 4 Monitoramento voltado para disponibilidade - 200

#visudo

zabbixALL=NOPASSWD:/usr/init.d/sshrestart

Sejametdicoedefinaexatamentequaissoosparmetrospermitidosdentrodosudo,
principalmenteparascriptsdesistema.Noqueremosningumdandostopnossh
peloZabbix,acidentalmenteouno!
Crieumaactionparaconterocomandoremoto.

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

As configuraes padres so bem apropriadas, apenas acrescente o adendo na


mensagemqueoserviosestasendoreiniciadomanualmente.

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

Nascondies,importantenotarquehtrsdelas.Umaindicaqueostatusdotrigger
deveserPROBLEM.

Captulo 4 Monitoramento voltado para disponibilidade - 201

VocnoquerqueoserviosejareiniciadoquandoogatilhovoltaraOK,certo?
Asoutrasduaspossibilidadessootriggerdeprocessooudechecagemlocaldeportas
seremativados.QualquerumdelesqueapresentarPROBLEMdisparaestaao.

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

Uma mensagem para os envolvidos com esse host deve ser enviada. E por fim o
comandoremoto,ativadoapartirdoquadroActionoperations.

Figura 4.95: Comando remoto para o action de parada do servio de SSH

1) Operation type: escolha Remote command ao invs do valor para envio de


mensagens.Notequeocampoabaixovaimudar.
2) Remotecommand:vocprecisacolocarocomandocomasintaxeHost:command,
ondehostolocalondeocomandoserexecutado(ondevochabilitouocomando
remoto no agente) e command o comando propriamente dito. No nosso caso
usaremosDatabase:sudo/etc/init.d/sshrestart.
Vocpodeusarmacrosnoscomandosepodeinvocarquantoscomandosvocquiser,
emquaisquerservidores,emqualquersequncia.
Agora vamos ao teste: v at o host no qual voc configurou o agente para aceitar
comandosremotosepareoserviodeSSH,emseguidaabraologeaguarde.

Captulo 4 Monitoramento voltado para disponibilidade - 202


#/etc/init.d/sshstop
#tail/var/log/zabbix/zabbix_agentd.logf

7287:20110215:192625.462Executingcommand'sudo/etc/init.d/sshrestart'
StartingOpenBSDSecureShellserver:sshd.
Sevocvoltarteladeeventosverquehdoisdeles,umdequedaeoutrodevolta.

4.8.6.Exerccios
1) CrieomesmoesquemademonitoramentofeitoparaoSSHparaoApachedentrodo
application. Gere um template a parte para o Apache para conter os items e
configuraes.Tambmcrieumaactioncapazdereiniciaroserviosefordetectado
quenenhumdaemondoapacheestarodando.
2) CrieumtriggerparaavaliarseumserviodoWindowsnoestarodandoeuma
action para alertar o administrador Windows. No corpo da mensagem coloque o
estadoemqueoestadoseencontravanomomentodoalerta.Useamesmatticade
checagemdeportasemltiplosgatilhos.

4.9.Medindoasadedesuarede
At o momento nossos esforos foram dirigidos a checagem de dados que indicam
apenasseumdadohost(ouservio)estoperacionalouno.Vamoscomearaabordaroutros
tpicos, que embora, indiretamente relacionados com os servios podem afetar seu
funcionamento.
Estetpicoabordaapartedenetworkingemostracomomonitoraroquosaudvelsua
redeest.

4.9.1.Latnciaderede
Oprimeiropontoquevamosanalisarsoascausasdeindisponibilidadeporexcessode
trafegonarede.Notequemedirabandapodeajudaraidentificargargalosderede,masamtrica
maisindicadaparamedirlentidoalatnciaderede,quepodeestarbaixamesmoquandono
htrafego!Comosemprevamoscomearcomacriaodoitemdentrodotemplate4Linux
ICMP.

Captulo 4 Monitoramento voltado para disponibilidade - 203

Achaveicmppingsectambmfazumpingcomoaicmpping,masdiferentedestaela
retornaonmerodesegundosqueopacotelevouparairevoltar(naverdadeamdiadetrs
pacotes).

Figura 4.96: Item para latncia de rede

Neste item, atente para o campo Units que contm o valor s (segundos). Ele ir
formatarovalorrecebidopeloitemparaumaformalegvelporsereshumanos.Emaisimportante,
desta vez Type of Information esta como Numeric (float), porque o retorno da key
icmppingsecemsegundos,masnormalmenteostemposderespostassoquebradosemtrs
casasdecimais(milissegundos).

Captulo 4 Monitoramento voltado para disponibilidade - 204

4.9.2.Macroparaolimiardalatnciaderede
Umpontomuitoimportantedefiniroqueumalatnciaruim.Issomuitovarivelde
umambienteparaoutro,sevocestivermedindoalatnciaemumaredelocalento,provvel
que uma latncia acima de 10 milissegundos seja alta. No caso de medir a latncia de um
equipamentocomlinkviasatlite,podemosencontrarlatnciasdealgunssegundoscomopadro
dependendodatecnologia.
Para deixar nossos templates flexveis o suficiente para se adequarem a quaisquer
ambientes podemos usar um recurso muito interessante do Zabbix chamado macros de
usurios.
Existemtrstiposdeescopodemacro:global(definidoemAdministration General)
quevaleparatodosostemplatesehosts;macrosdetemplates,cujoalcancevaleparatodosos
hostsassociadosaumdadotemplateemacrosdehost,quevalesparaaquelehost.Sevoc
redefinir(comovamosfazer)umamacronumambientemaisrestrito,oqueirvalersereste
ltimo.
OZabbixtemvriasmacrosinternasejtivemoscontatocomalgumasquandocriamos
nossostriggers.{HOSTNAME},queamaiscomum,armazenaonomedohostdefinidodentro
dofrontend.Quandodefinirmosumamacrodeusurioimportantequeemsuasintaxeum
sinaldecifro($)sejacolocadoantesdonomeedentrodaschaves.
Porexemplo,vamosdefinirumamacroparalatnciaderedecomonomeLATENCIA,
logosuasintaxeser{$LATENCIA}.Eviteousodeoutroscaracteresnonomedamacroexceto
porunderline (_). Tambm no comece onomeda macro pornmeros. uma boa prtica
manterosnomesemcaixaalta.
No caso de nosso cenrio iremos definir um padro de 0.01 segundos (10
milissegundos)paranossamacro,elavaiserumamacrodetemplate,maisespecificamenteo
template 4Linux ICMP. Abra as configuraes do mesmo clicando no nome dele em
Configuration Templates. No canto direito do quadro principal voc vai achar a rea de
definiodemacros.

Captulo 4 Monitoramento voltado para disponibilidade - 205

Figura 4.97: Macro para latncia de rede

AcrescenteosvaloresconformeaFigura 4.97 esalveotemplate.Elajestarvalendo


paratodososhostsassociadosaele.Vamosagorauslanogatilhoparaverificaodelatncia
altaderede.Crieotriggernotemplateconformeaseguir.

Figura 4.98: Trigger para latncia de rede usando a macro

Agrandediferenadestetemplateparaosanterioresousodamacro.Presteateno
no campo Expression, seu valor indica a frmula {HOST:ITEM.avg(60)}>{$LATENCIA}.
Podemosinserirquantasmacrosquisermosnaexpressodogatilho.
A partir de agora se reutilizarmos estes templates em outros ambientes, podemos
adequaralatnciaderedeglobalmentealterandoovalordamacronotemplate.Nocasodeum
doshostsemnossosistematerumlimiardiferentedelatncia,podemosaindaredefiniramacro
dentrodoprpriohost,alterandoassimocomportamentodeseutriggerpontualmente.

4.9.3.Nossoprimeirogrfico
Vamosagoracriarumgrficoqueirusarestetriggerparaexibirolimiardetestena
tela.OresultadosersimilaraodaFigura4.99.

Captulo 4 Monitoramento voltado para disponibilidade - 206

Figura 4.99: Grfico para medir a latncia de rede

VatateladecriaodegrficosecliqueemCreateGraph.Sigaasinstruoabaixo
paraconstruirumgrficocomodemonstradoacima.

Figura 4.100: Criando um grfico de latncia de rede

1) Name:nomedogrfico.Apartirdaverso1.8.4doZabbixpossvelusarmacros
aqui.
2) WidtheHeight:tamanhopadrodogrficoparaalgumastelas.Namaioriadoscasos
ofrontendajustaogrficoaotamanhocorrentedateladoBrowser.

Captulo 4 Monitoramento voltado para disponibilidade - 207

3) Graphtype:otipodegrfico,aquivamoscriarumNormalmaspodemosconstruir
grficos Stacked (empilhados), Pie (Pizza) e Exploded (pizza com valores
destacadosparaforadareadogrfico.NossoexemplousaSimple.
4) Showworkingtime:seativo,mostraumasombranoshorriosforadoWorkingtime
definidoemAdministrationGeneralWorkingtime.
5) Show triggers: exibe uma linha pontilhada como demonstrada anteriormente no
limitardotrigger.Deixeeleativo.
6) YaxisMIN/MAXvalue:valoresmnimoemximodogrfico.tilparadefiniruma
escaladevisualizao.Nonossocasovamoscolocarapenasovalormnimode0
(assim o cho de nosso grfico sempre se manter em 0) e o mximo em
Calculated,poisnotemoscomosaberondeestaotopoparacadaambiente.Em
algunscasos,comoemporcentagens,normalmenteomximoumvalorfixo,em
outroselepodeserovalordeumitem.
7) Items:aquipodemosdefinirquaissooscamposquedesejamosincluirnogrfico.
Procuresempreusaromnimopossveldeinformaonestecaso.Paraacrescentar
umItemcliqueemAdd.Ajaneladenovoitemparaogrficoseabrircomoaseguir.

Figura 4.101: Adicionando mtricas ao grfico

1) Parameter:qualkeycadastradanotemplateesteelementorepresentar.
2) Type:se esteitem Simple ou Agregated.Campos agregados agrupamvrias
contagememum nicovalor.Soteispara visualizaodevariao commenor
granularidadenumdadoespaodetempo.Porexemplo,sevocquiserapenasa
mdia,dehoraemhora,aoinvsdeusarointervalodecoleta.
3) Function:qualvalordevesermostradosehouveraexistnciademaisdeumvalor
porpixelnoeixox.Asfunessoavg(mdia,omaiscomum),max(mximo),
min (mnimo)ouall (todosostrs).Emvariaesmuitobaixas,all podeno
exibirnadasignificante.

Captulo 4 Monitoramento voltado para disponibilidade - 208

4) Drawstyle:Comoalinhaserdesenhada.Osvalorespossveisso:Line (linha
simples), Filled region (rea preenchida), Bold line (linha mais espessa), Dot
(pontos), Dashed line (tracejado) e Gradient (rea com gradiente da cor
gradativamenteindoparatransparente).Estegrficousaalphablender.
5) Colour:obviamenteacor.
6) Yaxisside:Seosvaloresdesteitemseroexibidosdoladoesquerdooudireitodo
grfico.
7) Sortorder:umnmeroindicandoaordemdedesenhonogrfico,vaide0a100.
Vocpodeordenaroselementosdosgrficoscomodesejarnateladeconstruodo
grficodepoisdeacrescentartodoseles.
Clique em Save em ambas as telas e o grfico estar pronto para exibio em
MonitoringGraphs.
ObotodePreviewqueexistenateladeconstruodosgrficosnosercapazde
exibir os grficos se voc estiver acrescentando ele a um template como estamos
fazendo.Elesfuncionanocasodeumgrficosercriadodiretoemumhost.

4.9.4.Personalizandoomapaparaexibiodeinformaes
O mapa do Zabbix extremamente personalizvel, e permite que visualizemos
praticamentequalquervalorquecoletamoseprocessamos,desdeitemsattriggers.Vamos
aproveitarquecoletamosvriasmtricasimportanteseassocilasaomapa.Oresultadofinal
deveficarcomonaFigura.

Captulo 4 Monitoramento voltado para disponibilidade - 209

Figura 4.102: Mapa com labels personalizadas exibindo dados

Paradefinirestesvaloresbastantesimples:editeaoitemdehostclicandosobreelee
preencha,linhaalinha,osvaloresdocampoLabel.Noexemploquevimos,vrioshostsexibem
o Uptime obtido de {Host:system.uptime.last(0)} e de latncia de rede, obtido de
{Host:icmppingsec.avg(60)}.Atenoespecialaosegundo,poisusamosafunoavgeno
last,issototalmentepermitido.
NaFigura4.103temosumexemplocomohostPresentation.Apseditarovalorclique
emApply.

Figura 4.103: Exemplo de labels com valores de mtricas

Captulo 4 Monitoramento voltado para disponibilidade - 210

NoesqueadesalvaromapaconstantementenobotoSave.

4.9.5.Exerccios
1) Assimcomooicmppingsec estaparaoicmpping,vriaskeyscomsufixo_perf
esto para os equivalentes das simple checks de portas TCP. Por exemplo,
ssh_perfamediodelatnciaparaoservidordeconexesremotassegura.Crie
ositemsegrficos(vejaoexemploabaixo)paraosoutrosserviosquevocjcriou
anteriormentededisponibilidade.Cadastremacrosparamedirolimiarefinalizecom
ostriggersdosmesmos.
Emsaladeaula,criepelomenosumdeles,osoutrospodemserfeitosemcasa.

Figura 4.104: Exemplo de grfico de latncia de servios para exerccios

4.10.Espaodisponvelemdisco
Alatnciaderedepodemedironvelderespostafinaldasaplicaesdisponibilizadasvia
TCP.Masumitemextremamentecrtico,poispodecausarparadasdeserviosabruptamente,o
espaodisponvelemdisco.

Captulo 4 Monitoramento voltado para disponibilidade - 211

Vrios daemons simplesmente saem de funcionamento porque no so capazes de


escreverempartiesdelogs,ebancosdedadosepastasdeusuriossemprepodemexceder
asestimativasprevistas.Porissoimportantequeverifiquemosambasaspartiesdesistemae
dedadosdentrodeumservidor.
ComoexemploiremoscriarumaverificaodaraiznosGnu/Linux.Depoisestenderemos
o mesmo princpio ao Windows. Outro ponto que nos servidores sempre existem vrias
parties(aomenosnosbeminstalados),eporissotemosquetermltiplositemsparacobrir
todososcasosedeixarmargem,atravsdemacros,parapartiescomnomespersonalizados
peloadministrador.
Porfim,destavezteremosquecoletarvriasmtricas(aomenostrs)paracriaodos
grficosetriggers.Espaototal,usadoelivre.
Existem outras mtricas como porcentagem utilizada e livre do disco (pfree e
pused),almdeitemsbaseadoseminodes.ConsulteomanualdoZabbixpara
maisdetalhes.
Antesdecomearacriaritemsvamosdefinirumvalorlimiteparanossostriggerscomo
fizemos na latncia de rede. A utilizao dos espaos em disco pode variar muito entre os
servidores. Todas as nossas aes sero dentro do template 4Linux S.O. Linux. Comece
criandoamacroconformeabaixo.

Figura 4.105: Macro para limite de espao em disco utilizado

Ovalorpadrousadoparanossocenrioser80(80%dapartiocheia),todoservidor
queexcederestelimitedeverdispararumalertaparaosadministradores.
Vamoscriarositemagora,akeyvfs.fs.size[mount_point,mode],diferentedasanteriores
exigeparmetrosparafuncionar.Oprimeiroobrigatrioeindicaqualdaspartiesdevemser
analisada.Osegundoopcionaledizqualparmetrodevesercoletado.Osvalorespossveis
so:total(bytestotaisdapartio.otipopadro),used(bytesutilizados),free(byteslivres),

Captulo 4 Monitoramento voltado para disponibilidade - 212


pused (porcentagem utilizada) e pfree (porcentagem livre). Vamos usar apenas os trs
primeiros,comeandopelototal,conformeaseguir.
Oagentenoverificaseodiretriocolocadonoparmetroaraizdeumpontode
montagem.Nocasodenoser,elecontinuarobtendoovalordoespaodapartio
comoumtodo(pensenelecomoumdfaoinvsdeumcomandodu.

Figura 4.106: Primeiro item de espao em disco

1) Description:aquitemosumanovidade:umavezqueestamosusandoparmetrosna
key,podemoscapturloseinserilosnodescriptionusandoanotificao$n,onde
nonmerodoparmetrocomeandopor1.Emnossoexemplousaremos$1
parapegaropontodemontagemdapartio.Issoaliviabastanteadigitao,poisos
outrositemsqueiremosclonarnoprecisamterdescriptionsmuitodiferentes.
2) Key:achavedeespaoconformeexplicadoanteriormente.Paraototalsuasintaxe
finalvfs.fs.size[/,total].
3) Units:brepresentavaloresembytes.OZabbixinteligenteosuficienteparafazer
asconversesparakilo,mega,giga,tera,etc.Usandomltiplosde1024.

Captulo 4 Monitoramento voltado para disponibilidade - 213

Salveoitemeaoinvsdecriaroprximoitemnobrao,vamosusarumrecursode
clonagemdevaloresdoZabbix.Vriastelaspermitemqueusemosorecursodeclonagem.Neste
casovamosclonarototalparausadoelivre,conformeoesquemanaFigura4.107.

Figura 4.107: Items a serem clonados para espao em disco

EditeoitemdeEspaototalecliquenobotoClone.

Figura 4.108: Boto para clonar items

Voc ver que os dados se repetiro. Altere apenas a key (que deve ser nica) e o
description.Repitaparaooutroitemevocteroutrasduasmtricasprontasecoletandoem
tempo recorde! Confira no Overview se os dados esto sendo coletados adequadamente
(atentandoparaqueelesestejamemnotaoabreviada,Mb,Gb,etc).

4.10.1.Grficosparaespaoemdisco
Vamoscriardoisgrficosparavisualizaodeespaoemdisco:oprimeiroumgrfico
depizza(tambmchamadosdetorta,masonomeoficialgrficocircular)paramostraroatual
volumedeusododisco.Apesardeparecerintil,estetipodegrficotemumavantagemgrande
sobre o de linha: ele exibe de maneira visual o estado atual com propores facilmente
reconhecveisporolhoshumanos.VejaaFigura4.109,queilustraogrficoquevamoscriardaqui
apouco,facilmenteconseguimosverqueestapartioestacommaisde50%ocupadasomente
olhandoparaogrfico.
Novamente, como usamos o campo Unit igual a b, os valores j aparecero
convertidoseabreviadosparafacilitarleiturahumana.

Captulo 4 Monitoramento voltado para disponibilidade - 214

Figura 4.109: Grfico de pizza para exibio de espao


livre e ocupado

Paragerarumgrficocomoessesigaospassosaseguir.

Figura 4.110: Criando um grfico de pizza

Nohmuitossegredosnestatela,aoselecionarPieemGraphTypemenoscampos
iro aparecer no formulrio. Vamos deixar a legenda ativa. Podese fazer grficos em 3D se
desejado, mas no h grandes vantagens neles em relao aos normais em termos de
visualizao,apenasesttica.
Notequevamosutilizardoisitemsaomesmotempo:espaoutilizadoelivre.
Foi usado vermelho para o espao utilizado por um bom motivo, as cores quentes
tendemaatrairoolhohumanoquandoemcontrastecomcoresfriasoumaisclaras.
Isso faz com que inconscientemente o administrador ou suporte, fixe no espao
utilizadooqueocrticonestecaso.

Captulo 4 Monitoramento voltado para disponibilidade - 215


Enquanto o grfico circular indicado para mostrar o ltimo status de vrios items
relacionados,proporcionalmenteeleocultaohistricodoespaoocupado.Porissoprecisamos
criar,tambm,umgrficosimples.Oprocedimentosimilaraoanterioreresultarnogrficoda
Figura4.111.
Seudiferencialquevamosusarumlimitesuperioraoinvsdeumlimitecalculado.Para
indicarotopodogrficovamosapontarparaoespaototaldapartioobtidoatravsdeumitem.

Figura 4.111: Grfico de histrico de espao em disco

Crieumgrficocomoantes,masatenteparaodetalhesemdestaqueabaixo.

Figura 4.112: Criando o grfico de histrico de uso de disco

Captulo 4 Monitoramento voltado para disponibilidade - 216

Aps acrescentar o item de espao utilizado, no campo Y axis MAX value escolha
Itemeselecioneoitemdeespaototal.Issovailimitarotopodogrficoedarumavisualizao
maisprecisadoespaoqueestsendoutilizadoemrelaoaototal.Sevocnoofizeretiver
porexemplopoucoespaousadoogrficoficarajustadoaotamanhomximoatingidooque
podelevarumobservadordesavisadoainterpretarcomodiscocheio!

4.10.2.Gatilhosparaalertasdeespaoemdisco
Agoravamosusaramacroquedefinimosanteriormenteparacalcularovolumededisco
usado.Paraissovamosusarumafrmulapara,apartirdototal,saberqualaporcentagemem
bytesqueapartioterdelimiar.Aexpressolgicomatemticaseria.
ESPAO_USADO>(ESPAO_TOTAL*LIMITE/100)
Sendoque:
ESPAO_USADO:amdiadajaneladetempodoespaoutilizadonapartio.
ESPAO_TOTAL:oltimovalorcoletadodoespaototaldapartio.
LIMITE: o valor definido em nossa macro, representando a porcentagem de limite
(padro80%)paraaveriguaodeestourodeusodedisco.
Noteque,vocpoderiausaropusedparapegaraporcentagemutilizadaaoinvs
destafrmula,masissoacrescentamaisumitemnomonitoramento.Almdomais
esteumexemplobemdidticoparaexpressesmaiscomplexas.
NocasodenossocenrioaexpressocompletaapresentadanaFigura4.113ecalcula
exatamentequantosporcentosdeusodapartioapresenta.

Captulo 4 Monitoramento voltado para disponibilidade - 217

Figura 4.113: Trigger para clculo de espao em disco

Noteaindaque,comosempre,colocamosumadependnciaaoAgentPingparaevitar
testescomvaloresinexistentequeresultamemUNKNOWN.
Verifiquesealgumamquinaexcedeuoespaoeacionouo trigger.Nestecasovoc
deveaumentarovalordamacro paraaquelehostsomente.Issoumcasoatpicononosso
cenrioentootrataremoscomoumaexceo.
ParatestarotriggeruseoseguintecomandoemumadasmquinasGnu/Linux:
#ddif=/dev/zeroof=/tmp/lixobs=1kcount=$((200*1024))
Issovaigerarumarquivode200Mbno /tmp.Mudeotamanhodoarquivoconforme
acharnecessrioparafazeroteste.Deixeelelatotriggeralarmaredepoisapagueopara
liberaroespaoeforaratrocadeestadoparaOK.

4.10.3.Exerccios
1) Cloneositemscriadosparaapartio/alterandoparaasparties/usr,/var,
/tmp,/boote/home(asnormalmentecriadasnumainstalao).Repliquetambm
as

macros,

os

grficos

os

triggers.
Deixetodasestasmtricasegatilhoscomodisabledporpadro!Elasdependemda
instalaodeGnu/Linux.Emsalarepliqueaomenosuma,asoutraspodemserfeitas
emcasa.
2) CrieasmesmasmtricasparaoWindows,mascomaspartiesdeC:atG:.Em
salacrieaomenosuma,asoutraspodemserfeitasemcasa.

Captulo 4 Monitoramento voltado para disponibilidade - 218

3) Desafio: crie mtricas que checam parties personalizadas pelo administrador,


usandomacrosparadefinirospontosdemontagem.

4.11.Scriptsexternos
Fizemos vrias checagens at o momento usando os recursos do Zabbix. Mas nem
sempreteremostudoamo.Estetrechodocursoensinaaestenderoagentedetalformaacriar
novaskeysatravsdachamadadescriptsexternos.
Alm disso algumas mtricas do Windows s podem ser obtidas pelo sistema de
performancecountersqueumtipoderegistrodecoletadeperformancepadrodoWindows.
Veremoscomoutilizarambosparaadicionarmaispoderdefogoaonossoarsenalde
monitoramento.

4.11.1.ChecandoadisponibilidadedoPostgreSQL
OZabbixnotemsuporteatodososprotocolosTCPdafacedaTerra.Defatoissoseria
umfeitoimpressionanteparaumaplicativodemonitoramento.OprotocolodoPostgreSQlesta
entreosnosuportados,eemboratenhamosutilizadokeyscomotcpetcp_perfparamedir
suadisponibilidadepodemocorrersituaesondeobancoaceiteconexesmasnoresponda
nada,ouofaamuitolentamente.
Nestescasosiremoscriarumaextensodoagenteaptaarealizaruma nicaconsulta
(SELECT1)everificarseeleretornouovalorcorreto.Estaextensovaichamarumscriptcriado
embashqueacionalocalmenteoservidor,fazaconsultaedeterminaoresultado.Prepareos
conhecimentosdeshellscript,respirefundoevamoscomearacessandoohostDatabase.
Oprimeiropassopermitirqueousuriozabbixseconecteaobancosemanecessidade
de senhas. Isso necessrio porque o comando ser executado automaticamente sem a
intervenomanualdeumadministrador.
Comovamosusaropsql,clientepadroviaconsoledoPostgreSQL,podemosusarum
artifciointeressantecomoarquivo.pgpass.Estearquivodeveficardentrododiretriohomedo
zabbixedeveconterumastringcomosparmetrosdeacesso.Cadapermissodeacessodo

Captulo 4 Monitoramento voltado para disponibilidade - 219


usuriozabbixdeveestaremumalinha(assimpodemosacessarmltiplosbancosdedados).
Oformatodaslinhasdestearquivoseguemasintaxe:
hostname:porta:basededados:usurio:senha
Enonossocasovamosacessarobancoprincipaldosistemapostgres,logoovalorfinal
serlocalhost:5432:postgres:zabbix:zabbixdb.Osseguintescomandoscriamoarquivo,ajustam
suapermissoefazemotestelocal.
#suzabbix
$echo"localhost:5432:postgres:zabbix:zabbixpwd">.pgpass
$chmod0400.pgpass
$psqlhlocalhostUzabbixpostgrescSELECT1;
1
$logout
Apermissodoarquivo.pgpassdeveser0600ou0400eodonodoarquivodeveser
ousuriozabbix.
Aindatemosquecriarousuriozabbixdentrodobancocomasenhazabbixpwd.
#supostgres
$psqlpostgres
postgres#CREATEROLEzabbixLOGIN;
postgres#\passwdzabbix
Digitenovasenha:zabbixpwd
Digiteanovamente:zabbixpwd
postgres#\q
Agora vamos criar um arquivo para conter as configuraes do script. Ele vai conter
apenas uma varivel por enquanto. Mais a frente vamos colocar outros valores aqui para o
conjuntodescriptsdoPostgreSQL.
#vim/etc/zabbix/pgaccess.conf
1

HOST=localhost

Captulo 4 Monitoramento voltado para disponibilidade - 220

Enfimchegamosaoscript.BasicamenteeleexecutaocomandopsqlcomoSQLde
testes e verifica se tudo ocorreu bem. Mas h algumas partes do script que merecem um
destaque.
#vim/etc/zabbix/externalscripts/pgsql_ping.sh
1

#!/bin/bash

2
3

BASE="/etc/zabbix"

CONF=$BASE/pgaccess.conf

QUERY_PING="SELECT1;"

ERROR_LOG=/var/log/zabbix/pgsql_ping.error

7
8

functionshowerror{

echoe"PostgreSQLpingerror:\n$(cat$ERROR_LOG)"1>&2

10

11
12

if[r$CONF];then

13

.$CONF

14

fi

15
16

PING_OK=1

17

PING_FAIL=0

18

PING=$(psqlh$HOSTc"$QUERY_PING"postgrestA2>$ERROR_LOG)

19

RETURN=$?

20
21

if[[$RESULTne0]];then

22

showerror

23

exit1

24

else

25

if[[$PINGeq1]];then

26

echo$PING_OK

27

else

Captulo 4 Monitoramento voltado para disponibilidade - 221


28

showerror

29

echo$PING_FAIL

30

fi

31

fi

32
33

exit0
1) O primeiro destaque do script justamente o comando que faz o SELECT 1 e
armazenaseucontedoemumavarivelchamada$PING. Notequeopsqlest
usandoosparmetrosteAparaqueocomandoretorneapenasumvalor1.No
casodealgumerroovalorde$PINGserdiferentede1.
2) Oretornodocomandoverificadoenocasodeerros,umamensagemgravadana
sadadeerroseoscriptparacomretorno1.OZabbixtrataistoenviandoasadapara
ozabbix_agentd.log.
3) No caso do SELECT ser bem sucedido, o valor retornado ser 1 (definido no
cabealhodoscript).
4) Casocontrriooscriptretorna0egravaumamensagemnologindicandoporque.
Notequeocomportamento,de1significasucessoe0parafalha,replicaopadrodas

keysdedisponibilidadequevimosanteriormente.Issoajudaamanteropadroepermiteousodo
valuemapsquecriamos.
Todo script de comando externo deve retornar um, e apenas um valor! Repita isso
consigomesmo!NohcomopegarvalorescompostosnoZabbixetrabalharcomeles
individualmentedepois.Cadaitemarmazenaumsinglecontent.
Agoravamoscriarumanovakey pgsql.ping,dentrodoagente.Paraissousamoso
UserParameter,dentrodeumdosarquivosdeconfiguraodoagente.Asintaxedestalinha:
UserParamente=key,comando arg1 arg2 ...
No caso de nossa necessidade ficar como a seguir.
#cat/etc/zabbix/agent.d/pgsql_checks.conf
1

UserParameter=pgsql.ping,/etc/zabbix/externalscripts/pgsql_ping.sh

Captulo 4 Monitoramento voltado para disponibilidade - 222

Temosqueacertaraspermissesdosarquivosereiniciaroagente.
#chownroot.zabbix/etc/zabbix/pgaccess.conf/etc/zabbix/agent.d/pgsql_checks.conf
/etc/zabbix/externalscripts/pgsql_ping.sh
#chmod0640/etc/zabbix/pgaccess.conf/etc/zabbix/agent.d/pgsql_checks.conf
#chmod0750/etc/zabbix/externalscripts/pgsql_ping.sh
#/etc/init.d/zabbixagentrestart
J podemos fazer o teste local, o script deve retornar o valor 1.
#suzabbixc/etc/zabbix/externalscripts/pgsql_ping.sh
1
ApartirdoZabbixservertesteoacessoanovachave.Oresultadotambmdeveser1.
#zabbix_getsdatabasek'pgsql.ping'
1
Setodosostestesforamresolvidosomomentodevoltaraofrontend.Crieumnovo
template4Linux PostgreSQL 8.4 on Linux, ele devedependerdo template4LinuxS.O.
Linux.DepoisentrenohostDatabase,removaotemplate4LinuxS.O.Linux peloboto
Unlink (conservandoassimosdadoscoletados)eadicioneonovomodeloconformeaFigura
4.114.

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

VerifiquesenoOverviewosdadosestosendorecebidos.

Captulo 4 Monitoramento voltado para disponibilidade - 223

Figura 4.115: Disponibilidade do PostgreSQL ativa no database

Comissojpoderamoscriartriggersefazeromesmoescalonamentodegatilhospara
averiguarqualtipodeerropodeacontecer.

4.11.2.MedindoadisponibilidadedeumlinkInternet
Agorafaremosumabordagemdiferente:vamosmediralatnciadolinkdeInternetapartir
dohostPresentation(assimpodemosobterumvalorpuroentreohostdebordaeogateway
daoperadora).
Estescript,umpoucomaiscomplexoqueoanterior,permitequecoletemosamdiade
latnciaentreumconjuntodesites.
#vim/etc/zabbix/externalscripts/internet_perf.sh
1

#!/bin/bash

2
3

BASE=/etc/zabbix

CONF=$BASE/internet_perf.links

BC=$(whichbc)

6
7

functionshowerror{

echoe"Checklinkerror:$1"1>&2

Captulo 4 Monitoramento voltado para disponibilidade - 224


10
11

if[[!x$BC]];then

12

showerror"aplicativobcnoinstalado"

13

exit1

14

fi

15
16

if[[!r$CONF]];then

17

showerror"arquivo$CONFnoexisteounoestaacessvelparaleitura"

18

exit1

19

fi

20
21

NTESTS=$(wcl$CONF|cutf1d"")

22

SUM_AVG=0

23

fordestinationin$(cat$CONF);do

24

PING=$(pingnc1w1W1$destination2>&1)

25

if[[$?eq0]];then

26

AVG=$(echo$PING|cutf34d""|cutf2d"/")

27

SUM_AVG=$(echo"scale=3;$AVG+$SUM_AVG;"|bc)

28

else

29

NTESTS=$(($NTESTS1))

30

showerror"pingpara$destinationfalhoucomerro:$PING"

31

fi

32

done

33
34

if[[$NTESTSeq0]];then

35

showerror"Todosostestesfalharam"

36

exit1

37

fi

38
39

echo"scale=3;$SUM_AVG/$NTESTS/1000;"|bc

40
41

exit0

Captulo 4 Monitoramento voltado para disponibilidade - 225

1) Estetrechoocorpoprincipaldoscript,elepegaoarquivodelinks(abaixo)erealiza
umpingemcadaumdosendereosldentro.Paracadacoletabemsucedidaele
somaamdiaqueocomandoretorna(emmilissegundos).
2) Nosegundotrechoapartirdoresultadodasomaedaquantidadedetestesobtidaa
mdia final e convertida para segundos (assim podemos usar o Unit s para
formatarasada).
O arquivo de links pode conter tantas entradas o quanto quisermos, mas no
recomendvelquehajamaisdoque5,queotempolimitequeoZabbixesperaporumscript
executarantesdedesistireretornarnulo.
#vim/etc/zabbix/internet_perf.links
1

www.google.com

www.uol.com.br
Comofizemosanteriormente,criaremosumanovakeyInternet.perf queapontaparao

nossoscript.
#vim/etc/zabbix/agent.d/internet_perf.conf
1

UserParameter=internet.perf,/etc/zabbix/externalscripts/internet_perf.sh
Finalmenteacerteaspermissesdosarquivos.

#chownroot.zabbix/etc/zabbixR
#chmod0640/etc/zabbix/internet_perf.links/etc/zabbix/agent.d/internet_perf.conf
#chmod0750/etc/zabbix/externalscripts/internet_perf.sh
Jpodemosfazerostesteslocaiseosremotosconformemostradonotpicoanterior.
Tambmjpodemoscriarasmacros,items,triggersegrficosseguindoamesmafilosofia.
Somentemudeoseguinte:paraoitemegatilhodeixeosdesabilitadosnotemplate4LinuxS.O.
LinuxehabilitesomentenohostPresentation.
ParaconcluirmoscomoutranovidadevamoscolocarnolabeldolinkdeInternetovalor
mdiodosltimos60segundosdecoleta(Figura4.116).

Captulo 4 Monitoramento voltado para disponibilidade - 226

Figura 4.116: Latncia sendo


exibida no label do link

Abraolinkeediteosvaloresdeseuscamposcomoaseguir.

Figura 4.117: Latncia de rede e trigger associados ao link com a Internet no mapa

1) Label:coloqueovalorLatncia:{Presentation:internet_perf.avg(60)}.
2) Adicioneotriggerdalatnciaquevocacaboudecriar.
Noesqueadesalvarantesdesairdomapa.Paratestar,diminuaovalordamacrode
limiteparaumvalorbembaixo.

Figura 4.118: Link no mapa


identificando status do trigger

Captulo 4 Monitoramento voltado para disponibilidade - 227

Note como o link mudoude cor(Figura 4.118) quandoo host acusoualta latncia de
Internet.

4.11.3.Exerccios
1) Desafio: Crie um script externo capaz de ler a temperatura dos processadores e
armazenlosnoZabbix.Oscriptdevereceberumparmetroindicandodequalcore
devesercoletadoatemperatura(0primeiro,1segundo,eassimpordiante).Crie
aomenosumgrficoparavisualizarovalorcoletadodoscores.

- 228

REFERNCIAS
BIBLIOGRFICAS

- 229

OLUPS, RIHARDS.Zabbix1.8NetworkMonitoring.PacketPublishing.Abril
de2010.
Homepage oficial da documentao do Zabbix,website:
http://www.zabbix.com/documentation/.Acessoem16deFevereirode2011.

- 230

AnexoI
PerformancedoSistemaOperacional

Introduo
Aquivamospassarasdicasemtricasquepodemserusadasparamonitorarasquatro
principaiscaractersticasdedesempenho.UsodeCPU,memria,throughputderedeeI/Ode
disco.EstecaptuloutilizaotemplatecompletodoGnu/Linuxparacoletadetodasasinformaes.

Processamento
Estaprimeiramtricadeperformanceque,geralmente,observadaquandoosistema
ficalento.Algumasconsideraesdevemserfeitasquandosebuscamonitoraroprocessamento
paraidentificargargalos:
1) 100%deprocessamentonoquerdizernada!
1.1) Picos de processamentos so mais corriqueiros do que imaginamos, eles
acontecem frequentemente, mas so to momentneos que nem os
percebemosmesmoemgrficoscomcurtosintervalosdecoleta.Sempreque
procurarporeles,concentreseapenasnosdelongadurao.

- 231

1.2) SevoccriargatilhosdeverificaodeCPU,faaoscomumajaneladetempo
razovel. O aconselhado que ela seja em torno dos 15 minutos, se o
processamento ficou muito alto, por tanto tempo assim, provavelmente h
algumacoisaerradanasuaaplicaoouseuhardwareestmaldimensionado.

2) QuandocoletarinformaesdeCPUvocpodesedepararcommuitasopes,aqui
voalgumasdicassobreoquefazerparadecidiroquecoletar.
2.1) Antes de olhar a porcentagem da CPU, olhe para o system load (key
system.cpu.load).Elaindicaoenfileiramentodeprocessos,oquepodeser
bempiordoquesimplesmenteterCPUaltaotempotodo.
2.2) Mantenhaaomenosumacoletageraldebaixonvel.OconsumodeCPU
dividido em vrios tipos, os mais relevantes so user (consumo realizado
pelosprocessos),system(consumorealizadopelokernel)ewait(consumo
realizado por espera de I/O, geralmente de disco). Existem outros menos
relevantes, portanto consulte a documentao do Zabbix sobre a key
system.cpu.utilparaobtermaisdetalhes.
2.3) Aomonitorarmltiploscoresindividualmente,coleteapenasoidledecadaum
deles.Raramentevocprecisardecoletasdetalhadasporncleo.
2.4) Monitore tambm o context switch pela key system.cpu.switches para
verificaronmerodevezesqueosprocessosnascem,dormem,acordame
morremnoscores,almdeindicaramigraodethreads.

Mtricasdememria
OsegundopontomaisimportantedesemonitorarnumS.O.amemria,incluindoaqui
areadetroca(swap).
1) Consumodememriapodeserbemcomplicadodesemonitorarsevocnoprestar
ateno nos tipos de memria que existem. No Gnu/Linux, por exemplo, temos a
memriadeprocessos,adebuffereadecache.Porpadroakeyvm.memory.size
nocapazdecapturaramemriadosprocessos(queaimportante).Parafazer
issovoctemquecriarumitemcalculadoquesubtraiamemriaavailable(enoa
free)dototal.

- 232

2) Monitoreamemriadeswapcomsystem.swap.sizeparadeterminaroconsumo,e
maisimportante,comsystem.swap.in e system.swap.out quemostramaleiturae
escritanamesma.AreadetrocadiretamenteligadaaoI/Odedisco(abaixo).

Throughputebandaderede
Bandapodeserumitemimportantesevocnotemumlinksuficientementegrande
paracomportarsuasnecessidades,masothroughputoquerealmentedeveserobservado.
1) Grande largura de banda com baixo throughput e alta latncia de rede indicam,
problemas de rede (provavelmente fsicos). A key net.if.in e net.if.out so as
indicadasparaisso.
2) LembresequeoZabbix,osistemaoperacionaleseusaplicativosmedemoconsumo
deredeembytesenoembits.Noentantotodososequipamentosderedeelinks
deInternetsocompradospelosegundo.Prefiraexibirmesmoassimosdadosem
bytes.Sevocrealmentetiverqueexibirembitsterquecriarumcampocalculado
quelemultiplicaovalordoitemembytes.
3) Cuidado ao estipular valores de topo dos grficos de banda para redes internas.
EnquantonoslinksdeInternetissoumaprticarecomendvel,paraconsumosde
servidoresemredesde100ou1000Mbpsosvaloresvoficartoprximosdoeixox
queaimpressoserdetrfegozero.

PerformancedeDisco
Parabancosdedados,analiseaperformancededisco.Otemplateda4Linuxfazusode
umscriptexternoquecoletadadosdebaixonvel,opadrodoZabbixaindanocapazde
coletarestesdados.
1) Noseatenhaathroughputdediscoembytes,elesvariamtantodeumhardware
para outroque difcil deestabelecerumpadro. Use mtricascomo nmerode
operaes,tempo gastoemescrita/leituraeenfileiramentodeoperaes,elesso
muitomaissignificativos.
2) Procureporpontosdeincidnciadeoperaesirregulares,seotempotodoseudisco
ficanumamdiadeoperaesederepenteelemuda,avalieoquepodeterocorrido
nesteperodo,mesmoquesejaparamenoscarga(oquepodeindicardelaysde
operao).

- 233

AnexoII
Performancedeservios

Introduo
Performancedeserviosumassuntoextensoedemandariavrioscursosapartepara
poder cobrir sua toda a sua extenso. De fato, uma parte dos cursos avanados da 4Linux
detalhamestetipodeestudo.Aquivamosapenasarranharapontadoiceberg.
Os templates completos do final do curso contm muito mais detalhes dos que os
discutidosaqui.

PostgreSQL
ObancodedadosdoPostgreSQLpossuiumsistemadetabelaschamadascatlogos.
Estastabelasarmazenamdiversasoperaesimportantes.
1) Nopercatempoolhandoestatsticasdenvelmuitobaixo.Comecepordadoscomo
nmerodeconexesedeoperaesnobanco.Noaumenteasconexesdobanco
arbitrariamente,essaumaprticaruim!

- 234

2) Procuredistinguirocomportamentodesuaaplicao.Muitasoperaesdeescritae
poucaleitura,ouviceversa,ouaindaambas!Issotornaascoisasmaisfceispara
dimensionartunnings.
3) Monitoreainstnciacomoumtodoedepoisdesaparabancosespecficos,seguido
detabelaseporltimondicesesequncias.Assimvocganhaumavisoglobaldo
sistemaantesdedepurarqualtabelavocprecisaseparar,particionar,etc.

JBoss
OservidordeaplicaesJBosstemtodosaquelesMBeansqueoZapcatdissecoupara
ns.Vamoscomentarosmaisimportantes.
1) Aplicaes java no usam fork. Eles sempre trabalham em threads, por isso
monitorarthreads(principalmenteosHTTPeAJP)vomostrarousodaJVMpara
conexes.
2) O JBoss usa datasources, que possuem poolings de conexes. Monitorar as
conexesdestespoolstambmumaboamtrica.Viaderegraumaboaaplicao,
mesmo muito ocupada, no deve usar mais do que algumas poucas dezenas de
conexes.
3) Consumo de memria heap pode indicar garbage collectors fazendo muitas
operaes(nuncacoloquemuitamemriadeheapparaasJVMs,poisoGCpode
derrubar as JVMs). Vazamentos Leaks de memrias tambm podem ser
detectadoscomestetipodemonitoramento.
4) Monitorar a rea de perm gen normalmente no necessrio, mas pode indicar
quandoredeploysacabamconsumindotodaamemriadestinadaabytecodes.

Apache
OtemplatedoApacheprecisadomod_statusativadoparacoletadeinformaes.
1) Normalmente a mtrica mais significativa o nmero de conexes e uso de
processos.
2) Verificarosprocessosemidlepodeindicarqueaconfiguraopodeserajustada
paramenos,paraconsumirmenosrecursos.

Você também pode gostar