You are on page 1of 224

Solues de Monitoramento com Zabbix

Valter Douglas Lisba Jnior

www.4linux.com.br

-2

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

2.4. Obtendo os fontes do Zabbix...........................................................................................26 2.5. Preparando o banco de dados.........................................................................................27


2.5.1. Instalao................................................................................................................................27 2.5.2. Criando o usurio e o banco...................................................................................................28 2.5.3. Carga inicial............................................................................................................................29 2.5.4. Concedendo as permisses necessrias ao usurio...............................................................30

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


2.6.1. Dependncias de compilao..................................................................................................33 2.6.2. Compilando e instalando.........................................................................................................34 2.6.3. Servios de rede......................................................................................................................36 2.6.4. Arquivos de configurao.......................................................................................................36 2.6.5. Testando sua instalao..........................................................................................................38 2.6.6. Scripts de boot........................................................................................................................39

2.7. Instalao do agente Zabbix via compilao..................................................................40


2.7.1. Exerccio: compile e instale o agente nas VM com Linux......................................................40 2.7.2. Acesso ao agente pelo servidor..............................................................................................40 2.7.3. Exerccio sobre instalao de agente em Linux.....................................................................44

2.8. Instalando o agente em ambientes Windows..................................................................44


2.8.1. Executando o agente como servio........................................................................................48

2.9. Instalao do agente Zapcat para JBoss.........................................................................49


2.9.1. Obteno do binrio................................................................................................................50 2.9.2. Deployment..............................................................................................................................50 2.9.3. Opes de inicializao do JBoss............................................................................................51 2.9.4. Liberando o firewall para acesso ao Zapcat...........................................................................52

-3
2.10. Testando o acesso via SNMP.........................................................................................52
2.10.1. Conceitos de SNMP..............................................................................................................53

2.11. Instalando o servidor Zabbix via pacote.......................................................................55 2.12. Preparando o servidor web............................................................................................55
2.12.1. Instalao do Apache e PHP5...............................................................................................55 2.12.2. Configurao do Virtual Host...............................................................................................55 2.12.3. Configurando o front end......................................................................................................58

2.13. Exerccios de reviso.....................................................................................................69 Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end.......................................71 3.1. Objetivos...........................................................................................................................71 3.2. Introduo........................................................................................................................71
3.2.1. Organizao do front end.......................................................................................................72

3.3. Gerenciamento de usurios.............................................................................................74


3.3.1. Cadastrando os usurios do LDAP no Zabbix........................................................................77

3.4. Meios de alertas...............................................................................................................80


3.4.1. Correio eletrnico...................................................................................................................80 3.4.2. Mensagens instantneas.........................................................................................................81 3.4.3. Apontando os alertas aos usurios.........................................................................................81 3.4.4. Boas prticas com Media types..............................................................................................83

3.5. Hosts, host groups e templates.......................................................................................84


3.5.1. Templates para o caso de estudo............................................................................................85 3.5.2. Vnculo entre templates..........................................................................................................86 3.5.3. Backup dos templates.............................................................................................................87 3.5.4. Hosts........................................................................................................................................88 3.5.5. Gerenciando os Host Groups..................................................................................................88 3.5.6. Criando um novo host.............................................................................................................89 3.5.7. Fazendo backup dos hosts......................................................................................................91 3.5.8. Configurando uma permisso de acesso................................................................................91 3.5.9. Exerccios sobre usurios, hosts, grupos e permisses.........................................................93

3.6. Mapas...............................................................................................................................94
3.6.1. Importando imagens para o mapa..........................................................................................94 3.6.2. Criando um mapa....................................................................................................................95 3.6.3. Adicionando um elemento.......................................................................................................98 3.6.4. Editando um elemento do mapa.............................................................................................99 3.6.5. Salvando o mapa...................................................................................................................101 3.6.6. Adicionando os outros elementos.........................................................................................101 3.6.7. Criando e editando links.......................................................................................................105 3.6.8. Exerccios sobre ...................................................................................................................106 3.6.9. Exerccios sobre Mapas........................................................................................................108

-4
3.7. Templates, applications e items.....................................................................................109
3.7.1. Criando um Application e um Item dentro de um template................................................110 3.7.2. Interdependncia de templates............................................................................................113

3.8. Associando os templates aos hosts................................................................................114 3.9. Ativando um host............................................................................................................118


3.9.1. Throubleshooting para items com problemas......................................................................119

Captulo 4 Monitoramento voltado para disponibilidade..........................................................................123 4.1. Objetivos.........................................................................................................................123 4.2. Introduo......................................................................................................................124 4.3. Checagens manual via front end...................................................................................124
4.3.1. Adequando o script de traceroute........................................................................................127 4.3.2. Criando novos comandos para o menu.................................................................................129 4.3.3. Exerccios..............................................................................................................................132

4.4. Checando disponibilidade via protocolo ICMP.............................................................133


4.4.1. Como funciona o ping ICMP.................................................................................................133 4.4.2. Visualizando o ping ICMP no Front end...............................................................................134 4.4.3. Criando um gatilho de parada de host.................................................................................136 4.4.4. Lidando com os eventos........................................................................................................141 4.4.5. Criando uma action para envio de alerta.............................................................................145 4.4.6. Exerccios..............................................................................................................................148 4.4.7. Boas prticas com triggers...................................................................................................149

4.5. Checagem genrica de portas e servios......................................................................151


4.5.1. Conexes TCP e handshakes................................................................................................152 4.5.2. Criando um teste de servio via varredura de portas.........................................................154 4.5.3. Exerccio sobre checagem de portas....................................................................................156

4.6. Validao de pginas WEB.............................................................................................157


4.6.1. Disponibilidade do site..........................................................................................................157 4.6.2. Exerccios..............................................................................................................................162

4.7. Checando disponibilidade via agentes..........................................................................163


4.7.1. Checando se o agente esta operacional...............................................................................163 4.7.2. Criando um trigger com a funo nodata()..........................................................................165 4.7.3. Exerccios..............................................................................................................................169

4.8. Tempo on-line e ltima inicializao do S.O..................................................................169


4.8.1. Trigger para alerta de reinicializao..................................................................................175 4.8.2. Exerccios..............................................................................................................................177

4.9. Checando servios pelo agente.....................................................................................177


4.9.1. Verificando os processos ativos na memria........................................................................178 4.9.2. Checagem de portas e servios localmente via agente.......................................................184 4.9.3. Exerccios..............................................................................................................................189

-5
4.9.4. Verificando servios no Windows.........................................................................................189 4.9.5. Restabelecendo servios offline via Zabbix.........................................................................203 4.9.6. Exerccios..............................................................................................................................207

4.10. Medindo a sade de sua rede...................................................................................207


4.10.1. Latncia de rede..................................................................................................................207 4.10.2. Macro para o limiar da latncia de rede............................................................................208 4.10.3. Nosso primeiro grfico.......................................................................................................212 4.10.4. Personalizando o mapa para exibio de informaes......................................................216 4.10.5. Exerccios............................................................................................................................218

4.11. Espao disponvel em disco.........................................................................................218


4.11.1. Grficos para espao em disco...........................................................................................221 4.11.2. Gatilhos para alertas de espao em disco..........................................................................224 4.11.3. Exerccios............................................................................................................................225

4.12. Scripts externos...........................................................................................................225


4.12.1. Checando a disponibilidade do PostgreSQL......................................................................226 4.12.2. Medindo a disponibilidade de um link Internet.................................................................230 4.12.3. Exerccios............................................................................................................................233

REFERNCIAS BIBLIOGRFICAS......................................................................................................................234 Anexo I Performance do Sistema Operacional..................................................................................236


Introduo.......................................................................................................................................236 Processamento.................................................................................................................................236 Mtricas de memria......................................................................................................................237 Throughput e banda de rede...........................................................................................................238 Performance de Disco.....................................................................................................................238

Anexo II Performance de servios.......................................................................................................239


Introduo.......................................................................................................................................239 PostgreSQL......................................................................................................................................239 JBoss................................................................................................................................................240 Apache.............................................................................................................................................240

ndice de tabelas
Tabela 2.1: Opes de compilao do Zabbix........................................................................33 Tabela 2.2: Binrios de uma instalao de servidor e agente do Zabbix..............................35 Tabela 2.3: Arquivos e diretrios de configurao................................................................37 Table 3.1: Usurios do cenrio do curso................................................................................78 Table 4.1: Valores da key service_state................................................................................196

-6

ndice de Figuras
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........................................................45 Figura 2.15: Instalando os executveis no Windows.............................................................46 Figura 2.16: Diretrio de configurao do Zabbix no Windows............................................46 Figura 2.17: Configurando o agente no Windows..................................................................47 Figura 2.18: Desbloqueando o agente no Windows...............................................................48 Figura 2.19: O agente do Zabbix sendo executado como servio automtico......................49 Figura 2.20: Tela de entrada do Zapcat.................................................................................52 Figura 2.21: Configurao do front end (1/10)......................................................................58 Figura 2.22: Configurao do front end (2/10)......................................................................59 Figura 2.23: Configurao do front end (3/10)......................................................................60 Figura 2.24: Configurao do front end (4/10)......................................................................62 Figura 2.25: Configurao do front end (5/10)......................................................................63 Figura 2.26: Configurao do front end (6/10)......................................................................64 Figura 2.27: Configurao do front end (7/10)......................................................................65 Figura 2.28: Configurao do front end (8/10)......................................................................66 Figura 2.29: Configurao do front end (9/10)......................................................................67 Figura 2.30: Configurao do front end (10/10)....................................................................68 Figura 2.31: Tela inicial do Zabbix aps o primeiro login.....................................................68 Figura 3.1: Gerenciamento de usurios do Zabbix................................................................75 Figura 3.2: Editando o Admin.................................................................................................76 Figura 3.3: Configurando a autenticao LDAP....................................................................77 Figura 3.4: Novo Grupo JBoss Administrators.......................................................................78 Figura 3.5: Novo usurio Sysadmin.......................................................................................79 Figura 3.6: Media Types.........................................................................................................80

-7
Figura 3.7: Configurando o Zabbix para enviar e-mails........................................................81 Figura 3.8: Configurando o Zabbix para enviar mensagens instantneas...........................81 Figura 3.9: Media Types de um usurio sem apontamentos.................................................82 Figura 3.10: Adicionando o Media Type Email a um usurio................................................82 Figura 3.11: Adicionando um media type Jabber a um usurio............................................83 Figura 3.12: Media Types de um usurio aps o cadastro....................................................83 Figura 3.13: Selecionando todos os templates pr cadastrados...........................................85 Figura 3.14: Excluindo os templates selecionados................................................................85 Figura 3.15: Criando um novo template.................................................................................86 Figura 3.16: Cadastrando um novo template.........................................................................86 Figura 3.17: Vinculando um template a outro.......................................................................87 Figura 3.18: Exportando um template...................................................................................87 Figura 3.19: Layout dos hosts a serem monitorados.............................................................88 Figura 3.20: Como criar um novo grupo de hosts.................................................................89 Figura 3.21: Novo host group.................................................................................................89 Figura 3.22: Host pr-cadastrado no front end na tela de Hosts..........................................89 Figura 3.23: Boto para criar um host...................................................................................90 Figura 3.24: Todos os hosts do cenrio cadastrados.............................................................91 Figura 3.25: Concedendo permisses de acesso (1/4)...........................................................91 Figura 3.26: Concedendo permisses de acesso (2/4)...........................................................92 Figura 3.27: Concedendo permisses de acesso (3/4)...........................................................92 Figura 3.28: Concedendo permisses de acesso (4/4)...........................................................93 Figura 3.29: Tela inicial das imagens.....................................................................................94 Figura 3.30: Importando uma nova imagem..........................................................................95 Figura 3.31: Imagem do primeiro mapa a ser criado............................................................96 Figura 3.32: Mapas pr-cadastrados......................................................................................96 Figura 3.33: Novo mapa..........................................................................................................97 Figura 3.34: Barra de ferramentas para edio de mapas....................................................98 Figura 3.35: Criando um novo elemento................................................................................99 Figura 3.36: Posicionando um novo elemento com o mouse.................................................99 Figura 3.37: Editando um elemento na tela.........................................................................100 Figura 3.38: Boto Save do mapa.........................................................................................101 Figura 3.39: Dialogo de salvar mapa....................................................................................101 Figura 3.40: Outros elementos grficos a serem adicionados............................................102 Figura 3.41: Editando o elemento que representa o host Presentation.............................103 Figura 3.42: Detalhes do host switch dentro do mapa........................................................104 Figura 3.43: Hosts acrescentados no mapa.........................................................................105 Figura 3.44: Criando um novo link entre o host Presentation e a imagem Internet..........106 Figura 3.45: Editando as propriedades do novo link...........................................................107

-8
Figura 3.46: Link entre o host Presentation e o Switch......................................................108 Figura 3.47: Mapa final.........................................................................................................109 Figura 3.48: Templates e seus elementos............................................................................109 Figura 3.49: Criando um application (1/4)...........................................................................110 Figura 3.50: Criando um application (2/4)...........................................................................110 Figura 3.51: Criando um application (3/4)...........................................................................110 Figura 3.52: Criando um application (4/4)...........................................................................110 Figura 3.53: Criando seu primeiro item (1/3)......................................................................111 Figura 3.54: Criando seu primeiro item (2/3)......................................................................111 Figura 3.55: Criando seu primeiro item (3/3)......................................................................113 Figura 3.56: Campo para associao de templates.............................................................113 Figura 3.57: Tela para escolha de templates.......................................................................113 Figura 3.58: Template associado..........................................................................................113 Figura 3.59: Template associado na lista de templates.......................................................114 Figura 3.60: Inter-relao dos templates base....................................................................114 Figura 3.61: Associando o template do JBoss ao host JBoss AS (1/6).................................114 Figura 3.62: Associando o template do JBoss ao host JBoss AS (2/6).................................114 Figura 3.63: Associando o template do JBoss ao host JBoss AS (3/6).................................115 Figura 3.64: Associando o template do JBoss ao host JBoss AS (4/6).................................115 Figura 3.65: Associando templates a hosts (5/11)...............................................................115 Figura 3.66: Associando o template do JBoss ao host JBoss AS (6/6).................................115 Figura 3.67: Templates para Windows e SNMP associados aos seus respectivos hosts. . .115 Figura 3.68: Associando um template a mltiplos hosts simultaneamente (1/4)..............117 Figura 3.69: Associando um template a mltiplos hosts simultaneamente (2/4)..............117 Figura 3.70: Associando um template a mltiplos hosts simultaneamente (3/4)..............118 Figura 3.71: Associando um template a mltiplos hosts simultaneamente (4/4)..............118 Figura 3.72: Todos os templates associados aos hosts do cenrio....................................118 Figura 3.73: Host presentation no monitorado..................................................................119 Figura 3.74: Dialogo de confirmao de ativao...............................................................119 Figura 3.75: Host presentation monitorado.........................................................................119 Figura 3.76: Item no suportado..........................................................................................120 Figura 3.77: Item suportado e ativo.....................................................................................122 Figura 4.1: Menu de Ferramentas acessado pelo mapa......................................................125 Figura 4.2: Sada de um comando ping................................................................................125 Figura 4.3: Sada de um comando que falhou do traceroute..............................................126 Figura 4.4: Sada do traceroute adequando a nova necessidade .......................................129 Figura 4.5: Criando um novo script para testar portas SSH (1/2)......................................130 Figura 4.6: Criando um novo script para testar portas SSH (2/2)......................................130 Figura 4.7: Nova entrada de menu com o script criado......................................................131

-9
Figura 4.8: Resultado do comando ativado no host.............................................................132 Figura 4.9: Diagrama de comportamento do echo ICMP....................................................133 Figura 4.10: Hosts ativos com ping ICMP em funcionamento............................................134 Figura 4.11: Um value maps de estado de servios............................................................134 Figura 4.12: Editando o value map para nossa necessidade...............................................135 Figura 4.13: Value map editado e pronto para uso..............................................................135 Figura 4.14: Selecionando um value map no trigger..........................................................135 Figura 4.15: Values maps no overview.................................................................................136 Figura 4.16: Pausando o host Database...............................................................................137 Figura 4.17: Host database parado no overview.................................................................137 Figura 4.18: Criando um trigger para a parada do host (1/9).............................................138 Figura 4.19: Criando um trigger para a parada do host (2/9).............................................138 Figura 4.20: Criando um trigger para a parada do host (3/9).............................................138 Figura 4.21: Criando um trigger para a parada do host (4/9).............................................138 Figura 4.22: Criando um trigger para a parada do host (5/9).............................................139 Figura 4.23: Criando um trigger para a parada do host (6/9).............................................139 Figura 4.24: Criando um trigger para a parada do host (7/9).............................................140 Figura 4.25: Criando um trigger para a parada do host (8/9).............................................140 Figura 4.26: Criando um trigger para a parada do host (9/9).............................................141 Figura 4.27: Indicao de problemas no Dashboard...........................................................141 Figura 4.28: Overview com indicao dos items com alerta...............................................142 Figura 4.29: Overview com visualizao dos triggers ativos..............................................142 Figura 4.30: Mapa indicando o host Database como down.................................................143 Figura 4.31: Tela de Events, indicando a queda e o retorno dos hosts..............................143 Figura 4.32: Tela de acknowledgement...............................................................................144 Figura 4.33: Acknowledge (confirmao) aplicado..............................................................144 Figura 4.34: Criando um action para enviar o alerta (1/9).................................................145 Figura 4.35: Criando um action para enviar o alerta (2/9).................................................145 Figura 4.36: Criando um action para enviar o alerta (3/9).................................................146 Figura 4.37: Criando um action para enviar o alerta (4/9).................................................146 Figura 4.38: Criando um action para enviar o alerta (5/9).................................................146 Figura 4.39: Criando um action para enviar o alerta (6/9).................................................146 Figura 4.40: Criando um action para enviar o alerta (7/9).................................................147 Figura 4.41: Criando um action para enviar o alerta (8/9).................................................147 Figura 4.42: Criando um action para enviar o alerta (9/9).................................................147 Figura 4.43: Mensagens de alerta recebidas no Evolution.................................................148 Figura 4.44: Reiniciando o host Database...........................................................................149 Figura 4.45: Lgica de um gatilho com tempo de segurana.............................................150 Figura 4.46: Simple check para o SSH................................................................................155

- 10
Figura 4.47: Overview exibindo os servios de SSH...........................................................156 Figura 4.48: Criando um cenrio para disponibilidade Web (1/6)......................................158 Figura 4.49: Criando um cenrio para disponibilidade Web (2/6)......................................158 Figura 4.50: Criando um cenrio para disponibilidade Web (3/6)......................................159 Figura 4.51: Criando um cenrio para disponibilidade Web (4/6)......................................160 Figura 4.52: Criando um cenrio para disponibilidade Web (5/6)......................................161 Figura 4.53: Criando um cenrio para disponibilidade Web (6/6)......................................161 Figura 4.54: Visualizando a checagem Web.........................................................................161 Figura 4.55: Detalhes do monitoramento Web....................................................................161 Figura 4.56: Grfico de velocidade de download para o cenrio Web................................162 Figura 4.57: Grfico de tempo de resposta para o cenrio Web.........................................162 Figura 4.58: Novo item para monitorar o agente................................................................164 Figura 4.59: Copiando o item de ping de agente para o template do JBoss (1/2)..............164 Figura 4.60: Copiando o item de ping de agente para o template do JBoss (2/2)..............165 Figura 4.61: Criando um trigger para o agent.ping (1/5)....................................................166 Figura 4.62: Criando um trigger para o agent.ping (2/5)....................................................166 Figura 4.63: Criando um trigger para o agent.ping (3/5)....................................................167 Figura 4.64: Criando um trigger para o agent.ping (4/5)....................................................167 Figura 4.65: Criando um trigger para o agent.ping (5/5)....................................................167 Figura 4.66: Trigger para o agent ping criado e ativo........................................................168 Figura 4.67: Trigger de agente ativado...............................................................................168 Figura 4.68: Dependncia entre triggers evitando que o gatilho filho seja ativado..........168 Figura 4.69: Item para tempo de uptime.............................................................................172 Figura 4.70: Uptime via Zapcat............................................................................................173 Figura 4.71: Uptime via SNMP.............................................................................................173 Figura 4.72: Overview exibindo os uptimes a partir do agente padro, Zapcat e SNMP..174 Figura 4.73: Um trigger para a reinicializao de um host................................................177 Figura 4.74: Item para verificao de nmero de processos..............................................182 Figura 4.75: Overview refletindo o nmero de processos...................................................182 Figura 4.76: Trigger para queda do daemon.......................................................................183 Figura 4.77: Teste de queda do sshd....................................................................................184 Figura 4.78: Reflexo da queda do daemon SSH no overview..............................................184 Figura 4.79: Item para verificao da porta local...............................................................185 Figura 4.80: Fluxograma da dependncia entre triggers para anlise de servios...........186 Figura 4.81: Trigger para verificao da porta local...........................................................188 Figura 4.82: Trigger para verificao de porta remota.......................................................188 Figura 4.83: Servio telnet do Windows..............................................................................189 Figura 4.84: Habilitando o servio de telnet do Windows...................................................190 Figura 4.85: Ativando o servio de telnet............................................................................190

- 11
Figura 4.86: Processo do telnet na memria.......................................................................195 Figura 4.87: Liberando o telnet no firewall do Windows (1/3)............................................198 Figura 4.88: Liberando o telnet no firewall do Windows (2/3)............................................199 Figura 4.89: Liberando o telnet no firewall do Windows (3/3)............................................200 Figura 4.90: item para monitorar servios Windows...........................................................202 Figura 4.91: Estado do servio Telnet no Overview............................................................203 Figura 4.92: Action para parada do SSH (1/3).....................................................................205 Figura 4.93: Action para parada do SSH (2/3).....................................................................205 Figura 4.94: Action para parada do SSH (3/3).....................................................................206 Figura 4.95: Comando remoto para o action de parada do servio de SSH.......................206 Figura 4.96: Item para latncia de rede...............................................................................208 Figura 4.97: Macro para latncia de rede............................................................................209 Figura 4.98: Trigger para latncia de rede usando a macro...............................................212 Figura 4.99: Grfico para medir a latncia de rede............................................................213 Figura 4.100: Criando um grfico de latncia de rede........................................................214 Figura 4.101: Adicionando mtricas ao grfico...................................................................215 Figura 4.102: Mapa com labels personalizadas exibindo dados.........................................217 Figura 4.103: Exemplo de labels com valores de mtricas.................................................217 Figura 4.104: Exemplo de grfico de latncia de servios para exerccios........................218 Figura 4.105: Macro para limite de espao em disco utilizado...........................................219 Figura 4.106: Primeiro item de espao em disco.................................................................220 Figura 4.107: Items a serem clonados para espao em disco.............................................221 Figura 4.108: Boto para clonar items.................................................................................221 Figura 4.109: Grfico de pizza para exibio de espao livre e ocupado...........................222 Figura 4.110: Criando um grfico de pizza..........................................................................222 Figura 4.111: Grfico de histrico de espao em disco.......................................................223 Figura 4.112: Criando o grfico de histrico de uso de disco.............................................223 Figura 4.113: Trigger para clculo de espao em disco......................................................224 Figura 4.114: Trocando o template do host database para o PostgreSQL.........................229 Figura 4.115: Disponibilidade do PostgreSQL ativa no database.......................................230 Figura 4.116: Latncia sendo exibida no label do link........................................................232 Figura 4.117: Latncia de rede e trigger associados ao link com a Internet no mapa......233 Figura 4.118: Link no mapa identificando status do trigger...............................................233

Captulo 1 Conhecendo o Zabbix - 12

Captulo 1 Conhecendo o Zabbix

1.1. Objetivos
1) Apresentar a ferramento ao aluno. 1.1) Como front end organiza os componentes dentro do Zabbix. 1.2) Componentes visuais de monitoramento. 1.3) Alertas de incidentes. 1.4) Reinicializao de servios 2) Mostrar ao aluno onde obter informaes.

1.2. Conhecendo a ferramenta


Siga os passos indicados pelo professor para acesso ao exemplo pronto na mquina dele. Voc vai fazer um passo-a-passo conhecendo a ferramenta como um usurio comum (no superusurio).

Captulo 1 Conhecendo o Zabbix - 13

1.3. Comunidades e forums


O Zabbix tem uma documentao on-line que ser usada durante o curso para consultas. O link de acesso http://www.zabbix.com/documentation/. As comunidades tambm mantm uma srie de forums em

http://www.zabbix.com/forum/. Em destaque os seguinte: Zabbix announcements: Anncios e novas verses Zabbix help: frum principal de ajuda Zabbix cookbook: vrias configuraes prontas postadas e comentadas. Muito til. Zabbix throubleshooting: se um problema persiste, este o local para postar erros e solues. Zabbix em portugus y em espanhol: frum em portugus e espanhol, til quando voc no l ingls muito bem.

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

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema

2.1. Objetivos
3) Preparar o ambiente de recebimento de alertas: 3.1) Configurar o Evolution para receber e-mails de alertas; 3.2) Configurar o Pidgin para receber mensagens instantneas de alertas. 4) Preparar o ambiente para instalar o servidor do Zabbix: 4.1) Obter os fontes da ferramenta; 4.2) Preparar o PostgreSQL para servir de back end. 5) Instalar o servidor e agente: 5.1) Compilar o servidor e agente na mquina destinada a ser o monitorador; 5.2) Compilar e instalar o agente nas outras mquinas Linux; 5.3) Instalao dos binrios dentro do Windows 2003 (com inicializao do agente como servio); 5.4) Executar deploy do agente Zapcat no JBoss para monitoramento do

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 15 servidor de aplicaes. 5.5) Testar o acesso ao SNMP de um switch a partir do monitorador. 6) Configurao de um virtual host dentro do Apache para o incluindo modificao dos parmetros do PHP. front end,

2.2. Introduo
Este captulo apresenta todas as tarefas relacionadas a criao da base de sua soluo de monitoramento. Aqui onde ser abordado a maior parte do conhecimento tcnico de console Linux, deploying em JBoss, servios de Windows e acesso SNMP, visando incutir as competncias necessrias para que, sozinho, voc seja capaz de reproduzir estes passos em um ambiente de produo. Alm disso, sero vistos os primeiros passos na utilizao e familiarizao com a interface web do Zabbix, mostrando como gerenciar os elementos mais bsicos da ferramenta: usurios, hosts, templates, grupos de hosts e mapas.

2.3. Configurando os componentes de recebimento de alertas


Por padro o Zabbix possui quatro formas de alertas embutidos dentro de seu sistema: e-mails, cliente jabber, SMS via modem GSM e SMS via servio de torpedos. De todos, o ltimo no muito til aqui no Brasil, devido seguir os padres das operadoras no Canad e Estados Unidos. Dos restantes vamos ver o funcionamento do sistema de correios e de jabber dentro da sala de aula, devido a natureza do hardware, a emulao das mquinas virtuais do cenrio e custos de mensagem no abordamos o uso dentro do nosso cenrio com SMS. No entanto temos um apndice que cobre o sistema de SMS com throubleshooting e dicas de configurao. Receber mensagens por cliente de e-mail a maneira mais tradicional de

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 16 todas. Para caso de estudos precisamos configurar o evolution, cliente de e-mail padro do Gnome. Abra o evolution pelo menu principal do Gnome e siga os passos descritos a seguir.

2.3.1. Configurando o cliente de correio eletrnico

Figura 2.1: Configurao do evolution (1/10)

Esta apenas um tela de boas vindas, clique em Avanar.

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

Figura 2.2: Configurao do evolution (2/10)

No h nada para ser restaurado, clique novamente em Avanar.

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 cenrio possui. Preencha os campos como abaixo para configurar a primeira conta e, em seguida, clique em Avanar.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 19 1) Nome Completo: System administrator 2) Endereo de e-mail: sysadmin@curso468.4linux.com.br.

Figura 2.4: Configurao do evolution (4/10)

1) Tipo de Servidor: devemos escolher POP, que o recurso implantado para recepo de e-mails no cenrio. 2) Servidor: o endereo externo do servidor de e-mail. 3) Nome do usurio: O primeiro usurio que usaremos o sysadmin. 4) Lembrar senha: para comodidade dos testes em curso ative o recurso de armazenamento de senha. Esta opo no segura para ser usada em produo! Mas como no curso os usurios so fictcios e possuem a senha 123456 isso no vai nos impactar.

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

Figura 2.5: Configurao do evolution (5/10)

Nesta tela, configure o recebimento automtico a cada 1 minuto, assim no precisamos ficar esperando e-mails chegarem e, tambm no precisamos ficar clicando em Enviar/Receber a todo momento.

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

Figura 2.6: Configurao do evolution (6/10)

Apesar de no utilizar o envio de e-mail sob o ponto de vista do usurio, interessante configurar o SMTP para averiguar se os e-mails esto caminhando dentro do cenrio. 1) No Tipo de Servidor escolha SMTP. 2) No Servidor coloque o mesmo endereo de e-mail que colocamos no POP3. No reproduza este comportamento de aceite de e-mails sem autenticao em produo! O servidor de correio eletrnico dentro do cenrio apenas um meio de sabermos que as mensagens de alertas do Zabbix esto sendo enviadas por e-mail.

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 exibio no Evolution.

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

Figura 2.8: Configurao do evolution (8/10)

Esta apenas uma tela de finalizao, clique em Aplicar.

Figura 2.9: Configurao do evolution (9/10)

Torne o Evolution o seu cliente de e-mail padro.

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

Figura 2.10: Configurao do evolution (10/10)

Na primeira vez que voc entrar ele ir pedir a senha (123456) do usurio, digite-a e verifique se no houve nenhum erro. No h nenhum e-mail na caixa de mensagens do sysadmin, logo nenhum mensagem vai aparecer. Agora que o Evolution esta funcionamento, acesse o menu Editar Preferncias e clique no cone Contas de Correio a esquerda. Atravs do boto Adicionar cadastre mais trs contas seguindo os mesmos passos que anteriormente, mudando apenas os nomes e usurios. As contas a serem acrescentadas so Windows Administrator (winadmin), Java Engineer (javaeng) e DBA (dba). Aps o trmino, escolha duas contas e teste o envio de mensagens entre elas.

2.3.2. Mensagens instantneas


Receber mensagens de alertas via Instant Messaging til em empresas que possuem um sistema interno de IM e os funcionrios esto logados constantemente. O Zabbix suporta o envio destas mensagens via protocolo Jabber e o cenrio j possui este tipo de servio atravs de um servidor OpenFire instalado na mquina mestra do Zabbix. Vamos ento configurar o Pidgin, um cliente de IM simples e eficiente para receber os alertas enviados via protocolo Jabber pelo servidor do Zabbix. Abra o aplicativo pelo menu principal do Gnome e siga os passos a seguir.

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

Figura 2.11: Tela de boas vindas do Pidgin

Na tela de boas vindas clique em Adicionar.

