Escolar Documentos
Profissional Documentos
Cultura Documentos
www.4linux.com.br
-2
Sumrio
Captulo 1 Conhecendo o Zabbix..................................................................................................................12 1.1. Conhecendo a ferramenta................................................................................................13 1.2. Comunidades e forums....................................................................................................13 Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema..........................................14 2.1. Introduo........................................................................................................................15 2.2. Configurando os componentes de recebimento de alertas............................................15
2.2.1. Configurando o cliente de correio eletrnico........................................................................16 2.2.2. Mensagens instantneas.........................................................................................................24
-3
2.10. Instalando o servidor Zabbix via pacote.......................................................................57 2.11. Preparando o servidor web............................................................................................58
2.11.1. Instalao do Apache e PHP5...............................................................................................58 2.11.2. Configurao do Virtual Host...............................................................................................58 2.11.3. Configurando o front end......................................................................................................61
2.12. Exerccios de reviso.....................................................................................................72 Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end.......................................74 3.1. Introduo........................................................................................................................75
3.1.1. Organizao do front end.......................................................................................................75
3.5. Mapas...............................................................................................................................98
3.5.1. Importando imagens para o mapa..........................................................................................98 3.5.2. Criando um mapa..................................................................................................................100 3.5.3. Adicionando um elemento.....................................................................................................103 3.5.4. Editando um elemento do mapa...........................................................................................104 3.5.5. Salvando o mapa...................................................................................................................106 3.5.6. Adicionando os outros elementos.........................................................................................106 3.5.7. Criando e editando links.......................................................................................................110 3.5.8. Prtica Dirigida.....................................................................................................................111 3.5.9. Exerccios sobre Mapas........................................................................................................113
-4
3.8. Ativando um host............................................................................................................123
3.8.1. Throubleshooting para itens com problemas.......................................................................124
Captulo 4 Monitoramento voltado para disponibilidade..........................................................................128 4.1. Introduo......................................................................................................................129 4.2. Checagens manual via front end...................................................................................129
4.2.1. Adequando o script de traceroute........................................................................................132 4.2.2. Criando novos comandos para o menu.................................................................................135 4.2.3. Exerccios..............................................................................................................................138
-5
4.9.3. Nosso primeiro grfico.........................................................................................................205 4.9.4. Personalizando o mapa para exibio de informaes........................................................208 4.9.5. Exerccios..............................................................................................................................210
ndicedetabelas
Tabela 1: Opes de compilao do Zabbix............................................................................34 Tabela 2: Binrios de uma instalao de servidor e agente do Zabbix.................................36 Tabela 3: Arquivos e diretrios de configurao....................................................................38 Tabela 4: Funo dos menus no front end..............................................................................77 Table 5: Usurios do cenrio do curso...................................................................................81 Tabela 6: Relao de permisses entre hosts e usurios.......................................................98 Tabela 7: Lista de imagens iniciais para o mapa.................................................................100 Tabela 8: Servios do cenrio do curso................................................................................163 Tabela 9: Responsveis de cada host...................................................................................175 Table 10: Valores da key service_state.................................................................................193
-6
ndicedeFiguras
Figura 2.1: Configurao do evolution (1/10)........................................................................16 Figura 2.2: Configurao do evolution (2/10)........................................................................17 Figura 2.3: Configurao do evolution (3/10)........................................................................18 Figura 2.4: Configurao do evolution (4/10)........................................................................19 Figura 2.5: Configurao do evolution (5/10)........................................................................20 Figura 2.6: Configurao do evolution (6/10)........................................................................21 Figura 2.7: Configurao do evolution (7/10)........................................................................22 Figura 2.8: Configurao do evolution (8/10)........................................................................23 Figura 2.9: Configurao do evolution (9/10)........................................................................23 Figura 2.10: Configurao do evolution (10/10)....................................................................24 Figura 2.11: Tela de boas vindas do Pidgin............................................................................25 Figura 2.12: Configurando uma conta Jabber no Pidgin.......................................................25 Figura 2.13: Definindo o uso de criptografia.........................................................................26 Figura 2.14: Baixando o agente do Zabbix no Windows........................................................47 Figura 2.15: Instalando os executveis no Windows.............................................................48 Figura 2.16: Diretrio de configurao do Zabbix no Windows............................................48 Figura 2.17: Configurando o agente no Windows..................................................................49 Figura 2.18: Desbloqueando o agente no Windows...............................................................50 Figura 2.19: O agente do Zabbix sendo executado como servio automtico......................51 Figura 2.20: Tela de entrada do Zapcat.................................................................................54 Figura 2.21: Configurao do front end (1/10)......................................................................61 Figura 2.22: Configurao do front end (2/10)......................................................................62 Figura 2.23: Configurao do front end (3/10)......................................................................63 Figura 2.24: Configurao do front end (4/10)......................................................................65 Figura 2.25: Configurao do front end (5/10)......................................................................66 Figura 2.26: Configurao do front end (6/10)......................................................................67 Figura 2.27: Configurao do front end (7/10)......................................................................68 Figura 2.28: Configurao do front end (8/10)......................................................................69 Figura 2.29: Configurao do front end (9/10)......................................................................70 Figura 2.30: Configurao do front end (10/10)....................................................................71 Figura 2.31: Tela inicial do Zabbix aps o primeiro login.....................................................71 Figura 3.1: Gerenciamento de usurios do Zabbix................................................................78 Figura 3.2: Editando o Admin.................................................................................................79 Figura 3.3: Configurando a autenticao LDAP....................................................................80 Figura 3.4: Novo Grupo JBoss Administrators.......................................................................81 Figura 3.5: Novo usurio Sysadmin.......................................................................................82
-7
Figura 3.6: Media Types.........................................................................................................83 Figura 3.7: Configurando o Zabbix para enviar e-mails........................................................84 Figura 3.8: Configurando o Zabbix para enviar mensagens instantneas...........................84 Figura 3.9: Media Types de um usurio sem apontamentos.................................................85 Figura 3.10: Adicionando o Media Type Email a um usurio................................................85 Figura 3.11: Adicionando um media type Jabber a um usurio............................................86 Figura 3.12: Media Types de um usurio aps o cadastro....................................................86 Figura 3.13: Selecionando todos os templates pr cadastrados...........................................88 Figura 3.14: Excluindo os templates selecionados................................................................89 Figura 3.15: Criando um novo template.................................................................................89 Figura 3.16: Cadastrando um novo template.........................................................................89 Figura 3.17: Vinculando um template a outro.......................................................................90 Figura 3.18: Exportando um template...................................................................................91 Figura 3.19: Layout dos hosts a serem monitorados.............................................................92 Figura 3.20: Como criar um novo grupo de hosts.................................................................93 Figura 3.21: Novo host group.................................................................................................93 Figura 3.22: Host pr-cadastrado no front end na tela de Hosts..........................................93 Figura 3.23: Boto para criar um host...................................................................................93 Figura 3.24: Todos os hosts do cenrio cadastrados.............................................................95 Figura 3.25: Concedendo permisses de acesso (1/4)...........................................................95 Figura 3.26: Concedendo permisses de acesso (2/4)...........................................................96 Figura 3.27: Concedendo permisses de acesso (3/4)...........................................................96 Figura 3.28: Concedendo permisses de acesso (4/4)...........................................................97 Figura 3.29: Tela inicial das imagens.....................................................................................99 Figura 3.30: Importando uma nova imagem..........................................................................99 Figura 3.31: Imagem do primeiro mapa a ser criado..........................................................100 Figura 3.32: Mapas pr-cadastrados....................................................................................101 Figura 3.33: Novo mapa........................................................................................................101 Figura 3.34: Barra de ferramentas para edio de mapas..................................................103 Figura 3.35: Criando um novo elemento..............................................................................103 Figura 3.36: Posicionando um novo elemento com o mouse...............................................104 Figura 3.37: Editando um elemento na tela.........................................................................105 Figura 3.38: Boto Save do mapa.........................................................................................106 Figura 3.39: Dialogo de salvar mapa....................................................................................106 Figura 3.40: Outros elementos grficos a serem adicionados............................................107 Figura 3.41: Editando o elemento que representa o host Presentation.............................108 Figura 3.42: Detalhes do host switch dentro do mapa........................................................109 Figura 3.43: Hosts acrescentados no mapa.........................................................................110 Figura 3.44: Criando um novo link entre o host Presentation e a imagem Internet..........111
-8
Figura 3.45: Editando as propriedades do novo link...........................................................112 Figura 3.46: Link entre o host Presentation e o Switch......................................................113 Figura 3.47: Mapa final.........................................................................................................114 Figura 3.48: Templates e seus elementos............................................................................114 Figura 3.49: Criando um application (1/4)...........................................................................115 Figura 3.50: Criando um application (2/4)...........................................................................115 Figura 3.51: Criando um application (3/4)...........................................................................115 Figura 3.52: Criando um application (4/4)...........................................................................116 Figura 3.53: Criando seu primeiro item (1/3)......................................................................116 Figura 3.54: Criando seu primeiro item (2/3)......................................................................117 Figura 3.55: Criando seu primeiro item (3/3)......................................................................118 Figura 3.56: Campo para associao de templates.............................................................119 Figura 3.57: Tela para escolha de templates.......................................................................119 Figura 3.58: Template associado..........................................................................................119 Figura 3.59: Template associado na lista de templates.......................................................119 Figura 3.60: Inter-relao dos templates base....................................................................120 Figura 3.61: Associando o template do JBoss ao host JBoss AS (1/6).................................120 Figura 3.62: Associando o template do JBoss ao host JBoss AS (2/6).................................120 Figura 3.63: Associando o template do JBoss ao host JBoss AS (3/6).................................120 Figura 3.64: Associando o template do JBoss ao host JBoss AS (4/6).................................121 Figura 3.65: Associando templates a hosts (5/11)...............................................................121 Figura 3.66: Associando o template do JBoss ao host JBoss AS (6/6).................................121 Figura 3.67: Templates para Windows e SNMP associados aos seus respectivos hosts. . .121 Figura 3.68: Associando um template a mltiplos hosts simultaneamente (1/4)..............122 Figura 3.69: Associando um template a mltiplos hosts simultaneamente (2/4)..............122 Figura 3.70: Associando um template a mltiplos hosts simultaneamente (3/4)..............123 Figura 3.71: Associando um template a mltiplos hosts simultaneamente (4/4)..............123 Figura 3.72: Todos os templates associados aos hosts do cenrio....................................123 Figura 3.73: Host presentation no monitorado..................................................................124 Figura 3.74: Dialogo de confirmao de ativao...............................................................124 Figura 3.75: Host presentation monitorado.........................................................................124 Figura 3.76: Item no suportado..........................................................................................125 Figura 3.77: Item suportado e ativo.....................................................................................127 Figura 4.1: Menu de Ferramentas acessado pelo mapa......................................................130 Figura 4.2: Sada de um comando ping................................................................................130 Figura 4.3: Sada de um comando que falhou do traceroute..............................................131 Figura 4.4: Sada do traceroute adequando a nova necessidade .......................................135 Figura 4.5: Criando um novo script para testar portas SSH (1/2)......................................136 Figura 4.6: Criando um novo script para testar portas SSH (2/2)......................................136
-9
Figura 4.7: Nova entrada de menu com o script criado......................................................137 Figura 4.8: Resultado do comando ativado no host.............................................................137 Figura 4.9: Diagrama de comportamento do echo ICMP....................................................139 Figura 4.10: Hosts ativos com ping ICMP em funcionamento............................................140 Figura 4.11: Um value maps de estado de servios............................................................140 Figura 4.12: Editando o value map para nossa necessidade...............................................140 Figura 4.13: Value map editado e pronto para uso..............................................................141 Figura 4.14: Selecionando um value map no trigger..........................................................141 Figura 4.15: Values maps no overview.................................................................................141 Figura 4.16: Pausando o host Database...............................................................................142 Figura 4.17: Host database parado no overview.................................................................142 Figura 4.18: Criando um trigger para a parada do host (1/9).............................................143 Figura 4.19: Criando um trigger para a parada do host (2/9).............................................143 Figura 4.20: Criando um trigger para a parada do host (3/9).............................................143 Figura 4.21: Criando um trigger para a parada do host (4/9).............................................143 Figura 4.22: Criando um trigger para a parada do host (5/9).............................................144 Figura 4.23: Criando um trigger para a parada do host (6/9).............................................144 Figura 4.24: Criando um trigger para a parada do host (7/9).............................................145 Figura 4.25: Criando um trigger para a parada do host (8/9).............................................145 Figura 4.26: Criando um trigger para a parada do host (9/9).............................................146 Figura 4.27: Indicao de problemas no Dashboard...........................................................146 Figura 4.28: Overview com indicao dos items com alerta...............................................147 Figura 4.29: Overview com visualizao dos triggers ativos..............................................147 Figura 4.30: Mapa indicando o host Database como down.................................................148 Figura 4.31: Tela de Events, indicando a queda e o retorno dos hosts..............................148 Figura 4.32: Tela de acknowledgement...............................................................................149 Figura 4.33: Acknowledge (confirmao) aplicado..............................................................149 Figura 4.34: Criando uma action para enviar o alerta (1/9)................................................150 Figura 4.35: Criando uma action para enviar o alerta (2/9)................................................150 Figura 4.36: Criando uma action para enviar o alerta (3/9)................................................151 Figura 4.37: Criando uma action para enviar o alerta (4/9)................................................151 Figura 4.38: Criando uma action para enviar o alerta (5/9)................................................151 Figura 4.39: Criando uma action para enviar o alerta (6/9)................................................152 Figura 4.40: Criando uma action para enviar o alerta (7/9)................................................152 Figura 4.41: Criando uma action para enviar o alerta (8/9)................................................152 Figura 4.42: Criando uma action para enviar o alerta (9/9)................................................153 Figura 4.43: Mensagens de alerta recebidas no Evolution.................................................153 Figura 4.44: Reiniciando o host Database...........................................................................154 Figura 4.45: Lgica de um gatilho com tempo de segurana.............................................155
- 10
Figura 4.46: Simple check para o SSH................................................................................161 Figura 4.47: Overview exibindo os servios de SSH...........................................................162 Figura 4.48: Criando um cenrio para disponibilidade Web (1/6)......................................164 Figura 4.49: Criando um cenrio para disponibilidade Web (2/6)......................................164 Figura 4.50: Criando um cenrio para disponibilidade Web (3/6)......................................165 Figura 4.51: Criando um cenrio para disponibilidade Web (4/6)......................................166 Figura 4.52: Criando um cenrio para disponibilidade Web (5/6)......................................167 Figura 4.53: Criando um cenrio para disponibilidade Web (6/6)......................................167 Figura 4.54: Visualizando a checagem Web.........................................................................167 Figura 4.55: Detalhes do monitoramento Web....................................................................167 Figura 4.56: Grfico de velocidade de download para o cenrio Web................................168 Figura 4.57: Grfico de tempo de resposta para o cenrio Web.........................................168 Figura 4.58: Novo item para monitorar o agente................................................................170 Figura 4.59: Copiando o item de ping de agente para o template do JBoss (1/2)..............170 Figura 4.60: Copiando o item de ping de agente para o template do JBoss (2/2)..............171 Figura 4.61: Criando um trigger para o agent.ping (1/5)....................................................172 Figura 4.62: Criando um trigger para o agent.ping (2/5)....................................................172 Figura 4.63: Criando um trigger para o agent.ping (3/5)....................................................173 Figura 4.64: Criando um trigger para o agent.ping (4/5)....................................................173 Figura 4.65: Criando um trigger para o agent.ping (5/5)....................................................173 Figura 4.66: Trigger para o agent ping criado e ativo........................................................173 Figura 4.67: Trigger de agente ativado...............................................................................174 Figura 4.68: Dependncia entre triggers evitando que o gatilho filho seja ativado..........174 Figura 4.69: Item para tempo de uptime.............................................................................177 Figura 4.70: Uptime via Zapcat............................................................................................178 Figura 4.71: Uptime via SNMP.............................................................................................178 Figura 4.72: Overview exibindo os uptimes a partir do agente padro, Zapcat e SNMP..179 Figura 4.73: Um trigger para a reinicializao de um host................................................180 Figura 4.74: Item para verificao de nmero de processos..............................................183 Figura 4.75: Overview refletindo o nmero de processos...................................................183 Figura 4.76: Trigger para queda do daemon.......................................................................184 Figura 4.77: Teste de queda do sshd....................................................................................185 Figura 4.78: Reflexo da queda do daemon SSH no overview..............................................185 Figura 4.79: Item para verificao da porta local...............................................................186 Figura 4.80: Fluxograma da dependncia entre triggers para anlise de servios...........187 Figura 4.81: Trigger para verificao da porta local...........................................................189 Figura 4.82: Trigger para verificao de porta remota.......................................................189 Figura 4.83: Servio telnet do Windows..............................................................................190 Figura 4.84: Habilitando o servio de telnet do Windows...................................................191
Captulo1 ConhecendooZabbix
1.1.Conhecendoaferramenta
Sigaospassosindicadospeloprofessorparaacessoaoexemploprontonam quinadele. Voc vai fazer um passoapasso conhecendo a ferramenta como um usu rio comum (no superusurio).
1.2.Comunidadeseforums
OZabbixtemumadocumentaoonlinequeserusadaduranteocursoparaconsultas. Olinkdeacessohttp://www.zabbix.com/documentation/. As comunidades tambm mantm uma srie de fruns em http://www.zabbix.com/forum/.Emdestaqueosseguinte: Zabbixannouncements:annciosenovasverses Zabbixhelp:frumprincipaldeajuda Zabbixcookbook:vriasconfiguraesprontaspostadasecomentadas.Muitotil. Zabbixthroubleshooting:seumproblemapersiste,este olocalparapostarerrose solues. Zabbixemportugusyemespanhol:frumemportuguseespanhol, tilquandovoc nolinglsmuitobem.
OBJETIVOS
Prepararoambientederecebimentodealertas: ConfiguraroEvolutionparareceberemailsdealertas; ConfiguraroPidginpararecebermensagensinstantneasdealertas. PrepararoambienteparainstalaroservidordoZabbix: Obterosfontesdaferramenta; PrepararoPostgreSQLparaservirdebackend. Instalaroservidoreagente: Compilaroservidoreagentenamquinadestinadaaseromonitoradorenasdemais; InstalaodosbinriosdentrodoWindows2003(cominicializaodoagentecomo servio); Executar deploy do agente Zapcat no JBoss para monitoramento do servidor de aplicaes ConfiguraodeumvirtualhostdentrodoApacheparaofrontend,incluindomodifica o dosparmetrosdoPHP.
2.1.Introduo
Estecaptuloapresentatodasastarefasrelacionadasacria odabasedesuasoluo demonitoramento.Aquiondeserabordadoamaiorpartedoconhecimentot cnicodeconsole Linux, deploying em JBoss, servios de Windows e acesso SNMP, visando incutir as competnciasnecessriasparaque,sozinho,vocsejacapazdereproduzirestespassosemum ambientedeproduo. Almdisso,serovistososprimeirospassosnautilizaoefamiliarizaocomainterface webdoZabbix,mostrandocomogerenciaroselementosmaisb sicosdaferramenta:usurios, hosts,templates,gruposdehostsemapas.
2.2.Configurandooscomponentesderecebimentodealertas
PorpadrooZabbixpossuiquatroformasdealertasembutidosdentrodeseusistema:e mails,clientejabber,SMSviamodemGSMeSMSviaservi odetorpedos.Detodos,oltimono muitotilaquinoBrasil,devidoseguirospadresdasoperadorasnoCanadeEstadosUnidos. Dosrestantesvamosverofuncionamentodosistemadecorreiosedejabberdentroda saladeaula,devidoanaturezadohardware,aemula odasmquinasvirtuaisdocenrioe custosdemensagemnoabordamosousodentrodonossocen riocomSMS.Noentantotemos umapndicequecobreosistemadeSMScomthroubleshootingedicasdeconfigura o. Recebermensagensporclientedeemail amaneiramaistradicionaldetodas.Para casodeestudosprecisamosconfiguraroEvolution,clientedeemailpadr odoGnome.Abrao EvolutionpelomenuprincipaldoGnomeesigaospassosdescritosaseguir.
2.2.1.Configurandooclientedecorreioeletrnico
Estaapenasumteladeboasvindas,cliqueem Avanar.
Nohnadaparaserrestaurado,cliquenovamenteem Avanar.
Comearemos a configurar as contas de usurios dentro do sistema de LDAP que o cenriopossui.Preenchaoscamposcomoabaixoparaconfiguraraprimeiracontae,emseguida, cliqueemAvanar. 1) NomeCompleto:Systemadministrator 2) Endereodeemail:sysadmin@curso468.4linux.com.br.
3) TipodeServidor:devemosescolherPOP,queorecursoimplantadopararecepo deemailsnocenrio. 4) Servidor:oendereoexternodoservidordeemail. 5) Nomedousurio:oprimeirousurioqueusaremososysadmin. 6) Lembrar senha: para comodidade dos testes em curso ative o recurso de armazenamentodesenha. Estaopono seguraparaserusadaemproduo! Mascomonocursoos usuriossofictciosepossuemasenha123456issonovainosimpactar.
Apesardenoutilizaroenviodeemailsobopontodevistadousu rio, interessante configuraroSMTPparaaveriguarseosemailsestocaminhandodentrodocenrio. 1) NoTipodeServidorescolhaSMTP. 2) NoServidorcoloqueomesmoendereodeemailquecolocamosnoPOP3. Noreproduzaestecomportamentodeaceitedeemailssemautentica oem produo! Oservidordecorreioeletrnicodentrodocenrio apenasummeiode sabermosqueasmensagensdealertasdoZabbixestosendoenviadasporemail.
1) Nome: Por final, configure um nome para esta conta. Isto usado apenas para exibionoEvolution.
Estaapenasumateladefinalizao,cliqueemAplicar.
TorneoEvolutionoseuclientedeemailpadro.
Naprimeiravezquevoc entrareleir pedirasenha(123456)dousurio,digiteae verifiquesenohouvenenhumerro.Nohnenhumemailnacaixademensagensdosysadmin, logonenhumamensagemvaiaparecer. Agoraqueo Evolution esta funcionamento,acesseomenu Editar Preferncias e cliqueno cone ContasdeCorreio aesquerda.Atravsdoboto Adicionar cadastremaistrs contasseguindoosmesmospassosqueanteriormente,mudandoapenasosnomeseusu rios. AscontasaseremacrescentadassoWindowsAdministrator(winadmin),JavaEngineer (javaeng)eDBA(dba).Apsotrmino,escolhaduascontasetesteoenviodemensagensentre elas.
2.2.2.Mensagensinstantneas
RecebermensagensdealertasviaInstantMessaging tilemempresasquepossuem umsistemainternodeIMeosfuncionriosestologadosconstantemente.OZabbixsuportao enviodestasmensagensviaprotocoloJabbereocen riojpossuiestetipodeservioatravsde umservidorOpenFireinstaladonamquinamestradoZabbix. Vamosentoconfiguraro Pidgin, umclientedeIMsimpleseeficienteparareceberos alertas enviados via protocolo Jabber pelo servidor do Zabbix. Abra o aplicativo pelo menu principaldoGnomeesigaospassosaseguir.
NateladeboasvindascliqueemAdicionar.
1) OprotocoloJabberusaaopoXMPP. 2) Nonomedousuriousesysadmin. 3) Nodomnio,voc deve apontaronomedamquinacadastradaparaIMenoo domnio. 4) Nasenhacoloque123456. 5) AtiveoLembrarSenha. No ative a opo Lembrar Senha em produo! Isso seria uma terrvel falha de segurana.Elasestasendoativadaparacomodidadedocurso.
2.4.Preparandoobancodedados
O Zabbix no utiliza recursos como o RRDTools para armazenar dados, ele faz uso apenasdeumSGBDoudeumbancodedadosmaissimpl rio(comoosqlite)paraarmazenar configuraes,hosts,templates,histrico,etc. PorissoprecisamosselecionarumdosbancosnativosouusarODBC(este ltimono recomendado). No caso deste curso elegemos o PostgreSQL, um SGBD livre e de alta performance capaz de manipular uma grande quantidade de dados. Apesar da maioria das instalaesdeZabbixestaremMySQLrecomendamosfortementequesejausadooPostgreSQL poissuarobustezsemostroumaisadequadaaostiposdedadosqueoZabbixmanipula. Emboranopareaaprincpio,obancodedadosdoZabbix deextremavaliaparaa empresa,poiselecontmtodoohistricodefuncionamentodesuainfraestruturaeatrav sdele podemoscoletarSLAseinformaesdecapacityplan. recomendadotambmqueseubancodedadospossuaumplanodebackupsregular viaPITRPointinTimeRecovery.
2.4.1.Instalao
ParainstalaraversodorepositriodoPostgreSQL: #aptitudeinstallpostgresql8.4
#yuminstallpostgresql84server
2.4.2.Criandoousurioeobanco
Comobancodedadosinstaladodevemoscriarumabasededadoseumusu riocomas devidas permisses de acesso ao mesmo. O nome de ambos elementos s o totalmente opcionais,masnestematerialvamosconvencionarqueobancodedadossechamar zabbixdbe ousurioserzabbix. Muitasdocumentaeseatoprprioarquivopadrodeconfiguraodozabbixserver utilizaonomedobancocomozabbix,masissopodecausaralgumasconfus esentre eleeonomedousurio,foiporissoqueoptamospelaconvenoacima. SomenteosuperusuriodoPostgreSQL,chamado postgrestempermissoderealizara criaodosobjetoscitadosacima,logo,parapodermosacessaroterminaldeconsoledobanco (psql)temosqueentrarcomousurio postgres noGnu/Linuxeentousarocomandocorreto. NotequeopromptdecomandoirsealterarindicandoqueestamosnoconsoledoPostgreSQL. #supostgres $psql psql(8.4.5) Digite"help"paraajuda. postgres=#
Agoraqueconseguimosoacessocomosuperusu rio,vamosprimeirocriarobancode dados. O comando create database ir cuidar desta tarefa. Note que todos os comandos digitadosdentrodesteconsoleterminamcompontoev rgula(;). postgres=#CREATEDATABASEzabbixdb; Comobancodedadoscriadocomsucessovamoscriarousu rioedefinirsuasenha. Para propsito de organizao deste material a senha do banco de dados do zabbix ser zabbixdbpw.Aodigitarasenhanotequeelan oaparececomonoquadrodecomandoabaixo! Esteapenasumdemonstrativodidtico. postgres=#CREATEROLEzabbixLOGIN; postgres=#\passwordzabbix Digitenovasenha:zabbixdbpw Digiteanovamente:zabbixdbpw interessantedefinirasenhapor\passwordpoisassimelan oficaarmazenadano histricodecomandosdousurio. Agoraprecisamosliberaraconexodoservidoraobancodedadosdozabbix,paraisso editeoarquivopg_hba.confconformeabaixoeacrescentealinhaemdestaque. postgres=#\q $logout #vim/etc/postgresql/8.4/main/pg_hba.conf hostzabbixdbzabbix127.0.0.1/32md5 Reinicieobancodedadoserealizeotestedeconexo. #/etc/init.d/postgresqlrestart #psqlhlocalhostUzabbixzabbixdb psql(8.4.5) conexoSSL(cifra:DHERSAAES256SHA,bits:256)
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 30 Digite"help"paraajuda. zabbixdb=>\q # Se voc estiver usando a verso 9.0 do PostgreSQL importante lembrar que o suporte a imagens do Zabbix assume que o banco utiliza a forma antiga de armazenamento bytea (escape em vez de hex). Para configurar o comportamento antigo use o comando ALTER DATABASE nomedabase SET
2.4.3.Cargainicial
Agoravamosfazeracargainicialdobancocarregandoosesquemas,osdadosmais bsicos. #supostgres $cd/usr/src/zabbix1.8.4/create/schema $catpostgresql.sql|psqlzabbixdb $cd../data $catdata.sql|psqlzabbixdb No faa a carga do arquivos de imagens, iremos abordar como colocar figuras personalizadasedemelhordefiniomaisafrente,nestecaptulo.
2.4.4.Concedendoaspermissesnecessriasaousurio
Agoraomomentodeconcederaspermissesdeacessonastabelas.OusurioZabbix precisadepermissesdeSELECT,INSERT,UPDATEeDELETEapenas.Comasequ nciade comandosabaixovocconseguirativartodasaspermissesnecessrias. Emboraesteprocessosejamaiscomplicadodoquefazerdeixarousu riozabbixcomo donodobancoelemuitomaisseguroedeveserutilizadoassimemprodu o
||tablename||'TOzabbix;'FROMpg_tables;
5
$logout 1) Ocomando\aremoveoalinhamentodoselementosnatabela; 2) O\tmostraapenastuplas,eliminandocabealhoserodaps; 3) Ocomando\ogravaooutputnoarquivodefinido( /tmp/grantzabbix.sql).Noteque precisodeoutro\osemonomedoarquivoparaencerrarooutput; 4) EstecomandoemSQLselecionatodasastabelasdobancodedadosemontauma string com o comando de permisso (GRANT), voc pode ver o contedo deste comandonoarquivo/tmp/grantzabbix.sql; 5) Ocomando\icarregaeexecutaocontedodoarquivogeradoacima.
2.5.InstalaodoservidorZabbixviacdigofonte
Em alguns casos a distribuio Gnu/Linux que voc escolher pode possuir em seu repositrioumaversosatisfatriadoZabbixdisponvel.Seforesteocaso, timo!Simplesmente instaleopacoteecomeceaconfigurar. Noentantoissonemsempre verdadeepodesernecessrioumaversomaisrecente (devidoarecursosnovos,etc.)nasuasoluodemonitoramento.Parasuprirestanecessidade precisocompilaroZabbixapartirdeseucdigofonte. Esta sesso toda dedicada ao processo de criar os binrios, cobrindo quais dependnciasdevemserinstaladasecomoescolherosrecursosaseremcompilados.Viade regra se algum tipo de recurso no se mostrar necessrio a princpio no o ative, isso gera binriosmaisleves(commenoscdigoembutido)ealiviaoconsumodemem riaemservidores
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 32 comaltascargasdemtricassendomonitoradas. Paracomear,vamosinstalarosdoispacotesmaisbsicosparacompilaodefontesno Debian, o buildessential e o make. O primeiro um meta pacote que ir instalar todosos pacotesmnimosdecompilaodefontes(compilador,linkeditor,cabealhosdokerneledalibc, etc.)eosegundoumautomatizadordecompilao.Noterminaldozabbixsrvrodeosseguintes comandos. #aptitudeinstallbuildessentialmake #cd/usr/src/zabbix1.8.4 #./configurehelp|less Oconfigure umscriptgeradoapartirdoautotools,queumconjuntodeferramentas parafacilitaracompilaodefontesemC.Aopohelpfornecidaacimair listartodasas opesquepodemosativarounoparacompilaroZabbix.Notequeoconfigurenocompila nadaeleapenaspreparaacamapararealizaracompila ocomomake. Natabelaaseguirestoasopesrelevantesdoconfigureparaanossatarefa. Opo do configure --prefix=diretrio Descrio Define onde o Zabbix ser instalado. importante lembrar que se nada for configurado nesta opo os binrios e manuais sero colocados em /usr/local como padro. No entanto para manter a instalao organizada e facilitar atualizaes de verses do Zabbix ns o colocaremos em /opt/zabbix-1.8.4.
--mandir=/usr/share/man Aponta a localizao correta das pginas de manual, assim podemos usar o comando man para acessar as opes dos binrios do Zabbix. --enable-static Ativa a gerao de binrios em forma esttica (sem shared libraries). recomendado deixar esta opo desligada. Ativa a compilao do servidor. No caso presente iremos ativar esta opo, quando formos compilar apenas o agente iremos desabilit-la. Compila os binrios para sistemas distribudos. Como neste curso no abordaremos o sistema de proxy do Zabbix vamos deixar esta opo sempre desabilitada. Compila os binrios para os agentes. uma excelente ideia sempre deixar esta opo ativada. Mesmo em servidores dedicados do Zabbix uma boa prtica monitorar a prpria mquina.
--enable-server
--enable-proxy
--enable-agent
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 33 Opo do configure --enable-ipv6 Descrio Compila com suporte a IPV6. Embora no seja absolutamente necessrio, dado ao recente anncio do esgotamento de endereos IP da IANA o IPV6 logo ser necessrio em muitos ambiente. Ativa o suporte ao back end do bando de dados IBM DB2. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados MySQL. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados Oracle. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados PostgreSQL, vamos deix-lo habilitado. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados sqlite verso 3. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte do servidor de contato com servidores Jabber permitindo que o Zabbix envie alertas taravs deste servio de mensagens instantneas. Vamos ativar essa opo. Ativa o suporte a biblioteca de HTTP CURL. necessria para o monitoramento de servios Web e autenticao via HTTP. Ativa o suporte ao back end do bando de dados via ODBC. No recomendado. Como o anterior mas usa unixODBC ao invs de iODBC. Este pacote mais encontrado do que o iODBC. Ativa o suporte a monitoramento via SNMP usando a biblioteca net-snmp do unix. Vamos deix-la ativada. Mesmo que o anterior, mas usando a biblioteca ucd, menos comum. Vamos deix-la desativada. Ativa suporte a monitoramento via SSH e verificao de status de um servio de conexo remota segura. Vamos deix-lo ativado. Ativa suporte a comandos e monitoramento de hardware por IPMI. S relevante quando o hardware que voc vai monitorar e o S.O. Instalado nele possuem esta especificao. Para este curso deixaremos ele desativado.
--with-ibm-db2
--with-mysql
--with-oracle
--with-pgsql
--with-sqlite3
--with-jabber
--with-libcurl
--with-openipmi
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 34 Opo do configure --with-ldap Descrio Ativa suporte a autenticao via LDAP e monitoramento do status de um servio de diretrios remoto. Vamos deix-la ativada.
2.5.1.Dependnciasdecompilao.
Ao executar o comando abaixo, colete cada erro que aparecer e aponte na tabela o pacotequedeveserinstaladopararesolveradependncia.Istovaiservirderefernciaparavoc emfuturasinstalaesetambmtemcomointenoensinaralidarcomerrosdedepend ncias decompilao. Useocomandoaptitudeparaencontrarospacotescorretos. ./configureprefix=/opt/zabbix1.8.4mandir=/usr/share/manenableserverdisablestatic disableproxyenableagentenableipv6withpgsqlwithjabberwithlibcurlwithnet snmpwithssh2withoutopenipmiwithldap Erro Dependncia
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 35 VocpodeotimizarosbinriostornandooZabbixmaisrpidomasdependentedeuma CPUcompatvelsevoc exportarasvariveisdeambiente CFLAGSe CXXFLAGS comoseguintevalorO2pipemarch=native,antesdeexecutaroconfigure.Sevoc estiverusandoumsistemade32bitsacrescenteaindafomitframepointer. Cuidado comoutrosflagsdecompilao!Vocpodeacabarcomumbinriodefeituoso!
2.5.2.Compilandoeinstalando
Agoraqueoconfigurechegouaopontofinaletodasasdepend nciasforamresolvidas hora de executar a compilao com o comando make. Na verdade o make no um compilador,eleapenaschamaoscomandosnecess riosparaconstruirosbinrioatravsdeum arquivoMakefilequefoigeradopeloconfigure. Execute conforme abaixo, os comandos. No final o comando ln ir criar um link simblicopara/opt/zabbix.Isso umaboaprticaparaajudaratrocarasversesdoZabbix duranteumamigrao,apontandoolinkparaapastacomosnovosbin rios,enquantomantemos osanterioresparaocasodeumdowngradeemergencial. Voc podesubstituiroj2poroutronmeroparaacelerarasuacompilaosevoc tivermltiploscores.Umaregrageral2xCores+1. #makej2 #makeinstall #lnsvf/opt/zabbix1.8.4/opt/zabbix #tree/opt/zabbix Ocomandotreevaimostrarahierarquiadediret riosearquivosabaixodocaminhoda instalao.Atabelaabaixotemodescritivodecadaumdeles. Binrio zabbix_get Funcionalidade Utilitrio para realizar consultas nos agentes via linha de comando. Muito til e ns o utilizaremos extensamente durante o curso.
zabbix_sender
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 36 Binrio Funcionalidade item especial do tipo Zabbix trap para lidar com estes envios. til para alertar incidentes instantaneamente para o servidor como o incio, termino ou erro de um backup. zabbix_agent Agente para ser usado com o super daemon xinetd ou similar. No necessrio na grande maioria dos casos e ser removido do diretrio. O daemon do agente do Zabbix que fica na memria a espera das requisies do servidor. O daemon do servidor do Zabbix. Este o componente principal de toda a infraestrutura.
zabbix_agentd
zabbix_server
Tabela 2: Binrios de uma instalao de servidor e agente do Zabbix precisoremoverozabbix_agentesuapginademanual,umavezqueiremosusar apenas o daemon zabbix_agentd. Tambm uma boa prtica no manter os smbolos de depuraonosbinriosdeproduo.Ocomandostripirretirarestessmboloseoexecutvel finalserligeiramentemenoremtamanho(oqueajudaaconsumirmenosmem riatambm). #rm/opt/zabbix1.8.4/sbin/zabbix_agent #rm/usr/share/man/man1/zabbix_agent.1* #stripstripall/opt/zabbix1.8.4/*/* No aconselhvelexecutardaemonsdesistemacomousurioroot,porissovamos criarumgrupoeusuriodenomezabbixparaqueoservioentrenamemriacomousuriono privilegiado. OnomedousurioqueoZabbixusahadcoded,ouseja,eleprogramadodentrodo cdigofonteenopodeseralteradoviaconfigurao.Dessemodosempretemosque criarousuriocomonomezabbix,jonomedogrupototalmenteopcional. #groupaddzabbix #useraddgzabbixms/bin/bashzabbix
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 37 Ambososdaemons,doagenteedoservidor,precisamdedoisdiret riosparaarmazenar oslogseoarquivodePID.Comoscomandosabaixocrieed aspermissesnecessriaspara ambos. #mkdir/var/{log,run}/zabbixp #chownzabbix./var/{run,log}/zabbix
2.5.3.Serviosderede
Acrescente ao /etc/services o mapeamento de portas do Zabbix Agent e Zabbix Trapper. #vim/etc/services zabbixagent10050/tcpZabbixAgent zabbixagent10050/udpZabbixAgent zabbixtrapper10051/tcpZabbixTrapper zabbixtrapper10051/udpZabbixTrapper Estas entradas permitem que programas como wireshark e netstat reconhe am as portasdoZabbix.
2.5.4.Arquivosdeconfigurao
Os arquivos de configurao do Zabbix acompanham os seus fontes, mas a 4Linux preparouumconjuntodearquivosparausoemprodu ocomumaorganizaomelhorada.Ao invsdesimplesmentecolocartodasasconfigura esemumnicoarquivo,osparmetrosforam distribudosemgruposlgicosseparadosemvriosarquivosediretrios. OZabbixporpadroprocurapelosseusarquivosem/etc/zabbix,apartirdosarquivos principais(zabbix_server.confezabbix_agentd.conf)outrosarquivosforamchamadoseinseridos na configurao. A tabela abaixo demonstra como ficaram organizados os diret rios e seu contedo.
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 38 Diretrio ou arquivo agente principal) /etc/zabbix/agent.d/checkings.conf /etc/zabbix/agent.d/logs.conf /etc/zabbix/agent.d/network.conf /etc/zabbix/agent.d/remote_commands.conf /etc/zabbix/alert.d /etc/zabbix/externalscripts /etc/zabbix/server.d Descrio (carregado pelo arquivo
Configurao de checagens ativas e passivas do agente. Configurao de logs (local, nvel de debug, etc.) do agente. Configuraes de rede do agente. Configurao de recebimento comandos remotos no agente. Diretrio externos para scripts de de
alertas
Diretrio para scripts de extenso do agente do Zabbix. Diretrio para configuraes extras do servidor (carregado pelo arquivo principal) Configurao do back end de banco de dados do servidor. Configurao de logs (local, nvel de debug, etc.) do servidor. Configuraes de rede do servidor. Configuraes de quais daemons devem iniciar e quantos de cada um deles, alm de consumo de memria do servidor. Configurao de monitoramento distribudo do servidor. Arquivo principal de configurao do agente Arquivo principal de configurao do servidor
Copie o arquivo compactado do DVD (confs/configserver.tar.bz2 e confs/config agent.tar.bz2)paradentrodo/tmpdamquinavirtual.Estearquivostemvriosvalorespadres razoveisparacomearenecessitamdepoucaconfigurao.No deintenodestematerial dissecar cada uma das opes de configurao, vamos abordar apenas as mais relevantes, pormosarquivostemextensoscomentriosemportuguscriadospeloautordestematerial.
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 39 #cd/ #tarxf/tmp/configserver.tar.bz2 #tarxf/tmp/configagent.tar.bz2 #chownroot.zabbix/etc/zabbixR #find/etc/zabbixtypedexecchmod0750{}\; #find/etc/zabbixtypefexecchmod0640{}\; 1) Notequeogrupodosdiretrioseseusarquivosforamapontadosparazabbix.O donocontinuouaseroroot; 2) Todososdiretriostiveramapermissodeacessoglobalrevogada,nenhumusurio do sistema tem que acessar esta pasta exceto o do Zabbix (existem informa es sensveiscomosenhasemtext/plainnestesarquivos).Tamb m,apenasoroottem direitosdegravaonessaspastasogrupozabbixtemapenasacessodeleitura. 3) Osarquivosseguemamesmalgicaqueosdiretrios.
exportPATH=$PATH:/opt/zabbix/sbin:/opt/zabbix/bin
2.5.5.Testandosuainstalao
Utilizeomanualdozabbix_agentdparadescobrircomolistarasm tricassuportadas peloambienteecomotestarumdelasindividualmente.Depoisinicieoagente,vejaoconte dodo arquivodelogseuseoscomandos psenetstatparaverquaisosprocessosqueeleinicioue emquaisportaselessevincularam. Depoisdotrminocomoagentevamosconfiguraroservidorconformeospassosaseguir erealizaromesmoprocedimentodeinicializaoepesquisaquenoagente.
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 40 #vim/etc/zabbix/server.d/database.conf DBHost=127.0.0.1 DBPort=5432 DBName=zabbixdb DBUser=zabbix DBPassword=zabbixdbpw 1) OendereoIPounomeDNSdoservidorqueestacomobancodedados.Comono nossocenrioobancoeoservidorZabbixest onamesmamquinavirtualutilizamos oendereodeloopback; 2) AportaTCPdeacessodobanco.EstaaportapadrodoPostgreSQL; 3) Nomedobancodedadosquecriamosnoinciodocaptulo; 4) Nomedousurioquecriamosedemospermisso; 5) Senhadousurioacima. Agoraexecuteoscomandosdeinicializaodosdaemonsconformeindicadoabaixo. #zabbix_agentd #zabbix_server Verifiqueseas ltimaslinhasdologindicamseambosiniciaramcorretamenteetamb m setodososprocessosestonamemria. #tailn1/var/log/zabbix/zabbix_server.log 1203:20110207:092633.044server#1started[DBCache] #tailn1/var/log/zabbix/zabbix_agentd.log 871:20110207:092607.522zabbix_agentdcollectorstarted #psuCzabbix_agentd SERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND zabbix8630.00.14836496?SN09:250:00 /opt/zabbix/sbin/zabbix_agentd #psuCzabbix_server USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND zabbix12010.01.0466962636?SN09:260:03 /opt/zabbix/sbin/zabbix_server
Note que a sada do ltimo comando muito grande. Ao final dos testes mate os processoscomocomandokillall: #killallzabbix_serverzabbix_agentd
2.5.6.Scriptsdeboot
No CD temos alguns scripts de boot prontos para uso no Debian, copie os arquivos boot/debian/serverbootscripts.tar.bz2 e boot/debian/agentbootscripts.tar.bz2 para o /tmp e descompacteosnaraiz. #cd/ #tarxvf/tmp/serverbootscripts.tar.bz2 #tarxvf/tmp/agentbootscripts.tar.bz2 Testeainstalaodosscripts. #/etc/init.d/zabbixserverstart #/etc/init.d/zabbixagentstart Porfim,coloqueosscriptsnobootdamquinavirtual. #updaterc.dzabbixagentdefaults #updaterc.dzabbixserverdefaults
2.6.InstalaodoagenteZabbixviacompilao
AgorachegouomomentodeinstalaroagentedoZabbixnasoutrasm quinasvirtuais comGnu/Linux.Oprocedimentodeinstalaosimilaraodoservidor,masnoiremoshabilitara opoenableservernoconfigure.Tambmnosonecessriostodosasopesdewith usadasacima.Oagentecertamentemaissimplesqueoservidoremtermosdefuncionamentoe sprecisadosuporteaLDAP.
2.6.1.Exerccio:compileeinstaleoagentenasVMcomGnu/Linux
Comasinformaesacimaemmosrealizeosprocedimentosdeinstalaodosagentes namquinavirtual Presentation.Noseesqueatambmdecolocarosscriptsdebooteos arquivosdeconfiguraonelaeiniciaroprocessonamemria.
2.6.2.Acessoaoagentepeloservidor
Agoraqueoagenteestainstaladoerodando precisorealizaralgumasconfiguraes bsicasparaqueelepermitaoacessovindodoservidor. Primeirovamosverificarsesuasconfiguraesdeportaeredeestodeacordo,usandoo comandonetstatparalistarasportasqueeleestaescutando. #netstatlntp|grepzabbix tcp00127.0.0.1:100500.0.0.0:*OUA592/zabbix_agentd Asadadocomandomostraqueodaemonestaapenasvinculadoaoendere olocalhost damquina,vamosmodificarseuarquivodeconfigura oereinicilo.IdentifiquequaloIPlocal da mquina que pertence a DMZ (rede 172.27.0.0/24) e substitua 127.0.0.1 por ele dentro do arquivo/etc/zabbix/agent.d/networks.confnoparmetroListenIP. #vim/etc/zabbix/agent.d/network.conf
1
2 3
8 9
10
oqualestadesignadoaenviardadosconformeatabeladeoteamento.
11
#/etc/init.d/zabbixagentrestart StoppingZabbixagentdaemon:zabbix_agentd StartingZabbixagentdaemon:zabbix_agentd #netstatlntp|grepzabbix tcp00172.27.0.1:100500.0.0.0:*OUA654/zabbix_agentd SeoservioagoraestivervinculadoaoIPcorretorepitaestespassosemcadaVM. Nesteponto importanteparamosparaverificarumaposs velfalhadeconexo.Vamos foraraVMzabbixsrvasecomunicarcomogateway(presentation)viazabbix_get.Vamos usarakeyagent.pingcomoexemplo. #zabbix_getsgatewayk'agent.ping' zabbix_get[6646]:Getvalueerror:***Cannotconnectto[gateway]:10050[ Connectiontimed out] Noteamensagem'Connectiontimedout'nofinaldalinhadeerro,tambmrepareque levoualgumtempoparaqueocomandoretornasseamensagem.Issoaconteceporqueofiltrode pacotes da mquina esta bloqueando conexes, podemos averiguar isto com mais precis o usandoaferramentanmapconformeabaixo: #nmapP0p10050gateway StartingNmap5.00(http://nmap.org)at2011013002:17BRST Interestingportsongateway.curso468.4linux.com.br(172.27.0.1): PORTSTATESERVICE 10050/tcpfilteredunknown MACAddress:08:00:27:BD:55:12(CadmusComputerSystems) Nmapdone:1IPaddress(1hostup)scannedin0.47seconds
Oestadodaportaqueonmapretornou filtered,ouseja,nohretornodepacotesdo sistema.Para podermos liberaro acesso use o procedimento abaixo no terminal da m quina presentation. #iptablesAINPUTjACCEPTptcpdport10050s172.27.0.10 #iptablessave>/etc/iptables/rules RepetindoonmapapartirdoservidordoZabbix: #nmapP0p10050gateway StartingNmap5.00(http://nmap.org)at2011013002:34BRST Interestingportsongateway.curso468.4linux.com.br(172.27.0.1): PORTSTATESERVICE 10050/tcpopenunknown MACAddress:08:00:27:BD:55:12(CadmusComputerSystems) Nmapdone:1IPaddress(1hostup)scannedin0.27seconds Seoestadoretornadoforopen,entooservidor capazdeseconectaraoagenteno nvel da camada TCP, mas ainda precisamos ter certeza absoluta que ele esta permitindo conexesnonveldecamadadeaplicao.Vamosrepetirotestecomozabbix_geteverseo agenteretornaovalor1. #zabbix_getsgatewayk'agent.ping' Notequeelenoretornanada!Apenasumalinhaembrancoaparecenoresultadodo comando.Issoestaocorrendoporqueoagenteprecisaliberaraconsultaparaoservidor,por padroosarquivosdeconfiguraoapenaspermitemqueelesejaacessadoapartirdolocalhost. Paraliberaroacessotemosqueeditaroarquivo/etc/zabbix/agent.d/checkings.confemudar doisparmetros.
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 45 Oprimeiro,obviamente oServer queaceitaumalistaseparadaporvrgula(,)dos endereosquesopermitidosfazeraconsulta.Osegundo oHostname representandoo nomedamquinacomoqualoagentedeveseapresentaraoservidor.Estenomedeveser nico enonecessariamenteprecisaserigualaohostnamerealdam quina,defatononossocenrio iremosdeixlodiferente. #vim/etc/zabbix/agent.d/checkings.conf
1
#Esteoarquivoparaconfiguraodechecagensnoagente.Hdoistiposdechecagens,a # #Checagenspassivassoopadro,oservidorfazoagendamentodasmtricasemanda
passivaeaativa.
2
# #Umachecagemativapermitequeoagenterecebaumalistadeitensaseremmonitorados
doservidoreaoinvsdesteltimocuidardoagendamentoerequisiesoagentequetoma parasiestatarefa.
6
# #ChecagensativassoteisquandooFirewallnopermitequeoservidordemonitoramento
alcanceoagenteviaredeouquandoseutilizaumsistemademonitoramentodelogsondeo monitoramentoativoobrigatrio.
8
checagensativas.
10
11 12
13
hostnamedamquinaeleumastringdeidentificaodoagenteparacomoservidordo Zabbix.
14
# Hostname=Presentation
15
1) SempretemosquemudaresteparmetroparaoendereodoservidorounomeDNS domesmo.Sehouveremmaisdeumservidor,separeosendere os/nomeporvrgula; 2) Este onomeasercadastradonofrontenddoZabbixen oonomedeDNS (apesardepoderemserosmesmos). Reinicieoagentemaisumavezefaaotestecomzabbix_getapartirdoservidor. #zabbix_getsgatewayk'agent.ping' 1 Seocomandoresultanteretornou1ent ooservidorpoderacessaroagenteapartirde agora.
2.6.3.ExercciosobreinstalaodeagenteemLinux
1) Instale o agente do Zabbix via compilao nas mquinas virtuais Application e Databaseconformemostradonestecaptulo.
2.7.InstalandooagenteemambientesWindows
Um dos objetivos do curso demonstrar como o Zabbix capaz de monitorar redes heterogneascomvriossistemasoperacionaiseativosderede.Estasess ocuidadeinstalaro agentedoZabbixemumWindows2003.
Primeiro 2.14.
preciso
baixar
os
executveis
pelo
endereo
http://www.zabbix.com/downloads.php,localizeolinkdebinriosparaWindowscomonaFigura
Volte a raiz e crie um diretrio chamado Zabbix e dentro dele ainda crie mais tr s diretrios:conf,logebinecopieosexecutveisdescompactadosdentrodesteltimo. ObtenhaosarquivosdoDVDcomaconfiguraodoagentedoWindows(conf/agentwin config.zip)edescompactedentrodaconfoseuconte do.Apagueoarquivozipdepoisdisso. O arquivo zabbix_agentd.conf deve ficar na raiz da pasta conf, assim como os diretriosagenteexternalscripts.Cuidadonahoradedescompactar.
Edite o arquivo c:\Zabbix\conf\agent\checkings.conf e mude os par metros Server e HostName conforme a Figura 2.17, para permitir o acesso do servidor e o arquivo c:\Zabbix\conf\agent\network.confparavinculloaoendereoIPdaplacaderede.
Use o Wordpad para alterar estes arquivos, o Notepad tem v rios problemas com codificaoefinaisdelinha.
Agoravamostestarainstalao,abradoispromptsdecomando,noprimeiroacesseo diretriodosbinrioseexecuteocomandoconformeabaixo. cdC:\Zabbix\bin zabbix_agentdc..\zabbix_agentd.conf Notequeumamensagemdizendoqueelefoiiniciadopeloconsoleir aparecernatela. porqueoWindowsno capazdeexecutaroagentecomoumdaemondamaneiraqueoLinux faz,maisafrenteveremoscomoinicilocomoserviodoWindowsque maneiracorretadese fazer.Outramensagem,destavezviacaixadedialogo,tamb mvaiaparecernatela. oservio de segurana do Windows que esta perguntado se deve bloquear ou n o esta aplicao. ObviamentedevemosclicaremDesbloquear.
Agora no segundo prompt de comando, use o comando netstat como abaixo para verificarseeleestaescutandonoendereocorreto. netstatan
2.7.1.Executandooagentecomoservio
InstalaroagentedoZabbixcomoservio muitosimples.Nopromptdecomandoonde voc o testou pressione CTRL+C para cancelar a execu o do programa (demora alguns segundos).Quandoopromptretornardigite: zabbix_agentd.execc:\Zabbix\conf\zabbix_agentd.confinstall DuasmensagensiroaparecerindicandoainstalaodoagentecomoServiceeEvent Source.Paraconferirseoagenteestamesmonoarabrao PaineldeControle Ferramentas AdministrativasServioseprocurepeloserviochamadoZabbixAgent.
Nestatelatambmpossvelparar,reiniciar,etc.oagenteatravsdabarrade conesna partesuperiordajanela.Comooservi oiniciaparadodevemosclicarsobreeleeno coneIniciar oServio(representadopelosmbolodeplay). Certifiquesequeeleestaparaseriniciadoautomaticamente,assimquandoosistemafor reiniciadooserviotambmser.TestenoservidordoZabbixseeleestaconseguindoalcan aro agente. #zabbix_getswin2003k'agent.ping' 1 Seeleretornar1comoacima,entoainstalaoestaconcluda.
2.8.1.Obtenodobinrio
Sigaoprocedimentoabaixoparaobterobin riodozapcat.Voc ir baixlodoSource Forge. #cd/var/tmp #wgethttp://ufpr.dl.sourceforge.net/project/zapcat/zapcat/zapcat1.2/zapcat1.2.zip #unzipzapcat1.2.zip #cdzapcat1.2 #ls binbuild.xmlCOPYINGlibopenfireREADMEsamplessrctemplateswebappzapcat 1.2.jarzapcat1.2.warzapcatopenfire1.2.jar Notequeozapcatvemnaformadeum.war(aplica owebjava)e.jar(applicativojava). Vamosnosaterapenasaomodoweb.
2.8.2.Deployment
ParainstalaroZapcat,simplesmentecopieobinrioparaapastadedeploydainstncia emexecuodoJBoss.Nonossocasoestapasta/opt/jboss/server/application/deploy/.
#cpzapcat1.2.war/opt/jboss/server/application/deploy/ #tail/opt/jboss/server/application/log/server.log 2011013006:08:10,616INFO[org.jboss.system.server.Server]JBoss(MXMicroKernel) [4.2.3.GA(build:SVNTag=JBoss_4_2_3_GAdate=200807181417)]Startedin27s:81ms 2011013006:10:25,679INFO[org.jboss.web.tomcat.service.TomcatDeployer]deploy, ctxPath=/zapcat1.2,warUrl=.../tmp/deploy/tmp3690979215130123277zapcat1.2exp.war/ Altimamensagemdologindicaqueopacotefoiinstaladocomsucesso(deployed).Ele j esta funcionando e podemos averiguar isso com o comando netstat como fizemos anteriormente. #netstatlntp|grep':1005' tcp00172.27.0.20:100500.0.0.0:*OUA28751/zabbix_agentd tcp000.0.0.0:100520.0.0.0:*OUA29181/java Repare que, como ele um aplicativo java, o netstatno vai informar o nome dele (Zapcat)nasadacomp.
2.8.3.OpesdeinicializaodoJBoss
O JBoss precisa de trs opes para permitir que o Zapcat possa ler todos os seus MBeans ( O Tomcat s precisa da primeira). Edite o arquivo de configura es do JBoss e e acrescenteaofinaldeleoseguintecontedo. #vim/opt/jboss/bin/run.conf
1
Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImp l"
4
JAVA_OPTS="$JAVA_OPTSDorg.kjkoster.zapcat.zabbix.port=10052
JAVA_OPTS="$JAVA_OPTSDorg.kjkoster.zapcat.zabbix.address=0.0.0.0 1) OJMXremoteativaosistemadeconsultasviaJMXnoJBosseTomcat.Nocasodo segundoapenasesteparmetronecessrio; 2) OMbeanserveraimplementaodoJBossparaacessoaosJMXviaservidor; 3) Indica a classe que deve ser usada para manipular os Mbeans internamente no JBoss; 4) EstaopodefineaportadoZapcat.Ela opcionaleporpadrooZapcatescutana porta10052; 5) EstaopodefineaqualIPozapcatdevesevincular.Ela opcionaleporpadroele sevinculaatodososendereosdisponveisdohost(0.0.0.0). Reinicie o JBoss e teste o acesso ao Zapcat pelo endere o
http://javaapp.curso468.4linux.com.br/zapcat1.2/,atelaabaixodeveaparecer.
Noprximocaptulovoltaremosaesteacesso.PorhorajbastaverificarseoZapcatesta funcionando.
2.8.4.LiberandoofirewallparaacessoaoZapcat
Nofiltrodepacoteslibereoacessoporta10052/TCPcomoscomandosabaixo. #iptablesAINPUTjACCEPTptcpdport10052 #iptablessave>/etc/iptables/rules
2.9.TestandooacessoviaSNMP
Umadasmquinasvirtuaisrepresentaumativoderede,umswitchparasermaisexato. NelenenhumagentepodeserinstaladoevamosusaroSNMPpararealizaromonitoramento. ParatestarseoacessoaoSNMPestaOK,instaleasferramentasdesnmpnoDebian. #aptitudeinstallsnmpsnmpmibsdownloader LibereoacessoatodasasMIBsdoseusistema. #vim/etc/snmp/snmp.conf
1
# #AsthesnmppackagescomewithoutMIBfilesduetolicensereasons,loading #ofMIBsisdisabledbydefault.IfyouaddedtheMIBsyoucanreenable #loagingthembycommentingoutthefollowingline. #mibs: Agora utilize o comando snmpwalk para verificar se o switch retorna os dados de
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 56 IFMIB::ifDescr.1=STRING:lo IFMIB::ifDescr.2=STRING:eth0 IFMIB::ifDescr.3=STRING:eth1 IFMIB::ifDescr.4=STRING:eth2 IFMIB::ifDescr.5=STRING:eth3 IFMIB::ifDescr.6=STRING:switch0 IFMIB::ifSpecific.1=OID:SNMPv2SMI::zeroDotZero IFMIB::ifSpecific.2=OID:SNMPv2SMI::zeroDotZero IFMIB::ifSpecific.3=OID:SNMPv2SMI::zeroDotZero IFMIB::ifSpecific.4=OID:SNMPv2SMI::zeroDotZero IFMIB::ifSpecific.5=OID:SNMPv2SMI::zeroDotZero IFMIB::ifSpecific.6=OID:SNMPv2SMI::zeroDotZero Seocomandoretornoualistaacima(quefoitruncadapelotamanho)ent oseusistemaj consegueleroSNMPdoswitch. Se voc estiverusandoumhardwarecomumaMIBproprietria,localizee baixe o arquivonaInternetecopieonodiretrio/usr/share/snmp/mibs/
2.9.1.ConceitosdeSNMP
O SNMP um protocolo de monitoramento bem difundido, principalmente entre equipamentosderede.Agrandemaioriadohardwareembarcadopararedesuportaalgumtipode versodomesmo.Amaiscomumaverso2,masaverso1(consideradaobsoleta)eaverso 3(amaissegura)temumaincidnciaregular.Sevoc tiverqueoptarporumadelas,sempre tenteescolheramaisrecentepossvel.Apesardeadicionarumacertacomplexidade,avers o3 ajudaemmuitonaseguranapoistrabalhacomACLsporautentica oecriptografia.Nocurso veremos a verso 2 que mais comum de se encontrar nos equipamentos (opo v2c no comando usado anteriormente), mas a diferena de trabalho entre elas bem pequena (praticamentealgunscamposamaisnaverso3). Todas as trs verses trabalham com MIBS, arquivos texto com defini es de como coletarasOIDS,asstringsdeacessodasmtricas.UmaOIDpodeserrepresentadaporumtexto como DISMANEVENTMIB::sysUpTimeInstance ou por uma representao numrica como .
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 57 1.3.6.1.2.1.1.3.0. Sevoc possuiraMIBdeumequipamentomonitoradopeloZabbixequiserutilizara formatextualmostradaacimaemvezdanumrica,terquecopiaroarquivodetextodeladentro dodiretriodesuadistribuioGnu/Linuxondeoservidorestiverinstalado. Normalmenteestediretrioestaem/usr/share/snmp/mibs/,mas recomendadoque vocconfirmeseistovaleparaadistroquevocestausando. Porfim,apartirdaverso2doprotocoloSNMPpassouseatrabalharcomumastring decomunidade(community).Porpadroestastringtemovalor publicarmazenadodentrodela (parmetrocdocomandosnmpwalk).Estevalortemcomoobjetivopermitirapenasquequem conheaacommunitysejacapazdeacessaroSNMP. Francamente,colocaraseguranadeumsistemaemcimadeumvaloremtextoplano que viaja sem criptografia na rede no nada seguro. Se voc realmente quiser seguranadeveusaraverso3.Tambmprotejaaomximooacessoaporta161(ou a qual voc definiu) de acessos indevidos, o ideal permitir apenas acesso dos endereosdosservidoresdemonitoramento. Apenasselembrequeaindaassim, nadainviolveleoSNMPnoexceo.
2.10.InstalandooservidorZabbixviapacote
NocasodorepositriodeumaversodeDebianpossuirumaversodoZabbixque adequadoasuasnecessidadesentoaoinvsdecompilarrecomendadoquevocoutilize.No presentemomentodaescritadestematerialessenoeraocaso. #aptitudeinstallzabbixserverpgsql #aptitudeinstallzabbixagent
OCentOSnotempacotesnoseurepositrio.
2.11.Preparandooservidorweb
ComovistoanteriormenteoZabbix umsistemacomponentizadoesuainterfaceweb rodadentrodeumservidorcomsuporteaPHP.Estasess odescrevecomoinstalareconfigurar umservidorApache2.2paratalintento.
2.11.1.InstalaodoApacheePHP5
ParainstalarumnovopacoteapachecomsuporteaPHPsigaospassosabaixo.OZabbix precisaaindadosuporteaGD(umabibliotecagrfica)parageraodeimagenseacessoao PostgreSQL. #aptitudeinstallapache2libapache2modphp5php5gdphp5pgsqlphp5ldap NocentOS,useoseguintecomando. #yuminstallphphttpphpgdphppgsqlphpldap
2.11.2.ConfiguraodoVirtualHost
ParacriarumaconfiguraodehostvirtualnoApacheparaoZabbix,vamosprimeiro criarumdiretrioecopiarocontedodapastafrontendsdoseudiretriodefontes. #mkdirp/var/lib/zabbix/frontend #cd/usr/src/zabbix1.8.4/frontends/php/ #cp*/var/lib/zabbix/frontend/a Paraassegurarqueoapachetenhaacessoapenasdeleituraapastaeseusarquivos executeoprocedimentoabaixo. #cd/var/lib/zabbix/ #findfrontendtypedexecchmod0750{}\; #findfrontendtypefexecchmod0640{}\; #chownroot.wwwdatafrontendR #chmod0770frontend/conf
O ltimo comando d permisses de escrita na pasta conf ao servidor, isso necessrioapenasinicialmenteeserremovidodepoisdoterminodaconfiguraodo frontend. Agora vamos criar o arquivo de virtual host. Note que o diret rio criado acima apontadocomoraizeosarquivosdelogss oseparadosdopadroparafacilitaradepuraode erros. #cd/etc/apache2/sitesavailable #vimzabbixfrontend.conf
1
<VirtualHost*:80> ServerAdminsysadmin@curso468.4linux.com.br DocumentRoot/var/lib/zabbix/frontend <Directory/> OptionsFollowSymLinks AllowOverrideNone </Directory> <Directory/var/lib/zabbix/frontend> OptionsIndexesFollowSymLinksMultiViews AllowOverrideNone Orderallow,deny allowfromall </Directory> ErrorLog${APACHE_LOG_DIR}/errorzabbixfrontend.log #Possiblevaluesinclude:debug,info,notice,warn,error,crit, #alert,emerg. LogLevelwarn CustomLog${APACHE_LOG_DIR}/accesszabbixfrontend.logcombined
3 4
5 6
10
11
12
13
14
15
16 17
18 19
20
21
22 23
</VirtualHost>
1) DocumentRootprecisaapontarparaodiretrioondeinstalamosofrontend. 2) Em ErrorLog,vamosdirecionaroslogsdeerrosparaumarquivoespec ficodeste virtualhost. 3) OmesmodeveserfeitocomoCustomLog,apontandoparaumarquivoespecficode acessos. EstepassoestasubstituindoositepadropelodoZabbix.Sehouveremoutroshosts virtuaisnamesmamquina no necessrio removlos,apenas ajuste asconfiguraesdo arquivoacimaparareceberconexesapenasdeumaURLemparticular. #cd/etc/apache2/sitesenabled #rm000default #lnsv../sitesavailable/zabbixfrontend000zabbixfrontend Reinicie o Apache, abra a porta 80 do firewall e teste acessando a URL http://zabbix.curso468.4linux.com.br/. #/etc/init.d/apache2restart #iptablesAINPUTjACCEPTptcpdport80 #iptablessave>/etc/iptables/rules O primeiro acesso ao front end vai enviar o browser direto para o wizzard de inicializaodosite.Sigaospassoscomodescritoaseguirparaativarainterface.
2.11.3.Configurandoofrontend
Aprimeiratelaapenasumamensagemdeboasvindas.Cliqueem Nextparacomear.
MarqueaopoIagreeparaconcordarcomalicenadoZabbixecliqueemNext.
Nesta tela muitos alertas de falha iro aparecer, isso porque o Zabbix requer uma configurao muito alm dos padres do PHP. Neste ponto preciso editar o arquivo de configuraodoPHPemodificarosvaloresnecessrios. Note que o status de cada parmetro pode ser um OK em verde (o servidor j esta configurado para o recomendado ou superior), Ok em vermelho claro (o servidor j esta configuradoparaomnimo,masnoalcanouoideal)ouFailemvermelhoqueindicaquenem omnimofoiatingido.Oideal deixartudonoRecommended,porm precisoavaliarseo servidor ter os recursos necessrios para a execuo dessas configuraes. Normalmente teremosservidoresquesocapazesdefornecerrecursososuficienteparatal. Comovimabraoarquivoconformeabaixo. #vim/etc/php5/apache2/php.ini
Procure com o apoio da tabela abaixo e da tela de configura o todas as opes relevanteseconfigureasparaatingiroRecommended. Parmetro do PHP date.timezone Significado Qual fuso horrio o PHP deve usar? Mesmo que o seu sistema esteja corretamente configurado importante configurar este parmetro para o seu fuso horrio (usualmente America/Sao_Paulo). Tempo mximo que um processo do PHP pode rodar antes de ser morto. Tempo mximo que um processo do PHP pode gastar interpretando dados. O quanto uma nica instncia de execuo do PHP pode usar de memria. O mximo tamanho que uma requisio POST pode enviar ao servidor. Tamanho mximo para upload de um arquivo.
Se todos os prrequisitos foram supridos clique em Next. Seno refaa os passos acimaatconseguirchegaraosvaloresrecomendados. OsuporteaGDdoPHPnoDebianSqueezen oatingeorecomendadomasfunciona semproblemascomoZabbix.
Preenchaoformulriocomosdadosdoserviodemonitoramento, 1) OservidordeZabbixestaem localhost,masateno paraambientesdeproduo ondeoservidordoZabbixestaemoutramquina,nestecasodeveserpreenchidoo endereoounomedamquinaremota. 2) Ocampo Port correspondeaportaTCPemqueoZabbixestaescutando(Zabbix trapper),normalmenteestaportaa10051. 3) O Name um ttulo do servio de front end do Zabbix. Este ttulo vai ficar estampandonabarradobrowseresomenteajudaaidentificaro frontend quando voctemvriasbarrasdenavegao.
RepasseasconfiguraesnestatelaecliqueemNextsetudoestiverOK.
Estajanelaindicaqueoarquivodeconfigura ofoigravadocomsucessonodiretrio confquedeixamoscompermissesdeescritaanteriormente. horaderevogaraspermisses deescritanestediretrio. #cd/var/lib/zabbix/frontend/ #lslhdconf drwxrwx2rootwwwdata4,0KJan2722:58conf #chmod0750conf #lslhconf total28K rwrr1wwwdatawwwdata440Jan2722:58zabbix.conf.php #chownroot.wwwdataconf/zabbix.conf.php #chmod0640conf/zabbix.conf.php
AgorapressioneNextparairparaaprximatela.
2.12.Exercciosdereviso
1) possvelcolocaroagentedoZabbixparaserexecutadonoWindowscomoservi o? Como? ________________________________________________________________________ ________________________________________________________________________ 2) QuaisospossveisbackendsdebancosdedadosqueoservidordoZabbixsuporta? ________________________________________________________________________ ________________________________________________________________________ 3) possvelinstalaraInterfacedofrontendemqualquerservidorquesuportePHP? ________________________________________________________________________ ________________________________________________________________________ 4) ComosnmpwalkpodemoslistarvriaspartesoumesmotodasasmtricasSNMP. Qualocomandovocusariaparapegarapenasumamtrica? ________________________________________________________________________ ________________________________________________________________________ 5) RealizeumabrevepesquisanaInterneterelacionetodososagentesdeZabbixque vocencontrar. ________________________________________________________________________ ________________________________________________________________________ 6) Comozabbix_get,coleteviaterminaldeconsoleovalordaschavesabaixodos hostswin2003eapplication: 6.1) agent.version: 6.2) system.cpu.num: 6.3) vm.memory.size: _________________________________________ _________________________________________ _________________________________________
7) (Desafio)Sevoc tentarusarozabbix_getparacoletardadosdoZapcatver que elevaifalharretornandoumvalornosuportado.Vocconseguedescobrircomo,via linha de comando poderamos coletar os valores deste agente? Se sim crie um pequenoscriptparafazeracoletapassandoparaelehost,portaechave. ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________
OBJETIVOS ConheceraconfiguraodoZabbixviaFrontend. Gerenciaroshostsetemplatesparaomonitoramento. Criarmtricasdemonitoramento. Depuraritensnosuportados. Gerenciar acessos e permisses aos hosts monitorados atravs de usurios cadastradosnumabaseLDAP. Configurarosmeiosdealerta. Criarmapas. Realizarbackupsdasconfiguraes.
3.1.Introduo
Apartirdestepontoainteraoadministrativaviaconsolevaidiminuirconsideravelmente, poisvamoscomearatrabalharcomainterfacewebdoZabbix.Quase100%detodasastarefas comaferramentaexecutadaatravsdessainterface. Nestasessoenasprximasseroapresentadasdicasdeuso,organizao,todasas configuraesdoncleodofrontendecriaodoselementosmaisbsicosdemonitoramento (hosts,templates,grupos,etc.).
3.1.1.Organizaodofrontend
OK,voccolocounoartodaainfraestruturadasolu odemonitoramento,agoraumweb sitecomalgunsmenusestadiantedevoc.Eagora? Bom,oprimeiropasso entendercomoosmenusdoZabbixtrabalhameaprendera encontrarasopesquevoc desejatrabalhar.Estainterface extremamentepoderosaeao mesmo tempo simples de se operar. No incio provvel que haja uma certa confuso na distribuiodasjanelasefunes,masacredite,elafoidesenvolvidaparaserfcildeusaraps aprenderosentremeiosdosmenus. Aproveite e passeie com o mouse nos menus. Note que n o necessrio clicar em nenhum dos menus superiores, somente a passagem do ponteiro j exibir as opes dos submenus.Nestessim necessrioclicarparaabrirateladesejada!NaTabelaabaixoh uma descriosuperficialdoquecadaitemdemenufaz. Menu Monitoring Dashboard Overview Web Latestdata Funo Menuparaacessoaomonitoramento,depoisqueoZabbixestiver completamenteconfiguradoesteomenumaisacessadodetodos. Teladecentralizaodasinformaesdemonitoramento. Permite a visualizao global ou por grupos das mtricas monitoradasedosalarmes. Visualizaodomonitoramentodosserviosdeweb(noconfundir commonitoramentodoservidorweb). Mostra os ltimos dados (e quando eles foram coletados) do monitoramentodeumhost.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 76 Menu Triggers Funo Mostraostatusdos ltimostriggers(gatilhos)epermiteintera o com eles (como por exemplo dar um Acknowledge a um determinadogatilho) Mostra os ltimos eventos causados pelos triggers ou pelo autodiscovery. Visualizaoindividualdosgrficoscadastradosnoshosts. Visualizao dos screens. Telas que agrupam elementos monitorados(comomapas,grficosewidgets). Visualizaodosmapas. Hosts e elementos que foram descobertos pelo sistema de auto detecodehosts. Visualizao de SLA baseada no monitoramentodehosts,ativos e/ouservios. Inventriodehosts Hostsquefazempartedoinventrio. Menuderelatrio. Umateladeresumo(quetambm mostradanoDashboard)para avalizaodaperformancedoservidorZabbix. Relatriosdedisponibilidadeporhostsoutriggers.
Most busy triggers Os100triggersmaisativosnosistema. Top100 BarReport Mostradadosagregadosdentrodegrficosdebarra,porexemplo, voc poderiaveramdiadeusodelinkporsemanaaoinvsde usarosgrficospadro. Menuparaacessoasopesdeconfiguraodemonitoramento. Gruposlgicosparadividiroshosts. Gerenciamento de templates (modelos), uma das telas que mais vamosacessarduranteocurso. Gerenciamentodoshostsmonitorados. Tela para colocar ou tirar um determinado host em estado de manuteno. Configuraodecenriosdetestedeserviosweb. Gerenciamentodeaesqueostriggersdevemtomaraoalertarem algum comportamento (exemplo: enviar um email quando o servidorXYZcair). Gerenciamentoeconstruodescreens. Gerenciamentoeconstruodeslideshows. Gerenciamentoeconstruodemapas.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 77 Menu ITServices Discovery General DM Authentication Users MediaTypes Scripts Audit Queue Notifications Locales Instalation Funo GerenciamentodosserviosparaclculodeSLA Gerenciamentodoautodiscovery. Menuparaacessosopesdeadministraodofrontend. Opesglobaisdofrontend. Configuraodemonitoramentodistribudo. Mtodosdeautenticao. Gerenciamentodeusuriosparaacessoaofrontend. Gerenciamentodeformasdealertas(emails,SMS,etc.) Gerenciamentodescriptsparatestesonlinepelofrontend. Logs de auditoria de aes dos usurios e de eventos gerados pelasActions. Filadealertasaseremacknowledged. Notificaesenviadasporusurio/tempo. Personalizao das strings de exibio para traduo (portugus brasileirojestapronto,portantonoprecisamosmexeraqui). Telasdeinstalao(asmesmasquepassamosagoraapoucopara configurarofrontend).
Administration
Tabela 4: Funo dos menus no front end No intenodocursodetalhartodosositensdetodasastelas(issoprovavelmente seriatarefadeumlivrobemgrande).EmborasimplesainterfacedoZabbixtemumamagnitude deopesbemgrandeevamosnosconcentrarnelasaospoucosconformeanecessidadee escopodocurso.
3.2.Gerenciamentodeusurios
Opontomaislgicoparacomearadministrarquempodeacessarofrontendedefinir umasenhaaousurioAdmin.Vamosentrarnomenu Administration Users.Nocantodireito datelaquevaiaparecer,voc ver umcomboboxaoladodobotoCreateUsercliquesobre eleeselecioneUsers.AFigura3.1mostraatelaqueirserexibida.
Doisusuriosseroexibidos: Admin,superusuriodofrontend,comoqualestamos logadoseguest,usadoparaacessosemautenticao. No tente apagar o usurio guest. Ele necessrio para a tela de login quando entramosnainterface. Esta tela mostra vrias informaes interessantes, como por exemplo, quando foi realizadooultimologinequemestaonlinenofrontend. ParaeditaroAdmincliquesobreolinkcomonomedele.Umanovatelairaaparecer.
CliqueemChangepasswordecoloqueasenhaasuaescolha,noesqueaessasenha ouvaisernecessrioreinicilanobancodedados.ParaevitarqueoZabbixfiquedesligando nossasessoatodomomentodesligueaopoAutologout.Depoisdeterminarcliquenoboto Save.Isso apenasumsalvaguardaemcasosdeproblemasdeautentica ocomoLDAP, comovocverlogoaseguiriremospassartodaaautentica oparaosistemadediretrio(que tambmpossuiumusurioAdmin). Em produo no desligue o autologout de nenhum usurio a menos que seja absolutamentenecessrio!Paraserexato,onicomotivovlidoqueoautorencontrou emdeixarumusurio100%dotempologado quandooZabbixestasendousado paraexibirummapa,screensouslideshowemumtel oouTVcomacompanhamento visual24x7.
Osdadosaquipreenchidosvariamdeumambienteparaoutro,nocasodeestudodo cursoestamosdizendoaoZabbixondeest oservidor( LDAPHost e Port),qual araizdo domnio(BaseDN),qualoatributousadoembusca(porprofundidade),n ofoifornecidousurio esenhadeacessoaoLDAP,ouseja,ele readonlyguestbased(BindDNeBindPassword)e ativamosaautenticao(LDAPAuthenticationEnabled). possvelerecomendadoqueasenhadousu rioAdmincadastradadentrodoLDAP sejatestada,preenchaasenhaecliquenobotoTest.OZabbixvaidizersefoibemsucedido ouno.Parasalvartambmobrigatrioqueasenhasejadigitadacorretamente. NormalmenteteremosumusurioesenhacomreadonlyparaacessodoLDAPem produo.Permitiracessoreadonlyguestbasedno aformamaisseguradese fazeracessoabasedediretrios.
3.2.1.CadastrandoosusuriosdoLDAPnoZabbix
ApesardoZabbixestarapontandoparaoLDAPeoAdminestarfuncionando preciso mapearquaisusuriosdarvoredediretriosparadentrodofrontend.Sevocnoofizer,no sercapazdelogarcomumdeterminadousurio. NocenrioqueestamosusandotemosalgunsusuriosdescritosnaTabelaquedevem seradicionadosealgunsnovosgruposdeusuriosqueiroorganizaralgunsdeles. Usurio sysadmin winadmin javaeng dba Descrio Administrador sistemas UNIX Grupos de Network Administrators, UNIX Administrators, Web Administrators Windows
Administrador de Network Administrators, sistemas Windows Administrators Administrador JBoss AS Administrador banco de dados do JBoss Administratros do Database Administrators
Table 5: Usurios do cenrio do curso NotemososgruposWindowsAdministratorseJBossAdministratorspr cadastrados noZabbix.Portantooprimeiropasso justamentecrilos.Entreem Administration Userse cliquenobotoCreateGroup.NaFigura 3.4 temosumexemplodateladecriaodoJBoss Administrators.No necessriomaisdoqueonomedogruponocampo GroupName,pois iremosdefinirsuaspermissesmaisadiante.
OAlias ocampocomonomedousurioedeveestar100%igualaodentrodoLDAP. NameeSurnamesoapenaslabelsparaexibioenoquadro Groupsuseobotoadd paraacrescentaraquaisgruposousuriopertence. Umcampoquemereceumaatenoespecial o UserType quepermitedaralguns privilgiosiniciaisconta.Nonossocasoiremosutilizarotipomaissimples,oZabbixUser,que permiteapenasacessoaomenudemonitoramento.
Podemosainda criar outros dois tipos de usu rios,como o Zabbix Admin que pode acessaromonitoramentoeaconfiguraodehosts.Estecaso tilquandoalgumdeveter permissesdeverificaoetambmdireitodecadastraremodificarhostsmonitoradosassim comoseustemplatesegrupos.Porfimtemoso ZabbixSuperAdminque ocasodonosso usurioAdmin.Esteltimopodefazertudo,inclusiveadicionareremoverdireitosaousu rios. Maisafrenteiremosacrescentardireitosaosusuriosetambmmudaremosseustipos conformeanecessidade.
3.3.Meiosdealertas
OsMediaTypesosnomesqueoZabbixatribuiaosmeiosdeenviodealertas.Comoj foiditooZabbixsuportacorreioeletrnico,SMSviamodem,SMSviaservioderede(EUAe Canadaapenas),mensageiroinstantneoviaJabberechamadadescriptsexternos.Nonosso cenriodecursoiremosaprenderatrabalharcomestesrecursosusandoosistemadeemaile jabber (os quaisconfiguramosos clientesno in cio do captulo). Entre em Administration Media Types a tela da Figura 3.6 ser exibida com os trs meios de comunicao pr configuradosnoservidor.Paraeditarqualquerumdelescliquenonomedacoluna Description. Paracriarumnovo,cliqueemCreateMediaType. possveltermltiplosmeiosdomesmotipo,porexemplo,tervriosservidoresdeemail paraajudarnaredundnciadoserviodealertaoudedicardeterminadostiposdeemailspara diferentesservidores.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 84 Tambm aconselhvellimparos MediaTypes nousados,comononossocasode uso,nousaSMS,marquenocheckboxafrentedeseunome,eemseguidaselecioneDelete selectednacaixadeaesaofimdatabelaecliqueemGo(1).Confirmeaexcluso. Ambas,aoperaodelimpezaeomododefazla,sobemtriviaiseseromuito comunsnocurso.Elaserrepetidaemmuitosoutroslocais.
3.3.1.Correioeletrnico
Agora edite oitemde email,a tela da Figura 3.7 ser exibida. Preencha oscampos conformeamesma.Description umcampodescritivoapenasenotemefeitosnaconfigurao a no ser identificar este Media type na interface; SMTP Server aponta para o nome/IP do servidordeemails(portaTCP/25);SMTPhelousadonamensageminicialtrocadaentreZabbix eservidores,aconselhvelcolocarodomniodaprpriaempresa; SMTPemailoendereode remetentequeoZabbixusarparaenviaramensagem.
CliqueemSavequandoterminar.
3.3.2.Mensagensinstantneas
AgorairemoseditaroJabber,cliquesobreonomedeleepreenchaoscamposconforme aFigura3.8.
Os campos Jabber identifier e Password so o usurio e senha de uma conta cadastradanoIMdestinadaexclusivamenteaoZabbix,asenhanocurso 123456.Salveos dados. SemprequeutilizarumidentificadordeusurionoJabbervocdeveincluironomedo servidorcompletoapso@enoapenasodomnio.
3.3.3.Apontandoosalertasaosusurios
AgoravamosdizerquaisusuriosusamqualMediaType.Editeousuriosysadmine notequenofinaldatelaumcampoMediaestacomovalorNomediadefined.
Coloqueoemaildousurio(queomesmoqueseu Aliasmaisodomniodocursono exemplo:sysadmin@curso468.4linux.com.br).Nestatelapodemosaindaescolherquandoeste meiovaificarativonocampo Whenactive.Estecampotemumasintaxebempeculiar,eleindica quaisosdiasdasemanaeafaixadehorrioqueousuriopodereceberalertas.Isso tilpara noenviaralertasapessoasforadoexpediente,isso claro,supondoquehajaoutrapessoade prontidonohorriodeterminado.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 86 AsintaxedoWhenActiveusa1comosegundae7comodomingo,definirporexemplo segundaasextaficaria15.Umavrgulaseparaodiadohorrio,segundaasextadas09:00at as18:00ficaria15,09:0018:00.Podemosaindausaropontoev rgulaparadefiniroutrasfaixas, porexemplosegundaasexta,das09:00 s18:00esbadodas09:00s13:00ficaria15,09:00 18:00;6,09:0013:00. OUseifseverityfiltraostiposdeseveridadedeumcampo.Eless oimportantespara quemeiosdealertascomcusto(SMS)n osejamusadosparaalertasdepoucaimport ncia. Tambmsousadosparanocausaravalanchesdealertasemummeioosquaiselesmais incomodariamdoqueajudariam,imagineseralertadotodominutopormensageminstant nea queumserviofoireiniciado!Seriatotalmenteimprodutivo. Porfim,StatuscontrolaseesteMediaTypeestarounoativo.Issoparticularmente tilquandoofuncionrioresponsvelestiverdefolga,afastadooudefrias. CliqueemAddparasalvareadicioneoutroMediaTypeparaoJabber.
Salveerepitaparatodososusuriosagora.
3.3.4.BoasprticascomMediatypes
H algumasrecomendaesaseremfeitasquandosetrabalhacomalertasdesistemas monitorados. 1) Mantenha mais de um meio de alerta para sistemas cr ticos. Isso pode ser feito mantendovriosserviosdemesmotipo(doisservidoresdeemail,doismodems SMS,etc.)ou melhor,fazendo comque eleseja enviado porv riasmdias(SMS, Jabbereemail,todosaosmesmotempo). 2) EscolhaosMediaTypesdemaneiralgica.NoadiantaenviaralertasviaJabberse ostcnicosraramenteestoonlinedosistemademensagensinstant neas.Tambm noadiantaenviarumemaildedesastreastrsdamadrugadaquandoningumesta olhandoemails. 3) Procuredeixaralertasqueprecisamderespostaimediataemmeiosquealcan amo usuriocomfacilidade.SMS maisclssico,masoautorjimplementouumquese vinculavaaoasteriskefaziaumaligaodescrevendooproblema(comoumaURA ativa). 4) Planeje!Faaescalasentreosfuncionrios,evitedaraltaprioridadeaalertastriviaise cuidadocomosfalsospositivos,elespodemgeraroproblemadolobo. OproblemadoloboaquelahistriadomeninopastorquegritavaLOBO!LOBO!na vilaondemoravaetodosiamcorreraoseusocorro,paradescobrirqueeraapenas umabrincadeira.Apsvriosepisdios,osaldeescomearamaignorarosapelos falsosdogaroto,ejustonestediaumloboapareceudeverdade. Receber alertas seguidos vai treinar o nosso c rebro a ignorlos se eles se comprovarem falsos positivos. Veremos ao longo do curso como diminuir os falsos positivos.
3.4.Hosts,hostgroupsetemplates
Nesta sesso iremos abordar os conceitos mais fundamentais de monitoramento do Zabbix:hosts,hostgroupsetemplates.
Hostssoarepresentaodeumservidor,servioouativoderedeasermonitorado. Elesnormalmenterepresentamumsistemafsico,masissono totalmenteverdade,oagente doZapcatporexemplo,serrepresentadoporumhostaparteeelenoumhardware. Hostgroupsseparamlogicamenteoshostsepermitemquesejamatribu daspermisses deacessosdosusuriosaumdeterminadohost. Templates(modelos)soosblocosdeconstruodomonitoramento,enquantonoso obrigatrios, pois podemos acrescentar mtricas de monitoramentos direto a um host, eles ajudamagerenciardemaneiraefetivaosdiversostiposdemonitoramentosposs veiserepliclos atantoshostsquantoquisermos(ouoquantonossossistemasaguentarem,oquevierprimeiro). Ostemplatesagregammtricasdemonitoramentochamados items,macroseoutrosvaloresque soimportantesparaconstruirumasoluodemonitoramento.Amaiorpartedoseutrabalhono cursoseremcimadostemplates.
3.4.1.Templatesparaocasodeestudo
OprimeiropassolimpartodosostemplatespreexistentesnoZabbix.Apesardeparecer umtantoagressivoexcluirtodososmodelospr criados,partedointuitodocurso construiros seustemplatesdemaneiraadequadaasuanecessidade.Emprodu ovoc podeconservlos se desejar, mas isso no um requerimento a menos que voc tenha garantidamente um equipamentoparaoqualumdosmodelostenhasidoconstru do.Outraopofazerbackupdos originais(vejaaprximasesso).
Depois escolha no combobox no final da tabela o valor Delete selected with linked elementsepressioneobotoGo. Perceba que o Zabbix indica quantos elementos sero afetados pela ao do comboboxnobotoGononmeroentreparnteses.
2) Nocampo Groups,quadro InGroups ogrupo Templates deveficarselecionado. Notequeosgruposparahostssomisturadoscomosgruposdetemplates. Voc podecriarumnovogrupousandoocampo Newgroupsemanecessidadede fazlonateladegruposdehosts.
3.4.2.Vnculoentretemplates
possvel estabelecerum relao de dependnciasentre um modelo e outro,isso extremamente tilparacriarestruturasdetemplatesques ocompostosporvriaspartes,por exemplo,umconjuntodetemplatesquetestaumservi osobreumsistemaoperacional.Quando o template de servio adicionado ao host todos os outros aos quais ele dependem s o adicionados. Umdetalhedeextremaimportnciadesterecurso quepodemoscriarumadependncia entreastriggers(gatilhos)queativamosalertasdoZabbix.Isso importanteporqueumatrigger dealtonvelnodeveserativadaseumamaisbsicaestiverativa(no precisotestarseo agentedoZabbixestempseopingICMPestiveracusandohostinalcanvel). Seguindo as mesmas instrues mencionadas acima, crie mais um modelo chamado 4LinuxS.O.Base.
1) Na parte inferiorda tela voc ver um boto Add ao lado do campo Link with template 2) Escolhaotemplaterelacionado(4LinuxICMPnonossocaso). 3) Salveotemplate. Agoraseassociarmosumhostcomotemplate 4LinuxS.O.Baseeleautomaticamente vai receber todos os objetos definidos no 4Linux ICMP. Aproveite e crie mais um ltimo templateparausarmosnaprticadirigida,4LinuxSNMPBasetambmvinculadoao4Linux ICMP.
3.4.3.Backupdostemplates
Umaaoimportanteemtodosistema criarumbackupdasconfiguraes.Apartirde agoratodamodificaoquefizermosnosmapas,templates,gruposehostsdeverserseguidade umbackup.Aoperaodebackup,chamada Export bastantepadronizada,todasastelas pertinentesafazerbackuputilizamomesmoprocedimentoexplicadoabaixo.Oresultado um arquivoXMLcontendoosdadosdeconfigurao.
3.4.4.Hosts
Agoraqueumtemplatefoidefinidovamoscriarumhosteassoci loaestemodelo.Na Figura3.19estaumarepresentaodecomoasmquinasvirtuaisestodispostasemtermosde layoutderede.EmnossaprticadirigidairemoscadastraroshostsPresentationeSwitch, almdemodificaroZabbixServerque criadoautomaticamentenomomentodoimportede dadosdoPostgreSQL.
Tambmdevemoscriaralgunsgruposadicionaisparasepararlogicamentecadaservidor, paraissovamosgerenciarosHostGroups.
3.4.5.GerenciandoosHostGroups
UmHostgrouptemduasfunesdentrodoZabbix:aprimeiraemais bvia manter oshostsorganizadosdetalformaquesejamaisf cillocalizarouexibirumgrupodeservidores comservioscorrelacionados.Asegunda osistemadepermissionamentodeacessoaoshosts quesertrabalhadoaolongodocurso. Para exemplificar a criao dos hosts vamos criar apenas um deles, que conter os equipamentos de rede. Clique no menu Configuration Host Groups, e clique no boto CreateGroupconformeaFigura.
Aseguintetelairsurgir.
3.4.6.Criandoumnovohost
Agora que geramos um host group, vamos criar os hosts, acesse Configuration Hosts,algosimilaraFigura3.22iraparecer.Comoditoanteriormentealistadehostsjpossuio prprioservidordoZabbixprcadastrado.
Para criar um novo host para o host Presentation da infraestrutura clique no bot o CreateHost(Figura3.23).
Epreenchaosdadosconformeafiguraaseguir.
1) OcampoNamecoloqueonomedohost(Presentationnonossocaso). 2) No Groups escolha quais grupos este host deve pertencer. Lembrese que estes gruposvoindicarquempodeounoacessarestehostpelofrontend. 3) Sehouverumnovogruponocadastradoacimapossvelcriloaqui. 4) QualonomeDNSdamquina. 5) Qualoendereodamquina. 6) OcampoConnecttopermitequesejaescolhidooacessopeloendere oIPoupelo nomedeDNS.Oclssico usaroendereo(evitandoconsultasDNSexcessivasno ladodoservidor),mas possvelquesejanecessriomonitorarestaesdeusurios ouservidoresqueestejamemambientescomIPdin mico(viaDHCP)enestecaso somenteviaDNSpossvelencontrarohost. 7) QualaportaTCPdoagente.Vamosmudaristoparamonitoraro Zapcat,masem todososoutroscasosdeixaremoselanopadro10050. 8) Nomonitoraremosestehostviaproxy. 9) No Status deixe como Not monitored por enquanto, quando associarmos os templatesiremosativarestehost.
CrietodososhostsdocenrioconformeindicadonaFigura3.24.
10)
3.4.7.Fazendobackupdoshosts
Oprocessodebackupdoshostssegueomesmoprocedimentodotemplate.Selecione todososhostscriadosefaaobackupdosmesmos.
3.4.8.Configurandoumapermissodeacesso
Comosusurios,grupos,mquinasemodelosdefinidos,vamosvercomodaroacesso ao monitoramento de determinadas pores do Zabbix para a conta sysadmin. Isso feito atravsdosgruposdeusuriosegrupodehosts.AcesseAdministrationUsers.
1) SelecioneUsergroupssejnoestivernestaopo. 2) CliquenonomedogrupoUnixadministrators.
NodialogoqueaparecerselecioneogrupodehostsLinuxServersecliqueemselect.
Aoretornarvoc ver ogruponacaixa.Cliqueem Save epronto,quempertencerao grupoUnixadministratorsvaipoderleregravarnoshostsdentrodeLinuxservers. Os direitos de deny tem precedncia aos de read only, que por sua vez tem precednciasobreosdereadwrite.
3.4.9.Exercciossobreusurios,hosts,gruposepermisses.
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
3.5.Mapas
Osmapassoelementosvisuaisteisparadeterminarondefoiopontodefalhadentrode umainfraestrutura.Elessodeextremavaliaparaequipesqueavaliamasa dedasmquinas constantementeeprecisamreagirrapidamentediantedeumincidente. OMapatambmpodeajudaradiagramarestruturasfsicasderedeeajudamamostrar como os equipamentos se relacionam, embora o front end n o seja uma ferramenta de desenhosdediagramaspropriamentedita.
3.5.1.Importandoimagensparaomapa
Antesde criarummapa preciso definirasfigurarque faro parte de seu desenho. AnteriormentenspulamosodumpdasfiguraspadrodoZabbix,issofoipropositalpoisiremos inserirfigurasdemelhorqualidadedentrodofrontend. Oconjuntodefigurasqueutilizaremosestadentrodof rumdoZabbixatravsdolink http://www.zabbix.com/wiki/_media/contrib/zabbix_icons_set_generic.zip. Acesseo e baixe o arquivoparaumapastaemsecomputador(no necessrioenvilas mquinadestinadaao servidor, todo o procedimento de insero ser feitopelo front end).Depoisdescompacte o arquivoparateracessosimagens.
NestatelacliquenobotoCreateImageparaabrirodilogodeimportaodeumanova imagem.Conformeasinstruesabaixoimporteaprimeiraimagem.
1) Nome da imagem a ser inserido, este nome precisa ser nico. No primeiro caso coloqueovalorServerOn. 2) Podemosenviar cones(Icons)oufundodetelas(Background)aofrontend. cones sousadosnoselementoscomohosts,triggerseimagensest ticas,telasdefundo obviamentesousadascomoumfundoparaomapa. 3) Nocampo Upload,cliquenoboto Browse... eescolhaolocalondeaimagemse encontra,nocasodocursoaimagemutilizada o conedetamanho48x48enome 48_g_srv_tower_on.png. Realizeomesmoprocedimentoparaoutrasimagensconformeatabelaabaixo.
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
Comissotodasasimagensnecessriasparaoprimeiroestgiodomapaforamcriadas.
3.5.2.Criandoummapa
Agoraquetodososconesestodentrodofrontendvamoscriaroprimeiroprot tipode mapa.AimagemfinaldeleestarepresentadonaFigura3.31.
Estemapanotemtodososelementosasereminseridosnomapa,masvaiproporcionar um bom primeiro exemplo. Abra a tela de gerenciamento de mapas acessando o menu Configuration Maps,ummapaprcadastrado(Localnetwork)irserexibido,marqueacaixa dechecagemdeleeexcluaeledalista.
5) AopoIconhighlightingserveparapediraoZabbixdesenharfundosnos cones pararepresentarestados,ela umtantoredundanteemrelaoamltiplasfigurasde conescomovamosvermaisafrente,pormiremosdeixlasligadasmesmoassim. 6) Se o cone possuir um trigger que teve seu estado mudado recentemente, uma bordaserdesenhaemvoltadocone. 7) Nocasodehaverumincidentecomumitememparticular,eelefor nico(somente um problema para aquele item em particular) podemos deixar o campo Expand singleproblemligadoparaqueadescriodoproblemasejaapresentadonomapa (evitandoterqueclicarnoitemparaexibilo). 8) Qualotipodemensagemqueser adicionadaaonomedoitemnatelaquandoum trigger forexibido.Osvalorespossveisso: Label,odefaultindicandoquedeve exibironomedortulo; IPAddress,mostraoendereoderededohost; Element name, o nome do elemento que esta apresentando problemas; Statusonly, que indicaostatusdotrigger(OKouPROBLEM);Nothing,nadamostrado. 9) Localizaopadrodoslabels. 10) NocampoProblemdisplaypodemosescolhersedesejamosmostrartodos os problemas em uma nica linha (All), duas linhas com os problemas com acknowlegment e outro sem (Separated), ou ainda somente os problemas sem acknowlegmentchamadosdeUnacknowledged. DepoiscliquenobotoSave.Voc ir retornaratelaanterior.Agoraparacriaromapa visualcliquesobreonomedomapa.
Nosepreocupeemdecoraretestartodasasopesdemapas,iremosdetalhara maiorpartedelasduranteocurso.
3.5.3.Adicionandoumelemento
Dentrodatelademapas,uma reaembrancodivididaporlinhasdealinhamentoser exibida.Seutamanho odefinidonateladecadastrodemapas.Napartesuperiordatelavoc podeverumabarradeferramentascomonaFigura3.34,aexplicaoqueseguedefineousode cadaboto.
1) Obotocomsinaldemais(+)adicionaumnovo cone,que oelementoprincipal dentrodeummapa.Este conepodeserumafiguraesttica,umtrigger,umlink paraoutromapa,etc.Sevocselecionarumoumaiselementoseclicarnobot ocom sinaldemenos()vocirexcluiresteselementos. 2) Aoclicaremdoiselementos possvelcriarumlinkentreeles,representadoporuma linha(cor,formato,etc.podemserpersonalizados).Estelinkpodeconterumalabele indicaramudanadeestadosdeumgatilho. 3) NocampoGridpodemosdeixaragradedealinhamentoocultaoun oclicandoem Shown/Hide. 4) TambmpodemosligaroudesliglaclicandoemOn/Off. 5) Nacaixadecombinaoaseguiraresoluodagradepodeserescolhida,variando desde20x20(paraajustefinode cones)at100x100(paracasosdemapasextensos ouconesbemgrandes). 6) Porfim,oboto AlignIcons foraoZabbixaalinhartodososelementosdomapa noslimitesmaisprximosdagrade. Paraopropsitoinicialdocursoaresoluode50x50 osuficiente.Vamosinserirum novo conepararepresentarolinkdeinternet.Cliquenobot omaisdocampoIconeumnovo elemento ir aparecer no canto superior do mapa. Note que o Zabbix escolher o primeiro elementogrficodisponvelparaele.
Arrasteoatapartedatelaquevocdesejarparaposicionlo.
VersesanterioresdoZabbixnoeramcapazesdeusarDrag&Drop.Tudotinhaque serfeitocomcoordenadasmanuais.
3.5.4.Editandoumelementodomapa
Umavezqueo coneestejaposicionado, possveleditarosseusatributosconformeos passosdescritosaseguir.Umelementonatelapodeserdev riostipos,elepodeporexemplo representarumaimagemesttica,umhostouumgatilho. Quandooconerepresentaumelementodinmicoelevaireagiramudanasdosestados de qualquer um dos triggers associados visualmente. Como j foi dito antes isso extremamenteimportanteparaacompanhamentosvisuais,especialmenteseforutilizadotel es oumonitoresnumasaladeacompanhamentodeincidentes.
1) Cliquesobreoobjetocriadoanteriormente.Atelaadireitair serexibidaepodeser reposicionadanatelapermitindoenxergarumdeterminadotrechodomapanatela. 2) OcampoTypeindicaotipodeobjetomencionadoanteriormente,noprimeirocaso iremosescolher Image porqueolinknorepresentanenhumelementomonitorado (apesar que posteriormente vamos monitorar o estado do link). Conforme o andamentodocursoveremosmuitosoutrostipos. 3) No campo Label digite o texto a ser exibido como rtulo do cone. Aqui como veremosmaistarde possvelcolocarvariveisespeciaischamadasdeMacrosque oservidorassociaavaloresdinmicos. 4) Alocalizaodestertulopodeserescolhidaem Labellocation.Porpadroelafica comofoidefinidonopadrodacriaodoMapa. 5) Qualaimagemdo coneaserexibida?Nestecasovamosdeixarcomoesta,mas todasasimagensquefizemosuploadest osendoexibidasnestacaixadeseleo. 6) Porfimpodemosconfigurarascoordenadasdaposi odoelementodentrodomapa empixels.NormalmentefazemosissopelosistemaDragandDrop. NotrminocliqueemApplyparaaceitarasmodificaes.Issonovaifecharatelade edio,paraissoaindatemosqueclicaremClose.
3.5.5.Salvandoomapa
importantequesalvemosconstantementeomapa,poissevoc clicaremoutrolinkde menudofrontendir perdertodasasalteraesfeitasatessemomento.Parasalvaromapa cliquenobotoSave(Figura3.38).
3.5.6.Adicionandoosoutroselementos
AgoraadicionemaisdoiselementosnomapapararepresentaroshostsPresentatione SwitcheposicioneoscomonaFigura3.40.
1) Neste campo vamos escolher o valor host. Visto que vamos utilizar um dos previamentecadastrados,voc ver queporeleestardesativado,quandoclicarem Apply,olabelDISABLEDsermostradoemvermelho. 2) Neste campo o valor da macro {HOSTNAME} ser substitudo pelo nome que cadastramosohostnogerenciamentodosmesmos.Estamacro internadoZabbixe no precisa ser definida pelo usurio. Durante o curso aprenderemos outras e definiremosvriasqueseropersonalizadasparaanossanecessidade. 3) Neste campo, que aparece sempre que escolhemos Host em Type clique em Selecteescolhaohostdesejado.NestecasooPresentation. 4) TroqueoconeparaServerOn,visualmenteeledeverepresentarumamquina.
5) Aoativar Useadvancedicons oscamposdoitem6seroexibidos.Issopermite escolhermos um cone diferente para cada estado. Como foi mencionado anteriormenteisso umtantoredundantecomosistemade highlighting domapa, masvamosativarambosparaquevocvejaadiferenaentreeles. 5.1) Nestescamposescolhaos conesconformeindicado.Cadaumdosestadosir exibirumconediferente.Percebaqueoexibidonatelaaoclicarem Applyo ServerDisable. Omesmoser feitoparaoelementodohostSwitch,aFigura3.42mostraquaiss oos valoresutilizados.
ComoresultadofinalumaimagemparecidacomaFigura3.43deveestarnomeiodesua reademapa.
3.5.7.Criandoeeditandolinks
Comoselementosdehostseimagensnomapaaindafaltacriaroslinksqueinterligam umelementoaoutro.Oslinkspodemtantoserumsimplestra oparamostrarumaligaoentre dois elementos como tambm podem ser usados para demonstrar estados de gatilhos com problemas.
3.5.8.PrticaDirigida
Figura 3.44: Criando um novo link entre o host Presentation e a imagem Internet
1) PrimeiroselecioneoconedaInternet. 2) PressioneCTRLecliqueno conedohostPresentation.Atela direitadeedio vairepresentarumamescladosdoisitens. 3) Cliquenobotodeadicionarlink.Umanovapartedajanelaintitulada Connectors irsurgir. 4) DentrodelaumlinkchamadoLink_1vaiestarcadastradoeir indicarquaissoos elementosqueeleinterliga.Cliquesobreonomedeleparaexibirsuaspropriedades naabaConnectEditor.
1) NocampoLabelpodemoscolocarumaidentifica odestelink.Assimcomoortulo doselementoscomimagenselatambmaceitamacros. 2) NosdoiscamposdeElementsositensqueestovinculadospodemseralterados. 3) Em Link indicators vamos, mais a frente, associar um link com gatilhos. No momentodeixeovalorcomoesta. 4) EmType(OK)escolhaBoldline parapodervisualizarolinkcommaisfacilidade. Estecampo usadoquandoumoumaisgatilhosaoqualolinkestaassociadon o estejoativos. 5) PorfimemColour(OK)podemosescolherumacorparaolink.
Agoravoc j temomapafinaldestaprticadirigida.Salveeconfirmeoretornoparaa tela de gerenciamentode mapas.No esquea de fazero backupdo mapa exportandoo do mesmomodoquefezcomostemplatesehosts.
3.5.9.ExercciossobreMapas
3.6.Templates,applicationseitems
Dentro dos tempates temos diversos elementos usados para realizar a coleta e anlise das mtricas. Considere um modelo como o corao de seu gerenciamento de monitoramento. A Figura 3.48 mostra quais so estes elementos. Acesse Configuration Templates para chegar esta tela.
3) OsTriggers,ougatilhos,montamalgicaparageraralertasbaseadonainforma o coletadapelosItems.ApartemaiscomplexadoZabbix montarasexpresses booleanasdosgatilhosdemaneiraconcisaeequilibrada,evitandofalsospositivosao mesmotempoquegeraalertasemumtempohbil.Inciaremosoestudodelesno prximocaptulo. 4) OsGraphssoelementosqueexibemgrficos.Tambminiciaremosseuestudono prximocaptulo. Nesta sesso nos concentraremos apenas nos Applications e Items.
3.6.1.CriandoumApplicationeumItemdentrodeumtemplate
AindaemConfiguration Templates,cliquenolinkApplications(0)comoindicadona Figura3.49.
Umanovatelasurgir.LocalizenocantosuperiordireitodelaobotoCreateapplication comonaFigura3.50ecliquesobreele.
AteladeNewapplicationsurgirconformeabaixo.
1) Coloqueonomedaapplicationaqui,quenestecasoelaserICMP. 2) Podemos opcionalmente escolher outro template ou host para associar este application.Poucoprovvelquevenhamosaalterarestetipodeoponestatela. CliqueemSaveparaconcluireretornaratelaquelistatodasasapplications.
Nossonovoapplication estaexibidonatabela.Agora omomentodecriarumnovo item. Clique sobre o link Items (0) nesta tela (no caso de estar em outra tela, acesse Configuration Templates ecliquenolinkdemesmonomenalinhadotemplatequevoc desejaacrescentar).
1) NocampoDescriptioncoloqueumidentificador(depreferncianico,masissono necessrio). O nome dele ser o exibido em grficos, usado em triggers, etc. Escolhacoerentemente. 2) OTypeindicacomoesteitemvaifazeracoletadeumamtrica.Osdiversostipos que sero abordados neste curso sero explicados nos prximos captulos, aqui vamosusarSimplecheckquesignificausarchecagensviaprotocoloderede. 3) O Key o campo maisimportante de todos,eledeveser nico dentro de cada template e host. Sua funo definir qual mtrica ser coletada. Como dito anteriormenteumitem apartemaisimportantedeumtemplateeoseu key a partemaisimportantedeum item.Saberqualusaremqualsitua o,fazparteda competnciadeusaraferramentaedecriarummonitoramentoeficaz.Nonossocaso vamos criar um item que faz um ping via ICMP no host, logo a chave ser icmpping.ClicaremSelect abreumajanelacominfindveiskeysevoc pode selecionlasporessajanela,sedesejar.
4) Repetindo:CadaitemdoZabbix capazdearmazenarapenasum,esomenteum valor. No possvel armazenar objetos complexos dentro dos items, por isso precisamosdefinirqualoformatodovalorqueser armazenado.Nocasodakey icmppingeleretorna1seopingfoibemsucedidoe0seno.Valoresinteirossem sinalcomoestessoNumeric(Unsigned). 5) OUpdateinterval,otempoentreumacoletaeoutra,emsegundos.Porpadr oo Zabbixusa30segundos.Emnossocenriousaremos10,mastenhaemmenteque estesnosobonsvalores.Enquantopodemosnossentirtentadosausarintervalos curtosparatermosumagranulidadededadosbemalta(emaispr ximadarealidade) eleimpactapesadamenteemduascoisas:espa oemdisco,queaparentemente pequeno mascomea a tomargrandes propores em ambiente commilhares de mtricaseoenfileiramentodemtricasaseremprocessadaspeloservidor.A ltima em particular muito ruim, pois causar todo tipo de buraco possvel nos seus grficos.Veremoscomocalcularumbomintervaloapartirdoprximocaptulo. 6) OscamposKeephistoryeKeeptrendsindicamporquantotempo,emdias,os dadoscoletadosseroarmazenados.Oprimeiro tempodelenatabela historydo bancodedadosquemantmosdadosipsesliteriscomocoletados.Asegunda uma mdia de 3 horas dos valores coletados para economizar espa o. Como veremos,o Zabbix temumaoperaorotineirachamada housekeeping quelimpa osdadosvencidos(depoisquepassarosdiasem keephistory)databelahistory, passandoamdiaparaatrends.DepoisquevencerotempoemKeeptrendsos dadossoapagadosdefinitivamente. 7) Escolhao application ICMP quecriamosanteriormente.Seexistiremmaisdeum applicationnestalista,vocpodepressionarCTRLparaselecionarvrios. 8) CliqueemSaveparafinalizar.
OresultadofinalmostradonaFigura3.55.
3.6.2.Interdependnciadetemplates
Emvriassituaesprticasseremosobrigadosacriarumalgicadechecagensentreos triggersqueirogeraralertaseusarapplications queestoemoutrostemplates.Issos pode ser feito se criarmos templates que s o associados a outros. No nosso cenrio de exemplosteremosvrioscasosdestetipo.
Normalmenteostemplatesmaisprximosda raizsoaquelesque realizamostestes maisprimrios,comootemplatedeICMPcriadoanteriormente.Defatoeleser araizdamaioria dos outros templates, com destaque para o de JBoss, sistemas operacionais e SNMP. Para exemplificarcrieumnovotemplatechamado 4LinuxJBossBase.Antesdesalvarnotequeh umcamponofinaldoformulriochamadoLinkwithtemplate.
CliquenobotoAddparaabrirateladetemplates.
Notequetodotemplatequetemalgumaassocia oser mostradonacolunaLinked templstesnateladeTemplatesList.Agoratodohostqueforassociadoaotemplate 4Linux JBossser automaticamenteassociadoao4LinuxICMP,almdissooprimeiropodeutilizar osapplicationsdosegundoeseustriggerspodemdependerdosdosegundo. Parafinalizarcomostemplates,crietodosostemplatesindicadosabaixoeassocieos conformeaestruturadervoreindicada:
3.7.Associandoostemplatesaoshosts
Agora que temos os templates criados podemos vincular cada um deles aos hosts criados.Fazerissoparaumhostmuitosimples,sigaospassosabaixo.
(3/6)
Vocveronomedostemplatesescolhidosapareceremnestequadro,conformeaFigura 3.64demonstra.
ParafinalizarcliqueemSave.
Figura 3.66: Associando o template do JBoss ao host JBoss AS (6/6)
Figura 3.67: Templates para Windows e SNMP associados aos seus respectivos hosts
Agoravamosfazerumpequenoexerccioquevaidemonstraroutrorecursointeressante doZabbix:oMassupdate.Imaginequevocpossuiumaquantidadegrandedehostseprecisa associlos ao mesmo template, temos um caso destes no nosso cenrio: os hosts Presentation,application,DatabaseeZabbixserverprecisamservinculadosaotemplate 4LinuxLinux,umavezquetodasestasmquinasvirtuaissoservidoresGnu/Linux.V at a teladehostsesigaospassosaseguir.
1) MarqueaopoLinkaddictionaltemplates; 2) CliqueemAdd.Nossavelhateladetemplatesirsurgir.
Marque4LinuxS.O.LinuxecliqueemSelect.
Note queo template ficar logo acima dosbotesde adicionare remover.Clique em Saveparafinalizar.
3.8.Ativandoumhost
Criamos os templates e hosts, demos permisses e montamos um mapa, mas nada esta sendo monitorado ainda. Isso porque temos que habilitar todos os hosts. Realizar esta tarefa muito simples.
Acolunaondeclicamosinicialmenteagoradeveestarcomolink Monitored emverde. Aproveiteeativetodososhosts. Ao invs de ativar um por um. Use o recurso de ativao de todos os hosts simultaneamente ativando Enable selected na caixa de opes abaixo da lista de hosts.
3.8.1.Throubleshootingparaitenscomproblemas
Tecnicamente, com os templates, a instalao e a ativao em ordem, a esta altura o Zabbix estar coletando dados. Mas se formos at Monitoring Overview veremos que nada aparece. Isso aconteceu porque, deliberadamente, um componente da instalao foi omitido: o item que o criamos dentro do template 4Linux ICMP. O objetivo deste tpico justamente ensinar a voc como lidar com itens com problemas dentro do Zabbix. Sempre que suspeitar que uma mtrica no esta funcionando devidamente, o lugar correto para descobrir o que pode estar acontecendo, est dentro dos itens do host. V at Configuration Hosts e clique sobre um dos nomes dos hosts.
AFigura 3.76 mostracomooitemICMPPingdeveestarcomproblemas.Notequeo Status do mesmo Not supported e um sinal de erro est aparecendo na ltima coluna Error. Passe o mouse por cima do cone e o Zabbix ir mostrar uma dica do que esta acontecendo.Amensagemnestecaso /usr/sbin/fping:[2]Nosuchfileordirectory .Oservidor noestaconseguindoencontraroexecutvelqueeleutilizapararealizarospingsICMP(fping). Umoutrolugarquetambmindicaoquepodeestaracontecendo ologdoservidor. EntrenoconsoledoZabbixserverelisteofinaldoarquivodelogconformeabaixo. #tail/var/log/zabbix/zabbix_server.log 2518:20110201:202018.896server#18started[Escalator] 2519:20110201:202018.900server#19started[ProxyPoller] 2506:20110201:202020.097server#6started[Poller.SNMP:YES] 2511:20110201:202020.108Deleted0recordsfromhistoryandtrends 2504:20110201:202020.147server#4started[Poller.SNMP:YES] 2502:20110201:202020.150server#2started[Poller.SNMP:YES] 2507:20110201:202020.218server#7started[Pollerforunreachablehosts.SNMP:YES] 2503:20110201:202020.242server#3started[Poller.SNMP:YES] 2505:20110201:202020.293server#5started[Poller.SNMP:YES] 2509:20110201:202023.022/usr/sbin/fping:[2]Nosuchfileordirectory A ltima linha mostra a mesma mensagem que no front end. Para remediar esta situaodevemosinstalarofpingpelogerenciadordepacotesdadistroqueestamosutilizando. NocasodoDebian: #aptitudeinstallfping Notequemesmodepoisdeinstalaroaplicativooerropersiste!Novamenteconsulteos logs(ouofrontend).
#tail/var/log/zabbix/zabbix_server.log 2506:20110201:202020.097server#6started[Poller.SNMP:YES] 2511:20110201:202020.108Deleted0recordsfromhistoryandtrends 2504:20110201:202020.147server#4started[Poller.SNMP:YES] 2502:20110201:202020.150server#2started[Poller.SNMP:YES] 2507:20110201:202020.218server#7started[Pollerforunreachablehosts.SNMP:YES] 2503:20110201:202020.242server#3started[Poller.SNMP:YES] 2505:20110201:202020.293server#5started[Poller.SNMP:YES] 2509:20110201:202023.022/usr/sbin/fping:[2]Nosuchfileordirectory 2509:20110201:202923.237/usr/sbin/fping:[2]Nosuchfileordirectory 2509:20110201:203002.281/usr/sbin/fping:[2]Nosuchfileordirectory Mesmoapsinstalaropacote,oerropersiste!EntoprovavelmenteoZabbixdeveestar procurandooexecutvelnolugarerrado. Vamosusarocomando which (podesero whereis tambm)parasaberondeeleestarmazenado. root@zabbixsrv:~#whichfping /usr/bin/fping Notequeeleest em/usr/bineoservidorestaprocurandoeleem/usr/sbin.Isso claro varia de uma distribuio de Gnu/Linux para outra. O que fazer neste caso? Simples mudaremosaconfiguraodoservidorparaseadequaraoambienteemqueelefoiinstalado. Editeoarquivo /etc/zabbix/zabbix_server.conf eprocureaslinhascomasopesindicadas abaixo. #vim/etc/zabbix/zabbix_server.conf # ======================================================================== ==== #Localizaodoprogramadeping(ipv4eipv6) # FpingLocation=/usr/bin/fping
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 127 Fping6Location=/usr/bin/fping6 1) FpingLocaltion: indica o caminho do fping para pacotes ICMP usando IPV4. Mudepara/usr/bin/fping. 2) Fping6Localtion:comoacima,masparaIPV6.Mudepara/usr/bin/fping6. Comasopesmodificadasreinicieoservidor. #/etc/init.d/zabbixserverrestart StoppingZabbixserverdaemon:zabbix_server StartingZabbixserverdaemon:zabbix_server
Umaoutrapossibilidadepararesolveroproblema fazerumlinksimbliconosistema operacional.Avantagemdestemtodo quenoser necessrioalterarnenhumarquivode configuraoenemreiniciaroZabbix. lns/usr/bin/fping/usr/sbin/fping Confira no s logs se alguma outra mensagem apareceu e acesse Coonfiguration hosts,seoitemaparecercomonosuportadoaindanosepreocupeeleretornarembreve.Se quiserque eleseja ativado agora,cliquesobre o Notsupported eeleser restabelecido.A imagemabaixomostracomoeledeveficaraofinaldaopera o.
Captulo4 Monitoramentovoltadoparadisponibilidade
OBJETIVOS UtilizaroZabbixcomoumaferramentaparamedirdisponibilidade: Medir a disponibilidade dos equipamentos via checagens simples e agente (incluindoaquioZapcat) Alertarquedasdehosts,serviosereinicializaes. Medirasadedainfraestrutura: Latnciaderedeedeservios. Espaoemdisconosservidores. Serviosativos. Interface Testemanual. Usodegrficosemapas. Comandosexternos.
4.1.Introduo
Disponibilidade! Provavelmente o que vem na mente da maioria dos consultores e gerentesdeTIquandoouvemapalavramonitoramento.Enquantoadisponibilidaden osejao 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 servi o parado para sua empresa? Neste captulo ser abordado uma multitude de possibilidades para medir o qu o disponvelestoseusservidores,servioseativosderede.OZabbixpossuidiversasmaneirasde descobrir se algo no esta funcionando e aqui veremos como fazer isso usando protocolos bsicosderede,testadoresdeprotocolos,cen riosdetesteweb,oprprioagentedoZabbix, SNMPeoagentedoZabbixparaJBoss. Tambmvamosentendercomocriartriggers(gatilhos)eActions(a estomadasquando umgatilhomudadeestado)eenviaralertasdeparadademaneirainteligente,paraevitarfalsos positivosepermitirqueaequipedesuportereajaatempoquandoumincidenteacontecer. Almdisso,vamosvercomomedirdiversasmtricasegerarnossosprimeirosgrficos dentrodofrontend.
4.2.Checagensmanualviafrontend
ObviamenteoZabbixpermitequerealizemosvriaschecagensdemaneiraautomtica, afinalessa suaprincipalfuno,masantesdecomearacoletarmtricasemaismtricas, vamos ver como usar o front end para realizar testes manuais, incluindo tamb m a personalizaodestestestes. V at Monitoring MapsecliquesobreohostDatabasecomobotoesquerdodo mouse(defatopodeserqualquerhostasuaescolha).Ummenu popup ir surgircomona Figura4.1.
NotequeumaabadivisriachamadaToolsapresentaduasopesdecomandoque podemos pedir ao servidor para realizar: Ping e Traceroute. Ambos so comandos bem conhecidosdeumadministradordesistemas*nix.Realizeumtesteclicandosobreocomando Ping.
Apesar do comando ter retornado uma sada, ela extremamente inadequada, pois sabemosqueoshostsdocenrioestoa1oudoishops(saltosderoteadores)apenas.Isso aconteceuporqueoFirewalldasmquinasestabloqueandopacotesUDP,ques oopadrodo traceroute.Nestecasoteramosduaspossibilidades: 1) LiberarnofirewallumaregrapermitindoqueoservidordoZabbixalcanceoshostspor UDP; 2) ModificarocomandoparaqueelerealizetraceroutebaseadoemICMPquej esta liberadonoFirewall. Nestacasovamosoptarpelasegunda,parademonstrarcomoalterarasconfigura es destescomandos(queoZabbixchamadescripts).Masdependendodeseucen rioreal,pode serprecisoliberaroFirewallparapermitirapassagemdedeterminadospacotes. Semprecabeaoadministradorougerentederedetomarestasdecis escombasena simplicidade,seguranaenecessidadedoambiente.Infelizmenteestass oregrasque sempreentramemconflito,ponderebastanteparanodeixarfalhasdeseguranae verifiqueseocomandoaserhabilitadomesmonecessrio.
4.2.1.Adequandooscriptdetraceroute
OservidordoZabbix,assimcomoseuagente,s oexecutadoemformadedaemone porquestesdeseguranaelessoexecutadoscompermissesdousurio6zabbix(egruposao qualestacontapertena). Este usurio no deve ter permisses de superusurio (conforme sua criao nos captulosanteriores)esendoassim,somosobrigadosachecarseoscomandosquecolocaremos nofrontendpodemserexecutadospelodaemon. Primeirovamostestarcomorootofuncionamentodocomando.Nocasodo traceroutea opopararealizartraamentoderotasviaICMPoI. #tracerouteIwin2003 traceroutetowin2003(172.28.0.10),30hopsmax,60bytepackets 1gateway.curso468.4linux.com.br(172.27.0.1)0.954ms0.820ms0.724ms 2172.28.0.10(172.28.0.10)1.158ms1.066ms1.054ms Perfeito!ViaICMPotracerouteconseguechegarat odestinoemostrarasrotas.Agora vamostentarcomousurioZabbix. #suzabbix $tracerouteIwin2003 Thespecifiedtypeoftraceroutingisallowedforsuperuseronly $logout # Voc no pensou que seria to fcil, pensou? Como verificado, o usurio no tem permissodeexecutarotraceroutecomICMP.Issoaconteceuporquesomenteousu rioroottem direitosdecriarpacotesdacamadaderedearbitrariamente.Programascomoping,fping,entre outrostempermissoSUIDativaparagarantirqueusuriosconvencionaissejamcapazesde executarestesprogramas. EviteusarSUIDparadarpermissesdeexecuesaosusuriosnormais!Issopode causarfalhasdesegurana.
FelizmenteexisteumaalternativanomundoUNIX:o sudo,umprogramaqueverificase umusuriotempermissodeexecuoapartirdesuasconfiguraes. Mesmo o sudo teve seu histrico de segurana comprometido, por isso sempre mantenha sua distribuio atualizada com os ltimos patches de segurana, pois nuncasesabequandoumanovafalhavaisair. InstaleosudoapartirdorepositriodoDebiannohostZabbixserver. #aptitudeinstallsudo Agora use o comando visudo para adicionar a permisso do usurio zabbix de executar o comando traceroute. #visudo
1
#/etc/sudoers # #ThisfileMUSTbeeditedwiththe'visudo'commandasroot. # #Seethemanpagefordetailsonhowtowriteasudoersfile. # Defaultsenv_reset #Hostaliasspecification #Useraliasspecification #Cmndaliasspecification #Userprivilegespecification rootALL=(ALL)ALL #Allowmembersofgroupsudotoexecuteanycommand
7 8
9 10
11 12
13 14
15 16
17
18 19
21
22
23
24
25 26
NocampoCommandmodifiqueovalor,colocandosudoseguidodeespaoantesdo traceroute e clique em Save. Agora volte at o mapa ( Monitoring Maps) e execute o comandoemvrioshosts.
4.2.2.Criandonovoscomandosparaomenu
Quandoascoisascomeamadarerradoeosalertaschegam,voc podenecessitarque usuriosdeprimeironvelsemconhecimentoprofundodeUnixouWindows,econsequentemente semacessoaosconsolesdoservidor,precisemrealizartestes.Logo,existir ocasosemqueseu ambientedemandedevriosscriptsaseremexecutadoapartirdoservidorviafrontend.Um exemplomuitocomumodetestesdeportasdeserviosTCP. Paraexemplificarestecaso,vamoscriarumscriptquechamaumcomand nmappara testar a porta 22/TCP (SSH) dos servidores Gnu/Linux em nosso cen rio. Volte para AdministrationScripts.
Figura 4.5: Criando um novo script para testar portas SSH (1/2)
CliquesobreobotoCreatescriptconformeaFigura4.5paraacessarateladecriao decomandos.
Figura 4.6: Criando um novo script para testar portas SSH (2/2)
1) Name:onomedocomandoaserexibidonomenu; 2) Command: O comando a ser executado, no nosso caso nmap P04 p 22 {HOST.CONN}.OparmetroP0donmapindicaqueohostnodeveserpingado antesdetestaraporta(p22).{HOST.CONN}umamacrodoZabbixquecontmo IPdoservidor(ounomeDNSdomesmo,dependedoqueescolhemosnacria odo host).Vriasmacros,inclusivepersonalizadaspodemserusadasnestecaso. 3) Usergroups:Indicao grupo usuriosquepodemexecutarestecomando.Escolha Allparaestecenrio. Se voc possuir vrios tipos de usurios que precisem executar apenas alguns comandos,compensacriarumgrupodeusuriossparaissoeatribuirquaisusurios pertencem a estes grupos. No esquea de dar permisso conforme os campos a seguirparaqueelesejacapazdeveroscomandos. 4) Hostgroups:indicaemquaisgruposdehostsumcomandopodeserexecutado.Em combinaocomaopoanterior possvelcriarregrasbemcomplexas.Almdisso nofazsentidotestarumSSHemumWindowsporexemplo.EscolhaLinuxservers.
SetudocorreubemasadadocomandodevesermostradaconformeaFigura4.8.Note queoshostsswitch,JBossASeWindows2003nodevemexibirestecomando.
4.2.3.Exerccios
1) Gerencie o permissionamento para que o comando SSH seja somente executado pelosusuriossuporteesysadmin. 2) Crieoseguinteconjuntodecomandosparatestedeportas: 2.1) Testaraporta445/TCPdoshostscomsistemaoperacionalWindows.Somente osusuriossuporteewinadmindevempodeexecutlo. 2.2) Testar as portas 8009/TCP do servidor de aplica es. Somente os usurios suporteejavaengdevempoderexecutlo 2.3) (Desafio)Testaraporta80/TCPdo gateway ondeficaosistemadecachee proxyreverso e do servidorde aplicaes. Somenteos usurios suporte e sysadmin podemexecutlos.Nocasodesteexercciovoc deveverificarse foiretornadoHTTP200. 2.4) (Desafio)Testaraporta5432/TCPdohost Database.Somenteos usurios suporteedbapodemexecutlo.Nocasodesteexercciovocdeveverificar sefoiretornadoovalorumapartirdeumSELECT1. 2.5) (Desafio)O Varnish temumconsolelocaldecomandosacessadoporuma porta.Namquina Presentation crieumscriptqueacessaesteconsolee limpaocachedoVarnishparaserchamadoviascriptdoZabbix.Somenteo sysadminpodeexecutarestecomando.
4.3.ChecandodisponibilidadeviaprotocoloICMP
Criar comandos de teste interessante mas no automatiza o monitoramento que o servidordeve fazerconstantemente.Logo,chegou o momentode verificarcomo o hostpode apresentarindisponibilidadeapartirdachecagemderetornodepacotesICMPreply. NemtodosossistemaspermitempacotesICMP.Seesteforocaso,n oadiantacriar testescomooaseguir,pulediretoparaverificaodeagenteseportas.
4.3.1.ComofuncionaopingICMP
O ICMPInternetControlMessageProtocol umprotocolodacamadaderededo modeloTCP/IPresponsvelportrocarmensagensdecontroleentreoshosts(porexemplo,falhas derotas).
Estetestejestasendorealizadoemnossocenrio,vistoquecriamosoitem icmpping dentrodotemplate4LinuxICMPeativamososhosts.Emboramuitoprimrio,estetestevalida todoocaminhofsicoentreoscomponentesderededodestinoedaorigem(switches,cabos, placas,roteadores,etc.)eporisso muitoutilizadodentrodevrioscenriosreais.Podemosver atrocadepacotesaconteceratravsdocomandotsharkaseguir. #tsharknieth0icmpandhost172.27.0.1 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 0.000000172.27.0.10>172.27.0.1ICMPEcho(ping)request 0.000959172.27.0.1>172.27.0.10ICMPEcho(ping)reply 1.000731172.27.0.10>172.27.0.1ICMPEcho(ping)request 1.001954172.27.0.1>172.27.0.10ICMPEcho(ping)reply 2.000778172.27.0.10>172.27.0.1ICMPEcho(ping)request 2.001882172.27.0.1>172.27.0.10ICMPEcho(ping)reply Notequeparatodosospacotesechorequest,umechoreplyretornadodestino.
4.3.2.VisualizandoopingICMPnoFrontend
Podemos visualizar o resultado dentro da tela de Overview do front end. Acesse MonitoringOverviewparaexibila.
NaFigura4.10temosumexemplodestatelamostrandotodososhosts.Seelan oestiver aparecendonoseesqueadeselecionarnocomapoTypeovalorData. Embora o Overview esteja exibindo corretamente o valor 1 da key i cmpping no muitointuitivoolharparaumnmeroemmeioaumatabela(semlevaremcontaqueestatabela podeserdemasiadamenteextensa).PorissooZabbixofereceumrecursointeressantechamado ValuesMapsquepermitemdarnomesaosvalores. J existem vrios deles definidos por padro. Entre em Administration General, no canto direito da tela e selecione Value Maps. Aproveite a oportunidade e apague todos eles, exceto Service State e Windows Services, assim mantemos o ambiente limpo.
Agora conforme a Figura 4.11 indica, clique sobre o nome do Value Map chamado ServiceStateparaeditlo.VamostransformarseusvaloresUpeDownemOkeFalha.
2) Mapping e Newmapping:Estescampospermitemaediodosvaloresqueso mapeados. Clique sobre os valores de Up e Down e clique no boto Delete Selected pararemovlose depois useo NewMapping paraadicionarosnovos valoresconformeailustraodemonstra. CliqueemSaveparasalvaresair.
Note que o Value Map foi alterado. Agora vamos associar o Ping ICMP ao novo Estado.V at Configuration templates,cliquesobreovaloritemsdo4LinuxICMPe depoissobreonomedoitemICMPPing.
4.3.3.Criandoumgatilhodeparadadehost
Emboraj saibamosqualhostestaOK,aindanopedimosaoservidorparanosalertar viaemail/Jabberaparadadeumdeles.Vamosprimeirotestaroqueofrontendj nosmostrae depoisiremoscriarnossoprimeiro triggerquevaiavisarquandoalgodeerradoacontecercom
Captulo 4 Monitoramento voltado para disponibilidade - 142 nossoshosts. Primeiropauseumadasmquinasvirtuais(oexemploutilizao Database),peloconsole doVirtualBoxselecioneomenuMachinePause(OuuseCTRLDireito+P).
1) Casodesejepodeseescolherogrupo Databaseserversparafacilitaravisualizao dentrodoOverview. Agora que j sabemos que o item esta funcionando corretamente, vamos criar nosso trigger.Antesativeamquinavirtual,assimotriggerentrardesligado.
Umtrigger,ougatilho, umtestedecondioquepossuiumestado(OK,PROBLEMou UNKNOWN)epermitequeoZabbixtomeumadecis osobreaocorrnciadeumincidentedentro docenriomonitorado. Um nicotriggerpodeconterumsimplestesteboleanocomooque usaremosdaquiapouco,comotambmverdadeirasequaesboleanasquetestaminmeras possibilidadesparadecidiroqueaconteceu.Felizmenteagrandemaioriadoscasosrequerem testessimplesdevaloresdeum nicoitem.V paraateladetemplatesem Configuration Templatesondeestao4LinuxICMP.
EditeostriggersdotemplateconformemostradonaFigura4.18.
NocantodireitodatelacliquenobotoCreateTrigger.Umanovatelairaparecer.
1) Name: indica o nome do gatilho. Este nome ser exibido quando o gatilho for disparado em vrios lugares e pode ser referenciado nos emails, SMS e outras formasdealerta.Porissoonomepermiteousodemacros.Noexemplodestapr tica dirigidausamosovalorHost{HOSTNAME}inalcanvel.Onde{HOSTNAME}ser substitudopelonomedohostcujotriggerforativado. 2) Expression: onde iremos escrever o teste do gatilho, ou seja, sua expresso boleana.CliqueemToggleinputmethodparamudaromododeescritadogatilho, porpadroteramosqueescreveraexpressonamo,mascomovoc aindaesta iniciandonoZabbixiremosusaroauxiliardeexpress es.
1) Item:indicaamtricacoletadanestetemplateaseravaliada.Cliqueem Select e escolhaoICMPPing. 2) Function:afunousadaparaverificarogatilho.Aoclicarnacaixadecombina o vocverumagrandequantidadedefunespossveis.OZabbixmuitoextensoe provvelquevoc novenhaausartodasestasfunesemproduo,noentanto elasestolsevocprecisar.Nocursoveremosapenasasmaisrelevantes.Escolha Lastvalue=Nparaquepossamostestarseoltimovalordopingfoiumafalha. 3) Last of (T): define o tempo ou contagem de coletas a serem analisadas. Vamos selecionar1coleta(altima). 4) N:OvalordeNnaexpressodafunoescolhidanoitem2. zerononossocaso, quedefineumpingmalsucedido. TemosaindaoTimeshiftquepermiteretrocedernotempoparacoletarmtricasaum espaodefinidodesegundos,nopassado.Nousaremoseleainda.CliquenobotoInsertpara retornaratelaanterior.
Vejaqueoconstrutordeexpressojescreveuparanstodaafrmula.Ovalor {4Linux ICMP:icmpping.last(#1)}=0 oresultadofinaldasescolhasfeitasnatelaanterior.Elaestano formato {Template:item.funo(parmetros)}=valor. No se preocupe tanto com isso por enquanto, mas voc deve ser capaz de ler as expresses e comparlas com o gerador automtico,poisnomanualasrefernciassomostradascomoonomedecadafunoeno pelosmenus.ParaacrescentlauseobotoAdd.
um erro muito comum dos iniciantes (e mesmo de alguns veteranos) que esqueamosdeclicaremAdd.Nocasodevoc receberumerroaosalvardizendo queaexpressoinvlidaverifiquesevocdeixoudeadicionarafrmula.
4) Comments:umtextoexplicandooqueestetriggerrepresentaeoqueacarretaele esta ligado. til para o pessoal de primeiro nvel de suporte que no tem conhecimentoprofundodosistema. CliqueemSaveparafinalizarestepasso.
Ogatilhodeveestarsendoexibidonalistadetriggers.
4.3.4.Lidandocomoseventos
Todogatilhogeraumeventoquerepresentaum nicoincidente,normalmenteumevento representaoinciooutrminodomesmo.DentrodoZabbixvoc deveaprenderalidarcomos eventos e usar o front end para verificar se um deles ocorreu. S o muitas as telas onde podemosverificarqueumincidenteaconteceuemumhost.Pausenovamenteohost Database paraprovocaroincidentedechamadadeleevatMonitoringDashboard.
NotequeacolunaDisasterdoquadroSystemstatusestaindicandoqueumhostdo grupo DatabaseServers e LinuxServers est comproblemas.Naverdade omesmohost Databasequeestanosdoisgrupos. Outrolugarquedeveestarrefletindoacondi odefalhaoprprioOverviiew,tantono mododedadoscomonaFigura4.28comonadegatilhosnaFigura4.29.
Porfimexistea tela de eventos em Monitoring Events, onde podemosmanipular esteseventos.Antesdeentrarnela, removaapausadamquina Database.Issovaiforaro Zabbixagerarumeventoderetornoqueservisualizadonaprximatela.
PercebaqueacolunaStatustemduaslinhas:umaparaaativaodotriggereoutra paraadesativao.Estecomportamento desejadopoisparasabemosporquantotempoum determinadotriggerficouativo(eporconsequ ncia,porquantotempooincidenteocorreuna suainfra),bastaanalisaracolunaDuration. NacolunaDurationseumeventomudoudeestadouma ltimavez,ovalormostrado indicaotempodesdeaquelepontoatopresentemomento. Outropontoimportante acolunaAck(acknowledgement,ouconfirmao).Elamostra seumdeterminadoeventofoipercebidoporalgu m,edeboaprticasemprepreenchlocom algorelevante,mesmoquesejaumsimplestextodeestasendoverificado.Issopermitequeo Zabbixsejausadocomoumsinalizadordetickets.Cliquesobreolink No indicadonaFigura 4.31dalinhacomstatusPROBLEM.
NatelaquesurgirpreenchaoquadrodetextoecliqueemAcknowledge&Return.
Note que a coluna Ack agora apresenta o valor Yes em azul. Faa o mesmo procedimentoparaofinaldoincidente. Nuncadeixeeventossemacknowledgement,issofazcomqueohist ricodeeventos doZabbixfiqueimprecisoedeixedeserconfivel.
ATENO! A partir de agora voc obrigado a colocar confirmao em todos os eventosqueocorreremnocurso,principalmenteseelesestiveremdentrodasprticas dirigidaseexerccios.
4.3.5.Criandoumaactionparaenviodealerta
Usarainterfacewebparalidarcomeventos importante,masvocsvaisaberquealgo ocorreusealgumficarnafrentedeummonitor.Enquantoestasetornandocomumousode teles(normalmenteTVsdeLCDmodernas)paraexibirmapasescreenscomosstatusdos hosts, de suma importncia que o Zabbix envie mensagens pelas mdias de alertas aos envolvidos. ParaissotemosquecriarumaAction,queacolaentreosMediaTypesdosusurios eamudanadestatusdos triggers.V at Configuration Actions paraexibiratelade aes.
ConformenaFigura4.34,nocantodiretodatelacliqueemCreateAction.Umajanela decadastrodaaoirsurgirconformeaseguir.
Captulo 4 Monitoramento voltado para disponibilidade - 151 1) Name:indicaonomedaaoeeledevesernico. 2) Eventsource:mostradeondeoeventofoioriginado.Nonossocaso umtrigger. 3) Default subject: o campo assunto do email a ser enviado ou valor do SMS/mensagemjabber.Notequepossvel,eindicado,ousodemacros. 4) DefaultMessage: umadescriodetalhadadoevento,tambm aconselhvelo usodemacros. Osoutroscamposdestequadronosorelevantesnomomento,deixeosnodefault. AntesdeclicaremSavehmaisdoislugaresaseremconfigurados.
Um deles o quadro Action condition logo abaixo do quadro principal. Clique em NewconformeindicadonaFigura4.36.
Note que a condio exibida no Action conditions. possvel adicionar quantas condiesvocdesejar.
Agoraprecisamosescolheroqueaactiondevefazer.Noquadro Actionoperationa esquerdadoprincipal,podemoslistarvriasoperaesparaseremativadasquandoaactionfor disparada. aqui onde escolhemos qual meio de alerta ser usado para uma action em particular.CliqueemNewconformemostradonaFigura4.39.
1) Operation type:podemosescolhersevamos enviar uma mensagemdealerta ou executarumcomandoremoto. 2) Send message to: indica para quem a mensagem deve ser enviada. Podemos escolhergruposouusuriosemparticular.Paraonossocaso,umaparadadeping deveserenviadaaogrupoNetworkadministrattors. 3) Sendonlyto:aquiescolhemosquaismediatypesdevemosusar.Podeseoptarpor usartodososdisponveis. 4) Default message: envia a mensagem padro operao. Geralmente este o desejado,maspodemhavercasosdeopera esqueprecisemdeumamensagem maisespecfica,comoumSMScomumcorpodetextomaiscompacto. CliqueemAddevocverqueanovaoperaoseradicionadaaoquadro.
ApsissocliqueemSavenoquadroprincipal.
Chegou o momento de testar nossa action. Pause por alguns minutos a m quina Database e volte ela ao normal. Nesse nterim, consulte os emails no Evolution e as mensagensnoPidgin.
Voc deve receber dois alertas: um de parada (PROBLEM) e outro de retorno (OK). PercebaqueosvaloresdasmacrosforamsubstitudospeloZabbix.
4.3.6.Exerccios
1) Aproveiteomomentoquevoctemcomumaactionplenamentefuncionaleconsulte omanualonlinedoZabbixparaconhecerasmacrosdispon veisnoservidor,ealtere os textos e ttulos das mensagens para experimentar os valores poss veis nas mensagens. 2) ReinicieamquinavirtualDatabaseconformeaFiguraabaixoindica,edigaoque aconteceucomoseventos.Vocachaqueissoumcomportamentocorreto? ________________________________________________________________________ ________________________________________________________________________
4.3.7.Boasprticascomtriggers
Sevocfezoltimoexerccio,deveterpercebidoqueoeventofoiacionadopeloreboot damquinavirtual.Estetipodecomportamento esperado,afinalarespostadopingdeixoude ser enviado ao servidor. No entanto a m quina no caiu, e uma simples reinicializao providencialemumservidorouservio,nodeveseracusadacomoquedadehost.Ambosso situaesdiferentes. Porissodevemossempreteremmentequenossostriggersn odevemselimitara verificarum nicovalordemudanadeestado. precisodeumalgicamaisbemtrabalhadae fazerusodeumrecursochamado janeladetempo.AFigura4.45ilustracomoajaneladetempo funciona.
As janelas de tempo so intervalos de segurana nos quais nos baseamos a fim de permitirqueoservidordemonitoramentoseadapteaumamudan anosvaloresdecoleta.Seu principalefeito noalertarfalsospositivos,quepodemserpioresdoquefalsosnegativosem certascircunstncias(lembradahistriadolobo?).Oalertadequedadehostaoreiniciarohost umfalsopositivo,nohouvequedareal,apenasumareinicializa o. Notequequandooservidorpararderesponder,nenhumalerta enviadoimediatamente. Otriggerir aguardarotempodeterminadonajanelaat decidirmudardeestado.Omesmo acontececomoretornodohost.Emborapareacontraprodutivoissoreduzoriscodeenviode mensagensdealertaatoa.Dependendodotipodemensagem,issopodeinclusiverepresentar umaeconomiaparaaempresaseo Mediatypeusadoforpago(comooSMS).Imaginereceber centenas(oumilharesdeSMS)porcausadetrafegoexcessivoqueimpediuqueospingsICMP chegassemaoservidor!Nadasaiudoar,apenasotrafegoderedeficouinsuportavelmentelento. Eaintermitnciadospacotespodegerarmaisdoresdecabeadoqueauxlio. Obviamentetemosquetomarcuidadosparaquehajamalertasdeoutrosestadosque umhostoutodaainfraestruturapodealcan ar.Maisadiantenestecaptulovamos,por exemplo,criarumatriggerparaalertasdereinicializa es. Definirgatilhoseaesparatodasaspossibilidadesdesuainfraestrutura justamente omaiordesafiodepoisderesponderaperguntaoquedevomonitorar?.Geralmente estetipodegranulaosalcanadodepoisdealgunsmesescomomonitoramento ativado,eamelhormaneiradeseplanejartudoisso comearpequenoecobrirnovas necessidades conforme elas aparecem. Receitas de bolo como a ITIL s o excelentesguiasparasedecidirporondeequandocome ar.
1) Function:mudeafunoparaSumofvaluesforperiodoftimeT=N,justamenteo Tnossajanela. 2) Lastof(T):adefiniodajanela,nonossoexemplo,ser de60segundos,vistoque nossoitempingaohostdedestinoacada10segundos.Procuredeixarajanela prximaaotempodecoletaentrex3ax6. Salvetudoereinicieohostnovamente.Setudocorrerbemajanelavaievitarqueoalerta sejaenviado.Seaindaassimvocreceberoalertaprecisoaumentarajaneladetempo. Qual um bom tamanho de janela de tempo? Isso uma pergunta que depende inteiramentedeseussistemas.Amaioriadoscasosnorequerumajanelamenordo que5minutos.Janelasmuitoextensaspodemdiminuirotempoderespostadaequipe de TI e janelas muito pequenas tendem a gerar falsos positivos. Tente achar o equilbrio.
4.4.Checagemgenricadeportaseservios
ComoditoanteriormenteICMPrequestspodemserbarradosporFirewalls.Seesteforo seucaso,entovocnopodedependerdelesparamedirasuadisponibilidadeedeverecorrera outrosmtodos.Nestetpicoveremosummuitocomum,achecagemdeportasTCP.
4.4.1.ConexesTCPehandshakes
Comosed averificaoremotadeumserviorodandoemumsoqueteTCP?Vamos fazer uma pequena prtica para a verificao do mesmo, e entender o famoso Three wy handshakedoprotocoloTCP. PrimeiroativenohostApplicationoseguintecomando: #tsharknieth0host172.27.0.10andport8080 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 Otshark ocomandodelinhasdeconsoledoWireshark,e muitomaispoderoso que o tcpdump. No caso do comando acima pedimos que ele capture todo o trafego da interfaceeth0quevierdoZabbixservereusaraporta8080. AgoranoservidordoZabbixdenossocen rio,useocomandonmapparavarreraporta 8080dohostApplication. #nmapsTP0p8080172.27.0.20 StartingNmap5.00(http://nmap.org)at2011020917:08BRST Interestingportsonapplication.curso468.4linux.com.br(172.27.0.20): PORTSTATESERVICE 8080/tcpopenhttpproxy Nmapdone:1IPaddress(1hostup)scannedin0.04seconds NotequeusamosoparmetrosTparaforaronmapausarohandshakecompleto emvezdoSYNscan1padro.VolteaoApplicationparaveroresultadonotshark. #tsharknieth0host172.27.0.10andport8080 Runningasuser"root"andgroup"root".Thiscouldbedangerous.
1 O SYN Scan um mtodo considerado furtivo antigamente. Ele fazia apenas metade dos passos para abertura de uma conexo.
Captulo 4 Monitoramento voltado para disponibilidade - 158 Capturingoneth0 0.000000172.27.0.10>172.27.0.20TCP50952>8080[SYN]Seq=0Win=5840Len=0 MSS=1460TSV=4629163TSER=0WS=4 0.000090172.27.0.20>172.27.0.10TCP8080>50952[SYN,ACK]Seq=0Ack=1Win=5792 Len=0MSS=1460TSV=4617797TSER=4629163WS=4 0.000602172.27.0.10>172.27.0.20TCP50952>8080[ACK]Seq=1Ack=1Win=5840 Len=0TSV=4629163TSER=4617797 0.000727172.27.0.10>172.27.0.20TCP50952>8080[RST,ACK]Seq=1Ack=1Win=5840 Len=0TSV=4629163TSER=4617797 Percebaque4pacotesforamtrocados.Oprimeiro oSYN(syncronization)quepedea aberturadaconexo.Osegundoquepartedoservidordedestinocomoresposta oSYN/ACK (syncronizationandacknowledgement)queconfirmaaaberturadepacoteseoterceiro oACK apenasparaconcluiraabertura.Onmapusaraindaumltimopacotepararesetaraconexo (RST,ACK)quenovemaocaso. Atrocadestespacotesnestaordem oesperadopelasfunesdesoquetedosistema operacional,seelaforrealizadadessaformaissosignificaqueaportaremotaestaemestadode escuta(listening)ouqueestaaberta.Masaivemaperguntaeumaportafechada,oqueretorna? Vamosseguircomaprtica,novamentenohostApplicationexecuteosseguintescomandos. #iptablesAINPUTjACCEPTptcpdport10000 #tsharknieth0host172.27.0.10andport10000 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 Oiptables2liberanofiltrodepacotesdeentradaaporta10000/TCP.Agoraapartirdo servidorZabbixtesteaporta10000. #nmapsTP0p10000172.27.0.20 StartingNmap5.00(http://nmap.org)at2011020917:13BRST Interestingportsonapplication.curso468.4linux.com.br(172.27.0.20): PORTSTATESERVICE 10000/tcpclosedsnetsensormgmt
Nmapdone:1IPaddress(1hostup)scannedin0.10seconds Noteoestadocloseddasadadonmap!V at otsharkdo Applicationevejao trafegodospacotescapturado. #tsharknieth0host172.27.0.10andport10000 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 0.000000172.27.0.10>172.27.0.20TCP47673>10000[SYN]Seq=0Win=5840Len=0 MSS=1460TSV=4696578TSER=0WS=4 0.000096172.27.0.20>172.27.0.10TCP10000>47673[RST,ACK]Seq=1Ack=1Win=0 Len=0 #iptablesDINPUTjACCEPTptcpdport10000 Notequehapenasdoispacotes,oSYNdeinciodeconexocomonoexemploanterior e outro com RST/ACK pedindo para encerrar imediatamente a conex o. assim que um sistemaoperacionalinformaqueumaportaestafechadaparaumatentativadeconex oremota. UmtimeoutnaaberturadeumaconexoTCP porqueoclientenorecebeunem umRST/ACKouumSYN/ACKapsumperodo(quenamaioriadasvezes de60 segundos).
4.4.2.Criandoumtestedeservioviavarreduradeportas
Comestesdadosdisponveisvamoscriarumasituaoondehavertrscasosdeportas: aberta,fechadaefiltradaporfirewall. Noexisteumamaneiraconfiveldesechecarserviosqueusam"UDPsemapelar paraacamadadeapresentaodomodeloTCP/IP. PrimeiropareoserviodeSSHnoDatabase. #/etc/init.d/sshstop DepoisremovaaregrasdepermissodeacessodeSSHdaApplication.
#iptablesDINPUTjACCEPTptcpdport22 Apartirdozabbixsrvfaaaseguintevarreduradeportas. #nmapp22applicationpresentationdatabaseP0 StartingNmap5.00(http://nmap.org)at2011020914:04BRST Interestingportsonapplication.curso468.4linux.com.br(172.27.0.20): PORTSTATESERVICE 22/tcpfilteredssh MACAddress:08:00:27:4B:97:E3(CadmusComputerSystems) Interestingportsongateway.curso468.4linux.com.br(172.27.0.1): PORTSTATESERVICE 22/tcpopenssh MACAddress:08:00:27:BD:55:12(CadmusComputerSystems) Interestingportsondatabase.curso468.4linux.com.br(172.27.0.30): PORTSTATESERVICE 22/tcpclosedssh MACAddress:08:00:27:A3:73:61(CadmusComputerSystems) Nmapdone:3IPaddresses(3hostsup)scannedin0.48seconds Note que no Database que desligamos o SSH retornou closed e o firewall do Applicationretornoufiltered,somenteoPresentationdeuumopen.Anoteesteresultados poisiremoscomparloscomoqueoZabbixretornar. Notemplate4LinuxS.O.Linuxcrieumnovoitemdesimplecheckcomakeyssh. ParaqueoservidorpossauslaprecisoqueeleestejacompiladocomsuportealibSSH(op o enablelibssh).
NotecomoosdoisservioscomfirewallecomoSSHdesligadoretornaramFalha(0)eo queestavaemfuncionamentoretornou1. UmadasgrandesvantagensdetestarportasTCP queapossibilidadedeincidnciade perdasdepacotesbembaixaemrelaoaotesterealizadocomoUDP. Enquanto o manual do Zabbix contma informao de que a checagem de vrios serviosretornamovalor2aoacharumtimeout,oautorn ofoicapazdereproduzir estecomportamentocomsucesso.
4.4.3.Exercciosobrechecagemdeportas
1) SeguindoomesmoprocedimentodoICMPPing.Crieumtriggerparaalertasde quedasdeportas. 2) Crieositensparamonitorartodososservi osviasimplecheckconformeatabela abaixo. No possvelmonitorarumdosserviosmencionadosnatabela,aodescobrirqual anoteomesmoexplicandoporquenofoipossvelrealizarumsimplechecknele. Maisafrentevoltaremosaestecasoefaremosomonitoramentodeoutramaneira.
Captulo 4 Monitoramento voltado para disponibilidade - 163 Servios OpenSSH Varnish cacher) Porta 22/TCP (HTTP 80/TCP 8080/TCP 8080/TCP (HTTP) 80/TCP 5432/TCP 389/TCP Application Database Database Apache PostgreSQL OpenLDAP Host Todos os Linux Presentation Presentation Template S.O. Linux Varnish Apache JBoss base ssh http http tcp,8009 http,8080 http tcp,5432 ldap Key
4.5.ValidaodepginasWEB
UmrecursoapartenosistemademonitoramentodoZabbix otestedecenriosweb.O servidorcapazdedispararchecagempeloprotocoloHTTPereconhecimentodepadr esHTML paravalidarpginasHTML,inclusivecomvalidaodeformulrios(tantocomGETouPOST). Para suportar este tipo de checagem o servidor deve ser compilado com suporte bibliotecaCURL(enablecurl).
4.5.1.Disponibilidadedosite.
OZabbixdenominaumtestedeumsitecomoumscenario(cen rio),edentrodeste cenrioh vrioselementoschamadosdesteps(passos)quecorrespondemaumarequisi o, ouseja,aumaURL. O principal uso deste tipo de teste verificar se a URL esta respondendo adequadamente,podemos,porexemplo,verificarseoHTMLcont mumadeterminadastringou seocdigo de retorno corresponde aumsucesso,quenormalmente 200 OK.Masestas checagenstemoutrositensembutidosnela.Oservidorcalculaautomaticamentealat nciade redeeavelocidadededownloaddosdadosnaURLej geragrficosdestasestatsticas.Um
Captulo 4 Monitoramento voltado para disponibilidade - 164 triggertambm criadoautomaticamenteparaalertarcdigosderetornosinesperadosoufalta em uma determinada string na pgina de resposta. Ele no entanto, no gera uma action sozinho. MuitasdestasfuncionalidadessoencontradasemoutrasferramentascomooJMeter (que possui asserts capazes de realizar este tipo de verifica o), porm uma soluo no substituiaoutra,poisaintenodoZabbixno serumvalidadordeaplicativoswebesimum verificadordefuncionalidadespontuaisdeURL.Eletambmnodeveserusadocomogeradorde cargas para testes de performance. No entanto o Zabbix consegue armazenar o hist rico de resultadosonlineporumlongotempo. ParacriarumnovocenrioacesseConfiguration Web.Natelaquesurgirvoc ver queobotodecriaoestar desabilitado(Figura 4.48).Parahabilitlo precisoescolherum grupoehostconformeabaixo:
1) Group:escolhaogrupoLinuxservers. 2) Host:escolha Application,que ohostinternodenossocenrioquepossuium JBosseumApacheexecutandoaplicaes. Aoescolherosdoisvaloresobotoserhabilitado.Issoaconteceporqueno possvel colocarumcenriodentrodeumtemplate,apenasdentrodeumhost.Da anecessidadedese escolherumhost.
CliquesobreCreatescenario,umanovajaneladecadastroirsurgir.
1) Application: o application de identificao para o cenrio. Como ele no cadastradoemnenhumtemplatetomecuidadoparanoescolherum application queexisteemoutrapartedoZabbix.ColoqueCenrioHTTPparaonossoexemplo. 2) Name:oidentificador nicodocenriodentrodohost.Estenomevaiaparecerno momentodomonitoramento.Ovalorquecolocaremos TestedeaplicaoPHPno Apache. 3) Authetication:nocasodaURLrequereralgumtipodeautentica oHTTP,vocpode definilaaqui.Nohnecessidadedeautenticaononossoexemplo. 4) Updateinverval(insec):otempoentreumacoletaeoutra.Deixe10segundospara nossocenrio. 5) Agent:comooZabbixvaiseidentificarparaoservidorweb.Essencialmente astring dobrowserpeloqualelevaisefazerpassar. 6) Status:Seeleestouno,ativo. 7) Variables: um conjunto de variveis para serem enviadas ao servidor. Deixe em branconestecaso. Note que em lugar algum foi definido qual a URL que este cen rio vai acessar. Isso porque possveldefinirvriasURLsdentrodele,cadauma umstep.Cliquenoboto Add docampoStepsparacriarumnovopasso.
1) Name: o nome deste step normalmente representa a URL a ser testada (por exemplopginaprincipal,carrinhodecompras,blog,etc.) 2) URL:oendereowebaseracessado.PodeincluirparmetrosdemtodoGETse desejado.Nonossocasocolocaremosphpapp.curso468.4linux.com.br. 3) Post:seapginareceberdadosviaPOST,asvariveisevalores(umemcada linha)podemseracrescentadosaqui.Nestecasonohnenhuma. 4) Timeout:porquantotempooZabbixvaiesperararespostadoservidorwebondea URLaponta.Ovaloremsegundos.Deixe15.Valoresmenorespodemserusadosse o teste for executado em infraestruturas locais, sites de baixo movimento ou em servidoresdealtssimondicedetempoderesposta. 5) Required:umtextoque esperadonapginaderesposta.Seoservidorfalharem entregarumapginacomestastringumtriggeracionado. 6) Statuscode:qualocdigoHTTPesperadoparaaresposta.Normalmenteele 200 quesignificaOK,pginaencontrada.VocpodeverarelaodecdigosHTTPem http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Note que este campono obrigatrio,voc podesimplesmentepedirproZabbixverseoservidor estaretornandoalgo,masissonomuitotilnamaioriadasvezes. Paraterminarainserodo step cliqueem Add.Antesdecontinuarvalemencionar queaURLdetestesusadanestesteppassapelaestruturadecacheeproxyreversodocenrio (Varnish Apache+mod_proxy Apache+PHP5) e por isso esta testando toda esta infraestrutura.PoderamosfazerumtestediretonoservidorApachesenecessrio.
Notequenofinaldoquadrodajaneladecenrioonovostepficalistadoemformade tabela. Ainda no vamos acrescentar outros steps neste cenrio. Salve clicando no boto Save.
Nalistadecenrios,temosagoraonossocadastrado.Paraverificarestemonitoramento temosumatelaespecialsparaele.AcesseMonitoringWeb.
Natelaseguinteumresumoda ltimacoletacomavelocidade(Speed),lat nciaderede (Response time), ltimo cdigo HTTP de resposta (Response code) e Status dos triggers geradosautomaticamente.Logoabaixodestequadrotemosdoisgr ficosdevelocidadeetempo derespostaprontos.
4.5.2.Exerccios
1) Crieumactionparaostriggersqueocenriogerouefaaosseguintestestes: 1.1) PararoservidorApachenohostApplication. 1.2) PararoservidorApachenohostPresentation. 1.3) PararoservidorVarnishnohostPresentation. 1.4) MudaroHTMLdapginaprincipalparanoretornarastringesperada.
4.6.Checandodisponibilidadeviaagentes
Asduassimplechecksicmppingesshqueusamoseocen riowebcriadonoutilizam oagente,porissosodenominadasagentless.Isso tilquandoosistemafinalnopermite quesejainstaladooagenteporummotivoqualquereusaapenasprotocolosderedeparaavaliar adisponibilidadedoobjetofinal. Porm essas checagens so muito limitadas e se no houver, ao menos, um agente SNMPnohostdedestinono possvelcoletarmtricasdoservidoredeterminaroquecausou umadeterminadaparada.PorissooZabbixvemcomumagentequepodeserinstaladonoshosts dedestino,comofizemosnoCaptulo 2.Chegouahoradeutilizaresteagentepararealizaras checagens de disponibilidade. Vamos come ar com mtricas simples e depois passaremos a checarmtricasdesistemaoperacionalmuitomaisricas.
4.6.1.Checandoseoagenteestaoperacional
Oprimeiro passo verificarseoagenteestafuncionandoe escutando na suaporta, normalmente10050/TCP.Usamosemcaptulosanterioresozabbix_getparacoletardadosda keyagent.pingcomoumteste.Estakeyretorna1seoagenteestaoperando,masconsidere queseelenoestiverfuncionandonohcomoeleretornar0paraalertarumaqueda! PorissoessakeytemumtratamentoespecialdentrodoZabbix.Sealgumproblemade rede,firewall,daemon,etcnopermitirqueoagentesejaalcanadoeoservidorregistrarerroele ir gravarumvalornulonacoleta.Este valorpoder sertestadonumtriggercomafuno nodata()(vejamaisafrente)oquerequerumtratamentoespecialparaocaso.V atatelade itemsdotemplate4LinuxS.O.Baseecrieumnovoitem. Aocriaroitemaquiostemplates 4LinuxS.O.Linux e 4LinuxS.O.Windows automaticamenteherdaroele.
Figura 4.59: Copiando o item de ping de agente para o template do JBoss (1/2)
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 n o diferenciavahostsetemplates(defatoeleainda fazpouca dissocia o entre eles algumasvezes).Voc vaiescolherHost nestecampoparaquelogoabaixopossa escolherostemplates. 2) Group:escolhaohostgroupTemplates. 3) Target:marqueotemplatedoJBosscomoindicado. CliqueemCopyparafinalizaraoperao.Oitemagorafazpartedeambostemplates. ConfirapeloOverviewsetodososhostsGnu/LinuxeWindow,almdoJBossclaro,estocom esteitemfuncionando.
4.6.2.Criandoumtriggercomafunonodata()
Agora vamos criar um trigger que opera com a fun o nodata() conforme citao anterior.OprocedimentomuitosimilaraodogatilhoparaoICMP,excetopelafunousada. Anodata()operacombaseemerrosdecoletaparadefiniraquedadeumagente.Se algumerroocorrerelaretorna1,casocontrrioumdadofoirecebidoearmazenadoeelaretorna 0. Usaremos este truque mais a frente para triggers que podem parar de receber dados e apresentarconstantementeosindesejveisestadosUNKNOWN. Dentrodotemplate4LinuxS.O.Basecrieumnovotrigger. NotequeotriggerherdadodoICMPBaseestaaparecendonasualistadetriggers destetemplate.
1) Item:EscolhaoitemAgentPingparaseravaliado. 2) Function:Procurenofinaldalistaafunoescolhidanaimagem.Elarepresentaa nodata(). 3) Last of (T): Nossa janela de tempo. Como no icmpping vamos esperar por um minutosemrespostaeentoativarotrigger. 4) N:Ovaloresperadoparaafuno.Conformecitado,eleser1. Voc nopodeescolherumvalorde Lastof(T)menordoque30segundosparaa funonodata(sec).OZabbixfazchecagensdefaltaderecebimentoacadameio minuto,porissodeixarestecampomenorqueestevalorn ovaiterfunoalguma.
Adicioneaexpressoaotrigger.
Agoravamosadicionarumadependnciaaestetrigger,eles deveseravaliadoseo testedepingICMPforbemsucedido.Issoevitasuascoisas:primeiroquemaisdeumaction sejaativadoemcasodeumcongelamentodohost(oqueeconomizaalertas),segundopermite queoZabbixnopercatempocomprocessamentodegatilhosques odesnecessriosparaa ocasio(quegastamtempodeCPUnoservidordemonitoramento).Nonossocen rioseohost noestiverrespondendorequisioICMPintiltestaroagente. Notequeistopodenoserverdadenocenriodesuaempresa!Avaliaradependncia dos triggers importante quando se est construindo uma soluo eficiente de monitoramento. CliquenobotoAddeselecioneotriggerdoICMP.
Notequeagoraeleaparecenalistadedependncias.Salveonovogatilho.
Captulo 4 Monitoramento voltado para disponibilidade - 174 Percebaqueambas,adependnciaeanovafuno,aparecemnalistadetriggers. Vamosrealizarumtesteagora,parandooagentedozabbixsrv. #/etc/init.d/zabbixagentstop V at oOverview,selecione triggers nocampo Type eaguardeoativamentodo mesmo.
Note que h setas nos detalhes dos Triggers para o servidor. Uma seta para cima significaqueotriggerj caiuevoltouaoestadodeOK.Umasetaparabaixosignificaqueseu estadoatualPROBLEM.Retorneoagenteaoestadonormal,atribuaumacknowledgemente vamosaoutroteste. Destavezderrubaremosdoishosts,pausandoamboseverificandoseelesv oativaro triggerdeagentealmdodoICMP.Pareohost Windows2003 e Database eretorneao Overview.
Figura 4.68: Dependncia entre triggers evitando que o gatilho filho seja ativado
Perceba como ambos os triggers de agente ficaram cinzas enquanto os de ICMP alertaramumaqueda.
Nopossvelusarafunonodata()paraverificaradisponibilidadeviaSNMP.
4.6.3.Exerccios
1) CopieotriggerparaotemplatedoJBoss. 2) Crie as actions necessrias para enviar os alertas de paradas doshosts a seus respectivosresponsveis,conformeatabelaabaixo. Host Application Database JBoss AS Presentation Switch Windows2003 Zabbixsrv Tabela 9: Responsveis de cada host Responsveis sysadmin, javaeng sysadmin, dba javaeng sysadmin sysadmin, winadmin winadmin sysadmin
4.7.TempoonlineeltimainicializaodoS.O.
Vimosanteriormente que o Zabbix alertou uma queda de host quando nosso trigger ICMP estava realizando uma checagem ruim sem janela de tempo. Ao concertar este comportamentodeixamosdesaberquandoumhostfoireiniciado.Verificarareinicializa ode hosts importantenamediodadisponibilidadedomesmo.Estetpicotratajustamentedesta questo. Primeirovamosaoproblemaprticoquetemosemmos:temosquemedirotempode uptimedetodososhostsincluindoaiosGnu/Linux,Windows,switcheam quinavirtualjavana qualoJBoss executado.Issonosd trscasosdecoleta:peloagentenormal,peloagente ZapcatepeloSNMP.
Isso vai demonstrar como o sistema do Zabbix consegue lidar com ambiente heterogneosevaidemonstrarquedepoisdacoletaotratamento,armazenamentoean liseno muda. Oprimeiropasso analisaroretornodosvaloresviaconsole.Isso importanteparaque tenhamosparmetrosdetiposdedados(inteiros,float);nomecorretodaskeys,OIDs,etce acesso.OagentedoZabbixpossuiumakeychamada system.uptime queretornaotempo desde o ltimo boot. De maneira equivalente o JBoss tem um JMX java.lang:type=Runtime,Uptimequetambmfazisso,masparaainicializaodaJVMeoSNMP porpadrotemoOIDDISMANEVENTMIB::sysUpTimeInstance. AOIDdoSNMP muitovariveldeumequipamentoparaoutro,sempreconsulteo manualouaMIBdoseufabricanteparadeterminaroqueestadispon velparacoleta. Vamosusarosseguintescomandosparaoscasosdeuso. #zabbix_getk"system.uptime"sapplication 59545 #echo"jmx[java.lang:type=Runtime][Uptime] "|ncapplication10052;echo ZBX59374361 #snmpgetv2ccpublic172.27.0.135DISMANEVENTMIB::sysUpTimeInstance DISMANEVENTMIB::sysUpTimeInstance=Timeticks:(6026194)16:44:21.94 Sevoc fezodesafiodotpico 2.12,pgina 72 podeusaroseuscriptemvezdo segundocomando. Cadacomandoretornouumvalorinteiro,todosrepresentandoouptimedosistema.A grandediferenaentreelesaprecisodetempoutilizada,oagentedoZabbixretornaovalorem segundos,oZapcatemmilissegundoseoagenteSNMPemcent simosdesegundos(queele chamadetimeticks). Noseincomodecomasadaemtextodevriosdessescomandos,oZabbixlidacom osnmerosdestacadosemnegritoapenas. Toda essa diferena requer um tratamento no momento da coleta, ou seja, na
1) Description:coloqueadescrio,conformeafigura. 2) Key:comousamosnocomandozabbix_get,achave system.uptime vaicoletaro tempodefuncionamentodohost. 3) Units:estecampopermitequefaamosalgumaspersonalizaesnotratamentoda sadadoitemnoOverviewegrficos.Emborasimilarao Valuesmapsele mais sofisticado,poisformataasadaconformenecessrioemvezdesimplesmentedar umapelidoparaumatabeladevalores.Nestecasouseo uptime. 4) Newapplication:definaumnovoapplicationparaositemsdesistema. Salveefaaomesmoparaotemplate4LinuxJBossBasemascomasmodificaesa seguir.
1) Key: aqui usaremos a sintaxe da key jmx pela primeira vez. Ela normalmente compostaporduaspartes,onomedoJMXeseuatributocadaumdentrodeseu prpriocolchetes.CadajmxapontaparaumMbeannoservidor. ParasaberquaisMbeansestodisponveisemumservidorcomZapcat,acessea URL http://<servidor>/zapcat-1.2/mbeans.jsp substituindo <servidor> pelo seu DNS ou IP conforme for o caso. Um estudo mais aprofundado dos MBeans realizadonoscursos436e467sobreJBossna4Linux. 2) Usecustommultiplier:nestecampofaremosotratamentodedadosparaconvertero resultadoparasegundos.ComoaJVMretornaumvaloremmilissegundo,temosque multiplicarpor.001. Salveesteitemecrieoltimo,dentrodotemplate4LinuxSNMPconformeaseguir.
1) Type:comoesteitem obtidopeloSNMP,temosqueconfiguraroitemparaqueo Zabbixentendacomocoletlo.NonossocasoestamosusandoSNMPvers o2,no caso de outros equipamentos a verso 1 (obsoleta) ou 3 (mais segura) pode ser usada.Consulteomanualdeseufabricante.Estaop orequerqueoservidorseja compiladocomsuporteanetsnmp(enablesnmp).Notequeoscamposabaixose alteramconformevocescolheoutrostiposdevalores.
Captulo 4 Monitoramento voltado para disponibilidade - 179 2) SNMP OID: coloque a object identifier da mtrica desejada conforme sua necessidade,nonossocasoDISMANEVENTMIB::sysUpTimeInstance. 3) SNMPCommunity:coloquea string decomunidadedoSNMP,normalmenteeste valorpublic. 4) SNMPPort:AportaUDPemqueoagenteSNMPestaouvindo,opadro161. 5) Key: invente uma key a seu gosto, ela s no pode conflitar com outras keys criadasourepetirumakeyregistrada.Parapadronizarocurso,todasaschavesde SNMPsodefinidascomosnmp.funo.Nesteexemploutilizamossnmp.uptime. 6) Units:repitaousadonoitemdoagente. 7) Usecustommultiplier:comooSNMP,retornaumvaloremcentsimosdesegundos temosquemultipliclopor.01paraconverterparasegundos. SalveoitemevatoOverview.
Figura 4.72: Overview exibindo os uptimes a partir do agente padro, Zapcat e SNMP
Novamente,issodemonstrouacapacidadeemcoletardadosdeambienteheterog neos, desdequevoc tenhaumagentesuportadonoh problemas.OagentepadrodoZabbix compatvelcom9sistemasoperacionaisdomercado,asJVMscomTomcate/ouJBossso suportadas pelo Zapcat e a maioria esmagadora de ativos de redes (desde switches at
4.7.1.Triggerparaalertadereinicializao
Avaliarseumhostfoireinicializado fcil.Devemosverificarseouptimedele menor queumvalorprestabelecido.Noentanto,reinicializa odeservidorespodenoumincidente crtico,defato,normalmenteele apenasumeventoplanejado(amenosquevoc possuauma hardwarecomproblemassrios),porissoiremoscategorizlacomoumeventodeseveridade warning(aviso).Noumerro,masaindaassimdignadeumaaten omaispontual.Vamoscriar atriggerparao4LinuxS.O.Baseprimeiro.
1) Expression: defina a expresso como sendo o ltimo valor da ltima hora como sendo menordoque1800(meiahora).Doispontosimportantesaqui:primeiro o tempodejaneladafunolast()devesersempremaiordoqueovalorcomparadoe segundo,otempodeativaodevesermaiordoqueotempodecoleta.
4.7.2.Exerccios
1) CrieastriggersparaostemplatesdoJBossedoSNMP. 2) Crieasdevidasactionsparaalertadereinicializa oenviandomensagensapenas aosindivduosresponsveisporcadahost(consulteaTabela 9 napgina 175 para detalhes).
4.8.Checandoserviospeloagente
Checar se um determinado servio est em funcionamento atravs de sua porta funcional,masalgumasvezesprecisamosdemaisinforma esdoqueexatamenteocorreuno host. Imaginequeporexemploaoinvsdequedadodaemon,umsistemaproteocomoo OSSECbarrouacidentalmenteaportadedestinodehostsleg timoscomooprprioservidorde monitoramento.Issonofoiumaquedadeservioeoutroshostspodemaindanoconseguirse conectar.Paradetectarestetipodecoisaprecisamosdemaisdadossobreosistemaondeo servioestasendoexecutadoepodemosfazloatravsdoagentedoZabbix.
4.8.1.Verificandoosprocessosativosnamemria
OZabbixtemumakeychamadaproc.numquepodeserusadaparaverificaronmero deprocessosnamemria.Seusadasemnenhumparmetroelafazumacontagemdetodosos processossemdiscriminao,paraexemplificarousodelevamosverificarseoprocessodoSSH estanamemriadasmquinasGnu/Linux. Asintaxedachaveaseguinte(todososparmetrossoopcionais): proc.num[<name>,<user>,<state>,<cmdline>] Onde, name: o nome do processo. Se voc estiver checando processos numa mquina Windows,certifiquesequeoprocessodelecontmaextenso.exe(ousimilar)nofinal donome. user:qual ousurioqueestaexecutando umdeterminado processoouconjuntode processos.Opadroverificardetodososprocessos.
Captulo 4 Monitoramento voltado para disponibilidade - 182 state:qualoestadodoprocesso.Podendoserall(padr o),run,sleepouzombie (esteltimosomenteemambientes*nix). cmdline:filtrapelalinhadecomando.Isso tilparaaplicaesquesempreiniciamo mesmoprocesso,comoojava. Emnossa prtica atual,o nico parmetro relevante o primeiro, poisvamosbuscar apenasumprocessobemdefinidodentrodamemria(odaemondoSSH).Paradescobrirqual oprocessousaremosocomandops.EntrenoconsoledoservidordoZabbixsrv. #psuax|grepsshi root11610.00.35496988?Ss14:090:00 /usr/sbin/sshd root35940.21.183042868?Ss14:400:00 sshd:root@pts/0 root36740.00.33316836pts/0S+14:410:00grepcolorssh O primeiro processo o daemon, o segundo uma conexo ssh acontecendo e o terceiro oprpriogrepnamemriaqueusamosnalinhadecomandoeportantopodeser ignorado.Notequeonomedoprocesso sshdenosimplesmentessh.Comissoemmos, podemossermaispontuaiscomo ps,aopoCpoucoconhecidaeusada,listaapenasos processoscomonomeindicado.Ela incompatvelcomasopesaex,porissousaremos emcombinaocomau,apenas. #psuCsshd USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND root11610.00.25496624?Ss14:090:00/usr/sbin/sshd root35940.00.883042204?Ss14:400:00sshd:root@pts/0 Guardeestaopodops,vocvaiprecisardelanofuturo. Vamosusarozabbix_getparacoletarainformaodachaveagora.
NoOverview,j podemosrastrearofuncionamentodacontagemdeprocessos.Note
Captulo 4 Monitoramento voltado para disponibilidade - 184 queonmerodeprocessosdohostZabbixServer estacom2porqueh umaconexossh ocorrendonele,nosoutrosapenasodaemon,aguardandoaconexo,estsendoexecutado. Comosdadossendocoletadojpodemoscriarumtrigger.
2) Eledevedependerdachecagemdeagenteporquenoh sentidoemtestaruma mtricaquedependedelamesmo.Almdissosenoofizermosestatriggervai resultaremumunknownseoagentecair. 3) Aseveridadedesteincidentevaiserclassificadacomo AveragepoisoSSHnoum servio prioritrio para o funcionamento das aplicaes, no entanto ele no um Warning,poisaindaclassificadocomoerroeprecisadeintervenoimediata. SalveotriggerevatoconsoledohostDatabaseeparaoSSH. #/etc/init.d/sshstop Acesse a lista de eventosem Monitoring Events para acompanhar a ativao do
TambmolhenoOverviewcomootriggerficouexibido.
4.8.2.Checagemdeportaseservioslocalmenteviaagente
Almdotestefeitopeloservidornaporta22/TCP,tamb mpodemospediraoagente para realizar o mesmo teste. Este tipo de teste de agente til para criarmos lgicas mais inteligentesdeanlisedocenrio. Akeynet.tcp.service[ssh]temomesmoefeitoecomportamentoquea ssh.Suasolene diferena queela dotipozabbixagent emvezdesimplecheck.Crieoitemconformea Figuraaseguir.
Apsacriaodoitem,verifiqueseacoletaestasendorealizada.Setudoestivercorreto, horadepassarparaaverificaodasmudanasdestatus.Atomomentotemos3maneirasde checaroservio:contandoosprocessosativosnamquina,checandoaportaremotamentepelo servidordoZabbixe/ouchecandoaportalocalmentepeloagentedoZabbix. Todas tem suas vantagens e desvantagens, mas em vez de us las de forma discriminada,vamosjuntaraforadetodaselasefazercomquealgicadetodososgatilhos trabalhememconjunto.Essacapacidadedeoferecerdepend nciaentreumachecagemeoutra queoZabbixoferecedeextremopoder,emesmosemexpressesbooleanascomplexasdentro decadatriggerseremoscapazesdedeterminarqualoposs velacontecimento,dependendode qualtriggerfoiativado.Acompanheaexplica oaseguir,comeandopelaleituradofluxograma naFigura4.80.
Osegundo, aanlise daportalocalmente a partirdoagente,se n oh processos escutandonaportaapartirdaprpriamquinalocalentooprocessomasterdaaplicao provavelmentecaiu.Notequesevocpararosshpeloserviodebootasconexesqueestoem andamentonosointerrompidas!Logopossvelterumasituaoondehprocessossshdna memria que esto apenas atendendo a conexes que foram estabelecidas anteriormente quedadoprocessoprincipalesvomorrerseestasconexesforemencerradas.
Captulo 4 Monitoramento voltado para disponibilidade - 188 Essetipodecomportamento muitocomumemserviosquesobaseadosemforks, como o Apache, o prprio Zabbix, muitos daemons escritos em Perl, etc. Programas que trabalhampuramentecomthreads,comoasaplicaesfeitasemjava,incluindoaquioTomcate oJBosstemumprocessomonolticoenoseguemestaregra. Finalmente, o terceiro trigger checa se servidor consegue abriruma conex o com a portaremotamente.Nocasodeumbloqueioporfiltrodepacotesnohostdedestinoounomeio docaminho,oufalhasderotas,estegatilho ativado.Estecasocobreaocorrnciadodaemon estaremperfeitofuncionamentomasospacotesderedenoestaremalcanandoodestino(ou noestovoltandoapropriadamente). Comooterceiros checadoseosegundoestivercomstatusOK,eeste ltimoseo primeiroestivercomstatusOK,oZabbixnogastaprocessamentocomostrsgatilhos,amenos quetudoestejanamaisperfeitaordem.Seumdosprim riosfalharementoosoutrosnosero executados. Obviamentepodehavermuitomaistiposdeproblemas,quev oalmdacontagemde processos e verificao de portas. Um binrio corrompido pode causar quedas de conexeslegtimasalgunssegundosdepoisdeseremestabelecidaspeloservi o,ou aindaelepodesempreretornarumerronacaradoclientesemsaircompletamentedo ar.Paraestescasoscontinueempilhandooutraschecagensap sverificarestastrs quegeralmenteestosemprepertodabase. Masvamoscontinuarcomnossaprticadirigidaecriarosdoistriggersquefaltam,pois oprimeirojestaprontodesdeotpicoanterior.
Captulo 4 Monitoramento voltado para disponibilidade - 190 J odaFigura 4.82 fazaverificaodaportaremotamenteetemcomodepend nciao segundogatilho.Outropontoimportante quesuajaneladetempo de70segundos(10amais queoanterior),estafolgaevitaqueambossejamativadossimultaneamente. Deixarumamargementre10e5segundosnajaneladeumtriggerquedependede outroumaboaprtica.
4.8.3.Exerccios
1) Agoratesteosgatilhosrealizandoasseguintestarefas: 1.1) Pare o daemon ssh de um Gnu/Linux sem conexes abertas para ele (somenteoprimeirogatilhodevedisparar).Restaureodaemon. 1.2) PareodaemonsshdeumGnu/Linuxcomaomenosumaconex oaberta (somenteosegundogatilhodevedisparar).Restaureodaemon. 1.3) Cortearegra deSSHdosfiltrodepacotes(iptables)deumdosGnu/Linux, somenteoterceirogatilhodevedisparar.Restaurearegraapsotermino.
4.8.4.VerificandoserviosnoWindows
Assim como o Gnu/Linux, o Windows tem seu sistema de gerenciamento do servi os ativosnamemria.Usamoselenotpico2.7.1.,pgina50paraexecutaroserviodoagentedo Zabbix.AcesseoPaineldeControlesFerramentasAdministrativasServios. Natelaquelistaosservios,localizeoserviodeTelnet.Eledeveestardesativado.
Confiraseumdosprocessosbatecomonomedoservi o.Provavelmentevocacharo processotlntsvr.exe.Anotetambmestenome. Antes de cadastrar novos items vamos fazer um pequeno teste via console: use o zabbix_getparacoletaronmerodeprocessostelnetnamemria(deveretornar1). NovamentelembramosquenoWindows,deveseincluiraextens o.exenofinaldos processosparaakeyproc.num. #zabbix_getswin2003k'proc.num[tlntsvr.exe]' 1 Agoravamostestarakeyservice_statequefazaverificaodosserviosdoWindows noZabbix.UseonomequepegamosdasconfiguraesdoTelnetcomoparmetrodela. #zabbix_getswin2003k'service_state[TlntSvr]' 0
Notequeoresultadofoizero.Issoporquezerosignificarodando,experimentepausaro servionoWindowseexecuteocomandonovamente. #zabbix_getswin2003k'service_state[TlntSvr]' 1 Agoraretornou1.Sim,parececontraprodutivo,masestatabelafoibaseadaemn meros queaprpriaAPIdosistemaWindowsretorna.OsvalorespossveisestonaTabelaabaixo. Valor 0 1 2 3 4 5 6 7 255 Table 10: Valores da key service_state Mas isso ainda no suficiente. Temosque pedir ao Windows que libere a porta do FirewallparaoacessoaoTelnet.Porpadrotodosostelnetsusamaporta23/TCP.Acesse PaineldeControlesFirewallparaabriraspreferncias. Rodando Pausado Incio requisitado Pausa requisitada Continuao requisitada Parada requisitada Parado Desconhecido Servio no existe (no esta cadastrado na lista de servios do Windows) Estado
Clique em Adicionar Porta... e preencha a janela que aparecer conforme indicado a seguir.
Porfim,cliqueemOKnovamente.Paraaveriguarsetudoestacorretofaaumtestea partirdoconsoledohostZabbixserver.
#nmapP0p23win2003 StartingNmap5.00(http://nmap.org)at2011021518:39BRST Interestingportson172.28.0.10: PORTSTATESERVICE 23/tcpopentelnet Nmapdone:1IPaddress(1hostup)scannedin0.31seconds #telnetwin2003 Trying172.28.0.10... Connectedtowin2003.curso468.4linux.com.br. Escapecharacteris'^]'. WelcometoMicrosoftTelnetService login:administrador password: *=============================================================== BemvindoaoMicrosoftTelnetServer. *===============================================================
Nenhuma grande novidade aqui, apenas atente para a key e para o campo New application.OutropontoimportanteousodoValuemapWindowsservicestate.
VerifiquequenoOverviewoservioestaaparecendoefuncionando.
4.8.5.RestabelecendoserviosofflineviaZabbix
Umavisodecautelalogonoincio.Permitirqueoagenteexecutecomandosremotos nohostmonitoradopodecausarfalhasdeseguran asenohouvercuidadotriplicado. Somenteuseesterecursosevoc realmenteprecisaretiverabsolutacertezadoque estafazendo. Um recurso poderoso a capacidade do agente do Zabbix de executar comandos remotosapedidodoservidor.Issopossibilitaquesejamoscapazesderestaurarumservi oque caiu,oureiniciarumqueestcomproblemasnoatendimentoderequisies. Obviamente o agente por padro no executa nada, tampouco capaz de executar comandosadministrativosarbitrariamente.Issosedeveadoisfatos:osdefaultsdosarquivosde configuraoeaexecuododaemondoZabbixcomousurionoprivilegiado. Nossaprimeiraprioridade justamenteliberaroagenteparaexecutaroscomandos.O arquivo /etc/zabbix/agent.d/remote_command.conf cont m as configuraes para tal procedimento.ElejaumadasmquinasvirtuaisGnu/Linuxecomecearealizarosprocedimentos aseguir. #vim/etc/zabbix/agent.d/remote_commands.conf
1
3 4
========================================================================
5
10
#questoenviadopeloservidor.Paraissoouele executadocomoroot #(desaconselhvel)ouchamaexecutveiscomsuid(desaconselhvel)ouutiliza #sudopararodaroscomandos.Esteltimoaopomaisseguradastrs,mas #requerconfiguraesextrasnoarquivosudoers. # EnableRemoteCommands=1 # #Nocasodehabilitadaaexecuodecomandosremotos,aconselhveldeixar #estaopoativadaparaauditoriadosistema.Elavairegistrarnoarquivo #delogsdoagentequandoequalcomandofoiexecutado(ounom nimofoi #tentado). # LogRemoteCommands=1
12
13
14
15
16
17 18
========================================================================
19
20
21
22
23
24
#/etc/init.d/zabbixagentrestart preciso mudar para 1 ambos EnableRemoteCommands e LogRemoteCommands. Seusnomessobemsubjetivos,eapesardenohavernecessidadedeativarosegundopara queacoisatodafuncioneextremamenteaconselhvelfazlo. J estamos ampliando bastante a confian a do agente no servidor, vamos ser cautelososeaomenoscolocarastentativasdeexecu odecomandosnoslogspara auditoria. recomendvelquevocdesabiliteoarquivodelogtambmefaaoagentegravarno syslog,dessaformaelenoterdireitodeescritanosarquivosusadosparaarmazenar suasmensagens. Agora a segunda parte: como usurio zabbix, o agente no ser capaz de iniciar nenhum servio do Gnu/Linux, somente o root pode fazlo. Ento vamos apelar ao sudo novamenteparaexecuodocomando(instaleosudosenecessrio). Configure o sudo para permitir que o agente execute sem senha o script de reinicializaodossh.
#visudo zabbixALL=NOPASSWD:/usr/init.d/sshrestart
Nascondies,importantenotarquehtrsdelas.Umaindicaqueostatusdotrigger deveserPROBLEM.
Uma mensagem para os envolvidos com esse host deve ser enviada. E por fim o comandoremoto,ativadoapartirdoquadro Actionoperations.
1) Operation type: escolha Remote command ao invs do valor para envio de mensagens.Notequeocampoabaixovaimudar. 2) Remotecommand:voc precisacolocarocomandocomasintaxeHost:command, ondehost olocalondeocomandoser executado(ondevoc habilitouocomando remoto no agente) e command o comando propriamente dito. No nosso caso usaremosDatabase:sudo/etc/init.d/sshrestart. Vocpodeusarmacrosnoscomandosepodeinvocarquantoscomandosvoc quiser, emquaisquerservidores,emqualquersequncia. Agora vamos ao teste: v at o host no qual voc configurou o agente para aceitar comandosremotosepareoserviodeSSH,emseguidaabraologeaguarde.
Captulo 4 Monitoramento voltado para disponibilidade - 202 #/etc/init.d/sshstop #tail/var/log/zabbix/zabbix_agentd.logf 7287:20110215:192625.462Executingcommand'sudo/etc/init.d/sshrestart' StartingOpenBSDSecureShellserver:sshd. Sevocvoltarteladeeventosverquehdoisdeles,umdequedaeoutrodevolta.
4.8.6.Exerccios
1) CrieomesmoesquemademonitoramentofeitoparaoSSHparaoApachedentrodo application. Gere um template a parte para o Apache para conter os items e configuraes.Tambmcrieumaactioncapazdereiniciaroservi osefordetectado quenenhumdaemondoapacheestarodando. 2) CrieumtriggerparaavaliarseumserviodoWindowsnoestarodandoeuma action para alertar o administrador Windows. No corpo da mensagem coloque o estadoemqueoestadoseencontravanomomentodoalerta.Useamesmat ticade checagemdeportasemltiplosgatilhos.
4.9.Medindoasadedesuarede
At o momento nossos esforos foram dirigidos a checagem de dados que indicam apenasseumdadohost(ouservio)est operacionalouno.Vamoscomearaabordaroutros tpicos, que embora, indiretamente relacionados com os servi os podem afetar seu funcionamento. Estetpicoabordaapartedenetworkingemostracomomonitoraroqu osaudvelsua redeest.
4.9.1.Latnciaderede
Oprimeiropontoquevamosanalisarsoascausasdeindisponibilidadeporexcessode trafegonarede.Notequemedirabandapodeajudaraidentificargargalosderede,masam trica maisindicadaparamedirlentidoalatnciaderede,quepodeestarbaixamesmoquandon o h trafego!Comosemprevamoscomearcomacriaodoitemdentrodotemplate4Linux ICMP.
Neste item, atente para o campo Units que contm o valor s (segundos). Ele ir formatarovalorrecebidopeloitemparaumaformaleg velporsereshumanos.Emaisimportante, desta vez Type of Information esta como Numeric (float), porque o retorno da key icmppingsec emsegundos,masnormalmenteostemposderespostass oquebradosemtrs casasdecimais(milissegundos).
4.9.2.Macroparaolimiardalatnciaderede
Umpontomuitoimportante definiroque umalatnciaruim.Isso muitovarivelde umambienteparaoutro,sevocestivermedindoalatnciaemumaredelocalento, provvel que uma latncia acima de 10 milissegundos seja alta. No caso de medir a lat ncia de um equipamentocomlinkviasatlite,podemosencontrarlatnciasdealgunssegundoscomopadro dependendodatecnologia. Para deixar nossos templates flexveis o suficiente para se adequarem a quaisquer ambientes podemos usar um recurso muito interessante do Zabbix chamado macros de usurios. Existemtrstiposdeescopodemacro:global(definidoem Administration General) quevaleparatodosostemplatesehosts;macrosdetemplates,cujoalcancevaleparatodosos hostsassociadosaumdadotemplateemacrosdehost,quevales paraaquelehost.Sevoc redefinir(comovamosfazer)umamacronumambientemaisrestrito,oqueir valerser este ltimo. OZabbixtemvriasmacrosinternasej tivemoscontatocomalgumasquandocriamos nossostriggers.{HOSTNAME},que amaiscomum,armazenaonomedohostdefinidodentro dofrontend.Quandodefinirmosumamacrodeusurio importantequeemsuasintaxeum sinaldecifro($)sejacolocadoantesdonomeedentrodaschaves. Porexemplo,vamosdefinirumamacroparalat nciaderedecomonomeLATENCIA, logosuasintaxeser{$LATENCIA}.Eviteousodeoutroscaracteresnonomedamacroexceto porunderline (_). Tambm no comece onomeda macro pornmeros. uma boa prtica manterosnomesemcaixaalta. No caso de nosso cenrio iremos definir um padro de 0.01 segundos (10 milissegundos)paranossamacro,elavaiserumamacrodetemplate,maisespecificamenteo template 4Linux ICMP. Abra as configuraes do mesmo clicando no nome dele em Configuration Templates. No canto direito do quadro principal voc vai achar a rea de definiodemacros.
Agrandediferenadestetemplateparaosanteriores ousodamacro.Presteateno no campo Expression, seu valor indica a frmula {HOST:ITEM.avg(60)}>{$LATENCIA}. Podemosinserirquantasmacrosquisermosnaexpressodogatilho. A partir de agora se reutilizarmos estes templates em outros ambientes, podemos adequaralatnciaderedeglobalmentealterandoovalordamacronotemplate.Nocasodeum doshostsemnossosistematerumlimiardiferentedelat ncia,podemosaindaredefiniramacro dentrodoprpriohost,alterandoassimocomportamentodeseutriggerpontualmente.
4.9.3.Nossoprimeirogrfico
Vamosagoracriarumgrficoqueir usarestetriggerparaexibirolimiardetestena tela.OresultadosersimilaraodaFigura4.99.
VatateladecriaodegrficosecliqueemCreateGraph.Sigaasinstruoabaixo paraconstruirumgrficocomodemonstradoacima.
3) Graphtype:otipodegrfico,aquivamoscriarumNormalmaspodemosconstruir grficos Stacked (empilhados), Pie (Pizza) e Exploded (pizza com valores destacadosparaforadareadogrfico.NossoexemplousaSimple. 4) Showworkingtime:seativo,mostraumasombranoshorriosforadoWorkingtime definidoemAdministrationGeneralWorkingtime. 5) Show triggers: exibe uma linha pontilhada como demonstrada anteriormente no limitardotrigger.Deixeeleativo. 6) YaxisMIN/MAXvalue:valoresmnimoemximodogrfico. tilparadefiniruma escaladevisualizao.Nonossocasovamoscolocarapenasovalorm nimode0 (assim o cho de nosso grfico sempre se manter em 0) e o mximo em Calculated,poisnotemoscomosaberondeestaotopoparacadaambiente.Em algunscasos,comoemporcentagens,normalmenteom ximo umvalorfixo,em outroselepodeserovalordeumitem. 7) Items:aquipodemosdefinirquaissooscamposquedesejamosincluirnogrfico. Procuresempreusaromnimopossveldeinformaonestecaso.Paraacrescentar umItemcliqueemAdd.Ajaneladenovoitemparaogrficoseabrircomoaseguir.
1) Parameter:qualkeycadastradanotemplateesteelementorepresentar. 2) Type:se esteitem Simple ou Agregated.Campos agregados agrupamvrias contagememum nicovalor.So teispara visualizaodevariao commenor granularidadenumdadoespaodetempo.Porexemplo,sevoc quiserapenasa mdia,dehoraemhora,aoinvsdeusarointervalodecoleta. 3) Function:qualvalordevesermostradosehouveraexist nciademaisdeumvalor porpixelnoeixox.Asfunessoavg(mdia,omaiscomum),max(mximo), min (mnimo)ouall (todosostrs).Emvariaesmuitobaixas,all podeno exibirnadasignificante.
4) Drawstyle:Comoalinhaser desenhada.Osvalorespossveisso:Line (linha simples), Filled region (rea preenchida), Bold line (linha mais espessa), Dot (pontos), Dashed line (tracejado) e Gradient (rea com gradiente da cor gradativamenteindoparatransparente).Estegrficousaalphablender. 5) Colour:obviamenteacor. 6) Yaxisside:Seosvaloresdesteitemseroexibidosdoladoesquerdooudireitodo grfico. 7) Sortorder:umnmeroindicandoaordemdedesenhonogrfico,vaide0a100. Voc podeordenaroselementosdosgrficoscomodesejarnateladeconstruodo grficodepoisdeacrescentartodoseles. Clique em Save em ambas as telas e o grfico estar pronto para exibio em MonitoringGraphs. ObotodePreviewqueexistenateladeconstruodosgrficosnosercapazde exibir os grficos se voc estiver acrescentando ele a um template como estamos fazendo.Elesfuncionanocasodeumgrficosercriadodiretoemumhost.
4.9.4.Personalizandoomapaparaexibiodeinformaes
O mapa do Zabbix extremamente personalizvel, e permite que visualizemos praticamentequalquervalorquecoletamoseprocessamos,desdeitemsat triggers.Vamos aproveitarquecoletamosvriasmtricasimportanteseassocilasaomapa.Oresultadofinal deveficarcomonaFigura.
Paradefinirestesvalores bastantesimples:editeaoitemdehostclicandosobreelee preencha,linhaalinha,osvaloresdocampo Label.Noexemploquevimos,vrioshostsexibem o Uptime obtido de {Host:system.uptime.last(0)} e de latncia de rede, obtido de {Host:icmppingsec.avg(60)}.Atenoespecialaosegundo,poisusamosafun oavgeno last,issototalmentepermitido. NaFigura4.103temosumexemplocomohostPresentation.Apseditarovalorclique emApply.
NoesqueadesalvaromapaconstantementenobotoSave.
4.9.5.Exerccios
1) Assimcomooicmppingsec estaparaoicmpping,vriaskeyscomsufixo_perf esto para os equivalentes das simple checks de portas TCP. Por exemplo, ssh_perfamediodelatnciaparaoservidordeconexesremotassegura.Crie ositemsegrficos(vejaoexemploabaixo)paraosoutrosservi osquevocjcriou anteriormentededisponibilidade.Cadastremacrosparamedirolimiarefinalizecom ostriggersdosmesmos. Emsaladeaula,criepelomenosumdeles,osoutrospodemserfeitosemcasa.
4.10.Espaodisponvelemdisco
Alatnciaderedepodemedironvelderespostafinaldasaplicaesdisponibilizadasvia TCP.Masumitemextremamentecrtico,poispodecausarparadasdeservi osabruptamente,o espaodisponvelemdisco.
Vrios daemons simplesmente saem de funcionamento porque n o so capazes de escreverempartiesdelogs,ebancosdedadosepastasdeusu riossemprepodemexceder asestimativasprevistas.Porissoimportantequeverifiquemosambasasparti esdesistemae dedadosdentrodeumservidor. ComoexemploiremoscriarumaverificaodaraiznosGnu/Linux.Depoisestenderemos o mesmo princpio ao Windows. Outro ponto que nos servidores sempre existem vrias parties(aomenosnosbeminstalados),eporissotemosqueterm ltiplositemsparacobrir todososcasosedeixarmargem,atravsdemacros,parapartiescomnomespersonalizados peloadministrador. Porfim,destavezteremosquecoletarvriasmtricas(aomenostrs)paracriaodos grficosetriggers.Espaototal,usadoelivre. Existem outras mtricas como porcentagem utilizada e livre do disco (pfree e pused),almdeitemsbaseadoseminodes.ConsulteomanualdoZabbixpara maisdetalhes. Antesdecomearacriaritemsvamosdefinirumvalorlimiteparanossostriggerscomo fizemos na latncia de rede. A utilizao dos espaos em disco pode variar muito entre os servidores. Todas as nossas aes sero dentro do template 4Linux S.O. Linux. Comece criandoamacroconformeabaixo.
Captulo 4 Monitoramento voltado para disponibilidade - 212 pused (porcentagem utilizada) e pfree (porcentagem livre). Vamos usar apenas os tr s primeiros,comeandopelototal,conformeaseguir. Oagentenoverificaseodiretriocolocadonoparmetro araizdeumpontode montagem.Nocasodenoser,elecontinuar obtendoovalordoespaodapartio comoumtodo(pensenelecomoumdfaoinvsdeumcomandodu.
1) Description:aquitemosumanovidade:umavezqueestamosusandopar metrosna key,podemoscapturloseinserilosnodescriptionusandoanotifica o$n,onde n onmerodoparmetrocomeandopor1.Emnossoexemplousaremos$1 parapegaropontodemontagemdaparti o.Issoaliviabastanteadigitao,poisos outrositemsqueiremosclonarnoprecisamterdescriptionsmuitodiferentes. 2) Key:achavedeespaoconformeexplicadoanteriormente.Paraototalsuasintaxe finalvfs.fs.size[/,total]. 3) Units:brepresentavaloresembytes.OZabbixinteligenteosuficienteparafazer asconversesparakilo,mega,giga,tera,etc.Usandomltiplosde1024.
EditeoitemdeEspaototalecliquenobotoClone.
Voc ver que os dados se repetiro. Altere apenas a key (que deve ser nica) e o description.Repitaparaooutroitemevoc ter outrasduasmtricasprontasecoletandoem tempo recorde! Confira no Overview se os dados esto sendo coletados adequadamente (atentandoparaqueelesestejamemnotaoabreviada,Mb,Gb,etc).
4.10.1.Grficosparaespaoemdisco
Vamoscriardoisgrficosparavisualizaodeespaoemdisco:oprimeiro umgrfico depizza(tambmchamadosdetorta,masonomeoficial grficocircular)paramostraroatual volumedeusododisco.Apesardeparecerin til,estetipodegrficotemumavantagemgrande sobre o de linha: ele exibe de maneira visual o estado atual com propor es facilmente reconhecveisporolhoshumanos.VejaaFigura4.109,queilustraogrficoquevamoscriardaqui apouco,facilmenteconseguimosverqueestaparti oestacommaisde50%ocupadasomente olhandoparaogrfico. Novamente, como usamos o campo Unit igual a b, os valores j aparecero convertidoseabreviadosparafacilitarleiturahumana.
Paragerarumgrficocomoessesigaospassosaseguir.
Noh muitossegredosnestatela,aoselecionar PieemGraphTypemenoscampos iro aparecer no formulrio. Vamos deixar a legenda ativa. Podese fazer grficos em 3D se desejado, mas no h grandes vantagens neles em relao aos normais em termos de visualizao,apenasesttica. Notequevamosutilizardoisitemsaomesmotempo:espa outilizadoelivre. Foi usado vermelho para o espao utilizado por um bom motivo, as cores quentes tendemaatrairoolhohumanoquandoemcontrastecomcoresfriasoumaisclaras. Isso faz com que inconscientemente o administrador ou suporte, fixe no espa o utilizadooqueocrticonestecaso.
Captulo 4 Monitoramento voltado para disponibilidade - 215 Enquanto o grfico circular indicado para mostrar o ltimo status de vrios items relacionados,proporcionalmenteeleocultaohist ricodoespaoocupado.Porissoprecisamos criar,tambm,umgrficosimples.Oprocedimento similaraoanterioreresultar nogrficoda Figura4.111. Seudiferencialquevamosusarumlimitesuperioraoinvsdeumlimitecalculado.Para indicarotopodogrficovamosapontarparaoespaototaldapartioobtidoatravsdeumitem.
Crieumgrficocomoantes,masatenteparaodetalhesemdestaqueabaixo.
Aps acrescentar o item de espao utilizado, no campo Y axis MAX value escolha Itemeselecioneoitemdeespaototal.Issovailimitarotopodogrficoedarumavisualizao maisprecisadoespaoqueest sendoutilizadoemrelaoaototal.Sevoc noofizeretiver porexemplopoucoespaousadoogrficoficar ajustadoaotamanhomximoatingidooque podelevarumobservadordesavisadoainterpretarcomodiscocheio!
4.10.2.Gatilhosparaalertasdeespaoemdisco
Agoravamosusaramacroquedefinimosanteriormenteparacalcularovolumededisco usado.Paraissovamosusarumafrmulapara,apartirdototal,saberqual aporcentagemem bytesqueapartioterdelimiar.Aexpressolgicomatemticaseria. ESPAO_USADO>(ESPAO_TOTAL*LIMITE/100) Sendoque: ESPAO_USADO:amdiadajaneladetempodoespaoutilizadonapartio. ESPAO_TOTAL:oltimovalorcoletadodoespaototaldapartio. LIMITE: o valor definido em nossa macro, representando a porcentagem de limite (padro80%)paraaveriguaodeestourodeusodedisco. Noteque,voc poderiausaropusedparapegaraporcentagemutilizadaaoinv s destafrmula,masissoacrescentamaisumitemnomonitoramento.Al mdomais esteumexemplobemdidticoparaexpressesmaiscomplexas. NocasodenossocenrioaexpressocompletaapresentadanaFigura4.113ecalcula exatamentequantosporcentosdeusodapartioapresenta.
Noteaindaque,comosempre,colocamosumadependnciaao AgentPingparaevitar testescomvaloresinexistentequeresultamemUNKNOWN. Verifiquesealgumamquinaexcedeuoespaoeacionouo trigger.Nestecasovoc deveaumentarovalordamacro paraaquelehostsomente.Isso umcasoatpicononosso cenrioentootrataremoscomoumaexceo. ParatestarotriggeruseoseguintecomandoemumadasmquinasGnu/Linux: #ddif=/dev/zeroof=/tmp/lixobs=1kcount=$((200*1024)) Issovaigerarumarquivode200Mbno /tmp.Mudeotamanhodoarquivoconforme acharnecessrioparafazeroteste.Deixeelel at otriggeralarmaredepoisapagueopara liberaroespaoeforaratrocadeestadoparaOK.
4.10.3.Exerccios
1) Cloneositemscriadosparaaparti o/alterandoparaasparties/usr,/var, /tmp,/boote/home(asnormalmentecriadasnumainstala o).Repliquetambm as macros, os grficos e os triggers. Deixetodasestasmtricasegatilhoscomodisabledporpadro!Elasdependemda instalaodeGnu/Linux.Emsalarepliqueaomenosuma,asoutraspodemserfeitas emcasa. 2) CrieasmesmasmtricasparaoWindows,mascomaspartiesdeC:atG:.Em salacrieaomenosuma,asoutraspodemserfeitasemcasa.
3) Desafio: crie mtricas que checam parties personalizadas pelo administrador, usandomacrosparadefinirospontosdemontagem.
4.11.Scriptsexternos
Fizemos vrias checagens at o momento usando os recursos do Zabbix. Mas nem sempreteremostudoamo.Estetrechodocursoensinaaestenderoagentedetalformaacriar novaskeysatravsdachamadadescriptsexternos. Alm disso algumas mtricas do Windows s podem ser obtidas pelo sistema de performancecountersqueumtipoderegistrodecoletadeperformancepadrodoWindows. Veremoscomoutilizarambosparaadicionarmaispoderdefogoaonossoarsenalde monitoramento.
4.11.1.ChecandoadisponibilidadedoPostgreSQL
OZabbixnotemsuporteatodososprotocolosTCPdafacedaTerra.Defatoissoseria umfeitoimpressionanteparaumaplicativodemonitoramento.OprotocolodoPostgreSQlesta entreosnosuportados,eemboratenhamosutilizadokeyscomotcpetcp_perfparamedir suadisponibilidadepodemocorrersituaesondeobancoaceiteconexesmasnoresponda nada,ouofaamuitolentamente. Nestescasosiremoscriarumaextensodoagenteaptaarealizaruma nicaconsulta (SELECT1)everificarseeleretornouovalorcorreto.Estaextens ovaichamarumscriptcriado embashqueacionalocalmenteoservidor,fazaconsultaedeterminaoresultado.Prepareos conhecimentosdeshellscript,respirefundoevamoscome aracessandoohostDatabase. Oprimeiropassopermitirqueousuriozabbixseconecteaobancosemanecessidade de senhas. Isso necessrio porque o comando ser executado automaticamente sem a intervenomanualdeumadministrador. Comovamosusaropsql,clientepadroviaconsoledoPostgreSQL,podemosusarum artifciointeressantecomoarquivo.pgpass.Estearquivodeveficardentrododiretriohomedo zabbixedeveconterumastringcomosparmetrosdeacesso.Cadapermissodeacessodo
Captulo 4 Monitoramento voltado para disponibilidade - 219 usuriozabbixdeveestaremumalinha(assimpodemosacessarm ltiplosbancosdedados). Oformatodaslinhasdestearquivoseguemasintaxe: hostname:porta:basededados:usurio:senha Enonossocasovamosacessarobancoprincipaldosistemapostgres,logoovalorfinal ser localhost:5432:postgres:zabbix:zabbixdb.Osseguintescomandoscriamoarquivo,ajustam suapermissoefazemotestelocal. #suzabbix $echo"localhost:5432:postgres:zabbix:zabbixpwd">.pgpass $chmod0400.pgpass $psqlhlocalhostUzabbixpostgrescSELECT1; 1 $logout Apermissodoarquivo.pgpassdeveser0600ou0400eodonodoarquivodeveser ousuriozabbix. Aindatemosquecriarousuriozabbixdentrodobancocomasenhazabbixpwd. #supostgres $psqlpostgres postgres#CREATEROLEzabbixLOGIN; postgres#\passwdzabbix Digitenovasenha:zabbixpwd Digiteanovamente:zabbixpwd postgres#\q Agora vamos criar um arquivo para conter as configura es do script. Ele vai conter apenas uma varivel por enquanto. Mais a frente vamos colocar outros valores aqui para o conjuntodescriptsdoPostgreSQL. #vim/etc/zabbix/pgaccess.conf
1
HOST=localhost
Enfimchegamosaoscript.BasicamenteeleexecutaocomandopsqlcomoSQLde testes e verifica se tudo ocorreu bem. Mas h algumas partes do script que merecem um destaque. #vim/etc/zabbix/externalscripts/pgsql_ping.sh
1
#!/bin/bash BASE="/etc/zabbix" CONF=$BASE/pgaccess.conf QUERY_PING="SELECT1;" ERROR_LOG=/var/log/zabbix/pgsql_ping.error functionshowerror{ echoe"PostgreSQLpingerror:\n$(cat$ERROR_LOG)"1>&2 } if[r$CONF];then .$CONF fi PING_OK=1 PING_FAIL=0 PING=$(psqlh$HOSTc"$QUERY_PING"postgrestA2>$ERROR_LOG) RETURN=$? if[[$RESULTne0]];then showerror exit1 else if[[$PINGeq1]];then echo$PING_OK else
2 3
7 8
10
11 12
13
14
15 16
17
18
19
20 21
22
23
24
25
26
27
showerror echo$PING_FAIL fi fi exit0 1) O primeiro destaque do script justamente o comando que faz o SELECT 1 e armazenaseucontedoemumavarivelchamada$PING. Notequeopsqlest usandoosparmetrosteAparaqueocomandoretorneapenasumvalor1.No casodealgumerroovalorde$PINGserdiferentede1. 2) Oretornodocomando verificadoenocasodeerros,umamensagem gravadana sadadeerroseoscriptparacomretorno1.OZabbixtrataistoenviandoasa dapara ozabbix_agentd.log. 3) No caso do SELECT ser bem sucedido, o valor retornado ser 1 (definido no cabealhodoscript). 4) Casocontrriooscriptretorna0egravaumamensagemnologindicandoporque. Notequeocomportamento,de1significasucessoe0parafalha,replicaopadr odas
29
30
31
32 33
keysdedisponibilidadequevimosanteriormente.Issoajudaamanteropadr oepermiteousodo valuemapsquecriamos. Todo script de comando externo deve retornar um, e apenas um valor! Repita isso consigomesmo!NohcomopegarvalorescompostosnoZabbixetrabalharcomeles individualmentedepois.Cadaitemarmazenaumsinglecontent. Agoravamoscriarumanovakey pgsql.ping,dentrodoagente.Paraissousamoso UserParameter,dentrodeumdosarquivosdeconfiguraodoagente.Asintaxedestalinha: UserParamente=key,comando arg1 arg2 ... No caso de nossa necessidade ficar como a seguir. #cat/etc/zabbix/agent.d/pgsql_checks.conf
1
UserParameter=pgsql.ping,/etc/zabbix/externalscripts/pgsql_ping.sh
Temosqueacertaraspermissesdosarquivosereiniciaroagente. #chownroot.zabbix/etc/zabbix/pgaccess.conf/etc/zabbix/agent.d/pgsql_checks.conf /etc/zabbix/externalscripts/pgsql_ping.sh #chmod0640/etc/zabbix/pgaccess.conf/etc/zabbix/agent.d/pgsql_checks.conf #chmod0750/etc/zabbix/externalscripts/pgsql_ping.sh #/etc/init.d/zabbixagentrestart J podemos fazer o teste local, o script deve retornar o valor 1. #suzabbixc/etc/zabbix/externalscripts/pgsql_ping.sh 1 ApartirdoZabbixservertesteoacessoanovachave.Oresultadotambmdeveser1. #zabbix_getsdatabasek'pgsql.ping' 1 Setodosostestesforamresolvidos omomentodevoltaraofrontend.Crieumnovo template4Linux PostgreSQL 8.4 on Linux, ele devedependerdo template4LinuxS.O. Linux.Depoisentrenohost Database,removaotemplate4LinuxS.O.Linux peloboto Unlink (conservandoassimosdadoscoletados)eadicioneonovomodeloconformeaFigura 4.114.
VerifiquesenoOverviewosdadosestosendorecebidos.
Comissojpoderamoscriartriggersefazeromesmoescalonamentodegatilhospara averiguarqualtipodeerropodeacontecer.
4.11.2.MedindoadisponibilidadedeumlinkInternet
Agorafaremosumabordagemdiferente:vamosmediralat nciadolinkdeInternetapartir dohostPresentation(assimpodemosobterumvalorpuroentreohostdebordaeogateway daoperadora). Estescript,umpoucomaiscomplexoqueoanterior,permitequecoletemosam diade latnciaentreumconjuntodesites. #vim/etc/zabbix/externalscripts/internet_perf.sh
1
2 3
6 7
if[[!x$BC]];then showerror"aplicativobcnoinstalado" exit1 fi if[[!r$CONF]];then showerror"arquivo$CONFnoexisteounoestaacessvelparaleitura" exit1 fi NTESTS=$(wcl$CONF|cutf1d"") SUM_AVG=0 fordestinationin$(cat$CONF);do PING=$(pingnc1w1W1$destination2>&1) if[[$?eq0]];then AVG=$(echo$PING|cutf34d""|cutf2d"/") SUM_AVG=$(echo"scale=3;$AVG+$SUM_AVG;"|bc) else NTESTS=$(($NTESTS1)) showerror"pingpara$destinationfalhoucomerro:$PING" fi done if[[$NTESTSeq0]];then showerror"Todosostestesfalharam" exit1 fi echo"scale=3;$SUM_AVG/$NTESTS/1000;"|bc exit0
12
13
14
15 16
17
18
19
20 21
22
23
24
25
26
27
28
29
30
31
32
33 34
35
36
37
38 39
40 41
1) Estetrechoocorpoprincipaldoscript,elepegaoarquivodelinks(abaixo)erealiza umpingemcadaumdosendereosl dentro.Paracadacoletabemsucedidaele somaamdiaqueocomandoretorna(emmilissegundos). 2) Nosegundotrechoapartirdoresultadodasomaedaquantidadedetestes obtidaa mdia final e convertida para segundos (assim podemos usar o Unit s para formatarasada). O arquivo de links pode conter tantas entradas o quanto quisermos, mas n o recomendvelquehajamaisdoque5,que otempolimitequeoZabbixesperaporumscript executarantesdedesistireretornarnulo. #vim/etc/zabbix/internet_perf.links
1
nossoscript. #vim/etc/zabbix/agent.d/internet_perf.conf
1
UserParameter=internet.perf,/etc/zabbix/externalscripts/internet_perf.sh Finalmenteacerteaspermissesdosarquivos.
#chownroot.zabbix/etc/zabbixR #chmod0640/etc/zabbix/internet_perf.links/etc/zabbix/agent.d/internet_perf.conf #chmod0750/etc/zabbix/externalscripts/internet_perf.sh J podemosfazerostesteslocaiseosremotosconformemostradonot picoanterior. Tambmj podemoscriarasmacros,items,triggersegr ficosseguindoamesmafilosofia. Somentemudeoseguinte:paraoitemegatilhodeixeosdesabilitadosnotemplate 4LinuxS.O. LinuxehabilitesomentenohostPresentation. ParaconcluirmoscomoutranovidadevamoscolocarnolabeldolinkdeInternetovalor mdiodosltimos60segundosdecoleta(Figura4.116).
Abraolinkeediteosvaloresdeseuscamposcomoaseguir.
Figura 4.117: Latncia de rede e trigger associados ao link com a Internet no mapa
Note como o link mudoude cor(Figura 4.118) quandoo host acusoualta latncia de Internet.
4.11.3.Exerccios
1) Desafio: Crie um script externo capaz de ler a temperatura dos processadores e armazenlosnoZabbix.Oscriptdevereceberumparmetroindicandodequalcore devesercoletadoatemperatura(0primeiro,1segundo,eassimpordiante).Crie aomenosumgrficoparavisualizarovalorcoletadodoscores.
- 228
REFERNCIAS BIBLIOGRFICAS
- 229
- 230
AnexoI PerformancedoSistemaOperacional
Introduo
Aquivamospassarasdicasemtricasquepodemserusadasparamonitorarasquatro principaiscaractersticasdedesempenho.UsodeCPU,memria,throughputderedeeI/Ode disco.EstecaptuloutilizaotemplatecompletodoGnu/Linuxparacoletadetodasasinforma es.
Processamento
Esta primeiramtricadeperformanceque,geralmente, observadaquandoosistema ficalento.Algumasconsideraesdevemserfeitasquandosebuscamonitoraroprocessamento paraidentificargargalos: 1) 100%deprocessamentonoquerdizernada! 1.1) Picos de processamentos so mais corriqueiros do que imaginamos, eles acontecem frequentemente, mas so to momentneos que nem os percebemosmesmoemgrficoscomcurtosintervalosdecoleta.Sempreque procurarporeles,concentreseapenasnosdelongadura o.
- 231
1.2) SevoccriargatilhosdeverificaodeCPU,faaoscomumajaneladetempo razovel. O aconselhado que ela seja em torno dos 15 minutos, se o processamento ficou muito alto, por tanto tempo assim, provavelmente h algumacoisaerradanasuaaplicaoouseuhardwareestmaldimensionado.
2) QuandocoletarinformaesdeCPUvoc podesedepararcommuitasopes,aqui voalgumasdicassobreoquefazerparadecidiroquecoletar. 2.1) Antes de olhar a porcentagem da CPU, olhe para o system load (key system.cpu.load).Elaindicaoenfileiramentodeprocessos,oquepodeser bempiordoquesimplesmenteterCPUaltaotempotodo. 2.2) Mantenhaaomenosumacoletageraldebaixon vel.OconsumodeCPU dividido em vrios tipos, os mais relevantes so user (consumo realizado pelosprocessos),system(consumorealizadopelokernel)ewait(consumo realizado por espera de I/O, geralmente de disco). Existem outros menos relevantes, portanto consulte a documentao do Zabbix sobre a key system.cpu.utilparaobtermaisdetalhes. 2.3) Aomonitorarmltiploscoresindividualmente,coleteapenasoidledecadaum deles.Raramentevocprecisardecoletasdetalhadasporncleo. 2.4) Monitore tambm o context switch pela key system.cpu.switches para verificaronmerodevezesqueosprocessosnascem,dormem,acordame morremnoscores,almdeindicaramigraodethreads.
Mtricasdememria
OsegundopontomaisimportantedesemonitorarnumS.O. amemria,incluindoaqui areadetroca(swap). 1) Consumodememriapodeserbemcomplicadodesemonitorarsevoc noprestar ateno nos tipos de memria que existem. No Gnu/Linux, por exemplo, temos a memriadeprocessos,adebuffereadecache.Porpadr oakeyvm.memory.size no capazdecapturaramemriadosprocessos(que aimportante).Parafazer issovoctemquecriarumitemcalculadoquesubtraiamem riaavailable(enoa free)dototal.
- 232
Throughputebandaderede
Bandapodeserumitemimportantesevoc notemumlinksuficientementegrande paracomportarsuasnecessidades,masothroughputoquerealmentedeveserobservado. 1) Grande largura de banda com baixo throughput e alta lat ncia de rede indicam, problemas de rede (provavelmente fsicos). A key net.if.in e net.if.out so as indicadasparaisso. 2) LembresequeoZabbix,osistemaoperacionaleseusaplicativosmedemoconsumo deredeembytesenoembits.Noentantotodososequipamentosderedeelinks deInternetsocompradospelosegundo.Prefiraexibirmesmoassimosdadosem bytes.Sevocrealmentetiverqueexibirembitsterquecriarumcampocalculado quelemultiplicaovalordoitemembytes. 3) Cuidado ao estipular valores de topo dos grficos de banda para redes internas. EnquantonoslinksdeInternetisso umaprticarecomendvel,paraconsumosde servidoresemredesde100ou1000Mbpsosvaloresv oficartoprximosdoeixox queaimpressoserdetrfegozero.
PerformancedeDisco
Parabancosdedados,analiseaperformancededisco.Otemplateda4Linuxfazusode umscriptexternoquecoletadadosdebaixonvel,opadrodoZabbixaindano capazde coletarestesdados. 1) Noseatenhaathroughputdediscoembytes,elesvariamtantodeumhardware para outroque difcil deestabelecerumpadro. Use mtricascomo nmerode operaes,tempo gastoemescrita/leituraeenfileiramentodeopera es,elesso muitomaissignificativos. 2) Procureporpontosdeincidnciadeoperaesirregulares,seotempotodoseudisco ficanumamdiadeoperaesederepenteelemuda,avalieoquepodeterocorrido nesteperodo,mesmoquesejaparamenoscarga(oquepodeindicardelaysde operao).
- 233
AnexoII Performancedeservios
Introduo
Performancedeservios umassuntoextensoedemandariavrioscursosapartepara poder cobrir sua toda a sua extenso. De fato, uma parte dos cursos avanados da 4Linux detalhamestetipodeestudo.Aquivamosapenasarranharapontadoiceberg. Os templates completos do final do curso cont m muito mais detalhes dos que os discutidosaqui.
PostgreSQL
ObancodedadosdoPostgreSQLpossuiumsistemadetabelaschamadascat logos. Estastabelasarmazenamdiversasoperaesimportantes. 1) Nopercatempoolhandoestatsticasdenvelmuitobaixo.Comecepordadoscomo nmerodeconexesedeoperaesnobanco.Noaumenteasconexesdobanco arbitrariamente,essaumaprticaruim!
- 234
2) Procuredistinguirocomportamentodesuaaplica o.Muitasoperaesdeescritae poucaleitura,ouviceversa,ouaindaambas!Issotornaascoisasmaisf ceispara dimensionartunnings. 3) Monitoreainstnciacomoumtodoedepoisdesaparabancosespecficos,seguido detabelasepor ltimo ndicesesequncias.Assimvocganhaumavisoglobaldo sistemaantesdedepurarqualtabelavocprecisaseparar,particionar,etc.
JBoss
OservidordeaplicaesJBosstemtodosaquelesMBeansqueoZapcatdissecoupara ns.Vamoscomentarosmaisimportantes. 1) Aplicaes java no usam fork. Eles sempre trabalham em threads, por isso monitorarthreads(principalmenteosHTTPeAJP)vomostrarousodaJVMpara conexes. 2) O JBoss usa datasources, que possuem poolings de conex es. Monitorar as conexesdestespoolstambmumaboamtrica.Viaderegraumaboaaplicao, mesmo muito ocupada, no deve usar mais do que algumas poucas dezenas de conexes. 3) Consumo de memria heap pode indicar garbage collectors fazendo muitas operaes(nuncacoloquemuitamemriadeheapparaasJVMs,poisoGCpode derrubar as JVMs). Vazamentos Leaks de mem rias tambm podem ser detectadoscomestetipodemonitoramento. 4) Monitorar a rea de perm gen normalmente no necessrio, mas pode indicar quandoredeploysacabamconsumindotodaamemriadestinadaabytecodes.
Apache
OtemplatedoApacheprecisadomod_statusativadoparacoletadeinforma es. 1) Normalmente a mtrica mais significativa o nmero de conexes e uso de processos. 2) Verificarosprocessosemidlepodeindicarqueaconfigura opodeserajustada paramenos,paraconsumirmenosrecursos.