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. Ativa a compilao do servidor. No caso presente iremos ativar esta opo, quando formos compilar apenas o agente iremos desabilit-la. Compila os binrios para sistemas distribudos. Como neste curso no abordaremos o sistema de proxy do Zabbix vamos deixar esta opo sempre desabilitada. 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.

--enable-server

--enable-proxy

--enable-agent

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 33 Opo do configure --enable-ipv6 Descrio 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. 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. 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. 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. Ativa o suporte ao back end do bando de dados PostgreSQL, vamos deix-lo habilitado. Voc pode escolher apenas um back end. 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. 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. Ativa o suporte a biblioteca de HTTP CURL. necessria para o monitoramento de servios Web e autenticao via HTTP. Ativa o suporte ao back end do bando de dados via ODBC. No recomendado. Como o anterior mas usa unixODBC ao invs de iODBC. Este pacote mais encontrado do que o iODBC. Ativa o suporte a monitoramento via SNMP usando a biblioteca net-snmp do unix. Vamos deix-la ativada. Mesmo que o anterior, mas usando a biblioteca ucd, menos comum. Vamos deix-la desativada. Ativa suporte a monitoramento via SSH e verificao de status de um servio de conexo remota segura. Vamos deix-lo ativado. 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.

--with-ibm-db2

--with-mysql

--with-oracle

--with-pgsql

--with-sqlite3

--with-jabber

--with-libcurl

--with-iodbc --with-unixodbc --with-net-snmp --with-ucd-snmp --with-ssh2

--with-openipmi

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 zabbix_get Funcionalidade 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. O daemon do agente do Zabbix que fica na memria a espera das requisies do servidor. O daemon do servidor do Zabbix. Este o componente principal de toda a infraestrutura.

zabbix_agentd

zabbix_server

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 agente principal) /etc/zabbix/agent.d/checkings.conf /etc/zabbix/agent.d/logs.conf /etc/zabbix/agent.d/network.conf /etc/zabbix/agent.d/remote_commands.conf /etc/zabbix/alert.d /etc/zabbix/externalscripts /etc/zabbix/server.d Descrio (carregado pelo arquivo

Configurao de checagens ativas e passivas do agente. Configurao de logs (local, nvel de debug, etc.) do agente. Configuraes de rede do agente. Configurao de recebimento comandos remotos no agente. Diretrio externos para scripts de de

alertas

Diretrio para scripts de extenso do agente do Zabbix. Diretrio para configuraes extras do servidor (carregado pelo arquivo principal) Configurao do back end de banco de dados do servidor. Configurao de logs (local, nvel de debug, etc.) do servidor. Configuraes de rede do servidor. Configuraes de quais daemons devem iniciar e quantos de cada um deles, alm de consumo de memria do servidor. Configurao de monitoramento distribudo do servidor. Arquivo principal de configurao do agente Arquivo principal de configurao do servidor

/etc/zabbix/server.d/database.conf /etc/zabbix/server.d/logs.conf /etc/zabbix/server.d/network.conf /etc/zabbix/server.d/process.conf

/etc/zabbix/server.d/proxy.conf /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_server.conf 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. #==================================================================== #QualportaeIPqueoagentevaisevincularparareceberchecagenspassivasdoservidor. # ListenIP=172.27.0.1 ListenPort=10050 #==================================================================== #IPoqualoagentedoZabbixirusarparaenviardados,opcionalpoisosistemausaoIP #

2 3

8 9

10

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 # #Checagenspassivassoopadro,oservidorfazoagendamentodasmtricasemanda

passivaeaativa.
2

umarequisioaoagentequeaguardapassivamente(daionome),esteentocoletaodado dosistemaeenviadevoltaaoservidor.
4

# #Umachecagemativapermitequeoagenterecebaumalistadeitensaseremmonitorados

doservidoreaoinvsdesteltimocuidardoagendamentoerequisiesoagentequetoma parasiestatarefa.
6

# #ChecagensativassoteisquandooFirewallnopermitequeoservidordemonitoramento

alcanceoagenteviaredeouquandoseutilizaumsistemademonitoramentodelogsondeo monitoramentoativoobrigatrio.
8

#==================================================================== #Quaissoosservidorespararecebimentoderequisiesouobtenodalistade Server=172.27.0.10 #==================================================================== #ComoestehostestacadastradodentrodoZabbixistonoprecisacorrsponderao

checagensativas.
10

11 12

13

hostnamedamquinaeleumastringdeidentificaodoagenteparacomoservidordo Zabbix.
14

# Hostname=Presentation

15

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

preciso

baixar

os

executveis

pelo

endereo

http://www.zabbix.com/downloads.php,localizeolinkdebinriosparaWindowscomonaFigura

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
1

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 DocumentRoot/var/lib/zabbix/frontend <Directory/> OptionsFollowSymLinks AllowOverrideNone </Directory> <Directory/var/lib/zabbix/frontend> OptionsIndexesFollowSymLinksMultiViews AllowOverrideNone Orderallow,deny allowfromall </Directory> ErrorLog${APACHE_LOG_DIR}/errorzabbixfrontend.log #Possiblevaluesinclude:debug,info,notice,warn,error,crit, #alert,emerg. LogLevelwarn CustomLog${APACHE_LOG_DIR}/accesszabbixfrontend.logcombined

3 4

5 6

10

11

12

13

14

15

16 17

18 19

20

21

22 23

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 date.timezone Significado 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). Tempo mximo que um processo do PHP pode rodar antes de ser morto. Tempo mximo que um processo do PHP pode gastar interpretando dados. O quanto uma nica instncia de execuo do PHP pode usar de memria. O mximo tamanho que uma requisio POST pode enviar ao servidor. Tamanho mximo para upload de um arquivo.