Figura 2.12: Configurando uma conta Jabber no Pidgin

1) O protocolo Jabber usa a opo XMPP. 2) No nome do usurio use sysadmin.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 26 3) No domnio, voc deve apontar o nome da mquina cadastrada para IM e no o domnio. 4) Na senha coloque 123456. 5) Ative o Lembrar Senha. No ative Lembrar Senha opo em produo! Isso seria uma terrvel falha de segurana. Ela s esta sendo ativada para comodidade do curso.

Figura 2.13: Definindo o uso de criptografia

1) Clique na aba Avanado. 2) Escolha para usar criptografia apenas se estiver disponvel. Clique em Adicionar e ative a conta na interface do Pidgin.

2.4. Obtendo os fontes do Zabbix


Antes de comear a trabalhar com as diversas partes bsicas da instalao, precisamos baixar o cdigo fonte do Zabbix. Voc sempre pode faz-lo atravs da

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 27 URL http://www.zabbix.com/download.php, mas o comando abaixo j vai colocar o pacote de fontes no local apropriado dentro da mquina virtual zabbixsrv.
# cd /usr/src # wget http://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest %20Stable/1.8.4/zabbix-1.8.4.tar.gz # tar xf zabbix-1.8.4.tar.gz

Voc tambm pode escolher outros mirrors e trocar o endereo acima se desejar.

2.5. Preparando o banco de dados


O Zabbix no utiliza recursos como o RRDTools para armazenar dados, ele faz uso apenas de um SGBD ou de um banco de dados mais simplrios (como o sqlite) para armazenar configuraes, hosts, templates, histrico, etc. Por isso precisamos selecionar um dos bancos nativos ou usar ODBC (este ltimo no 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 instalaes de Zabbix estar em MySQL recomendamos fortemente que seja usado o PostgreSQL pois sua robustes se mostrou mais adequada aos tipos de dados que o Zabbix trabalha. Embora no parea a princpio, o banco de dados do Zabbix de extrema valia para a, empresa pois ele contm todo o histrico de funcionamento de sua infraestrutura e atravs dele podemos coletar SLAs e informaes de capacity plan. recomendado tambm que seu banco de dados possua um plano de backups regular via PITR.

2.5.1. Instalao
Para instalar a verso do repositrio do PostgreSQL: # aptitude install postgresql-8.4

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 28 # yum install postgresql84-server

2.5.2. Criando o usurio e o banco


Com o banco de dados instalado devemos criar uma base de dados e um usurio com as devidas permisses de acesso ao mesmo. O nome de ambos elementos so totalmente opcionais, mas neste material vamos convencionar que o banco de dados se chamar zabbixdb e o usurio ser zabbix. Muitas documentaes e at o prprio arquivo padro de configurao do zabbix server utiliza o nome do banco como zabbix, mas isso pode causar algumas confuses entre ele e o nome do usurio, foi por isso que optamos pela convenso acima. Somente o superusurio do PostgreSQL postgres tem permisso de realizar a criao dos objetos citados acima, para podermos acessar o terminal de console do banco (psql) temos que entrar como usurio postgres no linux e ento usar o comando. Note que o prompt de comando ir se alterar indicando que estamos no console do PostgreSQL.
# su postgres $ psql psql (8.4.5) Digite "help" para ajuda. postgres=#

Agora que conseguimos o acesso como superusurio, vamos primeiro criar o banco de dados. O comando create database ir cuidar desta tarefa, note que todos os comandos digitados dentro do console terminam com ponto-e-vrgula (;).
postgres=# CREATE DATABASE zabbixdb;

Com o banco de dados criado com sucesso vamos criar o usurio e definir sua senha, para propsito de organizao deste material a senha do banco de dados do zabbix ser zabbixdbpw. Ao digitar a senha note que ela no aparece como no quadro de comando abaixo!
postgres=# CREATE ROLE zabbix LOGIN;

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


postgres=# \password zabbix Digite nova senha: zabbixdbpw Digite-a novamente: zabbixdbpw

interessante definir a senha por \password pois assim ela no fica armazenada no histrico de comandos do usurio. Agora precisamos liberar a conexo do servidor ao banco de dados do zabbix, para isso edite o arquivo pg_hba.conf conforme abaixo e acrescente a linha em destaque.
postgres=# \q $ logout # vim /etc/postgresql/8.4/main/pg_hba.conf host zabbixdb zabbix 127.0.0.1/32 md5

Reinicie o banco de dados e realize o teste de conexo.


# /etc/init.d/postgresql restart # psql -h localhost -U zabbix zabbixdb psql (8.4.5) conexo SSL (cifra: DHE-RSA-AES256-SHA, bits: 256) Digite "help" para ajuda.

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 nome SET bytea_output=escape; dentro do console do psql. Isso pode ser configurado no usurio ou no postgresql.conf tambm.

2.5.3. Carga inicial


Agora vamos fazer a carga inicial do banco carregando os esquemas, os dados mais bsicos.
# su - postgres $ cd /usr/src/zabbix-1.8.4/create/schema

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


$ cat postgresql.sql | psql zabbixdb $ cd ../data $ cat data.sql | psql zabbixdb

No faa a carga do arquivos de imagens, iremos abordar como colocar figuras personalizadas e de melhor definio mais em frente neste captulo.

2.5.4. Concedendo as permisses necessrias ao usurio


Agora o momento de conceder as permisses de acesso nas tabelas, o usurio Zabbix precisa de permisses de SELECT, INSERT, UPDATE e DELETE apenas. Com a sequncia de comandos abaixo voc conseguir ativar todas as permisses necessrias. Embora este processo seja mais complicado do que fazer deixar o usurio zabbix como dono do banco ele muito mais seguro e deve ser utilizado em produo
$ psql zabbixdb postgres=# \a postgres=# \t postgres=# \o /tmp/grantzabbix.sql postgres=# SELECT 'GRANT SELECT,UPDATE,DELETE,INSERT ON ' || schemaname || '.' ||

tablename || ' TO zabbix ;' FROM pg_tables; postgres=# \o postgres=# \i /tmp/grantzabbix.sql postgres=# \q $ logout

1) O comando \a remove o alinhamento dos elementos na tabela; 2) O \t mostra apenas tuplas, eliminando cabealhos e rodaps; 3) O comando \o grava o output no arquivo definido ( /tmp/grantzabbix.sql), note que preciso de outro \o sem o nome do arquivo para encerrar o output; 4) Este comando em SQL seleciona todas as tabelas do banco de dados e monta uma string com o comando de permisso (GRANT), voc pode ver o contedo deste comando no arquivo /tmp/grantzabbix.sql; 5) O comando \i carrega e executa o contedo do arquivo gerado acima.

2.6. Instalao do servidor

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

Zabbix via cdigo fonte


Em alguns casos a distribuio de Linux que voc escolher pode possuir em seu repositrio uma verso satisfatria do Zabbix disponvel. Se for este o caso, timo! Simplesmente instale o pacote e comece a configurar. No entanto isso nem sempre verdade e pode ser que seja necessrio uma verso mais recente (devido a recursos novos, etc.) na sua soluo de monitoramento. Para suprir esta necessidade preciso compilar o Zabbix a partir de seu cdigo fonte. Esta sesso toda dedicada ao processo de criar os binrios, cobrindo quais dependncias devem ser instaladas e como escolher os recursos a serem compilados. Via de regra se algum tipo de recurso no se mostrar necessrio a princpio no o ative, isso gera binrios mais leves (com menos cdigo embutido) e alivia o consumo de memria em servidores com altas cargas de mtricas sendo monitoradas. Para comear, vamos instalar os dois pacotes mais bsicos para compilao de fontes no Debian, o build-essential e o make. O primeiro um meta pacote que ir instalar todos os pacotes mnimos de compilao de fontes (compilador, linkeditor, cabealhos do kernel e da libc, etc.) e o segundo um automatizador de compilao. No terminal do zabbixsrv rode os seguintes comandos.
# aptitude install build-essential make # cd /usr/src/zabbix-1.8.4 # ./configure --help | less

O configure um script gerado a partir do autotools, um conjunto de ferramentas para facilitar a compilao de fontes em C. A opo --help fornecida acima ir listar todas as opes que podemos ativar ou no para compilar o Zabbix. Note que o configure no compila nada ele apenas prepara a cama para realizar a compilao com o make. Na tabela a seguir esto as opes relevantes do configure para a nossa tarefa. Opo do configure --prefix=diretrio Descrio Define onde o Zabbix ser instalado, importante lembrar que se nada for configurado nesta opo os

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 32 Opo do configure Descrio binrios e manuais sero colocados em /usr/local como padro. No entanto para manter a instalao organizada e faciliar 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 distribuidos. 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. Compila com suporte a IPV6. Embora no seja absolutamente necessrio, dado ao recente ancio 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 Ativa o suporte a biblioteca de HTTP CURL. necessria para o monitoramento de servios Web e autentiao via HTTP.

--enable-server

--enable-proxy

--enable-agent

--enable-ipv6

--with-ibm-db2

--with-mysql

--with-oracle

--with-pgsql

--with-sqlite3

--with-jabber --with-libcurl

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 33 Opo do configure --with-iodbc --with-unixodbc --with-net-snmp --with-ucd-snmp --with-ssh2 Descrio 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. Ativa suporte a autenticao via LDAP e monitoramento do status de um servio de diretrios remoto. Vamos deix-la ativada.

--with-openipmi

--with-ldap

Tabela 1: Opes de compilao do Zabbix

2.6.1. Dependncias de compilao.


Ao executar o comando abaixo, colete cada erro que aparecer e aponte na tabela o pacote que deve ser instalado para resolver a dependncia. Isto vai servir de referncia para voc em futuras instalaes e tambm tem como inteno ensinar a lidar com erros de depedncias de compilao. Use o comando aptitude para encontrar os pacotes corretos.
./configure --prefix=/opt/zabbix-1.8.4 mandir=/usr/share/man --enable-server --disable-static --disable-proxy --enable-agent --enable-ipv6 --with-pgsql --withjabber --with-libcurl --with-net-snmp --with-ssh2 --without-openipmi --with-ldap

Erro

Dependncia

configure: error: PostgreSQL library not Pacote postgresql-8.4-dev found

checking for IKSEMEL... configure: error: Pacote libiksemel-dev Jabber library not found --with-jabber=/usr configure: error: Curl library not found Pacote libcurl4-dev

acrescentar

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

configure: error: Invalid NET-SNMP Pacote libsnmp-dev directory - unable to find net-snmp-config

configure: error: SSH2 library not found

Pacote libssh2-1-dev

configure: error: Invalid LDAP directory - Pacote libldap2-dev unable to find ldap.h

Voc pode otimizar os binrios tornando o Zabbix mais rpido mas dependente de uma CPU compatvel se voc exportar as variveis de ambiente CFLAGS e CXXFLAGS com o seguinte valor -O2 -pipe -march=native, antes de executar o configure. Se voc estiver usando um sistema de 32 bits acrescente ainda -fomit-frame-pointer. Cuidado com outros flags de compilao! Voc pode acabar com um binrio defeituoso!

2.6.2. Compilando e instalando


Agora que o configure chegou ao ponto final e todas as dependncias foram resolvidas hora de executar a compilao com o comando make, de fato o make no um compilador, ele apenas chama os comandos necessrios para construir os binrio atravs de um arquivo Makefile que foi gerado pelo configure. Execute conforme abaixo o comando os comandos, no final o comando ln ir criar um link simblico para /opt/zabbix. Isso uma boa prtica a ajuda a trocar as verses do Zabbix durante uma migrao apontando o link para a pasta com os novos binrios, enquanto mantemos os anteriores no caso de um downgrade emergencial. Voc pode substituir o -j2 por outro nmero para acelerar a sua compilao se voc tiver mltiplos cores. Uma regra geral 2xCores+1.
# make -j2 # make install # ln -svf /opt/zabbix-1.8.4 /opt/zabbix # tree /opt/zabbix

O comando tree vai mostrar a hierarquia de diretrios e arquivos abaixo do

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 35 caminho da instalao, a tabela abaixo tem um descritivo de cada um deles. Binrio zabbix_get Funcionalidade Utilitrio para realizar consultas nos agentes via linha de comando. Muito til, ns o utilizaremos extensamente durante o curso. Utilitrio para envio de traps para o servidor do Zabbix. necessrio criar um item especial do tipo Zabbix trap para lidar com estes envios. til para alertar incidentes instantneamente para o servidor como o incio, termino ou erro de um backup. 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_sender

zabbix_agent

zabbix_agentd

zabbix_server

Tabela 2: Binrios de uma instalao de servidor e agente do Zabbix preciso remover o zabbix_agent e sua pgina de manual, uma vez que iremos usar apenas o daemon zabbix_agentd. Tambm uma boa prtica no manter os smbolos de depurao nos binrios de produo, o comando strip ir retirar estes smbolos e o executvel final ser ligeiramente menor em tamanho (o que ajuda a consumir menos memria tambm).
# rm /opt/zabbix-1.8.4/sbin/zabbix_agent # rm /usr/share/man/man1/zabbix_agent.1* # strip --strip-all /opt/zabbix-1.8.4/*/*

No aconselhvel executar daemons de sistema como root, por isso vamos criar um grupo e usurio de nome zabbix para que o servio entrem na memria como usurios no privilegiados. O nome do usurio que o Zabbix usa hadcoded, ou seja, ele programado dentro do cdigo fonte e no pode ser alterado via configurao. Desse modo sempre temos que criar o usurio com o nome zabbix, j o nome do grupo totalmente opcional.

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


# groupadd zabbix # useradd -g zabbix -m -s /bin/bash zabbix

Ambos os daemons do agente e do servidor precisam de dois diretrios para armazenar os logs e o arquivo de PID. Com os comandos abaixo crie e d as permisses necessrias para ambos.
# mkdir /var/{log,run}/zabbix -p # chown zabbix. /var/{run,log}/zabbix

2.6.3. Servios de rede


Acrescente ao /etc/services o mapeamento de portas do Zabbix Agent e Zabbix Trapper.
# vim /etc/services zabbix-agent zabbix-agent zabbix-trapper zabbix-trapper 10050/tcp Zabbix Agent 10050/udp Zabbix Agent 10051/tcp Zabbix Trapper 10051/udp Zabbix Trapper

Estas

entradas

permitem

que

programas

como

Wireshark

netstat

reconheam as portas do Zabbix.

2.6.4. Arquivos de configurao


Os arquivos de configurao do Zabbix acompanham os seus fontes, mas a 4Linux preparou um conjunto de arquivos para uso em produo com uma organizao melhorada. Ao invs de simplesmente colocar todas as configuraes em um nico arquivo, os parmetros foram distribudos em grupos lgicos separados em vrios arquivos e diretrios. O Zabbix por padro procura pelos seus arquivos em /etc/zabbix, a partir dos arquivos principais (zabbix_server.conf e zabbix_agentd.conf) outros arquivos foram chamados e inseridos na 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 agente (carregado pelo arquivo principal)

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 37 Diretrio ou arquivo /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 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 exteno 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 qual a quantidade 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/config-server.tar.bz2

confs/config-agent.tar.bz2) para dentro do /tmp da mquina virtual. Este arquivos tem vrios valores padres razoveis para comear e necessitam de pouca configurao. No de inteno deste material dissecar cada uma das opes de configurao vamos ver apenas as mais relevantes, porm os arquivos tem extensos comentrios em portugus criados pelo autor deste material.
# cd / # tar xf /tmp/config-server.tar.bz2 # tar xf /tmp/config-agent.tar.bz2 # chown root.zabbix /etc/zabbix -R

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


# find /etc/zabbix -type d -exec chmod 0750 {} \; # find /etc/zabbix -type f -exec chmod 0640 {} \;

1) Note que o grupo dos diretrios e seus arquivos foram apontados para zabbix. O dono continuou a ser o root; 2) Todos os diretrios tiveram a permisso de acesso global revogada, nenhum usurio do sistema tem que acessar esta pasta exceto o do Zabbix (existem informaes sensveis como senhas em text/plain nestes arquivos ). Tambm, apenas o root tem direitos de gravao nessas pastas o grupo zabbix tem apenas acesso de leitura. 3) Os arquivos seguem a mesma lgica que os diretrios. No deixe de fazer o procedimento das permisses, ele vai tornar a sua instalao do Zabbix muito mais segura. Para finalizar vamos configurar o sistema para apontar o PATH para o link simblico de instalao. Isso vai facilitar o acesso aos comandos.
# vim /etc/profile.d/zabbix-path.sh
1

export PATH=$PATH:/opt/zabbix/sbin:/opt/zabbix/bin # . /etc/profile # zabbix_get --help # zabbix_agentd --help

2.6.5. Testando sua instalao


Utilize o manual do zabbix_agentd para descobrir como listar as mtricas suportadas pelo ambiente e como testar um delas individualmente. Depois inicie o agente, veja o contudo do arquivo de logs e use os comandos ps e netstat para ver quais os processos ele iniciou e em quais portas eles se vincularam. Depois do termino com o agente vamos configurar o servidor conforme a seguir e realizar o mesmo procedimento de inicializao e pesquisa que no agente.
# vim /etc/zabbix/server.d/database.conf DBHost=127.0.0.1 DBPort=5432 DBName=zabbixdb DBUser=zabbix DBPassword=zabbixdbpw

1) O endereo IP ou nome DNS do servidor que esta com o banco de dados. Como no nosso cenrio o banco e o servidor Zabbix esto na mesma mquina virtual utilizamos o endereo de loopback;

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 39 2) A porta TCP de acesso do banco, esta a porta padro do PostgreSQL; 3) Nome do banco de dados que criamos no incio do captulo; 4) Nome do usurio que criamos e demos permisso; 5) Senha do usurio acima. Agora execute os comandos de inicializao dos daemons conforme indicado abaixo.
# zabbix_agentd # zabbix_server

Verifique

se

as

ltimas

linhas

do

log

indicam

se

ambos

iniciaram

corretamente, e tambm se todos os processos esto na memria.


# tail -n1 /var/log/zabbix/zabbix_server.log 1203:20110207:092633.044 server #1 started [DB Cache] # tail -n1 /var/log/zabbix/zabbix_agentd.log 871:20110207:092607.522 zabbix_agentd collector started # ps u -C zabbix_agentd SER zabbix 863 0.0 PID %CPU %MEM VSZ 0.1 4836 496 ? SN RSS TTY STAT START 09:25 # ps u -C zabbix_server USER zabbix 1201 0.0 PID 1.0 %CPU %MEM VSZ SN RSS TTY STAT START 09:26 TIME COMMAND TIME COMMAND

0:00 /opt/zabbix/sbin/zabbix_agentd

46696 2636 ?

0:03 /opt/zabbix/sbin/zabbix_server

Note que a sada do ltimo comando muito grande. Ao final dos testes mate os processos com o comando killall.
# killall zabbix_server zabbix_agentd

2.6.6. Scripts de boot


No CD temos alguns scripts de boot prontos para uso no Debian, copie os arquivos boot/debian/server-bootscripts.tar.bz2 e boot/debian/agentbootscripts.tar.bz2 para o /tmp e descompacte-os na raiz.
# cd / # tar xvf /tmp/server-bootscripts.tar.bz2 # tar xvf /tmp/agent-bootscripts.tar.bz2

Teste a instalao dos scripts.

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


# /etc/init.d/zabbix-server start # /etc/init.d/zabbix-agent start

Por fim, coloque os scripts no boot da mquina virtual.


# update-rc.d zabbix-agent defaults # update-rc.d zabbix-server defaults

2.7. Instalao do agente Zabbix via compilao


Agora chegou o momento de instalar o agente do Zabbix nas outras mquinas virtuais com Linux. O procedimento de instalao similar ao do servidor, mas no iremos habilitar a opo --enable-server no configure. Tambm no so necessrios todos as opes de with usadas acima, o agente certamente mais simples que o servidor em termos de funcionamento e s precisa do suporte a ldap.

2.7.1. Exerccio: compile e instale o agente nas VM com Linux


Com as informaes acima em mos realize os procedimentos de instalao dos agentes na mquina virtual Presentation. No se esquea tambm de colocar os scripts de boot e os arquivos de configurao nela e iniciar o processo na memria.

2.7.2. Acesso ao agente pelo servidor


Agora que o agente esta instalado e rodando preciso realizar algumas configuraes bsicas para que ele permita o acesso vindo do servidor. Primeiro vamos verificar se suas configuraes de porta e rede esto de acordo, usando o netstat vamos listar as portas que ele esta escutando.
# netstat -lntp | grep zabbix tcp 0 0 127.0.0.1:10050 0.0.0.0:* OUA 592/zabbix_agentd

A sada do comando mostra que o daemon esta apenas vinculado ao endereo localhost da mquina, vamos modificar seu arquivo de configurao e reinici-lo. Identifique qual o IP local 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.conf no parmetro ListenIP.

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


# vim /etc/zabbix/agent.d/network.conf
1

# Este o arquivo de configurao de rede do agente do Zabbix.


2

# ============================================================================
4

# Qual porta

e IP que o agente vai se vincular para receber checagens


5

# passivas do servidor.
6 7

ListenIP=172.27.0.1
8

ListenPort=10050
9

10 11

# ============================================================================ # IP o qual o agente do Zabbix ir usar para enviar dados, opcional pois o # sistema usa o IP o qual esta designado a enviar dados conforme a tabela de
13

12

# roteamento.
14 15

SourceIP=

1) Mudar para o IP interno do Presentation. Agora reinicie o agente e confira novamente a qual IP ele esta vculado.
# /etc/init.d/zabbix-agent restart Stopping Zabbix agent daemon: zabbix_agentd Starting Zabbix agent daemon: zabbix_agentd # netstat -lntp | grep zabbix tcp 0 0 172.27.0.1:10050 0.0.0.0:* OUA 654/zabbix_agentd

Se o servio agora estiver vinculado ao IP correto repita estes passos em cada VM. Neste ponto importante paramos para que possamos verificar uma possvel falha de conexo. Vamos forar a VM zabbixsrv tentar se comunicar com o gateway (presentation) via zabbix_get. Vamos usar a key agent.ping como exemplo.
# zabbix_get -s gateway -k 'agent.ping' zabbix_get [6646]: Get value error: *** Cannot connect to [gateway]:10050 [Connection timed out]

Note a mensagem 'Connection timed out' no final da linha de erro, tambm repare que levou algum tempo para que o comando retornasse a mensagem. Isso acontece porque o filtro de pacotes da mquina esta bloqueando conexes, podemos averiguar isto com mais preciso usando a ferramenta nmap conforme abaixo:
# nmap -P0 -p 10050 gateway

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

Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-30 02:17 BRST Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE

10050/tcp filtered unknown MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems) Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds

O estado da porta que o nmap retornou filtered, ou seja, no h retorno de pacotes do sistema. Para podermos liberar o acesso use o procedimento abaixo no terminal da mquina presentation.
# iptables -A INPUT -j ACCEPT -p tcp --dport 10050 -s 172.27.0.10 # iptables-save > /etc/iptables/rules

Repetindo o nmap a partir do servidor do Zabbix.


# nmap -P0 -p 10050 gateway Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-30 02:34 BRST Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE unknown

10050/tcp open

MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems) Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds

Se o estado retornado for open, ento o servidor capaz de se conectar ao agente no nvel da camada TCP, mas ainda precisamos ter certeza absoluta que ele esta permitindo conexes no nvel de camada de aplicao. Vamos repetir o teste com o zabbix_get e ver se o agente retorna o valor 1.
# zabbix_get -s gateway -k 'agent.ping'

Note que ele no retorna nada! Apenas uma linha em branco aparece no resultado do comando. Isso esta ocorrendo porque o agente precisa liberar a consulta para o servidor, por padro os arquivos de configurao apenas permitem que ele seja acessado a partir do localhost. Para liberar o acesso temos que editar o arquivo /etc/zabbix/agent.d/checkings.conf e mudar dois parmetros. O primeiro, obviamente o Server que aceita uma lista separada por vrgula

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 43 (,) dos endereos que so permitidos fazer a consulta. O segundo o Hostname representando o nome da mquina com o qual o agente deve se apresentar ao servidor. Este nome deve ser nico e no necessariamente precisa ser igual ao hostname real da mquina, de fato no nosso cenrio iremos deix-lo diferente.
# vim /etc/zabbix/agent.d/checkings.conf
1

# Este o arquivo para configurao de checagens no agente. H dois tipos de


2

# checagens, a passiva e a ativa.


3

4 5

# Checagens passivas so o padro, o servidor faz o agendamento das mtricas e # manda uma requisio ao agente que aguarda passivamente (dai o nome), este
6

# ento coleta o dado do sistema e envia de volta ao servidor.


7

8 9

# Uma checagem ativa permite que o agente receba uma lista de itens a serem # monitorados do servidor e ao invs deste ltimo cuidar do agendamento e
10

# requisies o agente que toma para si esta tarefa.


11

12 13

# Checagens ativas so teis quando o Firewall no permite que o servidor de # monitoramento alcance o agente via rede ou quando se utiliza um sistema de
14

# monitoramento de logs onde o monitoramento ativo obrigatrio.


15 16

17 18

# ============================================================================ # Quais so os servidores para recebimento de requisies ou obteno da lista


19

# de checagens ativas.
20

Server=172.27.0.10
21

22 23 24

# ============================================================================ # ao hostname da mquina ele uma string de identificao do agente para com o
25

# Como este host esta cadastrado dentro do Zabbix. Isto no precisa corrsponder # servidor do Zabbix.
26 27

Hostname=Presentation

1) Sempre temos que mudar este parmetro para o endereo do servidor ou nome DNS do mesmo. Se houverem mais de um servidor, separe os endereos/nome por vrgula; 2) Este o nome a ser cadastrado no front end do Zabbix e no o nome de DNS (apesar que podem ser os mesmos). Reinicie o agente mais uma vez e faa o teste com zabbix_get a partir do servidor.

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


# zabbix_get -s gateway -k 'agent.ping' 1

Se o comando resultante retornou 1 ento o servidor poder acessar o agente a partir de agora.

2.7.3. Exerccio sobre instalao de agente em Linux


1) Instale o agente do Zabbix via compilao nas mquinas virtuais Application e Database conforme mostrado neste captulo.

2.8. Instalando o agente em ambientes Windows


Um dos objetivos do curso demonstrar como o Zabbix capaz de monitorar redes heterogneas com vrios sistemas operacionais e ativos de rede. Esta sesso cuida de instalar o agente do Zabbix em um Windows 2003.

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

Figura 2.14: Baixando o agente do Zabbix no Windows

Primeiro

preciso

baixar

os

executveis

pelo

endereo

http://www.zabbix.com/downloads.php, localize o link de binrios para Windows como na Figura 2.14. Clique no link de download e escolha um local para colocar o arquivo compactado, no exemplo da apostila ele foi colocado em C:\Downloads. Abra a pasta em que o arquivo foi salvo e descompacte o arquivo. Dentro dele voc encontrar outras duas pastas para arquiteturas de 32 e 64 bits. No nosso caso iremos usar os de 32 bits.

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

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, log e bin e copie os executveis descompactados dentro deste ltimo. Obtenha os arquivos do DVD com a configurao do agente do Windows (conf/agent-win-config.zip) e descompacte dentro da conf o seu contedo. Apague o arquivo zip depois disso. O arquivo zabbix_agentd.conf deve ficar na raiz da pasta conf, assim como os diretrios agent e externalscripts. Cuidado na hora de descompactar.

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.conf para vincul-lo ao endereo IP da placa de rede. Use o Wordpad para alterar estes arquivos, o Notepad tem vrios problemas com codificao e finais de linha.

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

Figura 2.17: Configurando o agente no Windows

Agora vamos testar a instalao, abra dois prompts de comando, no primeiro acesse o diretrio dos binrios e execute o comando conforme abaixo.
cd C:\Zabbix\bin zabbix_agentd -c ..\zabbix_agentd.conf

Note que uma mensagem dizendo que ele foi iniciado pelo console ir aparecer na tela. porque o Windows no capaz de executar o agente como um daemon da maneira que o Linux faz, mais a frente veremos como inici-lo como servio do Windows que maneira correta de se fazer. Outra mensagem, desta vez via caixa de dialogo, tambm vai aparecer na tela. o servio de segurana do Windows que esta perguntado se deve bloquear ou no esta aplicao. Obviamente devemos clicar em Desbloquear.

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

Figura 2.18: Desbloqueando o agente no Windows

Agora no segundo prompt de comando, use o comando netstat como abaixo para verificar se ele esta escutando no endereo correto.
netstat -an

2.8.1. Executando o agente como servio


Instalar o agente do Zabbix como servio muito simples. No prompt de comando onde voc o testou pressione CTRL+C para cancelar a execuo do programa (demora alguns segundos). Quando o prompt retornar digite:
zabbix_agentd.exe -c c:\Zabbix\conf\zabbix_agentd.conf --install

Duas mensagens iro aparecer indicando a instalao do agente como Service e Event source. Para conferir se o agente esta mesmo no ar abra o Painel de Controle Ferramentas Administrativas Servios e procure pelo servio chamado Zabbix Agent.

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

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

Nesta tela tambm possvel parar, reiniciar, etc. o agente atravs da barra de cones na parte superior da janela. Como o servio inicia parado devemos clicar sobre ele e no cone Iniciar o Servio (representado pelo smbolo de play). Certifique-se que ele esta para ser iniciado automaticamente, evitando que se a mquina for reiniciada ele pare. Teste no servidor do Zabbix se ele esta conseguindo alcanar o agente.
# zabbix_get -s win2003 -k 'agent.ping' 1

Se ele retornar 1 como acima, ento a instalao esta concluda.

2.9. Instalao do agente Zapcat para JBoss


O Zabbix possui alguns agentes programado por terceiros alm do nativo que acompanha os fontes padro. Um destes agentes o Zapcat, que capaz de monitorar atravs de um deploy servidores JBoss e Tomcat. No nosso cenrio temos um servidor JBoss na mquina virtual Application que ser monitorado pelo Zapcat.

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 50 O resto desta sesso dedicado instalao e configurao deste agente. O Zapcat na verdade um JMX Bridge, ele capaz de coletar os MBeans JMX do servidor e exp-lo para o Zabbix via Zabbix API. Diferente do agente ele escuta na porta 10051 (mas isso configurvel) e requer que outro host a parte seja criado dentro da interface do Zabbix (veremos isso mais adiante).

2.9.1. Obteno do binrio


Siga o procedimento abaixo para obter o binrio do zapcat. Voc ir baix-lo do Source Forge.
# cd /var/tmp # wget http://ufpr.dl.sourceforge.net/project/zapcat/zapcat/zapcat-1.2/zapcat-1.2.zip # unzip zapcat-1.2.zip # cd zapcat-1.2 # ls bin build.xml COPYING lib openfire README samples src templates webapp

zapcat-1.2.jar

zapcat-1.2.war

zapcat-openfire-1.2.jar

Note que o zapcat vem na forma de um .war (aplicao web java) e .jar (applicativo java). Vamos nos ater apenas ao modo web.

2.9.2. Deployment
Para instalar o Zapcat, simplesmente copie o binrio para a pasta de deploy da instncia em execuo do JBoss. No nosso caso esta pasta /opt/jboss/server/application/deploy/.
# cp zapcat-1.2.war /opt/jboss/server/application/deploy/ # tail /opt/jboss/server/application/log/server.log 2011-01-30 06:08:10,616 INFO [org.jboss.system.server.Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 27s:81ms 2011-01-30 06:10:25,679 INFO [org.jboss.web.tomcat.service.TomcatDeployer] deploy,

ctxPath=/zapcat-1.2, warUrl=.../tmp/deploy/tmp3690979215130123277zapcat-1.2-exp.war/

A ltima mensagem do log indica que o pacote foi instalado com sucesso (deployed). Ele j esta funcionando e podemos averiguar isso com o comando netstat como anteriormente.
# netstat -lntp | grep ':1005' tcp 0 tcp 0 172.27.0.20:10050 0 0 0.0.0.0:10052 0.0.0.0:* OUA 28751/zabbix_agentd OUA 29181/java

0.0.0.0:*

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 51 Repare que, como ele um aplicativo java, o netstat no vai informar o nome dele (Zapcat) na sada com -p.

2.9.3. Opes de inicializao do JBoss


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 acrescente ao final dele o seguinte contedo.
# vim /opt/jboss/bin/run.conf JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver" JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl " JAVA_OPTS="$JAVA_OPTS -Dorg.kjkoster.zapcat.zabbix.port=10052 JAVA_OPTS="$JAVA_OPTS -Dorg.kjkoster.zapcat.zabbix.address=0.0.0.0

1) O JMX remote ativa o sistema de consultas via JMX no JBoss e Tomcat. No caso do segundo apenas este parmetro necessrio; 2) O Mbean server a implementao do JBoss para acesso aos JMX via servidor; 3) Indica a classe que deve internamente no JBoss; ser usada para manipular os Mbeans

4) Esta opo define a porta do Zapcat, ela opcional e por padro o Zapcat escuta na porta 10052; 5) Esta opo define a qual IP o zapcat deve se vincular. Ela opcional e por padro ele se vincula a todos os endereos disponveis do host (0.0.0.0). Reinicie o JBoss e teste o acesso ao Zapcat pelo endereo

http://javaapp.curso468.4linux.com.br/zapcat-1.2/, a tela abaixo deve aparecer.

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

Figura 2.20: Tela de entrada do Zapcat

No prximo captulo voltaremos a este acesso. Por hora j basta verificar se o Zapcat esta funcionando.

2.9.4. Liberando o firewall para acesso ao Zapcat


No filtro de pacotes libere o acesso porta 10052/TCP com os comandos abaixo.
# iptables -A INPUT -j ACCEPT -p tcp --dport 10052 # iptables-save > /etc/iptables/rules

2.10. Testando o acesso via SNMP


Uma das mquinas virtuais representa um ativo de rede, um switch para ser mais exato, nele nenhum agente pode ser instalado e vamos usar o SNMP para realizar o monitoramento. Para testar se o acesso ao SNMP esta OK, instale as ferramentas de snmp no Debian.

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


# aptitude install snmp snmp-mibs-downloader

Libere o acesso a todas as MIBs do seu sistema.


# vim /etc/snmp/snmp.conf
1 2

# As the snmp packages come without MIB files due to license reasons, loading
3

# of MIBs is disabled by default. If you added the MIBs you can reenable
4

# loaging them by commenting out the following line.


5

#mibs :

Agora utilize o comando snmpwalk para verificar se o switch retorna os dados de interfaces de rede.
# snmpwalk -c public -v2c 172.27.0.135 if IF-MIB::ifIndex.1 = INTEGER: 1 IF-MIB::ifIndex.2 = INTEGER: 2 IF-MIB::ifIndex.3 = INTEGER: 3 IF-MIB::ifIndex.4 = INTEGER: 4 IF-MIB::ifIndex.5 = INTEGER: 5 IF-MIB::ifIndex.6 = INTEGER: 6 IF-MIB::ifDescr.1 = STRING: lo IF-MIB::ifDescr.2 = STRING: eth0 IF-MIB::ifDescr.3 = STRING: eth1 IF-MIB::ifDescr.4 = STRING: eth2 IF-MIB::ifDescr.5 = STRING: eth3 IF-MIB::ifDescr.6 = STRING: switch0 IF-MIB::ifSpecific.1 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.2 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.3 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.4 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.5 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.6 = OID: SNMPv2-SMI::zeroDotZero

Se o comando retornou a lista acima (que foi truncada pelo tamanho) ento seu sistema j consegue ler o SNMP do switch. Se voc estiver usando um hardware com uma MIB proprietria, localize e baixe o arquivo na Internet e copie-o no diretrio /usr/share/snmp/mibs/

2.10.1. Conceitos de SNMP


O SNMP um protocolo de monitoramento bem difundido, principalmente entre equipamentos de rede. A grande maioria do hardware embarcado para rede

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 54 suporta algum tipo de verso do mesmo, a mais comum a verso 2, mas a verso 1 (considerada obsoleta) e a verso 3 (a mais segura) tem uma incidncia regular. Se voc tiver que optar por uma delas, sempre tente escolher a mais recente possvel. Apesar de adicionar uma certa complexidade, a verso 3 ajuda em muito na segurana pois trabalha com ACLs por autenticao e criptografia. No curso 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 (praticamente alguns campos a mais na verso 3). Todas as trs verses trabalham com MIBS, arquivos texto com definies de como coletar e das OIDS, as strings de acesso das mtricas. Uma OID pode ser representada por um texto como DISMAN-EVENT-MIB::sysUpTimeInstance ou por uma representao numrica como .1.3.6.1.2.1.1.3.0. Se voc possuir a MIB de um equipamento monitorado pelo Zabbix e quiser utilizar a forma textual mostrada acima em vez da numrica, ter que copiar o arquivo de texto dela dentro do diretrio de sua distribuio Linux onde o servidor estiver instalado. Normalmente usando. Por fim, a partir da verso 2 do protocolo SNMP passou-se a trabalhar com uma string de comunidade (community) por padro esta string tem o valor public armazenado dentro dela (parmetro -c do comando snmpwalk). Este valor tem como objetivo permitir apenas que quem conhea a community seja capaz de acessar o SNMP. Francamente, colocar a segurana de um sistema em cima de um valor em texto plano que viaja sem criptografia na rede no nada seguro. Se voc realmente quiser segurana deve usar a verso 3. Tambm proteja ao mximo o acesso a porta 161 (ou a qual voc definiu) de acessos indevidos, o ideal permitir apenas acesso dos endereos dos servidores de monitoramento. Apenas se lembre que ainda assim, nada inviolvel e o SNMP no exceo. este diretrio esta em /usr/share/snmp/mibs/ , mas

recomendado que voc confirme se isto vale para a distro que voc esta

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

2.11. Instalando o servidor Zabbix via pacote


No caso do repositrio de uma verso de Debian possuir uma verso do Zabbix que adequado a suas necessidades ento ao invs de compilar recomendado que voc o utilize. No presente momento da escrita deste material esse no era o caso. # aptitude install zabbix-server-pgsql # aptitude install zabbix-agent

O CentOS no tem pacotes no seu repositrio.

2.12. Preparando o servidor web


Como visto anteriormente o Zabbix um sistema componetizado, sua interface web roda dentro de um servidor com suporte a PHP. Esta sesso descreve como instalar e configurar um servidor Apache 2.2 para tal intento.

2.12.1. Instalao do Apache e PHP5


Para instalar um novo pacote apache com suporte a PHP siga os passos abaixo. O Zabbix precisa ainda do suporte a GD (uma biblioteca grfica) para gerao de imagens e acesso ao PostgreSQL. # aptitude install apache2 libapache2-mod-php5 php5-gd php5-pgsql php5ldap No centOS, use o seguinte comando. # yum install php http php-gd php-pgsql php-ldap

2.12.2. Configurao do Virtual Host


Para criar uma configurao de host virtual no Apache para o Zabbix, vamos primeiro criar um diretrio e copiar o contedo da pasta front ends do seu diretrio

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


# mkdir -p /var/lib/zabbix/frontend # cd /usr/src/zabbix-1.8.4/frontends/php/ # cp * /var/lib/zabbix/frontend/ -a

Para assegurar que o apache tenha acesso apenas de leitura a pasta e seus arquivos execute o procedimento abaixo.
# cd /var/lib/zabbix/ # find frontend -type d -exec chmod 0750 {} \; # find frontend -type f -exec chmod 0640 {} \; # chown root.www-data frontend -R # chmod 0770 frontend/conf

O ltimo comando d permisses de escrita na pasta conf ao servidor, isso necessrio apenas inicialmente e ser removido depois do termino da configurao do front end. Agora vamos criar o arquivo de virtual host, note que o diretrio criado acima apontado como raiz e os arquivos de logs so separados do padro para facilitar a depurao de erros.
# cd /etc/apache2/sites-available # vim zabbix-front end.conf
1 2

<VirtualHost *:80>

ServerAdmin sysadmin@curso468.4linux.com.br
3 4

DocumentRoot /var/lib/zabbix/frontend
5 6 7 8 9 10

<Directory /> Options FollowSymLinks AllowOverride None </Directory>

<Directory /var/lib/zabbix/front end> Options Indexes FollowSymLinks MultiViews


12 13 14 15

11

AllowOverride None Order allow,deny allow from all </Directory>


16

17

ErrorLog ${APACHE_LOG_DIR}/error-zabbix-frontend.log
18

19

# Possible values include: debug, info, notice, warn, error, crit,

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


20 21

# alert, emerg. LogLevel warn


22

23

CustomLog ${APACHE_LOG_DIR}/access-zabbix-frontend.log combined


24 25

</VirtualHost>

1) DocumentRoot precisa apontar para o diretrio onde instalamos o front end. 2) Em ErrorLog, vamos direcionar os logs de erros para um arquivo especfico deste virtual host. 3) O mesmo deve ser feito com o CustomLog, apontando para um arquivo especfico de acessos. Para ativar esta configurao realize o seguinte procedimento. Este passo esta substituindo o site padro pelo do Zabbix. Se houverem outros hosts virtuais na mesma mquina no necessrio remov-los apenas ajuste as configuraes do arquivo acima para receber conexes apenas de uma URL em particular.
# cd /etc/apache2/sites-enabled # rm 000-default # ln -sv ../sites-available/zabbix-front end 000-zabbix-front end

Reinicie o Apache, abra a porta 80 do firewall e teste acessando a URL http://zabbix.curso468.4linux.com.br/.


# /etc/init.d/apache2 restart # iptables -A INPUT -j ACCEPT -p tcp --dport 80 # iptables-save > /etc/iptables/rules

O primeiro acesso do front end vai enviar o browse direto para o wizzard de inicializao do site. Siga os passos como descrito a seguir para ativar a interface.

2.12.3. Configurando o front end

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

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

A primeira tela apenas um bem vindo, clique em Next para comear.

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

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

Marque a opo I agree para concordar com a licena do Zabbix e clique em Next.

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

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 configurao do PHP e modificar os valores necessrios. 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 configurado para o mnimo, mas no alcanou o ideal) ou Fail em vermelho que indica que nem o mnimo foi atingido. O ideal deixar tudo no Recommended, porm preciso avaliar se o servidor ter os recursos necessrios para a execuo dessas configuraes. Normalmente teremos servidores que so capazes de fornecer memria o suficiente para tal. Com o vim abra o arquivo conforme abaixo.
# vim /etc/php5/apache2/php.ini

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

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 61 opes relevantes e configure-as para atingir o Recommendado. 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

Depois de alterar e salvar o arquivo, reinicie o apache.


# /etc/init.d/apache2 reload

Ento clique no boto Retry. A tela que ser recarregada ir ser similar a abaixo.

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

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

Se todos os pr-requisitos foram supridos clique em Next, seno refaa os passos acima at conseguir chegar aos valores recomendados. O suporte a GD do PHP no Debian Squeeze no atinge o recomendado mas funciona se problemas com o Zabbix.

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

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

A tela de conexo ao banco de dados precisa ser preenchida conforme explicao abaixo e Figura 2.26. 1) Escolha o banco de dados, no nosso cenrio o PostgreSQL. 2) Coloque o nome ou IP do host do banco de dados, no nosso caso localhost. 3) Coloque a porta TCP para o acesso, por padro a do PostgreSQL 5432. 4) Em Name coloque o nome do banco de dados, zabbixdb em nosso caso. 5) Em User coloque o nome do usurio que criamos anteriormente, zabbix. 6) Em Password coloque a senha do usurio acima.

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

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

Depois de preencher o formulrio clique em test connection para se certificar de que tudo correu bem. Se um Ok aparecer acima do boto, clique em Next.

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

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

Preencha o formulrio com os dados do servio de monitoramento, 1) O servidor de Zabbix esta em localhost, mas ateno para ambientes de produo onde o servidor do Zabbix esta em outra mquina, neste caso deve ser preenchido o endereo ou nome da mquina remota. 2) O campo Port corresponde a porta TCP em que o Zabbix esta escutando (Zabbix trapper), normalmente esta porta a 10051. 3) O Name um ttulo do servio de front end do Zabbix. Este ttulo vai ficar estampando na barra do browser e somente ajuda a identificar o front end quando voc tem vrias barras de navegao.

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

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

Repasse as configuraes nesta tela e clique em Next se tudo estiver OK.

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

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

Esta janela indica que o arquivo de configurao foi gravado com sucesso no diretrio conf que deixamos com permisses de escrita anteriormente, hora de revogar as permisses de escrita neste diretrio.
# cd /var/lib/zabbix/frontend/ # ls -lhd conf drwxrwx--- 2 root www-data 4,0K Jan 27 22:58 conf # chmod 0750 conf # ls -lh conf total 28K -rw-r--r-- 1 www-data www-data 440 Jan 27 22:58 zabbix.conf.php # chown root.www-data conf/zabbix.conf.php # chmod 0640 conf/zabbix.conf.php

Agora pressione Next para ir para a prxima tela.

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

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

Clique em Finish. O front end ir abrir uma tela de login, voc pode acessar usando o usurio Admin (com o A em maiscula) e a senha zabbix. A tela a seguir ser a mostrada para voc.

Figura 2.31: Tela inicial do Zabbix aps o primeiro login

2.13. Exerccios de reviso

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 69 1) possvel colocar o agente do Zabbix para ser executado no Windows como servio? Como? ______________________________________________________________________________ ______________________________________________________________________________ 2) Quais os possveis backends de bancos de dados que o servidor do Zabbix suporta? ______________________________________________________________________________ ______________________________________________________________________________ 3) possvel instalar a Interface do front end em qualquer servidor que suporte PHP? ______________________________________________________________________________ ______________________________________________________________________________ 4) Com o snmpwalk podemos listar vrias partes ou mesmo todas as mtricas SNMP. Qual o comando voc usria para pegar apenas uma mtrica? ______________________________________________________________________________ ______________________________________________________________________________ 5) Realize uma breve pesquisa na Internet e relacione todos os agentes de Zabbix que voc encontrar. ______________________________________________________________________________ ______________________________________________________________________________ 6) Com o zabbix_get, colete via terminal de console o valor das chaves abaixo dos hosts win2003 e application: 6.1) agent.version: _________________________________________ 6.2) system.cpu.num: _________________________________________ 6.3) vm.memory.size: _________________________________________ 7) (Desafio) Se voc tentar usar o zabbix_get para coletar dados do Zapcat ver que ele vai falhar retornando um valor no suportado. Voc consegue descobrir como, via linha de comando poderamos coletar os valores deste agente? Se sim crie um pequeno script para fazer a coleta passando para ele host, porta e chave. ______________________________________________________________________________

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

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

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

3.1. Objetivos
1) Conhecer a configurao do Zabbix via Front end. 2) Gerenciar os hosts e templates para o monitoramento. 2.1) Criar mtricas de monitoramento. 2.2) Depurar itens no suportados. 3) Gerenciar acessos e permisses aos hosts monitorados atravs de usurios cadastrados numa base LDAP. 4) Configurar os meios de alerta. 5) Criar mapas. 6) Realizar backups das configuraes.

3.2. Introduo

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 72 A partir deste ponto a interao administrativa via console vai diminuir consideravelmente, pois vamos comear a trabalhar com a interface web do Zabbix. Quase 100% de todas as tarefas com a ferramenta executada atravs dessa interface. Nesta sesso e nas prximas sero apresentadas dicas de uso, organizao, todas as configuraes do ncleo do front end e criao dos elementos mais bsicos de monitoramento (hosts, templates, grupos, etc.).

3.2.1. Organizao do front end


OK, voc colocou no ar toda a infraestrutura da soluo de monitoramento, agora um web site com alguns menus esta diante de voc. E agora? Bom, o primeiro passo entender como os menus do Zabbix trabalham e aprender a encontrar as opes que voc deseja trabalhar. Esta interface extremamente poderosa e ao mesmo tempo simples de se operar. No incio provvel que haja uma certa confuso na distribuio das janelas e funes, mas acredite, ela foi desenvolvida para ser fcil de usar aps aprender os entremeios dos menus. Aproveite e passei 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. Nestes sim necessrio clicar para abrir a tela desejada! Na Tabela 4 h uma descrio superficial do que cada item de menu faz. Menu Monitoring Funo Menu para acesso ao monitoramento, depois que o Zabbix estiver completamente configurado este o menu mais acessado de todos. Tela de centralizao das informaes de monitoramento. Permite a visualizao global ou por grupos das mtricas monitoradas e dos alarmes. Visualizao do monitoramento dos servios de web (no confundir com monitoramento do servidor web). Mostra os ltimos dados (e quando eles foram coletados) do monitoramento de um host. Mostra o status dos ltimos triggers (gatilhos) e permite interao com eles (como por exemplo dar um Acknowledge a um determinado gatilho) Mostra os ltimos eventos causados pelos triggers ou pelo autodiscovery. Visualizao individual dos grficos cadastrados nos

Dashboard Overview Web Latest data Triggers

Events Graphs

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 73 Menu hosts. Screens Maps Discovery IT Services Visualizao dos screens, telas que agrupam elementos monitorados (como mapas, grficos e widgets). Visualizao dos mapas. Hosts e elementos que foram descobertos pelo sistema de auto deteco de hosts. Visualizao de SLA baseada no monitoramento de hosts, ativos e/ou servios. Inventrio de hosts Hosts que fazem parte do inventrio. Menu de relatrio. Status do Zabbix Uma tela de resumo (que tambm mostrada no Dashboard) para avalizao da performance do servidor Zabbix. Relatrios de disponiblidade por hosts ou triggers. Funo

Inventory Report Hosts

Avaliability Report

Most busy triggers Top 100 triggers mais ativos no sistema. 100 Bar Report Mostra dados agregados dentro de grficos de barra, por exemplo, voc poderia ver a mdia de uso de link por semana ao invs de usar os grficos padro. Menu para acesso monitoramento. as opes de configurao de

Configuration Host groups Templates Hosts Maintenance Web Actions

Grupos lgicos para dividir os hosts. Gerenciamento de templates (modelos), uma das telas que mais vamos acessar durante o curso. Gerenciamento dos hosts monitorados. Tela para colocar ou tirar um determinado host em estado de manuteno. Configurao de cenrios de teste de servios web. Gerenciamento de aes que os triggers devem tomar ao alertarem algum comportamento (exemplo: enviar um email quando o servidor XYZ cair). Gerenciamento e construo de screens. Gerenciamento e construo de slide shows. Gerenciamento e construo de mapas. Gerenciamento dos servios para clculo de SLA Gerenciamento do auto discovery. Menu para acesso s opes de administrao do front end. Opes globais do front end.

Screens Slides Maps IT Services Discovery

Administration General

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 74 Menu DM Authentication Users Media Types Scripts Audit Queue Notifications Locales Funo Configurao de monitoramento distribuido. Mtodos de autenticao. Gerenciamento de usurios para acesso ao front end. Gerenciamento de formas de alertas (e-mails, SMS, etc.) Gerenciamento de scripts para testes on-line pelo front end. Logs de auditoria de aes dos usurios e de eventos gerados pelas Actions. Fila de alertas a serem acknowledged. Notificaes enviadas por usurio/tempo. Personalizao das strings de exibio para traduo (portugus brasileiro j esta pronto, portanto no precisamos mexer aqui). Telas de instalao (as mesmas que passamos agora a pouco para configurar o fronte end).

Instalation

Tabela 4: Funo dos menus no front end No inteno do curso detalhar todos os itens de todas as telas (isso provavelmente seria tarefa de um livro bem grande). Embora simples a interface do Zabbix tem uma magnitude de opes bem grande e vamos nos concentrar nelas aos poucos conforme a necessidade e escopo do curso.

3.3. Gerenciamento de usurios


O ponto mais lgico para comear administrar quem pode acessar o front end e definir uma senha ao usurio Admin. Vamos entrar no menu Administration Users, no canto direito da tela que vai aparecer voc ver um combobox ao lado do boto Create User clique sobre ele e selecione Users. A Figura 3.1 mostra a tela que ir ser exibida.

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

Figura 3.1: Gerenciamento de usurios do Zabbix

Dois usurios sero exibidos: o Admin, superusurio do front end o qual estamos logados e guest, usado para acesso sem autenticao. No tente apagar o usurio guest, ele necessrio para a tela de login quando entramos na interface. Esta tela mostra vrias informaes interessantes como por exemplo quando foi realizado o ultimo login e quem esta on-line no front end. Para editar o Admin clique sobre o link com o nome dele. Uma nova tela ira aparecer.

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

Figura 3.2: Editando o Admin

Clique em Change password e coloque a senha a sua escolha, no esquea essa senha ou vai ser necessrio reinici-la no banco de dados. Para evitar que o Zabbix fique desligando nossa sesso a todo momento desligue a opo Auto-logout. Depois de terminar clique no boto Save. Isso apenas um salva-guarda em casos de problemas de autenticao com o LDAP, como voc ver logo a seguir iremos passar toda a autenticao para o sistema de diretrio (que tambm possui um usurio Admin). Em produo no desligue o auto-logout de nenhum usurio a menos que seja absolutamente necessrio! Para ser exato, o nico motivo vlido que o autor encontrou em deixar um usurio 100% do tempo logado quando o Zabbix esta sendo usado para exibir um mapa, screens ou slide show em um telo ou TV com acompanhamento visual 24x7. Agora que o Admin teve a senha modificada, o momento de configurar o

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 77 Zabbix para autenticar no diretrio LDAP instalado no servidor. e preencha os campos conforme abaixo. Entre em

Administration Authetication, selecione em Default Authetication a opo LDAP

Figura 3.3: Configurando a autenticao LDAP

Os dados aqui preenchidos variam de um ambiente para outro, no caso de estudo do curso estamos dizendo ao Zabbix onde est o servidor ( LDAP Host e Port) qual a raiz do domnio ( Base DN), qual o atributo usado em busca (por profundidade), no foi fornecido usurio e senha de acesso ao LDAP, ou seja ele read only guest based (Bind DN e Bind Password) e ativamos a autenticao (LDAP Authentication Enabled). possvel e recomendado que a senha do usurio Admin cadastrada dentro do LDAP seja testada, preencha a senha e clique no boto Test o Zabbix vai dizer se foi bem sucedido ou no. Para salvar tambm obrigatrio que a senha seja digitada corretamente. Normalmente teremos um usurio e senha com read only para acesso do LDAP em produo. Permitir acesso read only guest based no a forma mais segura de se fazer acesso a base de diretrios.

3.3.1. Cadastrando os usurios do LDAP no Zabbix


Apesar do Zabbix estar apontando para o LDAP e o Admin estar funcionando preciso mapear quais usurios da rvore de diretrios para dentro do front end. Se voc no o fizer, no ser capaz de logar com um determinado usurio. No cenrio que estamos usando temos alguns usurios descritos na Tabela que devem ser adicionados e alguns novos grupos de usurios que iro organizar

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 78 alguns deles. 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 No temos os grupos Windows Administrators e JBoss Administrators prcadastrados no Zabbix, o primeiro passo justamente cri-los. Entre em Administration Users e clique no boto Create Group, na Figura 3.4 temos um exemplo da tela de criao do JBoss Administrators. No necessrio mais do que o nome do grupo no campo Group Name vamos definir suas permisses mais adiante.

Figura 3.4: Novo Grupo JBoss Administrators

Salve e escolha Users no combobox ao lado do boto Create Group, isso vai nos fazer voltar tela de usurios onde editamos o Admin. Clique no boto C reate User e cadastre os usurios da Tabela 5 conforme a Figura 3.5.

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

Figura 3.5: Novo usurio Sysadmin

O Alias o campo com o nome do usurio e deve estar 100% igual ao dentro do LDAP. Name e Surname so apenas labels para exibio e no quadro Groups use i boto add para acrescentar a quais grupos o usurio pertence. Um campo que merece uma ateno especial o User Type que permite dar alguns privilgios iniciais conta. No nosso caso iremos utilizar o tipo mais simples, o Zabbix User, que permite apenas acesso ao menu de monitoramento. Podemos ainda criar outros dois tipos de usurios, Zabbix Admin que pode acessar o monitoramento e a configurao de hosts. Este caso til quando algum deve ter permisses de verificao e tambm direito de cadastrar e modificar hosts monitorados assim como seus templates e grupos. Por fim temos Zabbix Super Admin que o caso do nosso usurio Admin, este ltimo pode fazer tudo, inclusive adicionar e remover direitos ao usurios. Mais a frente iremos acrescentar direitos aos usurios e tambm mudaremos

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 80 seus tipos conforme a necessidade.

3.4. Meios de alertas


Os Media Types a nomenclatura que o Zabbix atribui aos meios de envio de alertas. Como j foi dito o Zabbix suporta correio eletrnico, SMS via modem, SMS via servio de rede (EUA e Canada apenas), mensageiro instantneo via Jabber e chamada de scripts externos. No nosso cenrio de curso iremos aprender a trabalhar com estes recursos usando o sistema de e-mail e jabber (os quais configuramos estes clientes no incio do captulo). Entre em Administration Media Types a tela da Figura 3.6 ser exibida com os trs meios de comunicao pr-configurados no servidor. Para editar qualquer um deles clique no nome (coluna Description), se voc fosse criar um novo clique em Create Media Type. possvel ter mltiplos meios do mesmo tipo, por exemplo, ter vrios servidores de e-mail para ajudar na redundncia do servio de alerta ou dedicar determinados tipos de e-mails para diferentes servidores.

Figura 3.6: Media Types

Tambm aconselhvel limpar os Media Types no usados, como no nosso caso de uso no usa SMS, marque no checkbox a frente de seu nome, selecione Delete selected na caixa de aes ao fim da tabela e clique em Go (1). Confirme a excluso. Ambas a operao de limpeza e o modo de faz-la so bem triviais e muito comum no curso. Ela ser repetida em muitos outros locais.

3.4.1. Correio eletrnico


Agora edite o item de e-mail, a tela da Figura 3.7 ser exibida, preencha os

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 81 campos conforme a mesma. Description um campo descritivo apenas e no tem efeitos na configurao a no ser identificar este Media type na interface; SMTP Server aponta para o nome/IP do servidor de e-mails (porta TCP/25); SMTP helo usado na mensagem inicial trocada entre Zabbix e servidores, aconselhvel colocar o domnio da prpria empresa; SMTP e-mail o endereo de remetente que o Zabbix usar para enviar a mensagem.

Figura 3.7: Configurando o Zabbix para enviar e-mails

Clique em Save quando terminar.

3.4.2. Mensagens instantneas


Agora iremos editar o Jabber, clique sobre o nome dele e preencha os campos conforme a Figura 3.8.

Figura 3.8: Configurando o Zabbix para enviar mensagens instantneas

Os campos Jabber identifier e Password so os usurio e senha de uma conta cadastrada no IM destinada exclusivamente ao Zabbix, a senha no curso 123456. Salve os dados. Sempre que utilizar um identificador de usurio no Jabber voc deve incluir o nome do servidor completo aps o @ e no apenas o domnio.

3.4.3. Apontando os alertas aos usurios


Agora vamos dizer quais usurios usam qual Media Type. Abra o usurio sysadmin e note que no final da tela um campo Media esta com o valor No media defined.

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

Figura 3.9: Media Types de um usurio sem apontamentos

Clique em Add para adicionar um novo meio de alerta ao usurio. Vamos comear pelo e-mail.

Figura 3.10: Adicionando o Media Type Email a um usurio

Coloque o e-mail do usurio (que o mesmo que seu Alias mais o domnio do curso (no exemplo, sysadmin@curso468.4linux.com.br). Nesta tela podemos ainda escolher quando este meio vai ficar ativo no campo When active. Este campo tem uma sintaxe bem peculiar, ele indica quais os dias da semana e a faixa de horrio que o usurio pode receber alertas. Isso til para no enviar alertas a pessoas fora do expediente, isso claro, supondo que haja outra pessoa de prontido no horrio determinado. A sintaxe do When Active usa 1 como segunda e 7 como domingo, definir por exemplo segunda a sexta ficaria 1-5. Uma vrgula separa o dia do horrio, segunda a sexta das 09:00 at as 18:00 ficaria 1-5,09:00-18:00. Podemos ainda usar o ponto-evrgula para definir outras faixas, por exemplo segunda a sexta, das 09:00 s 18:00 e sbado das 09:00 s 13:00 ficaria 1-5,09:00-18:00;6,09:00-13:00. O Use if severity filtra os tipos de severidade de um campo. Eles so importantes para que meios de alertas com custo (SMS) no sejam usados para alertas de pouca importncia. Tambm so usados para no causar avalanches de alertas em um meio os quais eles mais incomodariam do que ajudariam, imagine ser alertado todo minuto por mensagem instantnea que um servio foi reiniciado! Seria totalmente improdutivo.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 83 Por fim, Status controla se este media type estar ou no ativo. Isso particularmente til quando o funcionrio responsvel estiver de folga, afastado ou de frias. Clique em Add para salvar e adicione outro Media Type para o Jaber.

Figura 3.11: Adicionando um media type Jabber a um usurio

No nosso exemplo deixe o Jabber apenas com severidade High e Disaster. O nome do usurio em Send to o mesmo que o Alias. Salve e veja na Figura 3.12 como o campo Media ficar.

Figura 3.12: Media Types de um usurio aps o cadastro

Salve e repita para todos os usurios agora.

3.4.4. Boas prticas com Media types


H algumas recomendaes a serem feitas quando se trabalha com alertas de sistemas monitorados. 7) Mantenha mais de um meio de alerta para sistemas crticos. Isso pode ser feito mantendo vrios servios de mesmo tipo (dois servidores de e-mail, dois modems SMS, etc.) ou melhor, fazendo com que ele seja enviado por vrias mdias (SMS, Jabber e e-mail, todos aos mesmo tempo). 8) Escolha os media types de maneira lgica. No adianta enviar alertas via Jabber se os tcnicos raramente esto on-line do sistema de mensagens instantneas. Tambm no adianta enviar um e-mail de desastre as trs da madrugada quando ningum esta olhando e-mails.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 84 9) Procure deixar alertas que precisam de resposta imediata em meios que alcanam o usurio com facilidade. SMS mais clssico, mas o autor j implementou um que se vinculava ao asterisk e fazia uma ligao descrevendo o problema (como uma URA ativa). 10) Planeje! Faa escalas entre os funcionrios, evite dar alta prioridade a alertas triviais e cuidado com os falsos positivos, eles podem gerar o problema do lobo. O problema do lobo aquela histria do menino pastor que gritava LOBO! LOBO! na vila onde morava e todos iam correr ao seu socorro, para descobrir que era apenas uma brincadeira. Aps vrios episdios, os aldees comearam a ignorar os apelos falsos do garoto, e justo neste dia um lobo apareceu de verdade. Receber alertas seguidos vai treinar o nosso crebro a ignor-los se eles se comprovarem falsos positivos. Veremos ao longo do curso como diminuir os falsos positivos.