max_execution_time max_input_time memory_limit post_max_size upload_max_filesize

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 Dashboard Overview Web Latestdata Funo Menuparaacessoaomonitoramento,depoisqueoZabbixestiver completamenteconfiguradoesteomenumaisacessadodetodos. Teladecentralizaodasinformaesdemonitoramento. Permite a visualizao global ou por grupos das mtricas monitoradasedosalarmes. Visualizaodomonitoramentodosserviosdeweb(noconfundir commonitoramentodoservidorweb). Mostra os ltimos dados (e quando eles foram coletados) do monitoramentodeumhost.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 76 Menu Triggers Funo Mostraostatusdosltimostriggers(gatilhos)epermiteinterao com eles (como por exemplo dar um Acknowledge a um determinadogatilho) Mostra os ltimos eventos causados pelos triggers ou pelo autodiscovery. Visualizaoindividualdosgrficoscadastradosnoshosts. Visualizao dos screens. Telas que agrupam elementos monitorados(comomapas,grficosewidgets). Visualizaodosmapas. Hosts e elementos que foram descobertos pelo sistema de auto detecodehosts. Visualizao de SLA baseada no monitoramentodehosts,ativos e/ouservios. Inventriodehosts Hostsquefazempartedoinventrio. Menuderelatrio. Umateladeresumo(quetambmmostradanoDashboard)para avalizaodaperformancedoservidorZabbix. Relatriosdedisponibilidadeporhostsoutriggers.

Events Graphs Screens Maps Discovery ITServices

Inventory Hosts StatusdoZabbix AvaliabilityReport Report

Most busy triggers Os100triggersmaisativosnosistema. Top100 BarReport Mostradadosagregadosdentrodegrficosdebarra,porexemplo, vocpoderiaveramdiadeusodelinkporsemanaaoinvsde usarosgrficospadro. Menuparaacessoasopesdeconfiguraodemonitoramento. Gruposlgicosparadividiroshosts. Gerenciamento de templates (modelos), uma das telas que mais vamosacessarduranteocurso. Gerenciamentodoshostsmonitorados. Tela para colocar ou tirar um determinado host em estado de manuteno. Configuraodecenriosdetestedeserviosweb. Gerenciamentodeaesqueostriggersdevemtomaraoalertarem algum comportamento (exemplo: enviar um email quando o servidorXYZcair). Gerenciamentoeconstruodescreens. Gerenciamentoeconstruodeslideshows. Gerenciamentoeconstruodemapas.

Configuration Hostgroups Templates Hosts Maintenance Web Actions

Screens Slides Maps

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 77 Menu ITServices Discovery General DM Authentication Users MediaTypes Scripts Audit Queue Notifications Locales Instalation Funo GerenciamentodosserviosparaclculodeSLA Gerenciamentodoautodiscovery. Menuparaacessosopesdeadministraodofrontend. Opesglobaisdofrontend. Configuraodemonitoramentodistribudo. Mtodosdeautenticao. Gerenciamentodeusuriosparaacessoaofrontend. Gerenciamentodeformasdealertas(emails,SMS,etc.) Gerenciamentodescriptsparatestesonlinepelofrontend. Logs de auditoria de aes dos usurios e de eventos gerados pelasActions. Filadealertasaseremacknowledged. Notificaesenviadasporusurio/tempo. Personalizao das strings de exibio para traduo (portugus brasileirojestapronto,portantonoprecisamosmexeraqui). Telasdeinstalao(asmesmasquepassamosagoraapoucopara configurarofrontend).

Administration

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 sysadmin winadmin javaeng dba Descrio Administrador sistemas UNIX Grupos de Network Administrators, UNIX Administrators, Web Administrators Windows

Administrador de Network Administrators, sistemas Windows Administrators Administrador JBoss AS Administrador banco de dados do JBoss Administratros do Database Administrators

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 sysadmin readwrite readwrite read only readwrite

Switch

Windows 2003

Zabbix server

read only read only read only read only read only read only read only readwrite read only readwrite readwrite read only

winadmin read only read only read only read only readwrite dba javaeng read only readwrite

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

read only read only readwrite

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 Link Server Disable Server Off Server Unknown Switch Disable Switch Off Switch On Switch Unknown Tabela 7: Lista de imagens iniciais para o mapa