3.5. Hosts, host groups e templates


Nesta sesso iremos abordar os conceitos mais fundamentais de monitoramento do Zabbix: hosts, host groups e templates. Hosts so a representao de um servidor, servio ou ativo de rede a ser monitorado. Eles normalmente representam um sistema fsico, mas isso no totalmente verdade, o agente do Zapcat por exemplo, ser representado por um host a parte e ele no um hardware. Host groups separam logicamente os hosts e permitem que sejam atribudas permisses de acessos dos usurios a um determinado host. Templates (modelos) so os blocos de construo do monitoramento, enquanto no so obrigatrios, pois podemos acrescentar mtricas de monitoramentos direto a um host, eles ajudam a gerenciar de maneira efetiva os diversos tipos de monitoramentos possveis e replic-los a tantos hosts o quanto quisermos (ou o quanto nossos sistemas aguentarem, o que vier primeiro). Os templates agregam

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 85 mtricas de monitoramento chamados items, macros e outros valores que so importantes para construir uma soluo de monitoramento. A maior parte do seu trabalho no curso ser em cima dos templates.

3.5.1. Templates para o caso de estudo


O primeiro passo limpar todos os templates preexistentes no Zabbix, apesar de parecer um tanto agressivo excluir todos os modelos prcriados, parte do intuito do curso construir os seus templates de maneira adequada a sua necessidade. Em produo voc pode conserv-los se desejar, mas isso no um requerido a menos que voc tenha garantidamente um equipamento para o qual um dos modelos tenha sido construdo. Outra opo fazer backup dos originais (veja a prxima sesso).

Figura 3.13: Selecionando todos os templates pr cadastrados

Para selecionar todos os templates, entre em Configuration Templates e clique no checkbox do topo da tabela conforme indicado a Figura 3.13.

Figura 3.14: Excluindo os templates selecionados

Depois escolha no combobox no final da tabela o valor Delete selected with linked elements e pressione o boto Go. Repare que o Zabbix indica quantos elementos sero afetados pela ao do combobox no boto Go no nmero entre parnteses.

Esta operao pode demorar alguns minutos dependendo da CPU e do I/O de disco que seu equipamento possui. Agora o momento de criar o primeiro template.

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

Figura 3.15: Criando um novo template

Para criar um novo template, clique no boto a direita da tela Create Template conforme indicado na Figura 3.15. Uma nova tela vai se abrir conforme a figura a seguir.

Figura 3.16: Cadastrando um novo template

1) No campo Name ser colocado o nome do novo template. Que ser 4Linux ICMP base. Este template conter as mtricas mais bsicas de testes por ICMP. 2) No campo Groups, quadro In Groups o grupo Templates deve ficar selecionado. Note que os grupos para hosts so misturados com os grupos de templates. Voc pode criar um novo grupo usando o campo New group sem a necessidade de faz-lo na tela de grupos de hosts.

3.5.2. Vnculo entre templates


possvel estabelecer um relao de dependncias entre um modelo e outro, isso extremamente til para criar estruturas de templates que so compostos por vrias partes, por exemplo, um conjunto de templates que testa um servio sobre um sistema operacional. Quando o template de servio adicionado ao host todos os outros aos quais ele dependem so adicionados. Um detalhe de extrema importncia deste recurso que podemos criar uma dependncia entre as triggers (gatilhos) que ativam os alertas do Zabbix. Isso importante porque uma trigger de alto nvel no deve ser ativada se uma mais bsica estiver ativa (no preciso testar se o agente do Zabbix est em p se o ping ICMP

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 87 estiver acusando host inalcanvel). Seguindo as mesmas instrues mencionadas acima, crie mais um modelo chamado 4Linux S.O. Base.

Figura 3.17: Vinculando um template a outro

1) Na parte inferior da tela voc ver um boto Add ao lado do campo Link with template 2) Escolha o template relacionado (4Linux ICMP no nosso caso). 3) Salve o template. Agora se associarmos um host com o template 4Linux S.O. Base ele automaticamente vai receber todos os objetos definidos no 4Linux ICMP. Aproveite e cria mais um ltimo template para usarmos na prtica dirigida, 4Linux SNMP Base tambm vinculado ao 4Linux ICMP.

3.5.3. Backup dos templates


Uma ao importante em todo sistema criar um backup das configuraes. A partir de agora toda modificao que fizermos nos mapas, templates, grupos e hosts dever ser seguida de um backup. A operao de backup, chamada Export bastante padronizada, todas as telas pertinentes a fazer backup utilizam o mesmo procedimento explicado abaixo. O resultado um arquivo XML contendo os dados de configurao.

Figura 3.18: Exportando um template

1) Selecione todos os templates que voc deseja. 2) Selecione Export Selected na caixa de opes do final da tabela. 3) Clique no boto Go. Uma tela de download ir ser exibida, escolha o nome e local do arquivo e salve-o. Mantenha estes dados em um local seguro e sempre realize esta operao aps algum tipo de alterao.

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

3.5.4. Hosts
Agora que um template foi definido vamos criar um host e associ-lo a este modelo. Na Figura 3.19 esta uma representao de como as mquinas virtuais esto dispostas em termos de layout de rede. Em nossa prtica dirigida iremos cadastrar os hosts Presentation e Switch, alm de modificar o Zabbix Server que criado automaticamente no momento do importe de dados do PostgreSQL.

Figura 3.19: Layout dos hosts a serem monitorados

Tambm devemos criar alguns grupos adicionais para separar logicamente cada servidor, para isso vamos gerenciar os Host Groups.

3.5.5. Gerenciando os Host Groups


Um Host group tem duas funes dentro do Zabbix, a primeira e mais bvia manter os hosts organizados de tal forma que seja mais fcil localizar ou exibir um grupo de servidores com servios correlacionados. A segunda o sistema de permissionamento de acesso aos hosts que ser trabalhado ao longo do curso. 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 Create Group conforme a Figura .

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

Figura 3.20: Como criar um novo grupo de hosts

A seguinte tela ir surgir.

Figura 3.21: Novo host group

1) No campo Group name coloque o nome do novo grupo ( Network Devices no nosso caso).

3.5.6. Criando um novo host


Agora que geramos um host group, vamos criar os hosts, acesse Configuration Hosts, algo similar a Figura 3.22 ir aparecer. Como dito

anteriormente a lista de hosts j possui o prprio servidor do Zabbix pr-cadastrado.

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 Create Host (Figura 3.23).

Figura 3.23: Boto para criar um host

E preencha os dados conforme a figura a seguir.

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

1) O campo Name coloque o nome do host (Presentation no nosso caso). 2) No Groups escolha quais grupos este host deve pertencer. Lembre-se que estes grupos vo indicar quem pode ou no acessar este host pelo front end. 3) Se houver um novo grupo no cadastrado acima possvel cri-lo aqui. 4) Qual o nome DNS da mquina. 5) Qual o endereo da mquina. 6) O campo Connect to permite que seja escolhido o acesso pelo endereo IP ou pelo nome de DNS. O clssico usar o endereo (evitando consultas DNS excessivas no lado do servidor), mas possvel que seja necessrio monitorar estaes de usurios ou servidores que estejam em ambientes com IP dinmico (via DHCP) e neste caso somente via DNS possvel encontrar o host . 7) Qual a porta TCP do agente. Vamos mudar isto para monitorar o Zapcat, mas em todos os outros casos deixaremos ela no padro 10050. 8) No monitoraremos este host via proxy. 9) No Status deixe como Not monitored por enquanto, quando associarmos os templates iremos ativar este host.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 91 Crie todos os hosts do cenrio conforme indicado na Figura 3.24.

Figura 3.24: Todos os hosts do cenrio cadastrados

3.5.7. Fazendo backup dos hosts

O processo de backup dos hosts segue o mesmo procedimento dos do template. Selecione todos os hosts criados e faa o backup dos mesmos.

3.5.8. Configurando uma permisso de acesso


Com os usurios, grupos, mquinas e modelos definidos, vamos ver como dar o acesso ao monitoramento de determinadas pores do Zabbix para a conta sysadmin. Isso feito atravs dos grupos de usurios e grupo de hosts. Acesse Administration Users.

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

1) Selecione User groups se j no estiver nesta opo. 2) Clique no nome do grupo Unix administrators.

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

Dentro da tela do grupo localize na parte inferior da tela as caixas de permisses (Figura 3.26). Clique no boto Add da caixa Read-Write.

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

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

No dialogo que aparecer selecione o grupo de hosts Linux Servers e clique em select.

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

Ao retornar voc ver o grupo na caixa. Clique em Save e pronto, quem pertencer ao grupo Unix administrators vai poder ler e gravar nos hosts dentro de Linux servers. Os direitos de deny tem precedncia aos de read only, que por sua vez tem precedncia sobre os de read write.

3.5.9. Exerccios sobre usurios, hosts, grupos e permisses.


1) O cenrio do curso precisa de um conjunto de permisses conforme a

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 93 Tabela, crie grupos de hosts e usurios, e atribua permisses conforme for necessrio para chegar a este resultado. Note que h um novo usurio 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 Exceto pelo usurio suporte e Admin, todos os usurios devem ter permisso de mudana de configurao dos hosts que eles tem direito de escrita.

3.6. Mapas
Os mapas so elementos visuais teis para determinar onde foi o ponto de falha dentro de uma infraestrutura. Eles so de extrema valia para equipes que avaliam a sade das mquinas constantemente e precisam reagir rapidamente diante de um incidente. O Mapa tambm pode ajudar a diagramar estruturas fsicas de rede e ajudam a mostrar como os equipamentos se relacionam, embora o front end no seja uma ferramenta de desenhos de diagramas propriamente dita.

3.6.1. Importando imagens para o mapa


Antes de criar um mapa preciso definir as figurar que faro parte de seu desenho. Anteriormente ns pulamos o dump das figuras padro do Zabbix, isso foi proposital pois iremos inserir figuras de melhor qualidade dentro do front end. O conjunto de figuras que utilizaremos esta dentro do forum do Zabbix atravs do link http://www.zabbix.com/wiki/_media/contrib/zabbix_icons_set_generic.zip, acesse-o e

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 94 baixe o arquivo para uma pasta em se computador (no necessrio envi-las mquina destinada ao servidor, todo o procedimento de insero ser feito pelo front end). Depois descompacte o arquivo para ter acesso s imagens. Acesse o menu Administration General, e escolha na caixa de opes a esquerda a opo Images.

Figura 3.29: Tela inicial das imagens

Nesta tela clique no boto Create Image para abrir o dilogo de importe de uma nova imagem. Conforme as instrues abaixo importe a primeira imagem.

Figura 3.30: Importando uma nova imagem

1) Nome da imagem a ser inserido, este nome precisa ser nico. No primeiro caso coloque o valor Server On. 2) Podemos enviar cones (Icons) ou fundo de telas (Background) ao front end. cones so usados nos elementos como hosts, triggers e imagens estticas, telas de fundo obviamente so usadas como um fundo para o mapa. 3) No campo Upload, clique no boto Browse... e escolha o local onde a imagem se encontra, no caso do curso a imagem utilizada o cone de tamanho 48x48 e nome 48_g_srv_tower_on.png. Realize o mesmo procedimento para outras imagens conforme a tabela abaixo.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 95 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 Com isso todas as imagens necessrias para o primeiro estgio do mapa est completo. 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

3.6.2. Criando um mapa


Agora que todos os cones esto dentro do front end vamos criar o primeiro prottipo de mapa. A imagem final dele esta representado na Figura 3.31.

Figura 3.31: Imagem do primeiro mapa a ser criado

Este mapa no tem todos os elementos a serem inseridos no mapa, mas vai proporcionar um bom primeiro exemplo. Abra a tela de gerenciamento de mapas acessando o menu Configuration Maps, um mapa pr-cadastrado (Local network) ir ser exibido, marque a caixa de checagem dele e exclua ele da lista.

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

Figura 3.32: Mapas pr-cadastrados

Depois de apagar o mapa existente crie outro novo clicando no boto Create Map no canto direito da tela. Uma tela como na Figura 3.33 ir surgir e preciso cadastrar os dados do novo mapa conforme a seguir.

Figura 3.33: Novo mapa

1) O campo Name indica o nome do novo mapa, no caso desta prtica dirigida coloque Infraestrutura Curso 468. 2) A largura em pixels do mapa, 600 um bom tamanho para o nosso caso. 3) A altura do mapa, 500 um bom tamanho para o nosso curso. 4) No campo Background Image podemos escolher uma figura de fundo para este mapa. Vamos deixar o mapa sem figura de fundo. 5) A opo Icon highlighting serve para pedir ao Zabbix desenhar fundos nos cones para representar estados, ela um tanto redundante em relao a mltiplas figuras de cones como vamos ver mais a frente, porm iremos deix-las ligadas mesmo assim. 6) Se o cone possuir um trigger que teve seu estado mudado recentemente, uma borda ser desenha em volta do cone. 7) No caso de haver um incidente com um item em particular, e ele for nico ( somente um problema para aquele item em particular) podemos deixar o campo Expand single problem ligado para que a descrio do problema seja apresentado no mapa (evitando ter que clicar no item para exib-lo).

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 97 8) Qual o tipo de mensagem que ser adicionada ao nome do item na tela quando um trigger for exibido. Os valores possveis so: Label, o default indicando que deve exibir o nome do rtulo; IP Address, mostra o endereo de rede do host; Element name, o nome do elemento que esta apresentando problemas; Status only, que indica o status do trigger (OK ou PROBLEM); Nothing, nada mostrado. 9) Localizao padro dos labels. 10) No campo Problem display podemos escolher se desejamos mostrar todos os problemas em uma nica linha (All), duas linhas com os problemas com acknowlegment e outro sem (Separated), ou ainda somente os problemas sem acknowlegment (Unacknowledged). Depois clique no boto Save, voc ir retornar a tela anterior. Agora para criar o mapa visual clique sobre o nome do mapa.

No se preocupe em decorar e testar todas as opes de mapas, iremos detalhar a maior parte delas durante o curso.

Decidir o tamanho da rea de mapas uma arte, ela depende de vrios fatores como por exemplo o tamanho do monitor onde ele ser exibido. No se acanhe de retornar a edio de configuraes do mapa se o tamanho da rea no ficar a seu gosto de primeiro momento.

3.6.3. Adicionando um elemento


Dentro da tela de mapas, uma rea em branco dividida por linhas de alinhamento ser exibida. Seu tamanho o definido na tela de cadastro de mapas. Na parte superior da tela voc pode ver uma barra de ferramentas como na Figura 3.34, a explicao que segue define o uso de cada boto.

Figura 3.34: Barra de ferramentas para edio de mapas

1) O boto com sinal de mais (+) adiciona um novo cone, que o elemento principal dentro de um mapa. Este cone pode ser uma figura esttica, um trigger, um link para outro mapa, etc. Se voc selecionar um ou mais elementos e clicar no boto com sinal de menos ( -) voc ir excluir estes elementos. 2) Ao clicar em dois elementos possvel criar um link entre eles,

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 98 representado por uma linha (cor, formato, etc. podem ser personalizados). Este link pode conter uma label e indicar a mudana de estados de um gatilho. 3) No campo Grid podemos deixar a grade de alinhamento oculta ou no clicando em Shown/Hide 4) Tambm podemos ligar e deslig-la clicando em On/Off. 5) Na caixa de combinao a seguir a resoluo da grade pode ser escolhida, variando desde 20x20 (para ajuste fino de cones) at 100x100 (para casos de mapas extensos ou cones bem grandes). 6) Por fim, o boto Align Icons fora o Zabbix a alinhar todos os elementos do mapa nos limites mais prximos da grade. Para o propsito inicial do curso a resoluo de 50x50 o suficiente. Vamos inserir um novo cone, primeiro para representar o link de internet. Clique no boto mais do campo Icon e um novo elemento ir aparecer no canto superior do mapa, note que o Zabbix escolher o primeiro elemento grfico disponvel para ele.

Figura 3.35: Criando um novo elemento

Arraste-o at a parte da tela que voc desejar para posicion-lo.

Figura 3.36: Posicionando um novo elemento com o mouse

O Zabbix verso 1.6.x no er capaz de usar Drag & Drop. Tudo tinha que ser feito com coordenadas manuais.

3.6.4. Editando um elemento do mapa


Uma vez que o cone esteja posicionado, possvel editar os seus atributos conforme os passos descritos a seguir. Um elemento na tela pode ser de vrios tipos, ele pode por exemplo representar uma imagem esttica, um host ou um gatilho.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 99 Quando o cone representa um elemento dinmico ele vai reagir a mudanas dos estados de qualquer dos triggers associados visualmente. Como j foi dito antes isso extremamente importante para acompanhamentos visuais, especialmente se for utilizado teles ou monitores numa sala de acompanhamento de incidentes.

Figura 3.37: Editando um elemento na tela

1) Clique sobre o objeto criado anteriormente, a tela a direita ir ser exibida e pode ser reposicionada na tela para que voc poder enxergar um determinado trecho do mapa na tela. 2) O campo Type indica o tipo de objeto mencionado anteriormente, no primeiro caso iremos escolher Image porque o link no representa nenhum elemento monitorado (apesar que posteriormente vamos monitorar o estado do link). Conforme o andamento do curso veremos muitos outros tipos. 3) No campo Label digite o texto a ser exibido como rtulo do cone. Aqui como veremos mais tarde possvel colocar variveis especiais chamadas de Macros que o servidor associa a valores dinmicos. 4) A localizao deste rtulo pode ser escolhida em Label location. Por padro ela fica como definida no padro da criao do Mapa. 5) Qual a imagem do cone a ser exibida, neste caso vamos deixar como esta, mas todas as imagens que fizemos upload esto sendo exibidas nesta caixa

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 100 de seleo. 6) Por fim podemos configurar as coordenadas da posio do elemento dentro do mapa em pixels. Normalmente fazemos isso pelo No trmino clique em Apply para aceitar as modificaes, isso no vai fechar a tela de edio, para isso ainda temos que clicar em Close.

3.6.5. Salvando o mapa


importante que salvemos constantemente o mapa, pois se voc clicar em outro link de menu do front end ir perder todas as alteraes. Para salvar o mapa clique no boto Save (Figura 3.38).

Figura 3.38: Boto Save do mapa.

Um dilogo sempre aparecer ao salvar um mapa, ele no esta confirmando se voc quer salvar, e sim perguntando se deve retornar a tela anterior ou continuar no mapa. Cancel usado para continuar no mapa e OK para voltar a tela de gerenciamento de mapas.

Figura 3.39: Dialogo de salvar mapa

3.6.6. Adicionando os outros elementos


Agora adicione mais dois elementos no mapa para representar o host Presentation e Switch e posicione-os como na Figura 3.40.

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

Figura 3.40: Outros elementos grficos a serem adicionados

Clique no elemento do meio para edit-lo conforme abaixo, ele servir de representao para o host Presentation agora.

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

Figura 3.41: Editando o elemento que representa o host Presentation

1) Neste campo vamos escolher o valor host agora, visto que vamos utilizar um dos previamente cadastrados, voc ver que por ele estar desativado, quando clicar em Apply, o label DISABLED ser mostrado em vermelho. 2) Neste campo o valor da macro {HOSTNAME} ser substitudo pelo nome que cadastramos o host no gerenciamento dos mesmos. Esta macro interna do Zabbix e no precisa ser definida pelo usurio. Durante o curso aprenderemos outras e definiremos vrias que so personalizadas para a nossa necessidade. 3) Neste campo, que aparece sempre que escolhemos Host em Type clique em Select e escolha o host desejado. Neste caso o Presentation. 4) Troque o cone para Server On, visualmente ele deve representar uma mquina. 5) Ao ativar Use advanced icons os campos do item 6 sero exibidos. Isso permite escolhermos um cone diferente para cada estado. Como foi mencionado anteriormente isso um tanto redundante com o sistema de highlighting do mapa, mas vamos ativar ambos para que voc veja a

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 103 diferena entre eles. 5.1) Nestes campos escolha os cones conforme indicado, cada um dos estados ir exibir um cone diferente. Repare que o exibido na tela ao clicar em Apply o Server Disable. O mesmo ser feito para o elemento do host Switch, a Figura mostra quais so os valores utilizados.

Figura 3.42: Detalhes do host switch dentro do mapa

Como resultado final uma imagem parecida com a Figura 3.43 deve estar no meio de sua rea de mapa.

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

3.6.7. Criando e editando links


Com os elementos de hosts e imagens no mapa ainda falta criar o link que interligam um elemento a outro. Os links podem tanto ser um simples trao para mostrar uma ligao entre dois elementos como tambm podem ser usados para demonstrar estados de gatilhos com problemas.

Figura 3.43: Hosts acrescentados no mapa

3.6.8. Exerccios sobre

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

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

1) Primeiro selecione o cone da Internet. 2) Pressione CTRL e clique no cone do host Presentation. A tela direita de edio vai representar uma mescla dos dois itens. 3) Clique no boto de adicionar link, uma nova parte da janela intitulada Connectors ir surgir. 4) Dentro dela um link chamado Link_1 vai estar cadastrado e ir indicar quais so os elementos que ele interliga. Clique sobre o nome dele para exibir suas propriedades na aba Connect Editor.

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

Figura 3.45: Editando as propriedades do novo link

1) No campo Label podemos colocar uma identificao deste link, assim como o rtulo dos elementos com imagens ela tambm aceita macros. 2) Nos dois campos de Elements os itens que esto vinculados podem ser alterados. 3) Em Link indicators vamos, mais a frente, associar um link com gatilhos. No momento deixe o valor como esta. 4) Em Type (OK) escolha Bold line para poder visualizar o link com mais facilidade. Este campo usado quando um ou mais gatilhos ao qual o link esta associado no estejam ativos. 5) Por fim em Colour (OK) podemos escolher uma cor para o link. Clique em Apply e salve o mapa. Agora s preciso adicionar mais um link entre o Presentation e o Switch. A figura 3.46 mostra como este ltimo vinculo deve ser cadastrado.

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

Figura 3.46: Link entre o host Presentation e o Switch

Agora voc j tem o mapa final desta prtica dirigida salve e confirme o retorno para a tela de gerenciamento de mapas. No esquea de fazer o backup do mapa exportando-o do mesmo modo que fez com os templates e hosts.

3.6.9. Exerccios sobre Mapas


1) Faa upload das figuras do DVD, pasta Imagens Mapas. So imagens do logotipo do servidor JBoss, os nomes no front end devem corresponder aos das imagens. 2) Construa o mapa final conforme a Figura 3.47.

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

Figura 3.47: Mapa final

3.7. Templates, applications e items


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 so pequenos grupos para organizar o prximo tipo de elemento (os Items) dentro de um template, eles so significativos na tela de Latest data.

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 109 2) Os Items so provavelmente o objeto mais importante dentro de todo o Zabbix. Eles so as definies das mtricas de coletas. Quase que 90% de todo o trabalho de monitoramento gira em torno de um Item. 3) Os Triggers (ou gatilhos) montam a lgica para gerar alertas baseado na informao coletada pelos Items. A parte mais complexa do Zabbix montar as expresses booleanas dos gatilhos de maneira concisa e equilibrada, evitando falsos positivos ao mesmo tempo que gera alertas em um tempo hbil. Inciaremos o estudo deles no prximo captulo. 4) Os Graphs so elementos que exibem grficos. Tambm iniciaremos seu estudo no prximo captulo. Nesta sesso nos concentraremos apenas os Applications e Items.

3.7.1. Criando um Application e um Item dentro de um template


Ainda em Configuration Templates, clique no link Applications (0) como indicado na Figura 3.49.

Figura 3.49: Criando um application (1/4)

Uma nova tela surgir, localize no canto superior direito dela o boto Create application como na Figura 3.50 e clique sobre ele.

Figura 3.50: Criando um application (2/4)

A tela de New application surgir conforme abaixo.

Figura 3.51: Criando um application (3/4)

1) Coloque o nome da application aqui, neste caso ela se ICMP. 2) Podemos opcionalmente escolher outro template ou host para associar este application. Pouco provvel que venhamos a alterar este tipo de opo nesta tela. Clique em Save para concluir e retornar a tela que lista todas as applications.

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

Figura 3.52: Criando um application (4/4)

Nosso novo application esta exibido na tabela. Agora o momento de criar um novo item, clique sobre o link Items (0) nesta tela (no caso de estar em outra tela, acesse Configuration Templates e clique no link de mesmo nome na linha do template que voc deseja acrescentar).

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

Na tela de items, clique no boto Create Item para exibir a tela a seguir. Ainda no ser explicado campo-a-campo do cadastro de um novo item, isso ser feito no decorrer do curso.

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

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

1) No campo Description coloque um identificador (de preferncia nico, mas isso no necessrio). O nome dele ser o exibido em grficos, usado em triggers, etc. Escolha coerentemente. 2) O Type indica como este item vai fazer a coleta de uma mtrica. Os diversos tipos que sero abordados neste curso sero explicados nos prximos captulos, aqui vamos usar Simple check que significa usar checagens via protocolo de rede. 3) O Key o campo mais importante de todos, ele deve ser nico dentro de cada template e host. Sua funo definir qual mtrica ser coletada. Como dito anteriormente um item a parte mais importante de um template e o seu key a parte mais importante de um item. Saber qual usar em qual situao faz parte da competncia de usar a ferramenta e de criar um monitoramento eficaz. No nosso caso vamos criar um item que faz um ping via ICMP no host, logo a chave ser icmpping. Clicar em Select abre uma janela com infindveis keys, voc pode selecion-las por l se desejar. 4) Repita Cada item do Zabbix capaz de armazenar apenas um, e somente

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 112 um valor. No possvel armazenar objetos complexos dentro dos items, por isso precisamos definir qual o formato que o valor ser armazenado. No caso da key icmpping ele retorna 1 se o ping foi bem sucedido e 0 seno. Valores inteiros sem sinal como estes so Numeric (Unsigned). 5) O Update interval, o tempo entre uma coleta e outra em segundos. Por padro o Zabbix usa 30 segundos, no nosso cenrio usaremos 10, mas tenha em mente que estes no so bons valores. Enquanto podemos nos sentir tentados a usar intervalos curtos para termos uma granulidade de dados bem alta (e mais prxima da realidade) ele impacta pesadamente em duas coisas: espao em disco, que aparentemente pequeno mas comea a tomar grandes propores em ambiente com milhares de mtricas e enfileiramento de mtricas a serem processadas pelo servidor. A ltima em particular muito ruim, pois causar todo tipo de buraco possvel nos seus grficos. Veremos como calcular um bom intervalo a partir do prximo captulo. 6) Os campos Keep history e Keep trends indicam por quanto tempo (em dias) os dados coletados sero armazenados. O primeiro tempo dele na tabela history do banco de dados que mantm os dados ipses-literis como coletados, a segunda uma mdia de 3 horas dos valores coletados para economizar espao. Como veremos, o Zabbix tem uma operao rotineira chamada house keeping que limpa os dados vencidos (depois que passar os dias em keep history) da tabela history passando a mdia para a trends. Depois que vencer o tempo em Keep trends os dados so apagados de vez. 7) Escolha o application ICMP que criamos anteriormente. Se existirem mais de um application nesta lista, voc pode pressionar CTRL para selecionar vrios. Clique em Save para finalizar.

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

O resultado final mostrado na Figura 3.55.

3.7.2. Interdependncia de templates


Em vrias situaes prticas seremos obrigados a criar uma lgica de checagens entre os triggers que iro gerar alertas e usar applications que esto em outros templates. Isso s pode ser feito se criarmos templates que so associados a outros. No nosso cenrio de exemplos teremos vrios casos deste tipo. Normalmente os templates mais prximos a raiz so aqueles que realizam os

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 113 testes mais primrios, como o template de ICMP criado anteriormente, de fato ele ser a raiz da maioria dos outros templates em destaque o de JBoss, sistemas operacionais e SNMP. Para exemplificar crie um novo template chamado 4Linux JBoss Base antes de salvar note que h um campo no final do formulrio chamado Link with template.

Figura 3.56: Campo para associao de templates

Clique no boto Add para abrir a tela de templates.

Figura 3.57: Tela para escolha de templates

Na janela de dialogo que aparecer selecione 4Linux ICMP e clique em Select. Voc pode escolher tantos templates o quanto precisar nesta tela.

Figura 3.58: Template associado

A Figura 3.58 mostra como a tela ficar, isto indica que o novo template vinculado ao 4Linux ICMP. Salve o template

Figura 3.59: Template associado na lista de templates

Note que todo template que tem alguma associao ser mostrado na coluna Linked templstes na tela de Templates List. Agora todo host que for associado ao template 4Linux JBoss ser automaticamente associado ao 4Linux ICMP, alm disso o primeiro pode utilizar os applications do segundo e seus triggers podem dependender dos do segundo. Para finalizar com os templates crie todos os templates indicados abaixo e associe-os conforme a estrutura de rvore indicada.

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

3.8. Associando os templates aos hosts


Agora que temos os templates criados podemos vincular cada um deles aos hosts criados. Fazer isso para um host muito simples, siga os passos abaixo.

Figura 3.60: Inter-relao dos templates base

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

V at Configuration Hosts e clique sobre o nome do host (no nosso caso vamos usar JBoss AS) para editar as preferncias do mesmo.

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

Na parte direita da tela localize o quadro Linked templates (Figura 3.62) e clique sobre o boto Add.

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

No dilogo que surgir, escolha o template desejado ( 4Linux JBoss Base) e

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 115 clique em Select. Voc pode escolher tantos templates o quanto quiser aqui desde que eles no estejam associados entre si e nem tenham um template pai em comum.

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

Voc ver o nome do(s) templates(s) escolhidos aparecer neste quadro conforme a Figura 3.64 demonstra.

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

Para finalizar clique em Save.


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

Note que o template escolhido e suas dependncias (entre parnteses) sero exibidas na Lista de templates.

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

Agora vamos fazer um pequeno exerccio que vai demonstrar outro recurso interessante do Zabbix, o Mass update. Imagine que voc possui uma quantidade grande de hosts e precisa associ-los ao mesmo template, temos um caso destes no nosso cenrio, os hosts Presentation, application, Database e Zabbix server precisam ser vinculados ao template 4Linux Linux, uma vez que todas estas mquinas virtuais so servidores Linux. V at a tela de hosts e siga os passos a seguir.

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

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

1) Selecione todos os 4 hosts indicados 2) Na caixa de opes marque Mass update. 3) Clique em Go (4), note que o nmero de hosts selecionados indicado neste boto entre parnteses.

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

1) Marque a opo Link addictional templates; 2) Clique em Add. Nossa velha tela de templates ir surgir.

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

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

Marque 4Linux S.O. Linux e clique em Select.

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

Note que o template ficar logo acima dos botes de adicionar e remover. Clique em Save para finalizar.

Figura 3.72: Todos os templates associados aos hosts do cenrio

Todos os hosts selecionados est agora associados ao mesmo template.

3.9. Ativando um host


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

Figura 3.73: Host presentation no monitorado

V em Configuration Hosts e clique sobre o link Not monitored conforme a Figura 3.73 indica.

Figura 3.74: Dialogo de confirmao de ativao

Um dialogo ir surgir perguntando se o host deve ser mesmo ativado. Confirme clicando em OK.

Figura 3.75: Host presentation monitorado

A coluna onde clicamos inicialmente agora deve estar com o link Monitored em verde. Aproveite e ative todos os hosts. 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.9.1. Throubleshooting para items com problemas


Tecnicamente os templates e instalao estiver 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, e 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 devidamente funcionando, o lugar correto para descobrir o que acontece esta dentro dos items 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 - 119

Figura 3.76: Item no suportado

A Figura 3.76 mostra como o item ICMP Ping deve estar com problemas, note que o Statu 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. A mensagem neste caso /usr/sbin/fping: [2] No such file or directory. O servidor no esta conseguindo encontrar o executvel que ele utiliza para realizar os pings ICMP (fping). Um outro lugar que tambm indica o que pode estar acontencendo o log do servidor. Entre no console do Zabbix server e liste o final do arquivo de log conforme abaixo.
# tail /var/log/zabbix/zabbix_server.log 2518:20110201:202018.896 server #18 started [Escalator] 2519:20110201:202018.900 server #19 started [Proxy Poller] 2506:20110201:202020.097 server #6 started [Poller. SNMP:YES] 2511:20110201:202020.108 Deleted 0 records from history and trends 2504:20110201:202020.147 server #4 started [Poller. SNMP:YES] 2502:20110201:202020.150 server #2 started [Poller. SNMP:YES] 2507:20110201:202020.218 server #7 started [Poller for unreachable hosts. SNMP:YES] 2503:20110201:202020.242 server #3 started [Poller. SNMP:YES] 2505:20110201:202020.293 server #5 started [Poller. SNMP:YES] 2509:20110201:202023.022 /usr/sbin/fping: [2] No such file or directory

A ltima linha mostra a mesma mensagem que no front end. Para remediar esta situao devemos instalar o fping pelo gerenciador de pacotes da distro que estamos. No caso do Debian:
# aptitude install fping

Note que mesmo depois de instalar o aplicativo o erro persiste! Novamente consulte os logs (ou o front end).
# tail /var/log/zabbix/zabbix_server.log 2506:20110201:202020.097 server #6 started [Poller. SNMP:YES] 2511:20110201:202020.108 Deleted 0 records from history and trends

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


2504:20110201:202020.147 server #4 started [Poller. SNMP:YES] 2502:20110201:202020.150 server #2 started [Poller. SNMP:YES] 2507:20110201:202020.218 server #7 started [Poller for unreachable hosts. SNMP:YES] 2503:20110201:202020.242 server #3 started [Poller. SNMP:YES] 2505:20110201:202020.293 server #5 started [Poller. SNMP:YES] 2509:20110201:202023.022 /usr/sbin/fping: [2] No such file or directory 2509:20110201:202923.237 /usr/sbin/fping: [2] No such file or directory 2509:20110201:203002.281 /usr/sbin/fping: [2] No such file or directory

Mesmo aps instalar o pacote, o erro persiste! Ento provavelmente o Zabbix deve estar procurando o executvel no lugar errado. Vamos usar o comando which (pode ser o whereis tambm) para indicar onde ele esta armazenado.
root@zabbixsrv:~# which fping /usr/bin/fping

Note que ele est em /usr/bin e o servidor esta procurando ele em /usr/sbin. Isso claro varia de uma distribuio de Linux para outra. O que fazer neste caso? Simples mudaremos a configurao do servidor para se adequar ao ambiente em que ele foi instalado. Edite o arquivo /etc/zabbix/zabbix_server.conf e procure as linhas com as opes indicadas abaixo.
# vim /etc/zabbix/zabbix_server.conf # ============================================================================ # Localizao do programa de ping (ipv4 e ipv6) # FpingLocation=/usr/bin/fping Fping6Location=/usr/bin/fping6

1) FpingLocaltion: indica o caminho do fping para pacotes ICMP usando IPV4. Mude para /usr/bin/fping. 2) Fping6Localtion: como acima, mas para IPV6. Mude para /usr/bin/fping6. Com as opes modificadas reinicie o servidor.
# /etc/init.d/zabbix-server restart Stopping Zabbix server daemon: zabbix_server Starting Zabbix server daemon: zabbix_server

Confira

no

logs

se

alguma

outra

mensagem

apareceu

acesso

Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 121 Coonfiguration hosts, se o item aparecer como no suportado ainda no se preocupe ele retornar em breve, se quiser que ele seja ativado agora clique sobre o Not supported e ele ser reestabelecido. A imagem abaixo mostra como ele deve ficar ao final da operao.

Figura 3.77: Item suportado e ativo

Captulo 4 Monitoramento voltado para disponibilidade - 122

Captulo 4 Monitoramento voltado para disponibilidade

4.1. Objetivos
1) Utilizar o Zabbix como uma ferramenta para medir disponibilidade: 1.1) Medir a disponibilidade dos equipamentos via checagens simples e agente (incluindo aqui o Zapcat) 1.2) Alertar quedas de hosts, servios e reinicializaes. 2) Medir a sade da infraestrutura: 2.1) Latncia de rede e de servios. 2.2) Espao em disco nos servidores. 2.3) Servios ativos. 3) Interface 3.1) Teste manual. 3.2) Uso de grficos e mapas. 3.3) Comandos externos.

Captulo 4 Monitoramento voltado para disponibilidade - 123

4.2. Introduo
Disponibilidade! Provavelmente o que vem na mente da maioria dos consultores e gerentes de TI quando ouvem a palavra monitoramento. Enquanto a disponibilidade no seja o 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 disponvel esto seus servidores, servios e ativos de rede. O Zabbix possui diversas maneiras de descobrir se algo no esta funcionando e aqui ser visto como fazer isso usando protocolos bsicos de rede, testadores de protocolos, cenrios de teste web, o prprio agente do Zabbix, SNMP e o agente do Zabbix para JBoss. Tambm vamos entender como criar triggers (gatilhos) e Actions (aes tomadas quando um gatilho muda de estado) e enviar alertas de parada de maneira inteligente para evitar falsos positivos e permitir que a equipe de suporte reaja a tempo quando um incidente acontecer. Alm disso, vamos ver como medir diversas mtricas e gerar nossos primeiros grficos dentro do front end.

4.3. Checagens manual via front end


Obviamente o Zabbix permite que realizemos vrias checagens de maneira automtica, afinal essa sua principal funo, mas antes de comear a coletar mtricas e mais mtricas, vamos ver como usar o front end para realizar testes manuais, incluindo tambm como personalizar estes testes. V at Monitoring Maps e clique sobre o host Database com o boto esquerdo do mouse (de fato pode ser qualquer host a sua escolha). Um menu popup ir surgir como na Figura 4.1.

Captulo 4 Monitoramento voltado para disponibilidade - 124

Figura 4.1: Menu de Ferramentas acessado pelo mapa

Note que uma aba divisria chamada Tools apresenta duas opes de comando que podemos pedir ao servidor para realizar: Ping e Traceroute. Ambos so comandos bem conhecidos de um administrador de sistemas *nix. Realize um teste e clique sobre o comando Ping.

Figura 4.2: Sada de um comando ping

Depois de alguns segundos voc ver um dialogo surgir como na Figura 4.2. Ele a sada textual do comando. No caso demonstrado o ping foi bem sucedido e o comando executado inclusive mostrado no ttulo da tela. Vamos agora ao outro comando, clique em Close para fechar esta janela e execute o outro comando via o menu popup.

Captulo 4 Monitoramento voltado para disponibilidade - 125

Figura 4.3: Sada de um comando que falhou do traceroute

Apesar do comando ter retornado uma sada, ela extremamente inadequada, pois sabemos que os hosts do cenrio esto a 1 ou dois hops apenas (saltos de roteadores). Isso aconteceu porque o Firewall das mquinas esta bloqueando pacotes UDP, que so o padro do traceroute. Neste caso teramos duas possibilidades: Liberar no firewall uma regra permitindo que o servidor do Zabbix alcance os hosts por UDP; Modificar o comando para que ele realize traceroute baseado em ICMP que j esta liberado no Firewall. Nesta caso vamos optar pelo segundo item para demonstrar como alterar as configuraes destes comandos (que o Zabbix chama de scripts). Mas dependendo de seu caso real pode ser preciso liberar o Firewall para permitir a passagem de determinados pacotes. Sempre cabe ao administrador ou gerente de rede tomar estas decises com base na simplicidade, segurana e necessidade do ambiente. Infelizmente estas so regras que sempre entram em conflito, pondere bastante para no deixar falhas de segurana e verifique se o comando a ser habilitado mesmo necessrio.

4.3.1. Adequando o script de traceroute

Captulo 4 Monitoramento voltado para disponibilidade - 126 O servidor do Zabbix, assim como seu agente, so executado em forma de daemon e por questes de segurana eles so executados com permisses do usurio zabbix (e grupos ao qual esta conta pertena). Este usurio no deve ter permisses de superusurio (conforme criamos o mesmo nos captulos anteriores) e sendo assim, somos obrigados a checar se os comandos que colocaremos no front end podem ser executados pelo daemon. Primeiro vamos testar como root o funcionamento do comando. No caso do traceroute a opo para realizar traamento de rotas via ICMP o -I.
# traceroute -I win2003 traceroute to win2003 (172.28.0.10), 30 hops max, 60 byte packets 1 gateway.curso468.4linux.com.br (172.27.0.1) 2 172.28.0.10 (172.28.0.10) 1.158 ms 0.954 ms 1.066 ms 0.820 ms 1.054 ms 0.724 ms

Perfeito! Via ICMP o traceroute consegue chegar at o destino e mostrar as rotas. Agora vamos tentar como usurio Zabbix.
# su zabbix $ traceroute -I win2003 The specified type of tracerouting is allowed for superuser only $ logout #

Voc no pensou que seria to fcil, pensou? Como verificado o usurio no tem permisso de executar o traceroute com ICMP. Isso aconteceu porque somente o root tem direitos de criar pacotes da camada de rede arbitrariamente. Programas como ping, fping entre outros tem permisso SUID ativa para garantir que usurios convencionais sejam capazes de executar estes programas. Evite usar SUID para dar permisses de execues aos usurios normais! Isso pode causar falhas de segurana. Felizmente existe uma alternativa n mundo UNIX, o sudo, um programa que verifica se um usurio tem permisso de execuo a partir de suas configuraes. Mesmo o sudo teve seu histrico de segurana comprometido, por isso sempre mantenha sua distribuio atualizada com os ltimos patches de segurana, nunca se sabe quando uma nova falha vai sair.

Captulo 4 Monitoramento voltado para disponibilidade - 127 Instale o sudo a partir do repositrio do Debian no host Zabbix server.
# aptitude install sudo

Agora use o comando visudo para adicionar a permisso do usurio zabbix de executar o comando traceroute.
# visudo
1

# /etc/sudoers
2

# # # env_reset

# This file MUST be edited with the 'visudo' command as root.


4

# See the man page for details on how to write a sudoers file.
6 7 8

Defaults
9

10

# Host alias specification


11

12

# User alias specification


13

14

# Cmnd alias specification


15

16

# User privilege specification


17

root

ALL=(ALL) ALL
18

19 20

# Allow members of group sudo to execute any command # it further down) %sudo ALL=(ALL) ALL
23 24

# (Note that later entries override this, so you might need to move
21 22

#includedir /etc/sudoers.d
25

26

zabbix ALL = NOPASSWD: /usr/bin/traceroute

Salve o arquivo e teste novamente o comando usando agora o sudo antes dele.
# su zabbix $ sudo traceroute -I win2003 traceroute to win2003 (172.28.0.10), 30 hops max, 60 byte packets 1 gateway.curso468.4linux.com.br (172.27.0.1) 2 172.28.0.10 (172.28.0.10) 3.805 ms 0.980 ms 4.292 ms 0.855 ms 4.211 ms 0.926 ms

Voil! Seu usurio Zabbix j consegue usar o comando no sistema, vamos voltar ao front end. Entre em Administration Scripts e clique sobre o nome do

Captulo 4 Monitoramento voltado para disponibilidade - 128 comando Traceroute. Uma tela de edio do script ir surgir.

No campo Command modifique o valor, colocando sudo seguido de espao antes do traceroute e clique em Save. Agora volte at o mapa (Monitoring Maps) e execute o comando em vrios hosts.

Figura 4.4: Sada do traceroute adequando a nova necessidade

A sada da Figura 4.4 mostra a sada do comando sobre o host Windows2003. Note que ela idntica sada do terminal.

4.3.2. Criando novos comandos para o menu


Quando as coisas comeam a dar errado e os alertas chegam voc pode necessitar que usurios de primeiro nvel sem conhecimento profundo de Unix ou Windows, e consequentemente sem acesso aos consoles do servidor, precisem realizar testes. Logo existiro casos em que seu ambiente demande de vrios scripts a serem executado a partir do servidor via front end. Um exemplo muito comum o

Captulo 4 Monitoramento voltado para disponibilidade - 129 de testes de portas de servios TCP. Para exemplificar este caso, vamos criar um script que chama um comand nmap testando a porta 22/TCP (SSH) dos servidores Linux em nosso cenrio. Voleta em Administration Scripts.

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

Clique sobre o boto Create script conforme a Figura 4.5 para cessar a tela de criao de comandos.

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

1) Name: o nome do comando a ser exibido no menu; 2) Command: O comando a ser executado, no nosso caso nmap -P0 -p 22 {HOST.CONN}. O parmetro -P0 do nmap indica que o host no deve ser pingado antes de testar a porta (-p 22). {HOST.CONN} uma macro do Zabbix que contm o IP do servidor (ou nome DNS do mesmo, depende do que escolhemos na criao do host). Vrias macros, inclusive personalizadas podem ser usadas neste caso. 3) User groups: Indica o grupo usurios que podem executar este comando. Escolha All para este cenrio. Se voc possuir vrios tipos de usurios qure precisam executar alguns comandos compensa criar um grupo de usurios s para isso e atribuir quais usurio pertencem a estes grupos. No esquea de dar permisso conforme os campos a seguir para que ele seja capaz de ver os comandos.

Captulo 4 Monitoramento voltado para disponibilidade - 130 4) Host groups: indica em quais grupos de hosts um comando pode ser executado. Em combinao com a opo anterior possvel criar regras bem complexas. Alm disso no faz sentido testar um SSH em um Windows por exemplo. Escolha Linux servers. 5) Qual tipo de permisso o grupo do usurio deve ter no host groups para exibir o comando. Ao menos permisso de READ requerido. Depois de cadastrar os campos clique em Save e v at o mapa para testar o comando. Clique sobre um host Linux.

Figura 4.7: Nova entrada de menu com o script criado

A Figura 4.7 demonstra como o popup deve ter ficado. Clique sobre o novo scipt SSH para execut-lo.

Figura 4.8: Resultado do comando ativado no host

Se tudo correu bem a sada do comando deve ser mostrada conforme a Figura 4.8. Note que os hosts switch, JBoss AS e Windows 2003 no devem exibir este

Captulo 4 Monitoramento voltado para disponibilidade - 131 comando.

4.3.3. Exerccios
1) Faa com que o comando SSH seja somente executado pelos usurios suporte e sysadmin. 2) Crie o seguinte conjunto de comandos para teste de portas: 2.1) Testar a porta 445/TCP dos hosts Windows. Somente os usurio suporte e winadmin devem pode execut-lo. 2.2) Testar as portas 8009/TCP do servidor de aplicaes. Somente os usurios suporte e javaeng devem poder execut-lo 2.3) (Desafio) Testar a porta 80/TCP do gateway onde fica o sistema de cache e proxy reverso e do servidor de aplicaes. Somente o usurio suporte e sysadmin podem execut-los. No caso deste exerccio voc deve verificar se foi retornado HTTP 200. 2.4) (Desafio) Testar a porta 5432/TCP do host Database. Somente o usurio suporte e dba podem execut-lo. No caso deste exerccio voc deve verificar se foi retornado o valor um a partir de um SELECT 1. 2.5) (Desafio) O Varnish tem um console local de comandos acessado por uma porta. Na mquina Presentation crie um script que acessa este console e limpa o cache do Varnish para ser chamado via script do Zabbix. Somente o sysadmin pode executar este comando.

4.4. Checando disponibilidade via protocolo ICMP


Criar comandos de teste interessante mas no automatiza o monitoramento que o servidor deve fazer constantemente. Logo, chegou o momento de verificar como host pode apresentar indisponibilidade a partir da checagem de retorno de pacotes ICMP reply. Nem todos os sistemas permitem pacotes ICMP. Se este for o caso no adianta criar testes como o a seguir, pule direto para verificao de agentes e portas.

4.4.1. Como funciona o ping ICMP


O ICMP (Internet Control Message Protocol) um protocolo da camada de rede do modelo TCP/IP responsvel por trocar mensagens de controles entre os hosts

Captulo 4 Monitoramento voltado para disponibilidade - 132 (por exemplo, falhas de rotas). O utilitrio ping, o fping (instalado no captulo anterior e usado pelo Zabbix para enviar testes de ICMP) e tantos outros utilizam apenas duas mensagens definidas na RFC 792 para fazer testes de rede. Um para envio da mensagem e outro para resposta (Figura 4.9).

Figura 4.9: Diagrama de comportamento do echo ICMP

Este teste j esta sendo realizado em nosso cenrio, visto que criamos o item icmpping dentro do template 4Linux ICMP e ativamos os hosts. Embora muito primrio, este teste valida todo o caminho fsico entre os componentes de rede do destino e da origem (switches, cabos, placas, roteadores, etc.) e por isso muito utilizado dentro de vrios cenrios reais. Podemos ver a troca de pacotes acontecer atravs do comando tshark a seguir.
# tshark -ni eth0 icmp and host 172.27.0.1 Running as user "root" and group "root". This could be dangerous. Capturing on eth0 0.000000 0.000959 1.000731 1.001954 2.000778 2.001882 172.27.0.10 -> 172.27.0.1 172.27.0.1 -> 172.27.0.10 172.27.0.10 -> 172.27.0.1 172.27.0.1 -> 172.27.0.10 172.27.0.10 -> 172.27.0.1 172.27.0.1 -> 172.27.0.10 ICMP Echo (ping) request ICMP Echo (ping) reply ICMP Echo (ping) request ICMP Echo (ping) reply ICMP Echo (ping) request ICMP Echo (ping) reply

Note que para todos os pacotes echo request, um echo reply retorna do destino.

4.4.2. Visualizando o ping ICMP no Front end


Podemos visualizar o resultado dentro da tela de Overview do front end, acesse Monitoring Overview para exib-la.

Captulo 4 Monitoramento voltado para disponibilidade - 133

Figura 4.10: Hosts ativos com ping ICMP em funcionamento

Na Figura 4.10 temos um exemplo desta tela mostrando todos os hosts. Se ela no estiver aparecendo no se esquea de selecionar no comapo Type o valor Data. Embora o Overview esteja exibindo corretamente o valor 1 da key i cmpping no muito intuitivo olhar para um nmero em meio a uma tabela (sem levar em conta que esta tabela pode ser demasiadamente extensa). Por isso o Zabbix oferece um recurso interessante chamado Values Maps que permitem dar nomes aos valores. J existem vrios deles definidos por padro, entre em Administration General, no canto direito da tela selecione Value Maps. Aproveite a deixa e apague todos eles exceto pelo Service State e Windows Services, vamos sempre manter 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 Service State para edit-lo. Vamos transformar seus valores Up e Down em Ok e Falha.

Figura 4.12: Editando o value map para nossa necessidade

1) Name: Aqui definido o nome do novo conjunto de valores, vamos mud-lo para Estado. 2) Mapping e New mapping: Estes campo permitem a edio dos valores que so mapeados. Clique sobre os valores de Up e Down e no boto Delete

Captulo 4 Monitoramento voltado para disponibilidade - 134 Selected para remov-los e use o New Mapping para adicionar os novos valores conforme a ilustrao demonstra. Clique em Save para salvar e sair.

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. V at Configuration templates, clique sobre o valor items do 4Linux ICMP e depois sobre o nome do item ICMP Ping.

Figura 4.14: Selecionando um value map no trigger

Procure o comapo Show value conforme indicado na Figura 4.14 e escolha a opo Estado. Salve o item e volte ao Overview.

Figura 4.15: Values maps no overview

Note que agora todas as opes que possuem o valor 1 esto com a string OK. Isso facilita e muito a visualizao dos valores e sempre que possvel iremos criar ou usar Values Maps prontos para melhorar a apresentao de dados.

4.4.3. Criando um gatilho de parada de host


Embora j saibamos qual host esta em p, ainda no pedimos ao servidor para nos alertar via e-mail/Jabber a parada de um deles. Vamos primeiro testar o que o front end j nos mostra e depois iremos criar nosso primeiro trigger que vai avisar quando algo de errado acontecer com nossos hosts. Primeiro pause uma das mquinas virtuais (o exemplo utiliza o Database), pelo console do Virtual Box selecione o menu Machine Pause (Ou use CTRL Direito + P).

Captulo 4 Monitoramento voltado para disponibilidade - 135

Figura 4.16: Pausando o host Database

Depois de alguns segundos (dez para ser mais exato) o overview vai indicar que o Database esta parado.

Figura 4.17: Host database parado no overview

1) Caso deseje voc pode escolher o grupo Database servers para facilitar a visualizao dentro do Overview. Agora que j sabemos que o item esta funcionando corretamente, vamos criar nosso trigger. Antes despause a mquina virtual, assim o trigger entrar desligado. Um trigger (gatilho) um teste de condio que possui um estado (OK, PROBLEM ou UNKNOWN) e permite que o Zabbix tome uma deciso sobre a ocorrncia de um incidente dentro do cenrio monitorado. Um nico trigger pode conter uma simples teste boleana como o que usaremos agora a pouco como tambm verdadeiras equaes boleanas que testam inmeras possibilidades para decidir o que aconteceu. Felizmente a grande maioria dos casos requerem testes simples de

Captulo 4 Monitoramento voltado para disponibilidade - 136 valores de um nico item. V para a tela de templates em Configuration Templates onde esta o 4Linux ICMP.

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

Edite os triggers do template conforme mostrado na Figura 4.18 .

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

No canto direito da tela clique no boto Create Trigger. Uma nova tela ir aparecer.

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 e-mails, SMS e outras formas de alertas. Por isso o nome deles permitem que contenham macros. No exemplo desta prtica dirigida usamos o valor Host {HOSTNAME} inalcanvel. Onde {HOSTNAME} ser substitudo pelo nome do host que o trigger foi ativado. 2) Expression: onde iremos escrever o teste do gatilho, sua expresso boleana. Clique em Toggle input method para mudar o modo de escrita do gatilho, por padro teramos que escrever a expresso na mo, mas como voc ainda esta iniciando no Zabbix iremos usar o auxiliar de expresses.

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

Note que a tela vai mudar conforme a Figura 4.21, para criar nossa expresso use o boto Edit. A tela Condition ir surgir para que possamos montar a opo do teste.

Captulo 4 Monitoramento voltado para disponibilidade - 137

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

1) Item: indica a mtrica coletada neste template a ser avaliada. Clique em Select e escolha o ICMP Ping. 2) Function: a funo usada para verificar o gatillho, ao clicar na caixa de combinao voc ver uma grande quantidade de funes possveis. O Zabbix muito extenso e provvel que voc no venha a usar todas estas funes em produo, no entanto elas esto l se voc precisar. No curso veremos apenas as mais relevantes. Escolha Last value = N para que possamos testar se o ltimo valor do ping foi uma falha. 3) Last of (T): define o tempo ou contagem de coletas a serem analisados, vamos selecionar 1 coleta (a ltima). 4) N: O valor de N na expresso da funo escolhida no item 2. 0 no nosso caso que define um ping mal sucedido. Temos ainda o Time shift que permite retroceder no tempo para coletar mtricas a um espao definido de segundos para trs. No usaremos ele ainda. Clique no boto Insert para retornar a tela anterior.

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

Veja que o construtor de expresso j escreveu para ns toda a frmula. O valor {4Linux ICMP:icmpping.last(#1)}=0 o resultado final das escolhas feitas na tela anterior. Ela esta no formato {Template:item.funo(parmetros)}=valor, no se preocupe tanto com isso por enquanto, mas voc deve ser capaz de ler as expresses e compar-las com o gerador automtico pois no manual as referncias so mostradas como o nome de cada funo e no pelos menus. Para acrescent-la use o boto Add.

Captulo 4 Monitoramento voltado para disponibilidade - 138 um erro muito comum dos iniciantes (e mesmo de alguns veteranos) que esqueamos de clicar em Add. No caso de voc receber um erro ao salvar dizendo que a expresso invlida verifique se voc deixou de adicionar a frmula.

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

Com a nova expresso ativada podemos nos ater a outros pontos do trigger. O boto Test pode ajudar a resolver uma expresso mais complexa, mas tenha em mente que a entrada de dados da expresso s pode ser obtida manualmente (voc vai digit-las). No possvel coletar os dados do item para averiguar se voc fez certo.

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

1) The trigger depends on: aqui podemos escolher se este trigger depende de outros de forma que ele no seja ativado se outro mais bsico esta com status PROBLEM. Vamos ver dependncias mais a frente, por hora deixe vazio. 2) Event generation: indica se o trigger vai gerar um evento apenas uma ou mltiplas vezes. 3) Severity: um dos campos mais importante de todos, indica o quo problemtico pode ser a ocorrencia de um incidente. 4) Comments: um texto explicando o que este trigger representa e o que acarreta ele esta ligado. til para o pessoal de primeiro nvel de suporte

Captulo 4 Monitoramento voltado para disponibilidade - 139 que no tem conhecimento profundo do sistema. Clique em Save para finalizar este passo.

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

O gatilho deve estar sendo exibido na lista de triggers.

4.4.4. Lidando com os eventos


Todo gatilho gera um evento que representa um nico incidente, normalmente um evento representa o incio ou trmino do mesmo. Dentro do Zabbix voc deve aprender a lidar com os eventos e suar o front end para verificar se um deles ocorreu. So muitas as telas onde podemos verificar que um incidente aconteceu em um host. Pause novamente o host Database para provocar o incidente de chamada dele e v at Monitoring Dashboard.

Figura 4.27: Indicao de problemas no Dashboard

Note que a coluna Disaster do quadro System status esta indicando que um host do grupo Database Servers e Linux Servers est com problemas. Na verdade o mesmo host Database que esta nos dois grupos. Outro lugar que deve estar refletindo a condio de falha o prprio Overviiew, tanto no modo de dados como na Figura 4.28 como na de gatilhos na Figura 4.29.

Captulo 4 Monitoramento voltado para disponibilidade - 140

Figura 4.28: Overview com indicao dos items com alerta

Figura 4.29: Overview com visualizao dos triggers ativos

O Mapa tambm deve estar mostrando o status do trigger no host Database, v at Monitoring Maps e repare como o Zabbix colocou um crculo vermelho no fundo do host. O nome do gatilho tambm esta aparecendo abaixo do label de nome.

Captulo 4 Monitoramento voltado para disponibilidade - 141

Figura 4.30: Mapa indicando o host Database como down

Por fim existe a tela de eventos em Monitoring Events onde podemos manipular estes eventos. Antes de entrar nela remova a pausa da mquina Database. Isso vai forar o Zabbix a gerar um evento de retorno que ser visualizado na prxima tela.

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

1) Group: filtra as opes de host groups. 2) Host: filtra os hosts do grupo escolhido. 3) Source: define a origem dos eventos, um evento pode ser gerado por um gatilho ou por deteces de hosts feitas pelo Zabbix. Repare que a coluna Status tem duas linhas, uma para a ativao do trigger e outra para a desativao. Este comportamento desejado pois sabemos por quanto

Captulo 4 Monitoramento voltado para disponibilidade - 142 tempo um determinado trigger ficou ativo (e por consequncia, por quanto tempo o incidente ocorreu na sua infra), consulte a coluna Duration para isso. Na coluna Duration se um evento mudou de estado uma ltima vez, o valor mostrado indica o tempo desde aquele ponto at o momento. Outro ponto importante a coluna Ack (acknowledgement, ou confirmao). Ela mostra se um determinado evento foi percebido por algum, e de boa prtica sempre preench-lo com algo relevante (mesmo que seja um simples texto de esta sendo verificado. Isso permite que o Zabbix seja usado como um sinalizador de tickets. Clique sobre o link No indicado na Figura 4.31 da linha com status PROBLEM.

Figura 4.32: Tela de acknowledgement

Na tela que surgir preencha o quadro de texto e clique em Acknowledge & Return.

Figura 4.33: Acknowledge (confirmao) aplicado

Note que a coluna Ack agora apresenta o valor Yes em azul. Faa o mesmo procedimento para o final do incidente. Nunca deixe eventos sem acknowledgement, isso faz com que o histrico de eventos do Zabbix fique impreciso e deixe de ser confivel.

ATENO! A partir de agora voc obrigado a colocar confirmao em todos os eventos que ocorrerem no curso, principalmente se eles estiverem dentro das prticas dirigidas e exerccios.

4.4.5. Criando uma action para envio de alerta

Captulo 4 Monitoramento voltado para disponibilidade - 143 Usar a interface web para lidar com eventos importante, mas voc s vai saber que algo ocorreu se algum ficar na frente de um monitor. Enquanto esta se tornando comum o uso de teles (normalmente TVs de LCD modernas) para exibir mapas e screens com os status dos hosts, de suma importncia que o Zabbix envie mensagens pelas mdias de alertas aos envolvidos. Para isso temos que criar uma Action, que a cola entre os Media Types dos usurios e a mudana de status dos triggers. V at Configuration Actions para exibir a tela de aes.

Figura 4.34: Criando um action para enviar o alerta (1/9)

Conforme na Figura 4.34, no canto direto da tela clique em Create Action. Uma janela de cadastro da ao ir surgir conforme a seguir.

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

1) Name: indica o nome da ao, ele deve ser nico. 2) Event source: mostra de onde o evento foi originado, no nosso caso um trigger. 3) Default subject: o campo assunto do e-mail a ser enviado ou valor do SMS/mensagem jabber. Note que possvel, e indicado, o uso de macros. 4) Default Message: uma descrio detalhada do evento, tambm aconselhvel o uso de macros. Os outros campos deste quadro no so relevantes no momento, deixe-os no default. Antes de clicar em Save h mais dois lugares a serem configurados.