cone 48_g_network_on.png 48_g_srv_tower_disable.png 48_g_srv_tower_off.png 48_g_srv_tower_unknown.png 48_g_switch_disable.png 48_g_switch_off.png 48_g_switch_on.png 48_g_switch_unknown.png

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. # Defaultsenv_reset #Hostaliasspecification #Useraliasspecification #Cmndaliasspecification #Userprivilegespecification rootALL=(ALL)ALL #Allowmembersofgroupsudotoexecuteanycommand

7 8

9 10

11 12

13 14

15 16

17

18 19

Captulo 4 Monitoramento voltado para disponibilidade - 134


20

#(Notethatlaterentriesoverridethis,soyoumightneedtomove #itfurtherdown) %sudoALL=(ALL)ALL # #includedir/etc/sudoers.d zabbixALL=NOPASSWD:/usr/bin/traceroute Salveoarquivoetestenovamenteocomandousandoagoraosudoantesdele.

21

22

23

24

25 26

#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 8080/TCP 8080/TCP (HTTP) 80/TCP 5432/TCP 389/TCP Application Database Database Apache PostgreSQL OpenLDAP Host Todos os Linux Presentation Presentation Template S.O. Linux Varnish Apache JBoss base ssh http http tcp,8009 http,8080 http tcp,5432 ldap Key

Apache (proxy) JBoss (Aplicativo) Apache (Aplicativo) PostgreSQL OpenLDAP

8009/TCP (AJP) Application

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 Application Database JBoss AS Presentation Switch Windows2003 Zabbixsrv Tabela 9: Responsveis de cada host Responsveis sysadmin, javaeng sysadmin, dba javaeng sysadmin sysadmin, winadmin winadmin sysadmin

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 0 1 2 3 4 5 6 7 255 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. Rodando Pausado Incio requisitado Pausa requisitada Continuao requisitada Parada requisitada Parado Desconhecido Servio no existe (no esta cadastrado na lista de servios do Windows) Estado

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. # #Liga/Desligaorecursodecomandosremotosdoagente. # #Estetipodefeaturevemdesligadaporpadrodevidoaoriscodesegurana #queelapodeapresentarsemalconfigurada. # #NotequeousuriodoZabbixtemqueterdireitosdeexecuodocomandoem

3 4

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

10

Captulo 4 Monitoramento voltado para disponibilidade - 199


11

#questoenviadopeloservidor.Paraissooueleexecutadocomoroot #(desaconselhvel)ouchamaexecutveiscomsuid(desaconselhvel)ouutiliza #sudopararodaroscomandos.Esteltimoaopomaisseguradastrs,mas #requerconfiguraesextrasnoarquivosudoers. # EnableRemoteCommands=1 # #Nocasodehabilitadaaexecuodecomandosremotos,aconselhveldeixar #estaopoativadaparaauditoriadosistema.Elavairegistrarnoarquivo #delogsdoagentequandoequalcomandofoiexecutado(ounomnimofoi #tentado). # LogRemoteCommands=1

12

13

14

15

16

17 18

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

20

21

22

23

24

#/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 e 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 BASE="/etc/zabbix" CONF=$BASE/pgaccess.conf QUERY_PING="SELECT1;" ERROR_LOG=/var/log/zabbix/pgsql_ping.error functionshowerror{ echoe"PostgreSQLpingerror:\n$(cat$ERROR_LOG)"1>&2 } if[r$CONF];then .$CONF fi PING_OK=1 PING_FAIL=0 PING=$(psqlh$HOSTc"$QUERY_PING"postgrestA2>$ERROR_LOG) RETURN=$? if[[$RESULTne0]];then showerror exit1 else if[[$PINGeq1]];then echo$PING_OK else

2 3

7 8

10

11 12

13

14

15 16

17

18

19

20 21

22

23

24

25

26

27

Captulo 4 Monitoramento voltado para disponibilidade - 221


28

showerror echo$PING_FAIL fi fi 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

29

30

31

32 33

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 BASE=/etc/zabbix CONF=$BASE/internet_perf.links BC=$(whichbc) functionshowerror{ echoe"Checklinkerror:$1"1>&2 }

2 3

6 7

Captulo 4 Monitoramento voltado para disponibilidade - 224


10 11

if[[!x$BC]];then showerror"aplicativobcnoinstalado" exit1 fi if[[!r$CONF]];then showerror"arquivo$CONFnoexisteounoestaacessvelparaleitura" exit1 fi NTESTS=$(wcl$CONF|cutf1d"") SUM_AVG=0 fordestinationin$(cat$CONF);do PING=$(pingnc1w1W1$destination2>&1) if[[$?eq0]];then AVG=$(echo$PING|cutf34d""|cutf2d"/") SUM_AVG=$(echo"scale=3;$AVG+$SUM_AVG;"|bc) else NTESTS=$(($NTESTS1)) showerror"pingpara$destinationfalhoucomerro:$PING" fi done if[[$NTESTSeq0]];then showerror"Todosostestesfalharam" exit1 fi echo"scale=3;$SUM_AVG/$NTESTS/1000;"|bc exit0

12

13

14

15 16

17

18

19

20 21

22

23

24

25

26

27

28

29

30

31

32

33 34

35

36

37

38 39

40 41

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.