Captulo 4 Monitoramento voltado para disponibilidade - 144

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

Um deles o quadro Action condition logo abaixo do quadro principal. Clique em New conforme indicado na Figura 4.36.

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

1) Na primeira caixa de opes, escolha Trigger, note que h vrios tipos de valores que podem ser usados para disparar uma ao. 2) Na segunda caixa escolha =. 3) Por fim clique em Select e ative o trigger que criamos anteriormente. Esta condio diz que toda vez que o gatilho escolhido mudar de estado este action ser disparado. Clique em Add para adicionar e finalizar esta parte.

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

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

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

Agora precisamos escolher o que a action deve fazer. No qaudro Action operation a esquerda do principal podemos listar vrias operaes para serem ativadas quando a action for disparada. aqui onde escolhemos qual meio de alerta ser usado para uma action em particular. Clique em New conforme mostrado na Figura 4.39.

Captulo 4 Monitoramento voltado para disponibilidade - 145

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

1) Operation type: podemos escolher se vamos enviar uma mensagem de alerta ou executar um comando remoto. 2) Send message to: indica para quem a mensagem deve ser eviada, podemos escolher grupos ou usurios em particular. Para o nosso caso, um aparada de ping deve ser enviada ao grupo Network administrattors. 3) Send only to: aqui escolhemos quais media types devemos usar, podendo optar por usar todos os disponveis. 4) Default message: envia a mensagem padro operao. Geralmente este o desejado, mas podem haver casos de operaes que precisem de uma mensagem mais especfica, como um SMS com um corpo de texto mais compacto. Clique em Add e voc ver que a nova operao ser adicionada ao quadro

Figura 4.41: Criando um action para enviar o alerta (8/9)

Aps isso clique em Save no quadro principal.

Figura 4.42: Criando um 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 e-mails no Evolution e as mensagens no Pidgin.

Captulo 4 Monitoramento voltado para disponibilidade - 146

Figura 4.43: Mensagens de alerta recebidas no Evolution

Voc deve receber dois alertas, um de parada (PROBLEM) e outro de retorno (OK). Repare que os valores das macros foram substitudos pelo Zabbix.

4.4.6. Exerccios
1) Aproveite o momento que voc tem com uma action plenamente funcional e consulte o manual on-line do Zabbix para que voc veja as macros disponveis no servidor e altere os textos e ttulos das mensagens para experimentar os valores possveis nas mensagens. 2) Reinicie a mquina virtual Database conforme a Figura abaixo indica e diga o que aconteceu com os eventos. Voc acha que isso um comportamento correto? _______________________________________________________________________________ _______________________________________________________________________________

Captulo 4 Monitoramento voltado para disponibilidade - 147

Figura 4.44: Reiniciando o host Database

4.4.7. Boas prticas com triggers


Se voc fez o ltimo exerccio, deve ter percebido que o evento foi acionado pelo reboot da mquina virtual, Este tipo de comportamento esperado, afinal a resposta do ping deixou de ser enviado ao servidor. No entanto a mquina no caiu e uma simples reinicializao de providencial em um servidor ou servio no deve ser acusada como queda de host. Ambos so situaes diferentes. Por isso devemos sempre ter em mente que nossos triggers no devem ser limitar a verificar um nico valor de mudana de estado na maioria das vezes. preciso de uma lgica mais bem trabalhada e fazer uso de um recurso chamado janela de tempo. A Figura 4.45 ilustra como a janela de tempo funciona.

Captulo 4 Monitoramento voltado para disponibilidade - 148

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 permitir que o servidor de monitoramento se adapte a uma mudana nos valores de coleta. Seu principal efeito no alertar falsos positivos, que podem ser piores do que falsos negativos em certas circunstncias (lembra da histria do lobo?). O alerta de queda de host ao reiniciar o host um falso positivo, no houve queda real, apnas uma reinicializao. Note que ao servidor parar de responder nenhum alerta enviado imediatamente, o trigger ir aguardar o tempo determinado na janela at decidir mudar de estado. O mesmo acontece com o retorno do host. Embora parea contraprodutivo isso reduz o risco de envio de mensagens de alerta a toa, dependendo do tipo de mensagem, isso pode inclusive representar uma ecnomia para a empresa se o Media type usado for pago (como o SMS). Imagine receber centenas (ou milhares de SMS) por causa de trafego excessivo que impediu que os pings ICMP chegassem ao servidor! Nada saiu do ar, apenas o trafego de rede ficou insuportavelmente lento. E a intermitncia dos pacotes pode gerar mais dores de cabea do que auxlio. Obviamente temos que tomar cuidados para que hajam alertas de outros estados que um host ou toda a infraestrutura pode alcanar. Mais adiante noeste captulo vamos, por exemplo, criar uma trigger para alertas de reinicializaes. Definir gatilhos e aes para todas as possibilidades de sua infraestrutura justamente o maior desafio depois de responder a pergunta o que devo monitorar?. Geralmente este tipo de granulao s alcanado depois de alguns meses com o monitoramento ativado, a melhor

Captulo 4 Monitoramento voltado para disponibilidade - 149 maneira de se planejar tudo isso comear pequeno e cobrir novas necessidades conforme ela aparece. Receitas de bolo como a ITIL so excelentes passos para se decidir por onde e quando comear. Vamos ento criar um trigger com uma janela de tempo. Edite a condio do nosso trigger criado anteriormente, acessando Configuration Templates, clique no valor triggers do template 4Linux ICMP e depois abra a condio do gatilho. Dois campos sero alerados como a seguir.

1) Function: mude a funo para Sum of values for period of time T = N , justamente o T nossa janela. 2) Last of (T): A definio da janela, no nosso exemplo usaremos 60 segundos visto que nosso item pinga o host de destino a cada 10 segundos. Procure deixar a janela prxima ao tempo de coleta entre x3 a x6. Salve tudo e reinicie o host novamente, se tudo correr bem a janela vai evitar que o laerta seja enviado. Se ainda assim voc receber o alerta preciso aumentar a janela de tempo. Qual um bom tamanho de janela de tempo? Isso uma pergunta que depende inteiramente de seus sistema, a maioria dos casos no requer uma janela menor do que 5 minutos. Janelas muito extensas podem diminuir o tempo de resposta da equipe de TI e muito pequenas tendem a gerar falsos positivos. Tente achar o equilbrio.

4.5. Checagem genrica de portas e servios


Como dito anteriormente ICMP requests podem ser barrados por Firewalls. Se este for o seu caso, ento voc no pode depender deles para medir a sua

Captulo 4 Monitoramento voltado para disponibilidade - 150 disponibilidade e deve recorrer a outros mtodos, neste tpico veremos um muito comum, a checagem de portas TCP.

4.5.1. Conexes TCP e handshakes


Como se d a verificao remota de um servio rodando em um soquete TCP? Vamos fazer uma pequena prtica para a verificao do mesmo e entender o famoso Three wy handshake do protocolo TCP. Primeiro ative no host Application o seguinte comando:
# tshark -ni eth0 host 172.27.0.10 and port 8080 Running as user "root" and group "root". This could be dangerous. Capturing on eth0

O tshark o comando de linhas de console do Wireshark, e muito mais poderoso que o tcpdump. No caso do comando acima pedimos que ele capture todo o trafego da interface eth0 que vier do Zabbix server e usar a porta 8080. Agora no servidor do Zabbix de nosso cenrio, use o comando nmap para varrer a porta 8080 do host Application.
# nmap -sT -P0 -p 8080 172.27.0.20

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-09 17:08 BRST Interesting ports on application.curso468.4linux.com.br (172.27.0.20): PORT STATE SERVICE http-proxy

8080/tcp open

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Note que usamos o parmetro -sT para forar o nmap a usar o handshake completo em vez do SYN scan1 padro. Volte ao Application para ver o resultado no tshark.
# tshark -ni eth0 host 172.27.0.10 and port 8080 Running as user "root" and group "root". This could be dangerous. Capturing on eth0 0.000000 172.27.0.10 -> 172.27.0.20 TCP 50952 > 8080 [SYN] Seq=0 Win=5840 Len=0

MSS=1460 TSV=4629163 TSER=0 WS=4 0.000090 172.27.0.20 -> 172.27.0.10 TCP 8080 > 50952 [SYN, ACK] Seq=0 Ack=1

Win=5792 Len=0 MSS=1460 TSV=4617797 TSER=4629163 WS=4


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


0.000602 0.000727 172.27.0.10 -> 172.27.0.20 172.27.0.10 -> 172.27.0.20 TCP 50952 > 8080 [ACK] Seq=1 Ack=1 Win=5840 TCP 50952 > 8080 [RST, ACK] Seq=1 Ack=1

Len=0 TSV=4629163 TSER=4617797 Win=5840 Len=0 TSV=4629163 TSER=4617797

Repare que 4 pacotes foram trocados. O primeiro o SYN (syncronization) que pede a abertura da conexo, o segundo que parte do servidor de destino como resposta o SYN/ACK (syncronization and acknowledgement) que confirma a abertura de pacotes e o terceiro o ACK apenas para concluir a abertura. O nmap usar ainda um ltimo pacote para resetar a conexo (RST, ACK) que no vem ao caso. A troca destes pacotes nesta ordem o esperado pelas funes de soquete do sistema operacional, se ela for realizada dessa forma isso significa que a porta remota esta em estado de escuta (listening) ou que esta aberta. Mas ai vem a pergunta e uma porta fechada, o que retorna? Vamos seguir com a prtica, novamente no host application execute os seguintes comandos.
# iptables -A INPUT -j ACCEPT -p tcp --dport 10000 # tshark -ni eth0 host 172.27.0.10 and port 10000 Running as user "root" and group "root". This could be dangerous. Capturing on eth0

O iptables libera no filtro de pacotes de entrada a porta 10000/TCP. Agora a partir do servidor Zabbix varra a porta 10000.
# nmap -sT -P0 -p 10000 172.27.0.20

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-09 17:13 BRST Interesting ports on application.curso468.4linux.com.br (172.27.0.20): PORT STATE SERVICE

10000/tcp closed snet-sensor-mgmt

Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Note o estado closed da sada do nmap! V at o tshark do Application e veja o trafego dos pacotes capturado pelo tshark.
# tshark -ni eth0 host 172.27.0.10 and port 10000 Running as user "root" and group "root". This could be dangerous. Capturing on eth0 0.000000 172.27.0.10 -> 172.27.0.20 TCP 47673 > 10000 [SYN] Seq=0 Win=5840 Len=0

MSS=1460 TSV=4696578 TSER=0 WS=4

Captulo 4 Monitoramento voltado para disponibilidade - 152


0.000096 172.27.0.20 -> 172.27.0.10 TCP 10000 > 47673 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0 # iptables -D INPUT -j ACCEPT -p tcp --dport 10000

Note que h apenas dois pacotes, o SYN de incio de conexo como no exemplo anterior e outro com RST/ACK pedindo para encerrar imediatamente a conexo. assim que um sistema operacional informa que uma porta esta fechada para uma tentativa de conexo remota. Um timeout na abertura de uma conexo TCP porque o cliente no recebeu nem um RST/ACK ou um SYN/ACK aps um perodo (que na maioria das vezes de 60 segundos).

4.5.2. Criando um teste de servio via varredura de portas


OK, com estes dados em mos vamos criar uma situao onde haver trs casos de portas: aberta, fechada e filtrada por firewall. No existe uma maneira confivel de se checar servios que usam UDP sem apelar para a camada de apresentao do modelo TCP/IP. Primeiro pare o servio de SSH no database.
# /etc/init.d/ssh stop

Depois remova a regras de permisso de acesso de SSH da Application.


# iptables -D INPUT -j ACCEPT -p tcp --dport 22

A partir do zabbixsrv faa a seguinte varredura de portas.


# nmap -p 22 application presentation database -P0

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-09 14:04 BRST Interesting ports on application.curso468.4linux.com.br (172.27.0.20): PORT STATE SERVICE

22/tcp filtered ssh MAC Address: 08:00:27:4B:97:E3 (Cadmus Computer Systems)

Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE ssh

22/tcp open

MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems)

Captulo 4 Monitoramento voltado para disponibilidade - 153

Interesting ports on database.curso468.4linux.com.br (172.27.0.30): PORT STATE SERVICE

22/tcp closed ssh MAC Address: 08:00:27:A3:73:61 (Cadmus Computer Systems) Nmap done: 3 IP addresses (3 hosts up) scanned in 0.48 seconds

Note que no Database que desligamos o SSH retornou closed e o firewall do Application retornou filtered, somente o Presentation deu um open. Anote este resultados pois iremos compar-los com o que o Zabbix retornar. No template 4Linux S.O. Linux crie um novo item de simple check com a key ssh. Para que o servidor possa us-la preciso que ele esteja compilado com suporte a libSSH (opo --enable-libssh).

Figura 4.46: Simple check para o SSH

1) Key: a chave ssh faz um teste na porta 22 dos servidores.

Captulo 4 Monitoramento voltado para disponibilidade - 154 2) Show value: escolha o value map Estado como fizemos no ICMP ping, a chave escolhida tambm retorna 1 para sucesso e 0 para falha. 3) New application: Crie uma aplicao exclusiva para o servio de SSH. No esquea de preencher os outros campos conforme a ilustrao. Depois de salvar este novo item, consulte a sada do overview.

Figura 4.47: Overview exibindo os servios de SSH

Note como os dois servios com firewall e com o SSH desligado retornaram Falha (0) e o que estava em funcionamento retornou 1. Uma das grandes vantagens de testar portas TCP que a possibilidade de incidncia de perdas de pacotes bem baixa em relao ao teste realizado com o ICMP. Enquanto o manual do Zabbix contm a informao de que a checagem de vrios servios retornam o valor 2 ao achar um timeout, o autor no foi capaz de reproduzir este comportamento com sucesso.

4.5.3. Exerccio sobre checagem de portas


1) Seguindo o mesmo procedimento do ICMP Ping. Crie um trigger para alertas de quedas de portas. 2) Crie os itens para monitorar todos os servios via simple check conforme a tabela abaixo. No possvel monitorar um dos servios mencionados na tabela, ao descobrir qual anote o mesmo explicando porque no foi possvel realizar um simple check nele, mais a frente voltaremos a este caso e faremos o monitoramento de outra maneira.

Captulo 4 Monitoramento voltado para disponibilidade - 155 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 Servio no monitorvel: ___________________________________________________ _____________________________________________________________________________

4.6. Validao de pginas WEB


Um recurso a parte no sistema de monitoramento do Zabbix o teste de cenrios web. O servidor capaz de disparar checagem em nvel de protocolo HTTP e reconhecimento de padres HTML para validar pginas HTML inclusive com validao de formulrios (tanto com GET ou POST). Para suportar este tipo de checagem o servidor deve ser compilado com suporte biblioteca CURL (--enable-curl).

4.6.1. Disponibilidade do site.


O Zabbix denomina um teste de um site como um scenario (cenrio), dentro deste cenrio h vrios elementos chamados de steps (passos) que correspondem a uma requisio a uma URL. O principal uso deste tipo de teste verificar se a URL esta respondendo adequadamente, podemos, por exemplo, verificar se o HTML contm uma determinada string ou se o cdigo de retorno corresponde a um sucesso (normalmente 200 OK). Mas estas checagens tem outros itens embutidos nela. O servidor calcula automaticamente a latncia de rede e a velocidade de download dos

Captulo 4 Monitoramento voltado para disponibilidade - 156 dados na URL e j gera grficos destas estatsticas. Um trigger tambm criado automaticamente para alertar cdigos de retornos inesperados ou falta em uma determinada string na pgina de resposta. Ele no entanto, no gera uma action sozinho. Muitas destas funcionalidades so encontradas em outras ferramentas como o JMeter (que possui asserts capazes de realizar este tipo de verificao), porm uma soluo no substitui a outra, pois a inteno do Zabbix no ser um validador de aplicativos web e sim um verificador de funcionalidades pontuais de URL. Ele tambm no deve ser usado como gerador de cargas para testes de performance. No entanto o Zabbix consegue armazenar o histrico de resultados on-line e por um longo tempo. Para criar um novo cenrio acesso Configuration Web. Na tela que surgir voc ver que o boto de criao estar desabilitado (Figura 4.48). Para habilit-lo preciso escolher um grupo e host conforme abaixo:

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

1) Group: escolha o grupo Linux servers. 2) Host: escolha Application, que o host interno de nosso cenrio que possui um JBoss e um Apache executando aplicaes. Ao escolher os dois valores o boto ser habilitado. Isso acontece porque no possvel colocar um cenrio dentro de um template, apenas dentro de um host. Da a necessidade de se escolher um host.

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

Clique sobre Create scenario, uma nova janela de cadastro ir surgir.

Captulo 4 Monitoramento voltado para disponibilidade - 157

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

1) Application: o application de identificao para o cenrio. Como ele no cadastrado em nenhum template tome cuidado para no escolher um application que existe em outra parte do Zabbix. Coloque Cenrio HTTP para o nosso exemplo. 2) Name: O identificador nico do cenrio dentro do host. Este nome vai aparecer no moneto do monitoramento. O valor que colocamos Teste de aplicao PHP no Apache. 3) Authetication: no caso da URL requerer algum tipo de autenticao HTTP, voc pode escolh-la aqui. No h necessidade de autenticao no nosso exemplo. 4) Update inverval (in sec): mesmo que nos itens, o tempo entre uma coleta e outra. Deixe 10 segundos para nosso cenrio. 5) Agent: como o Zabbix vai se identificar para o servidor essencialmente a string do browser o qual ele vai se passar. 6) Status: Se ele esta ou ativo. 7) Variables: um conjunto de variveis para serem enviadas ao servidor. Deixe em branco neste caso. Note que em lugar algum foi definido qual a Url que este cenrio vai acessar. Isso porque possvel definir vrias URLs dentro dele, cada uma um step. Clique no boto Add do campo Steps para criar um novo passo. web,

Captulo 4 Monitoramento voltado para disponibilidade - 158

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 exemplo pgina principal, carrinho de compras, blog, etc.) 2) URL: a URL a ser acessada, pode incluir parmetros de mtodo GET se desejado. No nosso caso colocaremos phpapp.curso468.4linux.com.br. 3) Post: se a gina receber dados via POST, as variveis e valores (um em cada linha) podem ser acrescentados aqui. Neste caso no h nenhuma. 4) Timeout: por quanto tempo o Zabbix vai esperar a resposta do servidor web onde a URL aponta. O valor em segundos, deixe 15. Valores menores podem ser usados se o teste for executado em infraestruturas locais, sites de baixo movimento ou em servidores de altssimo ndice de tempo de resposta. 5) Required: um texto que esperado na pgina de resposta. Se o servidor falhar em entregar uma pgina com esta string um trigger acionado. 6) Status code: qual o cdigo HTTP esperado para a resposta. Normalmente ele 200 que significa OK, pgina encontrada. Voc pode ver a relao de cdigos HTTP em http://www.w3.org/Protocols/rfc2616/rfc2616sec10.html. Note que este campo no obrigatrio, voc pode simplesmente pedir pro Zabbix ver se o servidor esta retornando algo, mas isso no muito til na maioria das vezes. Para terminar a insero do step clique em Add. Antes de continuar vale mencionar que a URL de testes usada neste step passa pela estrutura de cache e proxy reverso do cenrio ( Varnish Apache+mod_proxy Apache+PHP5) e por isso esta testando toda esta infraestrutura. Poderamos fazer um teste direto no servidor Apache se necessrio.

Captulo 4 Monitoramento voltado para disponibilidade - 159

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

Note que no final do quadro da janela de cenrio o novo step fica listado em forma de tabela. Ainda no vamos acrescentar outros steps, neste cenrio, salve clicnaod no boto Save.

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

Na lista de cenrios, temos agora o nosso cadastrado. Para verificar este monitoramento temos uma tela especial s para ele. Acesse Monitoring Web.

Figura 4.54: Visualizando a checagem Web

Clique sobre o nome do cenrio, note que ele esta sendo organizado pela application escolhida quando o cadastramos.

Figura 4.55: Detalhes do monitoramento Web

Na tela seguinte um resumo da ltima coleta com a velocidade (Speed), latncia de rede (Response time), ltimo cdigo HTTP de resposta (Response code) e Status dos triggers gerados automaticamente. Logo abaixo deste quadro temos dois grficos de velocidade e tempo de resposta prontos.

Captulo 4 Monitoramento voltado para disponibilidade - 160

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

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

Como voc pode ver, a criao de um cenrio simples, mas permite uma flexibilidade muito grande. Vamos em seguida ver como realizar uma validao de um formulrio web.

4.6.2. Exerccios
1) Crie um action para os triggers que o cenrio gerou e faa os seguintes testes: 1.1) Parar o servidor Apache no host Application. 1.2) Parar o servidor Apache no host Presentation. 1.3) Parar o servidor Varnish no host Presentation. 1.4) Mudar o HTML da pgina principal para no retornar a string

Captulo 4 Monitoramento voltado para disponibilidade - 161 esperada.

4.7. Checando disponibilidade via agentes


As duas simple checks icmpping e ssh que usamos e o cenrio web criado no utilizam o agente (so denomiadas agentless). Isso til quando o sistema final no permite que seja instalado o agente por um motivo qualquer e usa apenas protocolos de rede para avaliar a disponibilidade do objeto final. Porm essas checagens so muito limitadas, se no houver ao menos um agente SNMP no host de destino no possvel coletar mtricas do servidor e determinar o que causou uma determinada parada. Por isso o Zabbix vem com um agente que pode ser instalado nos hosts de destino, como fizemos no Captulo 2. Chegou a hora de utilizar este agente para realizar as checagens de disponibilidade, vamos comear simples e depois passaremos a checar mtricas de sistema operacional muito mais ricas.

4.7.1. Checando se o agente esta operacional


O primeiro passo verificar se o agente esta funcionando e escutando na sua porta, normalmente 10050/TCP. Usamos em captulos anteriores o zabbix_get para coletar dados da key agent.ping como um teste. Esta key retorna 1 se o agente esta operando, mas considere que se ele no estiver funionando no h como ele retornar 0 para alertar uma queda! Por isso essa key tem um tratamento especial dentro do Zabbix. Se algum problema de rede, firewall, daemon, etc. No permitir que o agente seja alcanado e o servidor registrar erro ele ir gravar um valor nulo na coleta. Este valor poder ser testado num trigger com a funo nodata() (veja mais a frente) e requer um tratamento especial para o caso. V at a tela de items do template 4Linux S.O. Base e crie um novo item. Ao criar o item aqui os templates 4Linux S.O. Linux e 4Linux S.O. Windows automaticamente herdaro ele.

Captulo 4 Monitoramento voltado para disponibilidade - 162

Figura 4.58: Novo item para monitorar o agente

O preenchimento dos campos j bem trivial a esta altura, a Figura 4.58 mostra quais so os valores que devem ser colocados em cada um. Como este item suportado pelo Zapcat tambm iremos copi-lo para o outro template. Salve e siga os passos abaixo.

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

1) Selecione o item dentro da lista 2) Escolha Copy selected to... na caixa de aes. 3) Clique em Go (1).

Captulo 4 Monitoramento voltado para disponibilidade - 163

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 diferenciava hosts e templates (de fato ele ainda faz pouca dissociao entre eles algumas vezes). Voc vai escolher Host neste campo para que logo abaixo possa escolher os templates. 2) Group: escolha o host group Templates. 3) Target: marque o template do JBoss como indicado. Clique em Copy para finalizar a operao. O item agora faz parte de ambos templates. Confira pelo Overview se todos os hosts Linux e Window, alm do JBoss claro, esto com este item funcionando.

4.7.2. Criando um trigger com a funo nodata()


Agora vamos criar um trigger que opera com a funo nodata() conforme anteriormente citado. O procedimento muito similar ao do gatilho para o ICMP exceto pela funo usada. A nodata() opera com base em erros de coleta para definir a queda de um agente. Se algum erro ocorrer ela retorna 1, caso contrrio um dado foi recebido e armazenado e ela retorna 0. Usaremos este truque mais a frente para triggers que podem parar de receber dados e apresentar constantemente os indesejveis estados UNKNOWN. Dentro do template 4Linux S.O. Base crie um novo trigger. Note que o trigger herdado do ICMP Base esta aparecendo na sua lista de triggers deste template tambm devido a herana entre eles.

Captulo 4 Monitoramento voltado para disponibilidade - 164

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

Exceto pelo Expression preencha os campos conforme a Figura 4.61. Depois mude o mtodo de entrada e clique em Edit.

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

1) Item: Escolha o item Agent Ping para ser avaliado. 2) Function: procure no final da lista a funo escolhida na imagem. Ela representa a nodata(). 3) Last of (T): nossa janela de tempo. Como no icmpping vamos esperar por um minuto sem resposta e ento ativar o trigger. 4) N: O valor esperado para a funo, conforme citado ele ser 1. Voc no pode escolher um valor de Last of (T) menor do que 30 segundos para a funo nodata(sec). O zabbix faz checagens de falta de recebimento a cada meio minuto, por isso deixar este campo menor que este valor no vai ter funo alguma.

Captulo 4 Monitoramento voltado para disponibilidade - 165

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

Adicione a expresso ao trigger.

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

Agora vamos adicionar uma dependncia a este trigger, ele s deve ser avaliado no caso do teste de ping ICMP for bem sucedido. Isso evita suas coisas, primeiro que mais de um action seja ativado em caso de um congelamento do host (o que economiza mensagens), segundo permite que o Zabbix no perca tempo com processamento de gatilhos que so desnecessrios para a ocasio (que gastam tempo de CPU no servidor de monitoramento). No nosso cenrio se o host no estiver respondendo requisio ICMP intil testar o agente. Note que isto pode no ser verdade no cenrio de sua empresa! Avaliar a dependncia dos triggers importante quando se est construindo uma soluo eficiente de monitoramento. Clique no boto Add e selecione o trigger do ICMP.

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

Note que agora ele aparece na lista de dependncias. Salve o novo gatilho.

Figura 4.66: Trigger para o agent ping criado e ativo

Captulo 4 Monitoramento voltado para disponibilidade - 166 Repare que ambas a dependncia e a nova funo aparece na lista de triggers. Vamos realizar um teste agora, parando o agente do zabbixsrv.
# /etc/init.d/zabbix-agent stop

V at o Overview, selecione triggers no campo Type e aguarde o ativamento do mesmo.

Figura 4.67: Trigger de agente ativado

Note que h setas nos detalhes dos Triggers para o servidor. Uma seta para cima significa que o trigger j caiu e voltou ao estado de OK, uma seta para baixo significa que seu estado atual PROBLEM. Retorne o agente ao estado normal, atribua um acknowledgement e vamos a outro teste. Desta vez derrubaremos dois hosts pausando ambos e verificando se eles vo ativar o trigger de agente alm do do ICMP. Pare o host Windows 2003 e Database e retorne ao Overview.

Figura 4.68: Dependncia entre triggers evitando que o gatilho filho seja ativado

Repare como ambos os triggers de agente ficaram cinzas enquanto os de ICMP alertaram uma queda.

Captulo 4 Monitoramento voltado para disponibilidade - 167 Se o seu teste no funcionou pode ser necessrio aumentar a janela de tempo em relao ao trigger pai. Nunca deixe a janela do filho exatamente igual ou menor que a do pai, a folga pode ser pequena mas deve existir.

No possvel usar a funo nodata() para verificar a disponibilidade via SNMP.

4.7.3. Exerccios
1) Copie o trigger para o template do JBoss. 2) Crie os actions necessrios para enviar os alertas de paradas dos hosts a seus respectivos responsveis conforme a tabela abaixo. 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.8. Tempo on-line e ltima inicializao do S.O.


Vimos anteriormente que o Zabbix alertou uma queda de host quando nosso trigger ICMP estava realizando uma checagem ruim sem janela de tempo. Ao concertar este comportamento deixamos de saber quando um host foi reiniciado. Verificar a reinicializao de hosts importante na medio da disponibilidade do mesmo. Este tpico trata justamente desta questo. Primeiro vamos ao problema prtico que temos em mos, temos que medir o tempo de uptime de todos os hosts incluindo ai os Linux, Windows, switch e a mquina virtual java na qual o JBoss executado. Isso nos d trs casos de coleta: pelo agente normal, pelo agente Zapcat e pelo SNMP.

Captulo 4 Monitoramento voltado para disponibilidade - 168 Isso vai demonstrar como o sistema do Zabbix consegue lidar com ambiente heterogneos e vai demonstrar que depois da coleta o tratamento, armazenamento e anlise no muda. O primeiro passo analisar o retorno dos valores via console, isso importante para que tenhamos parmetros de tipos de dados (inteiros, float); nome correto das keys, OIDs, etc e acesso. O agente do Zabbix possui uma key chamada system.uptime que retorna o tempo desde o ltimo boot, de maneira equivalente o JBoss tem um JMX java.lang:type=Runtime,Uptime que tambm saz isso mas para a inicializao da JVM e o SNMP por padro tem o OID MIB::sysUpTimeInstance. A OID do SNMP muito varivel de um equipamento para outro, sempre consulte o manual ou a MIB do seu fabricante para determinar o que esta disponvel para coleta. Vamos usar os seguintes comandos para os casos de uso.
# zabbix_get -k "system.uptime" -s application 59545 # echo "jmx[java.lang:type=Runtime][Uptime]" | nc application 10052; echo ZBX59374361 # snmpget -v2c -c public 172.27.0.135 DISMAN-EVENT-MIB::sysUpTimeInstance DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (6026194) 16:44:21.94

DISMAN-EVENT-

Se voc fez o desafio do tpico 2.13, pgina 68 pode usar o seu script em vez do segundo comando. Cada comando retornou um valor inteiro, todos representando o uptime do sistema. A grande diferena entre eles a preciso de tempo utilizada, o agente do Zabbix retorna o valor em segundos, o Zapcat em milissegundos e o agente SNMP em centsimos de segundos (que ele chama de timeticks). No se incomode com a sada em texto de vrios desses comandos, o Zabbix lida com os nmeros destacados em negrito apenas. Toda essa diferena requer um tratamento no momento da coleta, ou seja, na configurao de cada item. Primeiro vamos coletar o dado do agente do Zabbix, no template 4Linux S.O. Base crie um novo item conforme a seguir.

Captulo 4 Monitoramento voltado para disponibilidade - 169

Figura 4.69: Item para tempo de uptime

1) Description: coloque a descrio, conforme a figura. 2) Key: como usamos no comando zabbix_get, a chave system.uptime vai coletar o tempo de funcionamento do host. 3) Units: Este campo permite que faamos algumas personalizaes no tratamento da sada do item no overview e grficos. Embora similar ao Values maps ele mais sofistica pois formata a sada conforme necessrio em vez de simplesmente dar um apelido para uma tabela de valores. Neste caso use o uptime. 4) New application: defina um novo application para os items de sistema. Salve e faa o mesmo para o template 4Linux JBoss Base mas com as modificaes a seguir.

Captulo 4 Monitoramento voltado para disponibilidade - 170

Figura 4.70: Uptime via Zapcat

1) Key: aqui usaremos a sintaxe da key jmx pela primeira vez. Ela normalmente composta por duas partes, o nome do JMX e seu atributo cada um dentro de seu prprio colchetes. Cada jmx aponta para um Mbean no servidor. Para saber quais os Mbeans esto disponveis em um servidor com o Zapcat acesse a 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 realizado no curso 436 e 467 sobre JBoss na 4Linux. 2) Use custom multiplier: neste campo faremos o tratamento de dados para converter o resultado para segundos. Como a JVM retorna um valor em milissegundo, temos que multiplicar por .001. Salve este item e crie o ltimo, dentro do template 4Linux SNMP conforme a seguir.

Figura 4.71: Uptime via SNMP

1) Type: como este item obtido pelo SNMP temos que configurar o item para que o Zabbix entenda como colet-lo. No nosso caso estamos usando SNMP verso 2, no caso de outros equipamentos a verso 1 (obsoleta) ou 3 (mais segura) pode ser a usada, consulte o manual de seu fabricante. Esta

Captulo 4 Monitoramento voltado para disponibilidade - 171 opo requer que o servidor seja compilado com suporte a net-snmp (-enable-snmp). Note que os campos abaixo se alteram conforme voc escolhe outros tipos de valores. 2) SNMP OID: coloque a object identifier da mtrica desejada conforme sua necessidade, no nosso caso DISMAN-EVENT-MIB::sysUpTimeInstance. 3) SNMP Community: coloque a normalmente este valor public. string de comunidade do SNMP,

4) SNMP Port: A porta UDP em que o agente SNMP esta ouvindo, o padro 161. 5) Key: invente uma key a seu gosto, ela s no pode conflitar com outras keys criadas ou repetir uma registrada. Para padronizar o curso todas as chaves de SNMP so definidas como snmp.funo. Neste exemplo utilizamos snmp.uptime. 6) Units: repita o usado no item do agente. 7) Use custom multiplier: como o SNMp retorna um valor em centsimos de segundos temos que multiplic-lo por .01 para converter para segundos. Salve o item e v at o Overview.

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

A Figura 4.72 mostra todos os hosts, com as mtricas de tempo ligado obtidas conforme sua interface de coleta, graas ao campo Unit todas esto exibindo o tempo em um formato legvel por humanos e o campo Use custom multiplier ajustou os valores para segundos que o Zabbix sabe trabalhar. Novamente, isso demonstrou a capacidade em coletar dados de ambiente heterogneos, desde que voc tenha um agente suportado no h problemas. O agente padro do Zabbix compatvel com 9 sistemas operacionais do mercado, as JVMs com Tomcat e/ou JBoss so suportadas pelo Zapcat e a maioria esmagadora de ativos de redes (desde switches at impressoras, passando por no-breaks) suportam

Captulo 4 Monitoramento voltado para disponibilidade - 172 alguma verso de SNMP hoje em dia.

4.8.1. Trigger para alerta de reinicializao


Avaliar se um host foi reinicializado fcil. Devemos verificar se o uptime dele menor que um valor pr estabelecido. No entanto, reinicializao de servidores pode no um incidente crtico, de fato, normalmente ele apenas um evento planejado (a menos que voc possua uma hardware com problemas srios), por isso iremos categoriz-la como um evento de severidade warning (aviso). No um erro, mas ainda assim digna de uma ateno mais pontual. Vamos criar a trigger para o 4Linux S.O. Base primeiro.

Figura 4.73: Um trigger para a reinicializao de um host

1) Expression: defina a expresso como sendo o ltimo valor da ltima 1 hora como sendo menor do que 1800 (meia hora). Dois pontos importantes aqui: primeiro o tempo de janela da funo last() deve ser sempre maior do que o valor comparado e segundo, o tempo de ativao deve ser maior do que o tempo de coleta. 2) Trigger depends on: coloque como dependncia deste trigger o da verificao do agente. No h sentido em tentar analisar uma mtrica que no esta sendo recebida. Isso evita que ela apresente valores desconhecidos.

4.8.2. Exerccios

Captulo 4 Monitoramento voltado para disponibilidade - 173 1) Crie as triggers para os templates do JBoss e do SNMP. 2) Cria as devidas actions para alerta de reinicializao enviando mensagens apenas aos indivduos responsveis por cada host (consulte a Tabela 9 na pgina 167 para detalhes).

4.9. Checando servios pelo agente


Checar se um determinado servio est em funcionamento atravs de sua porta funcional, mas algumas vezes precisamos de mais informaes do que exatamente ocorreu no host. Imagine que por exemplo ao invs de queda do daemon, um sistema proteo como o OSSEC barrou acidentalmente a porta de destino de hosts legtimos como o prprio servidor de monitoramento. Isso no foi uma queda de servio e outros hosts podem ainda poder se conectar. Para detectar este tipo de coisa precisamos de mais dados sobre o sistema onde o servio esta sendo executado e podemos faz-lo atravs do agente do Zabbix.

4.9.1. Verificando os processos ativos na memria


O Zabbix tem uma key chamada proc.num que pode ser usada para verificar o nmero de processos na memria. Se usada sem nenhum parmetro ela faz uma contagem de todos os processos sem discriminao, para exemplificar o uso dele vamos verificar se o processo do SSH esta na memria das mquinas Linux. A sintaxe da chave a seguinte (todos os parmetros so opcionais):
proc.num[<name>,<user>,<state>,<cmdline>]

Onde, name: o nome do processo, se voc estiver checando processos numa mquina Windows, certifique-se que o processo dele contm a extenso .exe (ou similar) no final do nome. user: qual o usurio que esta rodando um determinado processo ou conjunto de processos. O padro verificar de todos os processos. state: qual o estado do processo, podendo ser all (padro), run, sleep, zombie (este ltimo somente em ambientes *nix).

Captulo 4 Monitoramento voltado para disponibilidade - 174 cmdline: filtra pela linha de comando, isso til para aplicaes que sempre iniciam o mesmo processo, como o java. Em nossa prtica atual, o nico parmetro relevante o primeiro, pois vamos buscar apenas um processo bem definido dentro da memria (o daemon do SSH). Para descobrir qual o processo usaremos o comando ps. Entre no console do servidor do Zabbixsrv.
# ps uax | grep ssh -i root root root 1161 3594 3674 0.0 0.2 0.0 0.3 1.1 0.3 5496 8304 3316 988 ? 2868 ? 836 pts/0 Ss Ss S+ 14:09 14:40 14:41 0:00 /usr/sbin/sshd 0:00 sshd: root@pts/0 0:00 grep --color ssh

O primeiro processo o daemon, o segundo uma conexo ssh acontecendo e o terceiro o prprio grep na memria que usamos na linha de comando e portante pode ser ignorado. Note que o nome do processo sshd e no simplesmente ssh, com isso em mos podemos ser mais pontuais com o ps, a opo -C pouco conhecida e usada lista apenas os processos com o nome indicado. Ela incompatvel com as opo a e x, por isso usaremos em combinao com a u apenas.
# ps u -C sshd USER root root 1161 3594 PID %CPU %MEM 0.0 0.0 0.2 0.8 5496 8304 VSZ RSS TTY Ss Ss STAT START 14:09 14:40 TIME COMMAND

624 ? 2204 ?

0:00 /usr/sbin/sshd 0:00 sshd: root@pts/0

Guarde esta opo do ps, voc vai precisar dele ainda. Vamos usar o zabbix_get para coletar a informao da chave agora.
# zabbix_get -s localhost -k "proc.num[sshd]" 2

A chave retornou 2, que exatamente o nmero de processos que contamos com o ps. Com o teste concludo vamos criao do item e trigger. Use o template 4Linux S.O. Linux.

Captulo 4 Monitoramento voltado para disponibilidade - 175

Figura 4.74: Item para verificao de nmero de processos

A Figura 4.74 ilustra como o item para contagem de processo deve ser criado, ele bem trivial.

Figura 4.75: Overview refletindo o nmero de processos

No Overview, j podemos rastrear o funcionamento da contagem de

Captulo 4 Monitoramento voltado para disponibilidade - 176 processos. Note que o nmero de processos do host Zabbix Server esta com 2 porque h uma conexo ssh ocorrendo nele, nos outros apenas o daemon aguardando a conexo est sendo executado. Com os dados sendo coletado j podemos criar um trigger.

Figura 4.76: Trigger para queda do daemon

1) A condio do trigger bem padro em relao as nossas anteriores, use a funo sum() para descobrir se algum processo esta rodando na janela de tempo de 1 minuto. 2) Ele deve depender da checagem de agente porque no h sentido em testar uma mtrica que depende do mesmo, alm disso se no o fizermos esta trigger vai resultar em um unknown se o agente cair. 3) A severidade deste incidente vai ser classificada como Average pois o SSH no um servio prioritrio para o funcionamento das aplicaes, no entanto ele no um Warning, ainda classificado como erro e precisa de interveno imeditada. Salve o trigger e v at o console do host Database e para o SSH.
# /etc/init.d/ssh stop

Acesse a lista de eventos em Monitoring Events para acompanhar a

Captulo 4 Monitoramento voltado para disponibilidade - 177 ativao do trigger.

Figura 4.77: Teste de queda do sshd

Tambm olhe no Overview como o trigger ficou exibido.

Figura 4.78: Reflexo da queda do daemon SSH no overview

Note que o teste de porta tambm falhou, mas no emitiu alerta pois ainda no temos triggers associados a ele.
# /etc/init.d/ssh start

4.9.2. Checagem de portas e servios localmente via agente


Alm do teste feito pelo servidor na porta 22/TCP, tambm podemos pedir ao agente para realizar o mesmo teste. Este tipo de teste de agente til para criarmos lgicas mais inteligentes de anlise do cenrio. A key net.tcp.service[ssh] tem o mesmo efeito e comportamento que a ssh, sua solene diferena que ela do tipo zabbix agent em vez de simple check. Crie o item conforme a Figura a seguir.

Captulo 4 Monitoramento voltado para disponibilidade - 178

Figura 4.79: Item para verificao da porta local

Aps a criao do item, verifique se a coleta esta sendo realizada. Se tudo estiver ok hora de passar para a verificao das mudanas de status. At o momento temos 3 maneiras de checar o servio: contando os processos ativos na mquina, checando a porta remotamente pelo servidor do Zabbix e checando a porta localmente pelo agente do Zabbix. Todas tem suas vantagens e desvantagens, mas em vez de us-las de forma discriminada, vamos juntar a fora de todas elas e fazer com que a lgica de todos os gatilhos trabalhem em conjunto. Essa capacidade de oferecer dependncia entre uma checagem e outra que o Zabbix oferece de estremo poder, e mesmo sem expresses booleanas complexas dentro de cada trigger seremos capazes de determinar qual o possvel ocorrido dependendo de qual trigger foi ativado. Acompanhe a explicao a seguir comeando pela leitura do fluxograma na Figura 4.80.

Captulo 4 Monitoramento voltado para disponibilidade - 179

Figura 4.80: Fluxograma da dependncia entre triggers para anlise de servios

O primeiro trigger (cada um representado pelo losango) o que criamos anteriormente para verificar se h ao menos um processo sshd no ar. No caso de no haver nenhum ele deve alertar o administrador responsvel pelo servio. Note que, se realmente no h nenhum tipo de processo do servio sendo executado ento no h sentido em verificar portas, correto? O segundo a anlise da porta localmente a partir do agente, se no h processos escutando na porta a partir da prpria mquina local ento o processo master da aplicao provavelmente caiu. Note que se voc parar o ssh pelo servio de boot as conexes que esto em andamento no so interrompidas! Logo possvel ter uma situao onde h processos sshd na memria que esto apenas atendendo a conexes que foram estabelecidas anteriormente queda do processo principal e s vo morrer se estas conexes forem encerradas. Esse tipo de comportamento muito comum em servios que so baseados em forks, como o Apache, o prprio Zabbix, muitos daemons escritos em Perl, etc. Programas que trabalham puramente com threads como as aplicaes feitas

Captulo 4 Monitoramento voltado para disponibilidade - 180 em java incluindo aqui o Tomcat e o JBoss tem um processo monoltico e no seguem esta regra. Pro fim, o terceiro trigger checa se servidor consegue abrir uma conexo com a porta remotamente. No caso de um bloqueio por filtro de pacotes no host de destino ou no meio do caminho ou falhas de rotas, este gatilho ativado. Este caso cobre a ocorrncia do daemon estar em perfeito funcionamento mas os pacotes de rede no esto alcanando o destino (ou no esto voltando apropriadamente). Como o terceiro s checado se o segundo estiver com status OK, e este ltimo se o primeiro estiver com status OK, o Zabbix no gasta processamento com os trs a menos que tudo esteja na mais perfeita ordem. Se um dos mais primrios falharem ento os outros que so checados depois so pulados. Obviamente podem haver muito mais tipos de problemas que vo alm da contagem de processos e verificao de portas. Um binrio corrompido pode causar quedas de conexes legtimas alguns segundos depois de serem estabelecidas pelo servio, ou ainda ele pode sempre retornar um erro na cara do cliente sem sair completamente do ar. Para estes casos continue empilhando outras checagens aps verificar estas trs que geralmente esto sempre perto da base. Mas vamos continuar com nossa prtica dirigida e criar os dois triggers que faltam, o primeiro j esta pronto desde o tpico anterior.

Captulo 4 Monitoramento voltado para disponibilidade - 181

Figura 4.81: Trigger para verificao da porta local

O trigger da Figura 4.81 a segunda checagem (porta local). Note que ele tem como dependncia o trigger da contagem de processos.

Figura 4.82: Trigger para verificao de porta remota

Captulo 4 Monitoramento voltado para disponibilidade - 182 J o da Figura 4.82 faz a verificao da porta remotamente e tem como dependncia o segundo gatilho. Outro ponto importante que sua janela de tempo de 70 segundos (10 a mais que o anterior), esta folga evita que ambos sejam ativados simultaneamente. Deixar uma margem entre 10 e 5 segundos na janela de um trigger que depende de outro uma boa prtica.

Como foi dito anteriormente, no h como verificar de maneira confivel se uma porta UDP est aberta. Mas o agente tem uma chave chamada net.udp.listen que verifica se localmente uma dada porta UDP esta esperando requisies.

4.9.3. Exerccios
1) Agora teste os gatilhos realizando as seguintes tarefas: 1.1) Pare o daemon ssh de um Linux sem conexes abertas para ele (somente o primeiro gatilho deve disparar). Restaure o daemon. 1.2) Pare o daemon ssh de um Linux com ao menos uma conexo aberta (somente o segundo gatilho deve disparar). Restaure o daemon. 1.3) Corte a regra de SSH dos filtro de pacotes (iptables) de um dos Linux, somente o terceiro gatilho deve disparar. Restaure a regra aps o termino.

4.9.4. Verificando servios no Windows


Assim como o Linux, o Windows tem seu sistema de gerenciamento do servios ativos na memria. Usamos ele no tpico 2.8.1. , pgina 48 para executar o servio do agente do Zabbix. Acesse o Painel de Controles Ferramentas Administrativas Servios. Na tela que lista os servios, localize o servio de Telnet. Ele deve estar desativado.

Figura 4.83: Servio telnet do Windows

Vamos us-lo como exemplo para monitoramento de servios no Windows. O Telnet simples de se colocar em funcionamento, de fato quase nada configurado. Clique duas vezes sobre o nome dele.

Captulo 4 Monitoramento voltado para disponibilidade - 183

Figura 4.84: Habilitando o servio de telnet do Windows

1) Nome do servio: anote o nome do servio! O Zabbix precisa dele para conseguir localiz-lo no sistema. No nosso caso TlntSvr. 2) Tipo de inicializao: mude para automtico. Depois de terminar clique em OK, o servio vai entrar registrado mas ainda no iniciado.

Figura 4.85: Ativando o servio de telnet

Para iniciar use a barra de ferramentas no topo da tela como indicado na Figura 4.85. Agora pressione CTRL+ALT+DEL, e abra o Gerenciador de tarefas.

Captulo 4 Monitoramento voltado para disponibilidade - 184

Figura 4.86: Processo do telnet na memria

Confira se um dos processos bate com o nome do servio. Provavelmente voc achar o processo tlntsvr.exe. Anote tambm este nome. Antes de cadastrar novos items vamos fazer um pequeno teste via console, use o zabbix_get para coletar o nmero de processos telnet na memria (deve retornar 1 ). Novamente reforado, no Windows inclua a exteno .exe no final dos processos para a key proc.num.
# zabbix_get -s win2003 -k 'proc.num[tlntsvr.exe]' 1

Agora vamos testar a key service_state que faz a verificao dos servios do Windows no Zabbix. Use o nome que pegamos das configuraes do Telnet como parmetro dela.
# zabbix_get -s win2003 -k 'service_state[TlntSvr]' 0

Captulo 4 Monitoramento voltado para disponibilidade - 185 Note que o resultado foi zero. Isso porque zero significa rodando, esperimente pausar o servio no Windows e execute o comando novamente.
# zabbix_get -s win2003 -k 'service_state[TlntSvr]' 1

Agora retornou 1. Sim, parece contraprodutivo, mas esta tabela foi baseada em nmeros que a prpria API do sistema Windows retorna. Os valores possveis esto na Tabela abaixo. Valor 0 1 2 3 4 5 6 7 255 Table 10: Valores da key service_state Mas isso ainda no suficiente. Temos que pedir ao Windows que libere a porta do Firewall para o acesso ao Telnet. Por padro todos os telnets usam a porta 23/TCP. Acesse Painel de Controles Firewall para abrir as preferncias. 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 - 186

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)

1) Nome: O nome do servio, apenas um label para o Firewall, coloque telnet.

Captulo 4 Monitoramento voltado para disponibilidade - 187 2) Nmero da porta: coloque 23. 3) O protocolo usado o TCP. Clique em OK para finalizar.

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

Por fim, clique em OK novamente. Para averiguar se tudo esta correto faa um teste a partir do console do host Zabbix server.
# nmap -P0 -p 23 win2003

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-15 18:39 BRST Interesting ports on 172.28.0.10: PORT STATE SERVICE telnet

23/tcp open

Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds # telnet win2003 Trying 172.28.0.10... Connected to win2003.curso468.4linux.com.br.

Captulo 4 Monitoramento voltado para disponibilidade - 188


Escape character is '^]'. Welcome to Microsoft Telnet Service login: administrador password:

*=============================================================== Bem-vindo ao Microsoft Telnet Server. *===============================================================

C:\Documents and Settings\Administrador>exit

Se o teste correu bem v at o template 4Linux S.O. Windows 2003 e crie um novo item conforme abaixo.

Figura 4.90: item para monitorar servios Windows

Nenhuma grande novidade aqui, apenas atente para a key e para o campo New application. Outro ponto importante o uso do Value map Windows service

Captulo 4 Monitoramento voltado para disponibilidade - 189 state.

Figura 4.91: Estado do servio Telnet no Overview

Verifique que no Overview o servios esta aparecendo e funcionando.

4.9.5. Restabelecendo servios offline via Zabbix


Um aviso de cautela logo no incio. Permitir que o agente execute comandos remotos no host monitorado pode causar falhas de segurana se no houver cuidado triplicado. Somente use este recurso se voc realmente precisar e tiver absoluta certeza do que esta fazendo. Um recurso poderoso a capacidade do agente do Zabbix de executar comandos remotos a pedido do servidor. Isso possibilita que sejamos capazes de restaurar um servio que caiu, ou reiniciar um que est com problemas no atendimento de requisies. Obviamente o agente por padro no executa nada, to pouco capaz de executar comandos administrativos arbitrariamente. Isso se deve a dois fatos, os defaults dos arquivos de configurao e a execuo do daemon do Zabbix como usurio no privilegiado. Nossa primeira prioridade justamente liberar o agente para executar os comandos, o arquivo /etc/zabbix/agent.d/remote_command.conf contm as configurao para tal procedimento. Eleja uma das mquinas virtuais Linux e comece a realizar os procedimentos a seguir.
# vim /etc/zabbix/agent.d/remote_commands.conf
1

# Este o arquivo de configurao do agente do Zabbix para comandos


2

# remotos.

Captulo 4 Monitoramento voltado para disponibilidade - 190


3 4

# ============================================================================
5

# Liga/Desliga o recurso de comandos remotos do agente.


6

# Este tipo de feature vem desligada por padro devido ao risco de segurana
8

# que ela pode apresentar se mal configurada.


9

10

# Note que o usurio do Zabbix tem que ter direitos de execuo do comando em
11

# questo enviado pelo servidor. Para isso ou ele executado como root

12 13

# (desaconselhvel) ou chama executveis com suid (desaconselhvel) ou utiliza # sudo para rodar os comandos. Este ltimo a opo mais segura das trs, mas
14

# requer configuraes extras no arquivo sudoers.


15 16

EnableRemoteCommands=1
17

18

# ============================================================================ # No caso de habilitada a execuo de comandos remotos, aconselhvel deixar # esta opo ativada para auditoria do sistema. Ela vai registrar no arquivo
21

19 20

# de logs do agente quando e qual comando foi executado (ou no mnimo foi
22

# tentado).
23

24

LogRemoteCommands=1

# /etc/init.d/zabbix-agent restart

preciso

mudar

para

ambos

EnableRemoteCommands

LogRemoteCommands. Seus nomes so bem subjetivos, e apesar de no haver necessidades de ativar o segundo para que a coisa toda funcione extremamente aconselhvel faz-lo. J estamos ampliando bastante a confiana do agente no servidor, vamos ser cautelosos e ao menos colocar as tentativas de execuo de comandos nos logs para auditoria. recomendvel que voc desabilite o arquivo de log tambm e faa o agente gravar no syslog, dessa forma ele no ter direito de escrita nos arquivos usados para armazenar suas mensagens. Agora a segunda parte. Como usurio zabbix, o agente no ser capaz de iniciar nenhum servio do Linux, somente o root pode faz-lo. Ento vamos apelar ao sudo novamente para execuo do comando (instale o sudo se necessrio). Configure o sudo para permitir que o agente execute sem senha o script de inicializao do ssh.

Captulo 4 Monitoramento voltado para disponibilidade - 191


# visudo zabbix ALL = NOPASSWD: /usr/init.d/ssh start

Seja metdico e s defina quais so os parmetros permitidos dentro do sudo, principalmente para scripts de sistema. No queremos ningum dando stop no ssh pelo Zabbix, acidentalmente ou no! Crie uma action para conter o comando remoto.

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

As configuraes padres so bem apropriadas, apenas acrescente o adendo na mensagem que o servios esta sendo reiniciado manualmente.

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

Nas condies, importante notar que h trs delas. Uma indica que o status do trigger deve ser PROBLEM Voc no quer que o servio seja reiniciado quando o gatilho voltar a OK, certo? As outras duas possibilidades o trigger de processo ou de checagem local de

Captulo 4 Monitoramento voltado para disponibilidade - 192 portas forem os ativados. Qualquer um deles que apresentar PROBLEM dispara esta ao.

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

Uma mensagem para os envolvidos do host deve ser remetida. E por fim o comando remoto, ativado a partir do quadro Action operations.

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. Note que o campo abaixo vai mudar. 2) Remote command: Voc precisa colocar o comando com a sintaxe Host:command, onde host o local onde o comando ser executado (onde voc habilitou o comando remoto no agente) e command o comando. No nosso caso usamos Database:sudo /etc/init.d/ssh start. Voc pode usar macros nos comandos e pode invocar quantos comandos voc quiser, em quaisquer servidores, em qualquer sequncia. Agora vamos ao teste, v at o host que voc configurou o agente para aceitar comandos remotos e pare o servio de SSH, em seguida abra o log e aguarde.
# /etc/init.d/ssh stop # tail /var/log/zabbix/zabbix_agentd.log -f 7287:20110215:192625.462 Executing command 'sudo /etc/init.d/ssh start' Starting OpenBSD Secure Shell server: sshd.

Se voc voltar tela de eventos ver que h dois deles, um de queda e outro

Captulo 4 Monitoramento voltado para disponibilidade - 193 de volta.

4.9.6. Exerccios
1) Crie o mesmo esquema de monitoramento feito para o SSH para o Apache dentro do application. Gere um template a parte para o Apache para conter os items e configuraes. Tambm crie um action capaz de reiniciar o servio se for detectado que nenhum daemon do apache esta rodando. 2) Crie um trigger para avaliar se um servio do Windows no esta rodando e um action para alertar o administrador Windows. No corpo da mensagem coloque o estado em que o estado se encontrava no momento do alerta. Use a mesma ttica de checagem de portas e mltiplos gatilhos.

4.10. Medindo a sade de sua rede


At o momento nossos esforos foram dirigidos a checagem de dados que indicam apenas se um dado host (ou servio) est operacional ou no. Vamos comear a abordar outros tpicos que embora indiretamente relacionados com os servios podem afetar seu funcionamento. Este tpico aborda a parte de networking e mostra como monitorar o quo saudvel sua rede est.

4.10.1. Latncia de rede


O primeiro ponto que vamos analisar causas de indisponibilidade por excesso de trafego na rede. Note que medir a banda pode ajudar a identificar gargalos de rede, mas a mtrica mais indicada para medir lentido a latncia de rede que pode estar baixa mesmo quando no h trafego! Como sempre vamos comear com a criao do item dentro do template 4Linux ICMP. A chave icmppingsec tambm faz um ping como a icmpping, mas diferente desta ela retorna o nmero de segundos que o pacote levou para ir e voltar (na verdade a mdia de trs pacotes).

Captulo 4 Monitoramento voltado para disponibilidade - 194

Figura 4.96: Item para latncia de rede

Neste item, atente para o campo Units que contm o valor s (segundos). Ele ir formatar o valor recebido pelo item para uma forma legvel por seres humanos. E mais importante, desta vez Type of Information esta como Numeric (float), porque o retorno da key icmppingsec em segundos, mas normalmente os tempos de respostas so quebrados em trs casas decimais (milissegundos).

4.10.2. Macro para o limiar da latncia de rede


Um ponto muito importante definir o que uma latncia ruim. Isso muito varivel de um ambiente para outro, se voc estiver medindo a latncia em uma rede local ento, provvel que uma latncia acima de 10 milissegundos seja alta. No caso de medir a latncia de um equipamento com link via satlite, podemos encontrar latncias de alguns segundos como padro dependendo da tecnologia. Para deixar nossos templates flexveis o suficiente para se adequarem a qualquer ambientes podemos usar um recurso muito interessante do Zabbix chamado macros de usurios.

Captulo 4 Monitoramento voltado para disponibilidade - 195 Existem trs tipos de escopo de macro, global (definido em Administration General) que vale para todos os templates e hosts; macros de templates, cujo alcance vale para todos os hosts associados a um dado template e macros de host, que valem s para aquele host. Se voc redefinir (como vamos fazer) uma macro num ambiente mais restrito, o ir valer ser este ltimo. O Zabbix tem vrias macros internas que j tivemos contatos quando criamos nossos triggers, {HOSTNAME}, a mais comum armazena o nome do host definido dentro do front end. Quando definirmos uma macro de usurio importante que em sua sintaxe um sinal de cifro ($), seja colocado antes do nome e dentro das chaves. Por exemplo, vamos definir uma macro para latncia de rede com o nome LATENCIA, logo sua sintaxe ser {$LATENCIA}. Evite o uso de outros caracteres no nome da macro exceto por underline (_), tambm no comece o nome da macro por nmeros. uma boa prtica manter os nomes em caixa alta. No caso de nosso cenrio iremos definir um padro de 0.01 segundos (10 milissegundos) para nossa macro, ela vai ser uma macro de template, mais especificamente o 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 definio de macros.

Figura 4.97: Macro para latncia de rede

Acrescente os valores conforme a Figura 4.97 e salve o template. Ela j estar valendo para todos os hosts associados a ele, vamos agora us-la no gatilho para verificao de latncia alta de rede. Crie o trigger no template conforme a seguir.

Captulo 4 Monitoramento voltado para disponibilidade - 196

Figura 4.98: Trigger para latncia de rede usando a macro

A grande diferena deste template para os anteriores o uso da macro, preste ateno no campo Expression, seu valor indica a frmula gatilho. A partir de agora se reutilizarmos estes templates em outros ambientes, podemos adequar a latncia de rede globalmente alterando o valor da macro no template. No caso de um dos hosts em nosso sistema ter um limiar diferente de latncia, podemos ainda redefinir a macro dentro do prprio host, alterando assim o comportamento de seu trigger pontualmente. {HOST:ITEM.avg(60 )}>{$LATENCIA}. Podemos inserir quantas macros quisermos na expresso do

4.10.3. Nosso primeiro grfico


Vamos agora criar um grfico que ir usar esta trigger para exibir o limiar de teste na tela. O resultado ser similar ao da Figura 4.99.

Captulo 4 Monitoramento voltado para disponibilidade - 197

Figura 4.99: Grfico para medir a latncia de rede

V at a tela de criao de grficos e clique em Create Graph. Siga as instruo abaixo para construir um grfico como demonstrado acima.

Figura 4.100: Criando um grfico de latncia de rede

1) Name: nome do grfico, a partir da verso 1.8.4 do Zabbix possvel usar macros aqui. 2) Width e Height: tamanho padro do grfico para algumas telas. Na maioria dos casos o front end ajusta o grfico ao tamanho corrente da tela do Browser. 3) Graph type: O tipo de grfico, aqui vamos criar um Normal mas podemos

Captulo 4 Monitoramento voltado para disponibilidade - 198 construir grficos Stacked (empilhados), Pie (Pizza) e Exploded (pizza com valores destacados para fora da rea do grfico. Nosso exemplo usa Simple. 4) Show working time: se ativo, mostra uma sombra nos horrios fora do Working time definido em Administration General Working time. 5) Show triggers: exibe uma linha pontilhada anteriormente no limitar do trigger. Deixe ele ativo. como demonstrada

6) Y axis MIN/MAX value: valor mnimo do grfico e mximo. til para definir uma escala de visualizao. No nosso caso vamos colocar apenas o valor mnimo de 0 (assim o cho de nosso grfico sempre se manter em 0) e o mximo em Calculated, pois no temos como saber onde esta o topo para cada ambiente. Em alguns casos, como em porcentagens, normalmente o mximo um valor fixo, em outros ele pode ser o valor de um item. 7) Items: aqui podemos definir quais so os campos que desejamos incluir no grfico. Procure sempre usar o mnimo possvel de informao neste caso. Para acrescentar um Item clique em Add. A janela de novo item para o grfico se abrir como a seguir.

Figura 4.101: Adicionando mtricas ao grfico

1) Parameter: qual key cadastrada no template este elemento representar. 2) Type: se este item Simples ou Agregated. Campos agregados agrupam vrias contagem em um nico valor. So teis para visualizao de variao com menor granulidade num dado espao de tempo, por exemplo, se voc quiser apenas a mdia de hora em hora ao invs de usar o intervalo de coleta. 3) Function: qual valor deve ser mostrado se houver a existncia de mais de um valor por pixel no eixo x. As funes so avg (mdia, o mais comum), max (mximo), min (mnimo) ou all (todos os trs). Em variaes muito baixas, all pode no ser exibido significativamente. 4) Draw style: Como a linha ser desenhada. Os valores possveis so: Line (linha simples), Filled region (rea preenchida), Bold line (linha mais espessa), Dot (pontos), Dashed line (tracejado) e Gradient (rea com

Captulo 4 Monitoramento voltado para disponibilidade - 199 gradiente da cor gradativamente indo para transparente, este grfico usa alpha blender). 5) Colour: obviamente a cor. 6) Y axis side: Se os valores deste item sero exibidos do lado esquerdo ou direiro do grfico. 7) Sort order: um nmero indicando a ordem de desenho no grfico, vai de 0 a 100. Voc pode ordenar os elementos dos grficos como desejar na tela de construo do grfico depois de acrescentar todos eles. Clique em Save em ambas as telas e o grfico estar pronto para exibio em Monitoring Graphs. O boto de Preview que existe na tela de construo dos grficos no ser capaz de exibir os grficos se voc estiver acrescentando ele num template como estamos fazendo. Ele s funciona no caso de um grfico ser criado direto num host.

4.10.4. Personalizando o mapa para exibio de informaes


O mapa do Zabbix extremamente personalizvel, e permite que visualizemos praticamente qualquer valor que coletamos e processamos, desde items at triggers. Vamos aproveitar que coletamos vrias mtricas importantes e associ-las ao mapa. O resultado final deve ficar como na Figura .

Captulo 4 Monitoramento voltado para disponibilidade - 200

Figura 4.102: Mapa com labels personalizadas exibindo dados

Para colocar estes valores bastante simples, edite a o item de host clicando sobre ele e preencha (linha-a-alinha, os valores do campo Label. No exemplo que vimos vrios hosts exibem o Uptime, obtido de {Host:system.uptime.last(0)} e de latncia de rede, obtido de {Host:icmppingsec.avg(60)}. Ateno especial ao segundo pois usamos a funo avg e no last, isso totalmente permitido. Na Figura 4.103 temos um exemplo com o host Presentation. Aps editar o valor clique em Apply.

Figura 4.103: Exemplo de labels com valores de mtricas

Captulo 4 Monitoramento voltado para disponibilidade - 201 No esquea de salvar o mapa constantemente no boto Save.

4.10.5. Exerccios
1) Assim como o icmppingsec esta para o icmpping, vrias keys com sufixo _perf esto para os equivamentes das simple checks de portas TCP. Por exemplo, ssh_perf a medio de latncia para o servidor de conexes remotas segura. Crie os items e grficos (veja o exemplo abaixo) para os outros servios que voc j criou anteriormente de disponibilidade. Cadastre macros para medir o limiar e finalize com os triggers dos mesmos. Em sala de aula, crie pelo menos um deles, os outros podem ser feitos em casa.

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

4.11. Espao disponvel em disco


A latncia de rede pode medir o nvel de resposta final das aplicaes disponibilizadas via TCP. Mas um item extremamente crtico, pois pode causar paradas de servios abruptamente espao disponvel em disco. Vrios daemons simplesmente saem de funcionamento porque no so

Captulo 4 Monitoramento voltado para disponibilidade - 202 capazes de escrever em parties de logs, e bancos de dados e pastas de usurios sempre podem exceder as estimativas previstas. Por isso importante que verifiquemos ambas as parties de sistema e de dados dentro de um servidor. Como exemplo iremos criar uma verificao da raiz nos Linux, depois voc ter que estender o mesmo princpio ao Windows. Outro ponto que nos servidores sempre existem vrias parties (ao menos nos bem instalados), e por isso temos que ter mltiplos items para cobrir todos os casos e deixar margem atravs de macros para parties com nomes personalizados pelo administrador. Por fim, desta vez teremos que coletar vrias mtricas (ao menos trs) para criao dos grficos e triggers. Espao total, usado e livre. Existem outras mtricas como porcentagem utilizada e livre do disco (pfree e pused), alm de items baseados em inodes. Consulte o manual do Zabbix para mais detalhes. Antes de comear a criar items vamos definir um valor de limiar para nossos triggers como fizemos na latncia de rede. O espao utilizado em um sistema de arquivos de um servidor pode ser bem diferente do de outro. Todas as nossas aes sero dentro do template 4Linux S.O. Linux. Comece criando a macro conforme abaixo.

Figura 4.105: Macro para limite de espao em disco utilizado

O valor padro usado para nosso cenrio ser 80 (80% da partio cheia), todo servidor que exceder este limite dever disparar um alerta para os administradores. Vamos criar os item agora, a key vfs.fs.size[mount_point, mode], diferente das anteriores exige parmetros para funcionar. O primeiro obrigatrio e indica qual das parties devem ser analisada, o segundo opcional diz qual o parmetro deve ser coletado, os valores possveis so total (bytes totais da partio, o padro se omitido), used (bytes utilizados), free (bytes livres), pused (porcentagem utilizada) e pfree (porcentagem livre). Vamos usar apenas os trs primeiros, comeando pelo total conforme a seguir.

Captulo 4 Monitoramento voltado para disponibilidade - 203 O agente no verifica se o diretrio colocado no parmetro a raiz de um ponto de montagem. No caso de no ser ele continuar obtendo o valor do espao da partio como um todo (pense nele como um df ao invs de um comando du.

Figura 4.106: Primeiro item de espao em disco

1) Description: aqui temos uma novidade, uma vez que estamos usando parmetros na key, podemos captur-los e inseri-los no description usando a notificao $n, onde n o nmero do parmetro comeando por 1. Em nosso exemplo usamos $1 para pegar o ponto de montagem da partio. Isso alivia bastante a digitao, pois os outros items que iremos clonar no precisam ter descriptions muito diferentes. 2) Key: a chave de espao conforme explicado anteriormente. Para o total sua sintaxe final vfs.fs.size[/,total]. 3) Units: b representa valores em bytes. O Zabbix inteligente o suficiente para fazer as converses para kilo, mega, giga, tera, etc. Usando mltiplos de 1024. Salve o item, agora ao invs de criar o prximo item no brao vamos usar

Captulo 4 Monitoramento voltado para disponibilidade - 204 um recurso de clonagem de valores do Zabbix. Vrias telas permitem que usemos o recurso de clone. No caso vamos clonar o total para usado e livre conforme o esquema na Figura 4.107.

Figura 4.107: Items a serem clonados para espao em disco

Edite o item de Espao total e clique no boto Clone.

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. Repita para o outro item e voc ter outras duas mtricas prontas e coletando em tempo recorde! Confira no Overview se os dados esto sendo coletados adequadamente (atentando que eles esto em notao abreviada, Mb, Gb, etc).

4.11.1. Grficos para espao em disco


Vamos criar dois grficos para visualizao de espao em disco, o primeiro um grfico de pizza (tambm chamados de torta, mas o nome oficial grfico circular) para mostrar o atual volume de uso do disco. Apesar de parecer inteis, este tipo de grfico tem uma vantagem grande sobre o de linha. Ele exibe de maneira visual o estado atual com propores facilmente reconhecveis por olhos humanos. Veja a Figura 4.109, que ilustra o grfico que vamos criar daqui a pouco, facilmente conseguimos ver que esta partio esta com mais de 50% ocupada somente olhando para o grfico. Novamente, como usamos o campo Unit igual a b, os valores j aparecero convertidos e abreviados para facilitar leitura humana.

Figura 4.109: Grfico de pizza para exibio de espao livre e ocupado

Captulo 4 Monitoramento voltado para disponibilidade - 205 Para gerar um grfico como esse siga os passos a seguir.

Figura 4.110: Criando um grfico de pizza

No h muitos segredos nesta tela, ao selecionar Pie em Graph Type menos campos iro aparecer no formulrio. Vamos deixar a legenda ativa apenas (Sim, voc pode fazer grficos em 3D se quiser, mas no h grandes vantagens neles em relao aos normal em termos de visualizao, apenas esttica). Note que vamos utilizar dois items ao mesmo tempo, espao utilizado e livre. Foi usado vermelho para o espao utilizado por um bom motivo, as cores quentes tendem a atrair o olho humano quando em contraste com cores frias ou mais claras. Isso faz com que inconscientemente o administrador ou suporte fixe no espao utilizado que o crtico neste caso. Enquanto o grfico circular indicado para mostrar o ltimo status de vrios items relacionados proporcionalmente ele oculta o histrico do espao ocupado. Por isso precisamos criar um grfico simples ainda. O procedimento similar ao anterior e resultar no grfico da Figura 4.111. Seu diferencial que vamos usar um limite superior ao invs de um calculado. Para indicar o topo do grfico vamos apontar para o espao total da partio obtido atravs de um item.

Captulo 4 Monitoramento voltado para disponibilidade - 206

Figura 4.111: Grfico de histrico de espao em disco

Crie um grfico como antes, mas atente para o detalhes em destaque abaixo.

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

Aps acrescentar o item de espao utilizado, no campo Y axis MAX value escolha Item e selecione o item de espao total. Isso vai limitar o topo do grfico e dar uma visualizao mais precisa do espao que est sendo utilizado em relao ao total. Se voc no o fizer e tiver por exemplo pouco espao usado o grfico ficar ajustado ao tamanho mximo atingido o que pode levar um observador desavisado a interpretar como disco cheio!

4.11.2. Gatilhos para alertas de espao em disco


Agora vamos usar a macro que definimos anteriormente para calcular o

Captulo 4 Monitoramento voltado para disponibilidade - 207 volume de disco usado. Para isso vamos usar uma frmula para, a partir do total, saber qual a porcentagem em bytes que a partio ter de limiar. A expresso lgico-matemtica seria. ESPAO_USADO > (ESPAO_TOTAL * LIMITE / 100) Sendo que: ESPAO_USADO: a mdia da janela de tempo do espao utilizado na partio. ESPAO_TOTAL: o ltimo valor coletado do espao total da partio. LIMITE: o valor definido em nossa macro, representando a porcentagem de limite (padro 80%) para averiguao de estouro de uso de disco. Note que, voc poderia usar o pused para pegar a porcentagem utilizada ao invs desta frmula, mas isso acrescenta mais um item no monitoramento. Alm do mais este um exemplo bem didtico para expresses mais complexas. No caso de nosso cenrio a expresso completa apresentada na Figura 4.113 e calcula exatamente quantos porcentos de uso da partio apresenta.

Figura 4.113: Trigger para clculo de espao em disco

Note ainda que como sempre, colocamos uma dependncia ao Agent Ping para evitar testes com valores inexistente que resultam em UNKNOWN. Verifique se alguma mquina excedeu o espao e acionou o trigger. Neste caso voc deve aumentar o valor da macro para aquele host somente. Isso um caso

Captulo 4 Monitoramento voltado para disponibilidade - 208 atpico no nosso cenrio ento o trataremos como uma exceo. Para testar o trigger use o seguinte comando em uma das mquinas Linux:
# dd if=/dev/zero of=/tmp/lixo bs=1k count=$(( 200 * 1024 ))

Isso vai gerar um arquivo de 200 Mb no /tmp. Mude o tamanho do arquivo conforme achar necessrio para fazer o teste. Deixe ele l at o trigger alarmar e depois apague-o para liberar o espao e forar a troca de estado para OK.

4.11.3. Exerccios
1) Clone os items criados para a partio / alterando para as parties /usr, /var, /tmp, /boot e /home (as normalmente criadas numa instalao), replique tambm as macros, os grficos e os triggers. Deixe todas estas mtricas e gatilhos como disabled por padro! Elas dependem da instalao de Linux. Em sala replique ao menos uma, as outras podem ser feitas em casa. 2) Crie as mesmas mtricas para o Windows, mas com as parties de C: at G:. Em sala crie ao menos uma, as outras podem ser feitas em casa. 3) (Desafio) crie mtricas que checam parties personalizadas administrador usando macros para definir os pontos de montagem. pelo

4.12. Scripts externos


Fizemos vrias checagens at o momento usando os recursos do Zabbix. Mas nem sempre teremos tudo a mo. Este trecho do curso ensina a estender o agente de tal forma a criar novas keys atravs da chamada de scripts externos. Alm disso algumas mtricas do Windows s podem ser obtidas pelo sistema pelos performance counters. Um tipo de registro de coleta de performance padro do Windows. Veremos como utilizar ambos para adicionar mais poder de fogo ao nosso arsenal de monitoramento.

4.12.1. Checando a disponibilidade do PostgreSQL


O Zabbix no tem suporte a todos os protocolos TCP da face da Terra, de fato isso seria um feito impressionante para um aplicativo de monitoramento. O protocolo do PostgreSQl esta entre os no suportados, e embora tenhamos utilizado keys como

Captulo 4 Monitoramento voltado para disponibilidade - 209 tcp e tcp_perf para medir sua disponibilidade podem ocorrer situaes onde o banco aceite conexes mas no responda nada, ou o faa muito lentamente. Nestes casos iremos criar uma extenso do agente apta a realizar uma nica consulta (SELECT 1) e verificar se ele retornou o valor correto. Esta extenso vai chamar um script criado em bash que aciona localmente o servidor, faz a consulta e determina o resultado. Prepare os conhecimentos de shell script, respire fundo e vamos comear acessando o host Database. O primeiro passo permitir que o usurio zabbix se conecte ao banco sem a necessidade de senhas. Isso necessrio porque o comando ser executado automaticamente sem a interveno manual de um administrador. Como vamos usar o psql, cliente padro via console do PostgreSQL, podemos usar um artifcio interessante com o arquivo .pgpass. Este arquivo deve ficar dentro do diretrio home do zabbix e deve conter uma string com os parmetros de acesso. Cada permisso de acesso do usurio zabbix deve estar em uma linha (assim podemos acessar mltiplos bancos de dados). O formato das linhas deste arquivo seguem a sintaxe: hostname:porta:basededados:usurio:senha E no nosso caso vo acessar o banco principal do sistema postgres, logo o valor final ser localhost:5432:postgres:zabbix:zabbixdb. Os seguintes comandos criam o arquivo, ajustam sua permisso e fazem o teste local.
# su - zabbix $ echo "localhost:5432:postgres:zabbix:zabbixpwd" > .pgpass $ chmod 0400 .pgpass $ psql -h localhost -U zabbix postgres -c SELECT 1; 1 $ logout

A permisso do .pgpass deve ser 0600 ou 0400, o dono do arquivo deve ser o usurio zabbix. Ainda temos que criar o usurio zabbix dentro do banco com a senha zabbixpwd.

Captulo 4 Monitoramento voltado para disponibilidade - 210


# su postgres $ psql postgres postgres# CREATE ROLE zabbix LOGIN; postgres# \passwd zabbix Digite nova senha: zabbixpwd Digite-a novamente: 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 conjunto de scripts do PostgreSQL).
# vim /etc/zabbix/pgaccess.conf
1

HOST=localhost

Enfim chegamos ao script, basicamente ele executa o comando psql com o SQL de testes e verifica se tudo ocorreu bem. Mas h algumas partes do script que merecem um destaque.
# vim /etc/zabbix/externalscripts/pgsql_ping.sh
1

#!/bin/bash
2

3 4

BASE="/etc/zabbix"

CONF=$BASE/pgaccess.conf
5

QUERY_PING="SELECT 1;"

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

function showerror { }

echo -e "PostgreSQL ping error:\n$(cat $ERROR_LOG)" 1>&2


10 11 12

if [ -r $CONF ]; then
13 14

. $CONF fi

15 16 17 18

PING_OK=1

PING_FAIL=0 RETURN=$?
20

PING=$(psql -h $HOST -c "$QUERY_PING" postgres -tA 2> $ERROR_LOG)


19

21

if [[ $RESULT -ne 0 ]]; then


22 23 24

showerror exit 1 else

Captulo 4 Monitoramento voltado para disponibilidade - 211


25 26 27 28 29 30 31

if [[ $PING -eq 1 ]]; then echo $PING_OK else showerror echo $PING_FAIL fi fi

32 33

exit 0

1) O primeiro destaque do script justamente o comando que faz o SELECT 1 e armazena seu contedo em uma varavel chamada $PING. Note que o psql esta usando os parmetros -t e -A para que o comando retorne apenas um valor (1). No caso de algum erro o valor do PING ser diferente de 1. 2) O retorno do comando verificado no caso de erros, uma mensagem gravada na sada de erros e o script para com retorno 1. O Zabbix trata isto enviando a sada para o zabbix_agentd.log. 3) No caso do SELECT ser bem sucedido um valor 1 (definido no cabealho do script). 4) Caso contrrio o script retorna 0 e grava uma mensagem no log indicando porque. Note que o comportamento de 1 significa sucesso e 0 falha replica o padro das keys de disponibilidade que vimos anteriormente. Isso ajuda a manter o padro e permite o uso do value maps que criamos. Todo script de comando externo deve retornar 1, e apenas um valor! Repita isso consigo mesmo! No h como pegar valores compostos no Zabbix e trabalhar com eles individualmente depois. Cada item armazena um single content. Agora vamos criar uma nova key pgsql.ping, dentro do agente. Para isso usamos o UserParameter, dentro de um dos arquivos de configurao do agente. A sintaxe desta linha : 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 - 212 Temos que acertar as permisses dos arquivos e reiniciar o agente.
# chown root.zabbix /etc/zabbix/pgaccess.conf /etc/zabbix/agent.d/pgsql_checks.conf /etc/zabbix/externalscripts/pgsql_ping.sh # chmod 0640 /etc/zabbix/pgaccess.conf /etc/zabbix/agent.d/pgsql_checks.conf # chmod 0750 /etc/zabbix/externalscripts/pgsql_ping.sh # /etc/init.d/zabbix-agent restart

J podemos fazer o teste local, o script deve retornar o valor 1.


# su zabbix -c /etc/zabbix/externalscripts/pgsql_ping.sh 1

A partir do Zabbix server teste o acesso a nova chave, o resultado tambm deve ser 1.
# zabbix_get -s database -k 'pgsql.ping' 1

Se todos os testes foram resolvidos o momento de voltar ao front end. Crie u m novo template 4Linux PostgreSQL 8.4 on Linux, ele deve depender o template 4Linux S.O. Linux. Depois entre no host Database, remova o template 4Linux S.O. Linux pelo boto Unlink (conservando assim os dados coletados) e adicione o novo modelo conforme a Figura 4.114.

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

Verifique se no Overview os dados esto sendo recebidos.

Captulo 4 Monitoramento voltado para disponibilidade - 213

Figura 4.115: Disponibilidade do PostgreSQL ativa no database

Com isso j poderamos criar triggers e fazer o mesmo escalonamento de gatilhos para averiguar qual tipo de erro pode acontecer.

4.12.2. Medindo a disponibilidade de um link Internet


Agora faremos um aproach diferente, vamos medir a latncia do link de Internet a partir do host Presentation (assim podemos obter um valor puro dentre o host de borda e o gateway da operadora). Este script, um pouco mais complexo que o anterior, permite que coletemos a mdia de latncia entre um conjunto de sites.
# vim /etc/zabbix/externalscripts/internet_perf.sh
1

#!/bin/bash
2

3 4

BASE=/etc/zabbix BC=$(which bc)


6

CONF=$BASE/internet_perf.links
5

7 8

function showerror { }

echo -e "Check link error: $1" 1>&2


9

10 11 12

if [[ ! -x $BC ]]; then exit 1


14

showerror "aplicativo bc no instalado"


13

fi

Captulo 4 Monitoramento voltado para disponibilidade - 214


15 16 17

if [[ ! -r $CONF ]]; then exit 1


19

showerror "arquivo $CONF no existe ou no esta acessvel para leitura"


18

fi

20 21

NTESTS=$(wc -l $CONF | cut -f1 -d" ")


22

SUM_AVG=0

23 24

for destination in $(cat $CONF); do

PING=$(ping -n -c 1 -w 1 -W 1 $destination 2>&1)


25

if [[ $? -eq 0 ]]; then

26 27

AVG=$(echo $PING | cut -f34 -d" " | cut -f2 -d"/") SUM_AVG=$(echo "scale=3; $AVG + $SUM_AVG;" | bc)
28 29

else NTESTS=$(( $NTESTS - 1 ))

30

showerror "ping para $destination falhou com erro: $PING"


31 32

fi done
33

34 35

if [[ $NTESTS -eq 0 ]]; then showerror "Todos os testes falharam"


36 37

exit 1 fi

38 39

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


40 41

exit 0

1) Este trecho o corpo principal do script, ele pega o arquivo de links (abaixo) e realiza um ping em cada um dos endereos l dentro. Para cada coleta bem sucedida ele soma a mdia que o comando retorna (em milissegundos). 2) No segundo trecho a partir do resultado da soma e da quantidade de testes obtida a mdia final e convertida para segundos (assim podemos usar o Unit s para formatar a sada). O arquivo de links pode conter tantas entradas o quanto quisermos, mas no recomenda-se que haja mais do que 5 que o tempo limite que o Zabbix espera por um script executar antes de desistir e retornar nulo.
# vim /etc/zabbix/internet_perf.links
1 2

www.google.com www.uol.com.br

Captulo 4 Monitoramento voltado para disponibilidade - 215 Como anteriormente criaremos uma nova key. Internet.perf que aponta para o nosso script.
# vim /etc/zabbix/agent.d/internet_perf.conf
1

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

Por final acerte as permisses dos arquivos.


# chown root.zabbix /etc/zabbix -R # chmod 0640 /etc/zabbix/internet_perf.links /etc/zabbix/agent.d/internet_perf.conf # chmod 0750 /etc/zabbix/externalscripts/internet_perf.sh

J podemos fazer os testes locais e os remotos conforme mostrado no tpico anterior. Tambm j podemos criar as macros, items, triggers e grficos seguindo a mesma filosofia. Somente mude o seguinte, para o item e gatilho deixe-os desabilitados no template 4Linux S.O. Linux e habilite somente no host Presentation. Para concluirmos com outra novidade vamos colocar no label do link de Internet o valor mdio dos ltimos 60 segundos de coleta (Figura 4.116).

Figura 4.116: Latncia sendo exibida no label do link

Abra o link e edite os valores de seus campos como a seguir.

Captulo 4 Monitoramento voltado para disponibilidade - 216

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

1) Label: coloque o valor Latncia: {Presentation:internet_perf.avg(60)}. 2) Adicione o trigger da latncia que voc acabou de criar. No esquea de salvar antes de sair do mapa. Para testar, diminua o valor da macro de limite para um valor bem baixo.

Figura 4.118: Link no mapa identificando status do trigger

Note como o link mudou de cor (Figura 4.118) quando o host acusou alta latncia de Internet.

4.12.3. Exerccios
1) (Desafio) Crie um script externo capaz de ler a temperatura dos processadores e armazen-los no Zabbix. O script deve receber um parmetro indicando de qual core deve ser coletado a temperatura (0 primeiro, 2 segundo, e assim por diante). Crie ao menos um grfico para visualizar o valor coletado dos cores.

- 217

REFERNCIAS BIBLIOGRFICAS

- 218

OLUPS,

RIHARDS.

Zabbix

1.8

Network

Monitoring.

Packet

Publishing. Abril de 2010. Homepage oficial da documentao do Zabbix , em website: 16 de

http://www.zabbix.com/documentation/. Fevereiro de 2011.

Acesso

- 219

Anexo I Performance do Sistema Operacional

Introduo
Aqui vamos passar as dicas e mtricas que podem ser usadas para monitorar as quatro principais caractersticas de desempenho. Uso de CPU, memria, throughput de rede e I/O de disco. Este captulo utiliza o template completo do Linux para coleta de todas as informaes.

Processamento
A primeira mtrica de performance que geralmente paramos para ver o que esta acontecendo quando o sistema fica lento. H algumas coisas a se ter em mente sobre processamento e sobre o que monitorar para achar gargalos de processamento. 2) 100% de processamento no quer dizer nada! 2.1) Picos de processamentos so mais corriqueiros do que imaginamos, eles acontecem frequentemente mas so to momentneos que nem percebemos eles mesmo em grficos com curtos tempos de coletas.

- 220 Sempre que procurar por eles, concentre-se apenas nos de longa durao. 2.2) Se voc criar gatilhos de verificao de CPU faa-os com uma janela de tempo razovel. O aconselhado que ela seja em torno dos 15 minutos, se por tanto tempo assim o processamento ficou muito alto provavelmente h alguma coisa errada na sua aplicao ou seu hardware est mal dimensionado. 3) Quando coletar informaes de CPU voc pode se deparar com muitas opes, aqui vo algumas dicas sobre o que fazer para decidir o que coletar. 3.1) Antes de olhar a porcentagem da CPU, olhe para o system load (key system.cpu.load). Ela indica o enfileiramento de processos, o que pode ser bem pior do que simplesmente ter CPU alta o tempo todo. 3.2) Mantenha ao menos uma coleta geral de baixo nvel, o consumo de CPU dividido em vrios tipos, os mais relevantes so user (consumo realizado pelos processos), system (consumo realizado pelo kernel) e wait (consumo realizado por espera de I/O, geralmente de disco). Existem outros menos relevantes, consulte a documentao do Zabbix sobre a key system.cpu.util para mais detalhes. 3.3) Ao monitorar mltiplos cores individualmente, colete apenas o idle de cada um deles. Raramente voc precisar de coletas detalhadas por ncleo. 3.4) Monitore tambem o context switch pela key system.cpu.switches para verificar o nmero de vezes que os processos nascem, dormem, acordam e morrem nos cores alm de indicar a migrao de threads.

Mtricas de memria
O segundo ponto mais importante de se monitorar num S.O. a memria, incluindo aqui a rea de troca (swap). 1) Consumo de memria pode ser bem complicado de se monitorar se voc no prestar ateno nos tipos de memria que existem. No Linux por exemplo temos a memria de processos, a de buffer e a de cache. Por padro a key vm.memory.size no capaz de capturar a memria dos processos (que a importante). Para fazer isso voc tem que criar um item calculado que subtrai a memria available (e no a free) do total. 2) Monitore a memria de swap com system.swap.size para determinar o consumo e mais importante, com system.swap.in e system.swap.out que

- 221 mostram a leitura e escrita na mesma. A rea de troca diretamente ligada ao I/O de disco (abaixo).

Throughput e banda de rede


Banda pode ser um item importante se voc no tem uma largura suficientemente grande para comportar suas necessidades, mas o throughput que realmente deve ser observado. 1) Alta 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 indicadas para isso. 2) Lembre-se que o Zabbix, o sistema operacional e seus aplicativos medem o consumo de rede em bytes e no bits. No entanto todos os equipamentos de rede e links de Internet so comprados pelo segundo. Prefira exibir mesmo assim os dados em bytes, se voc realmente tiver que exibir em bits ter que criar um campo calculado que l e multiplica o valor do item em bytes. 3) Cuidado ao estipular valores de topo dos grficos de banda para redes internas. Enquanto nos links de Internet isso uma prtica recomendvel, para consumos de servidores em redes de 100 ou 1000 Mbps os valores vo ficar to prximos do eixo x que a impresso ser de trfego zero.

Performance de Disco
Para bancos de dados, anlise de performance de disco. O template da 4Linux faz uso de um script externo que coleta dados de baixo nvel, o padro do Zabbix ainda no capaz de coletar estes dados. 1) No se atenha a throughput de disco em bytes, eles variam tanto de um hardware para outro que difcil de estabelecer um padro. Use mtricas como nmero de operaes, tempo gasto em escrita/leitura e enfileiramento de operaes, eles so muito mais significativos. 2) Procure por pontos de incidncia de operaes irregulares, se o tempo todo seu disco fica numa mdia de operaes e de repente ele muda avalie o que pode ter ocorrido neste perodo, mesmo que seja para menos carga (o que pode indicar delays de operao).

- 222

- 223

Anexo II Performance de servios

Introduo
Performance de servios um assunto extenso e demandam de vrios cursos a parte para poder cobrir sua toda a sua extenso. De fato, uma parte dos cursos avanados da 4Linux detalham este tipo de estudo. Aqui vamos apenas arranhar a ponta do iceberg. Os templates completos do final do curso contm muito mais detalhes dos que os discutidos aqui.

PostgreSQL
O banco de dados do PostgreSQL possui um sistema de tabelas chamadas catlogos. Estas tabelas armazenam diversas operaes importantes. 1) No perca tempo olhando estatsticas de nvel muito baixo. Comece por dados como nmero de conexes e de operaes no banco. No aumente as conexes do banco arbitrariamente, essa uma prtica ruim !

- 224 2) Procure distinguir o comportamento de sua aplicao. Muitas operaes de escrita e pouca leitura, ou vice-versa, ou ainda ambas! Isso torna as coisas mais fceis para dimensionar tunings. 3) Monitore a instncia como um todo e depois desa para bancos especficos, seguido de tabelas e por ltimo ndices e sequncias. Assim voc ganha uma viso global do sistema antes de depurar qual tabela voc precisa separar, particionar, etc.

JBoss
O servidor de aplicaes JBoss tem todos aqueles MBeans que o Zapcat dissecou para ns. Vamos comentar os mais importantes. 1) Aplicaes java no usam fork. Eles sempre trabalham em threads, por isso monitorar threads (principalmente os HTTP e AJP) vo mostrar o uso da JVM para conexes. 2) O JBoss usam datasources, que possuem poolings de conexes. Monitorar as conexes destes pools tambm uma boa mtrica. Via de regra uma boa aplicao, mesmo muito ocupada no deve usar mais do que algumas poucas dezenas de conexas. 3) Consumo de memria heap podem indicar garbage collectors fazendo muitas operaes (nunca coloque muita memria de heap para as JVMs o GC pode derrubar as JVMs quando ele). Leaks de memrias tambm podem ser detectados com este tipo de monitoramento. 4) Monitorar a rea de perm gen normalmente no necessrio, mas pode indicar quando redeploys acabam consumindo toda a memria destinada a byte codes.

Apache
O template do Apache precisa do mod_status ativado para coleta de informaes. 1) Normalmente a mtrica mais significativa o nmero de conexes e uso de processos. 2) Verificar os processos idles pode indicar que a configurao pode ser diminuda para consumir menos recursos.