Professional Documents
Culture Documents
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
Sigaospassosindicadospeloprofessorparaacessoaoexemploprontonamquinadele. Voc vai fazer um passoapasso conhecendo a ferramenta como um usurio comum (no superusurio).
1.2.Comunidadeseforums
OZabbixtemumadocumentaoonlinequeserusadaduranteocursoparaconsultas. Olinkdeacessohttp://www.zabbix.com/documentation/. As comunidades tambm mantm uma srie de fruns em http://www.zabbix.com/forum/.Emdestaqueosseguinte: Zabbixannouncements:annciosenovasverses Zabbixhelp:frumprincipaldeajuda Zabbixcookbook:vriasconfiguraesprontaspostadasecomentadas.Muitotil. Zabbixthroubleshooting:seumproblemapersiste,este olocalparapostarerrose solues. Zabbixemportugusyemespanhol:frumemportuguseespanhol,tilquandovoc nolinglsmuitobem.
OBJETIVOS
Prepararoambientederecebimentodealertas: ConfiguraroEvolutionparareceberemailsdealertas; ConfiguraroPidginpararecebermensagensinstantneasdealertas. PrepararoambienteparainstalaroservidordoZabbix: Obterosfontesdaferramenta; PrepararoPostgreSQLparaservirdebackend. Instalaroservidoreagente: Compilaroservidoreagentenamquinadestinadaaseromonitoradorenasdemais; InstalaodosbinriosdentrodoWindows2003(cominicializaodoagentecomo servio); Executar deploy do agente Zapcat no JBoss para monitoramento do servidor de aplicaes ConfiguraodeumvirtualhostdentrodoApacheparaofrontend,incluindomodificao dosparmetrosdoPHP.
2.1.Introduo
Estecaptuloapresentatodasastarefasrelacionadasacriaodabasedesuasoluo demonitoramento.Aquiondeserabordadoamaiorpartedoconhecimentotcnicodeconsole Linux, deploying em JBoss, servios de Windows e acesso SNMP, visando incutir as competnciasnecessriasparaque,sozinho,vocsejacapazdereproduzirestespassosemum ambientedeproduo. Almdisso,serovistososprimeirospassosnautilizaoefamiliarizaocomainterface webdoZabbix,mostrandocomogerenciaroselementosmaisbsicosdaferramenta:usurios, hosts,templates,gruposdehostsemapas.
2.2.Configurandooscomponentesderecebimentodealertas
PorpadrooZabbixpossuiquatroformasdealertasembutidosdentrodeseusistema:e mails,clientejabber,SMSviamodemGSMeSMSviaserviodetorpedos.Detodos,oltimono muitotilaquinoBrasil,devidoseguirospadresdasoperadorasnoCanadeEstadosUnidos. Dosrestantesvamosverofuncionamentodosistemadecorreiosedejabberdentroda saladeaula,devidoanaturezadohardware,aemulaodasmquinasvirtuaisdocenrioe custosdemensagemnoabordamosousodentrodonossocenriocomSMS.Noentantotemos umapndicequecobreosistemadeSMScomthroubleshootingedicasdeconfigurao. Recebermensagensporclientedeemail amaneiramaistradicionaldetodas.Para casodeestudosprecisamosconfiguraroEvolution,clientedeemailpadrodoGnome.Abrao EvolutionpelomenuprincipaldoGnomeesigaospassosdescritosaseguir.
2.2.1.Configurandooclientedecorreioeletrnico
Estaapenasumteladeboasvindas,cliqueemAvanar.
Nohnadaparaserrestaurado,cliquenovamenteemAvanar.
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. Estaoponoseguraparaserusadaemproduo! Mascomonocursoos usuriossofictciosepossuemasenha123456issonovainosimpactar.
1) Nome: Por final, configure um nome para esta conta. Isto usado apenas para exibionoEvolution.
Estaapenasumateladefinalizao,cliqueemAplicar.
TorneoEvolutionoseuclientedeemailpadro.
Naprimeiravezquevocentrareleirpedirasenha(123456)dousurio,digiteae verifiquesenohouvenenhumerro.Nohnenhumemailnacaixademensagensdosysadmin, logonenhumamensagemvaiaparecer. Agoraqueo Evolution estafuncionamento,acesseomenu Editar Preferncias e cliquenocone ContasdeCorreio aesquerda.Atravsdoboto Adicionar cadastremaistrs contasseguindoosmesmospassosqueanteriormente,mudandoapenasosnomeseusurios. AscontasaseremacrescentadassoWindowsAdministrator(winadmin),JavaEngineer (javaeng)eDBA(dba).Apsotrmino,escolhaduascontasetesteoenviodemensagensentre elas.
2.2.2.Mensagensinstantneas
RecebermensagensdealertasviaInstantMessagingtilemempresasquepossuem umsistemainternodeIMeosfuncionriosestologadosconstantemente.OZabbixsuportao enviodestasmensagensviaprotocoloJabbereocenriojpossuiestetipodeservioatravsde umservidorOpenFireinstaladonamquinamestradoZabbix. Vamosentoconfiguraro Pidgin, umclientedeIMsimpleseeficienteparareceberos alertas enviados via protocolo Jabber pelo servidor do Zabbix. Abra o aplicativo pelo menu principaldoGnomeesigaospassosaseguir.
NateladeboasvindascliqueemAdicionar.
1) OprotocoloJabberusaaopoXMPP. 2) Nonomedousuriousesysadmin. 3) Nodomnio,vocdeve apontaronomedamquinacadastradaparaIMenoo domnio. 4) Nasenhacoloque123456. 5) AtiveoLembrarSenha. No ative a opo Lembrar Senha em produo! Isso seria uma terrvel falha de segurana.Elasestasendoativadaparacomodidadedocurso.
2.4.Preparandoobancodedados
O Zabbix no utiliza recursos como o RRDTools para armazenar dados, ele faz uso apenasdeumSGBDoudeumbancodedadosmaissimplrio(comoosqlite)paraarmazenar configuraes,hosts,templates,histrico,etc. PorissoprecisamosselecionarumdosbancosnativosouusarODBC(esteltimono recomendado). No caso deste curso elegemos o PostgreSQL, um SGBD livre e de alta performance capaz de manipular uma grande quantidade de dados. Apesar da maioria das instalaesdeZabbixestaremMySQLrecomendamosfortementequesejausadooPostgreSQL poissuarobustezsemostroumaisadequadaaostiposdedadosqueoZabbixmanipula. Emboranopareaaprincpio,obancodedadosdoZabbixdeextremavaliaparaa empresa,poiselecontmtodoohistricodefuncionamentodesuainfraestruturaeatravsdele podemoscoletarSLAseinformaesdecapacityplan. recomendadotambmqueseubancodedadospossuaumplanodebackupsregular viaPITRPointinTimeRecovery.
2.4.1.Instalao
ParainstalaraversodorepositriodoPostgreSQL: #aptitudeinstallpostgresql8.4
#yuminstallpostgresql84server
2.4.2.Criandoousurioeobanco
Comobancodedadosinstaladodevemoscriarumabasededadoseumusuriocomas devidas permisses de acesso ao mesmo. O nome de ambos elementos so totalmente opcionais,masnestematerialvamosconvencionarqueobancodedadossechamarzabbixdbe ousurioserzabbix. Muitasdocumentaeseatoprprioarquivopadrodeconfiguraodozabbixserver utilizaonomedobancocomozabbix,masissopodecausaralgumasconfusesentre eleeonomedousurio,foiporissoqueoptamospelaconvenoacima. SomenteosuperusuriodoPostgreSQL,chamadopostgrestempermissoderealizara criaodosobjetoscitadosacima,logo,parapodermosacessaroterminaldeconsoledobanco (psql)temosqueentrarcomousurio postgres noGnu/Linuxeentousarocomandocorreto. NotequeopromptdecomandoirsealterarindicandoqueestamosnoconsoledoPostgreSQL. #supostgres $psql psql(8.4.5) Digite"help"paraajuda. postgres=#
Agoraqueconseguimosoacessocomosuperusurio,vamosprimeirocriarobancode dados. O comando create database ir cuidar desta tarefa. Note que todos os comandos digitadosdentrodesteconsoleterminamcompontoevrgula(;). postgres=#CREATEDATABASEzabbixdb; Comobancodedadoscriadocomsucessovamoscriarousurioedefinirsuasenha. Para propsito de organizao deste material a senha do banco de dados do zabbix ser zabbixdbpw.Aodigitarasenhanotequeelanoaparececomonoquadrodecomandoabaixo! Esteapenasumdemonstrativodidtico. postgres=#CREATEROLEzabbixLOGIN; postgres=#\passwordzabbix Digitenovasenha:zabbixdbpw Digiteanovamente:zabbixdbpw interessantedefinirasenhapor\passwordpoisassimelanoficaarmazenadano histricodecomandosdousurio. Agoraprecisamosliberaraconexodoservidoraobancodedadosdozabbix,paraisso editeoarquivopg_hba.confconformeabaixoeacrescentealinhaemdestaque. postgres=#\q $logout #vim/etc/postgresql/8.4/main/pg_hba.conf hostzabbixdbzabbix127.0.0.1/32md5 Reinicieobancodedadoserealizeotestedeconexo. #/etc/init.d/postgresqlrestart #psqlhlocalhostUzabbixzabbixdb psql(8.4.5) conexoSSL(cifra:DHERSAAES256SHA,bits:256)
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 30 Digite"help"paraajuda. zabbixdb=>\q # Se voc estiver usando a verso 9.0 do PostgreSQL importante lembrar que o suporte a imagens do Zabbix assume que o banco utiliza a forma antiga de armazenamento bytea (escape em vez de hex). Para configurar o comportamento antigo use o comando ALTER DATABASE nomedabase SET
2.4.3.Cargainicial
Agoravamosfazeracargainicialdobancocarregandoosesquemas,osdadosmais bsicos. #supostgres $cd/usr/src/zabbix1.8.4/create/schema $catpostgresql.sql|psqlzabbixdb $cd../data $catdata.sql|psqlzabbixdb No faa a carga do arquivos de imagens, iremos abordar como colocar figuras personalizadasedemelhordefiniomaisafrente,nestecaptulo.
2.4.4.Concedendoaspermissesnecessriasaousurio
Agoraomomentodeconcederaspermissesdeacessonastabelas.OusurioZabbix precisadepermissesdeSELECT,INSERT,UPDATEeDELETEapenas.Comasequnciade comandosabaixovocconseguirativartodasaspermissesnecessrias. Emboraesteprocessosejamaiscomplicadodoquefazerdeixarousuriozabbixcomo donodobancoelemuitomaisseguroedeveserutilizadoassimemproduo
||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. Noentantoissonemsempreverdadeepodesernecessrioumaversomaisrecente (devidoarecursosnovos,etc.)nasuasoluodemonitoramento.Parasuprirestanecessidade precisocompilaroZabbixapartirdeseucdigofonte. Esta sesso toda dedicada ao processo de criar os binrios, cobrindo quais dependnciasdevemserinstaladasecomoescolherosrecursosaseremcompilados.Viade regra se algum tipo de recurso no se mostrar necessrio a princpio no o ative, isso gera binriosmaisleves(commenoscdigoembutido)ealiviaoconsumodememriaemservidores
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 32 comaltascargasdemtricassendomonitoradas. Paracomear,vamosinstalarosdoispacotesmaisbsicosparacompilaodefontesno Debian, o buildessential e o make. O primeiro um meta pacote que ir instalar todosos pacotesmnimosdecompilaodefontes(compilador,linkeditor,cabealhosdokerneledalibc, etc.)eosegundoumautomatizadordecompilao.Noterminaldozabbixsrvrodeosseguintes comandos. #aptitudeinstallbuildessentialmake #cd/usr/src/zabbix1.8.4 #./configurehelp|less Oconfigureumscriptgeradoapartirdoautotools,queumconjuntodeferramentas parafacilitaracompilaodefontesemC.Aopohelpfornecidaacimairlistartodasas opesquepodemosativarounoparacompilaroZabbix.Notequeoconfigurenocompila nadaeleapenaspreparaacamapararealizaracompilaocomomake. Natabelaaseguirestoasopesrelevantesdoconfigureparaanossatarefa. Opo do configure --prefix=diretrio Descrio Define onde o Zabbix ser instalado. importante lembrar que se nada for configurado nesta opo os binrios e manuais sero colocados em /usr/local como padro. No entanto para manter a instalao organizada e facilitar atualizaes de verses do Zabbix ns o colocaremos em /opt/zabbix-1.8.4.
--mandir=/usr/share/man Aponta a localizao correta das pginas de manual, assim podemos usar o comando man para acessar as opes dos binrios do Zabbix. --enable-static Ativa a gerao de binrios em forma esttica (sem shared libraries). recomendado deixar esta opo desligada. Ativa a compilao do servidor. No caso presente iremos ativar esta opo, quando formos compilar apenas o agente iremos desabilit-la. Compila os binrios para sistemas distribudos. Como neste curso no abordaremos o sistema de proxy do Zabbix vamos deixar esta opo sempre desabilitada. Compila os binrios para os agentes. uma excelente ideia sempre deixar esta opo ativada. Mesmo em servidores dedicados do Zabbix uma boa prtica monitorar a prpria mquina.
--enable-server
--enable-proxy
--enable-agent
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 33 Opo do configure --enable-ipv6 Descrio Compila com suporte a IPV6. Embora no seja absolutamente necessrio, dado ao recente anncio do esgotamento de endereos IP da IANA o IPV6 logo ser necessrio em muitos ambiente. Ativa o suporte ao back end do bando de dados IBM DB2. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados MySQL. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados Oracle. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados PostgreSQL, vamos deix-lo habilitado. Voc pode escolher apenas um back end. Ativa o suporte ao back end do bando de dados sqlite verso 3. Vamos deix-lo desabilitado uma vez que usaremos o PostgreSQL. Voc pode escolher apenas um back end. Ativa o suporte do servidor de contato com servidores Jabber permitindo que o Zabbix envie alertas taravs deste servio de mensagens instantneas. Vamos ativar essa opo. Ativa o suporte a biblioteca de HTTP CURL. necessria para o monitoramento de servios Web e autenticao via HTTP. Ativa o suporte ao back end do bando de dados via ODBC. No recomendado. Como o anterior mas usa unixODBC ao invs de iODBC. Este pacote mais encontrado do que o iODBC. Ativa o suporte a monitoramento via SNMP usando a biblioteca net-snmp do unix. Vamos deix-la ativada. Mesmo que o anterior, mas usando a biblioteca ucd, menos comum. Vamos deix-la desativada. Ativa suporte a monitoramento via SSH e verificao de status de um servio de conexo remota segura. Vamos deix-lo ativado. Ativa suporte a comandos e monitoramento de hardware por IPMI. S relevante quando o hardware que voc vai monitorar e o S.O. Instalado nele possuem esta especificao. Para este curso deixaremos ele desativado.
--with-ibm-db2
--with-mysql
--with-oracle
--with-pgsql
--with-sqlite3
--with-jabber
--with-libcurl
--with-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 emfuturasinstalaesetambmtemcomointenoensinaralidarcomerrosdedependncias decompilao. Useocomandoaptitudeparaencontrarospacotescorretos. ./configureprefix=/opt/zabbix1.8.4mandir=/usr/share/manenableserverdisablestatic disableproxyenableagentenableipv6withpgsqlwithjabberwithlibcurlwithnet snmpwithssh2withoutopenipmiwithldap Erro Dependncia
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 35 VocpodeotimizarosbinriostornandooZabbixmaisrpidomasdependentedeuma CPUcompatvelsevocexportarasvariveisdeambiente CFLAGSe CXXFLAGS comoseguintevalorO2pipemarch=native,antesdeexecutaroconfigure.Sevoc estiverusandoumsistemade32bitsacrescenteaindafomitframepointer. Cuidado comoutrosflagsdecompilao!Vocpodeacabarcomumbinriodefeituoso!
2.5.2.Compilandoeinstalando
Agoraqueoconfigurechegouaopontofinaletodasasdependnciasforamresolvidas hora de executar a compilao com o comando make. Na verdade o make no um compilador,eleapenaschamaoscomandosnecessriosparaconstruirosbinrioatravsdeum arquivoMakefilequefoigeradopeloconfigure. Execute conforme abaixo, os comandos. No final o comando ln ir criar um link simblicopara/opt/zabbix.Isso umaboaprticaparaajudaratrocarasversesdoZabbix duranteumamigrao,apontandoolinkparaapastacomosnovosbinrios,enquantomantemos osanterioresparaocasodeumdowngradeemergencial. Vocpodesubstituiroj2poroutronmeroparaacelerarasuacompilaosevoc tivermltiploscores.Umaregrageral2xCores+1. #makej2 #makeinstall #lnsvf/opt/zabbix1.8.4/opt/zabbix #tree/opt/zabbix Ocomandotreevaimostrarahierarquiadediretriosearquivosabaixodocaminhoda instalao.Atabelaabaixotemodescritivodecadaumdeles. Binrio zabbix_get Funcionalidade Utilitrio para realizar consultas nos agentes via linha de comando. Muito til e ns o utilizaremos extensamente durante o curso.
zabbix_sender
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 36 Binrio Funcionalidade item especial do tipo Zabbix trap para lidar com estes envios. til para alertar incidentes instantaneamente para o servidor como o incio, termino ou erro de um backup. zabbix_agent Agente para ser usado com o super daemon xinetd ou similar. No necessrio na grande maioria dos casos e ser removido do diretrio. O daemon do agente do Zabbix que fica na memria a espera das requisies do servidor. O daemon do servidor do Zabbix. Este o componente principal de toda a infraestrutura.
zabbix_agentd
zabbix_server
Tabela 2: Binrios de uma instalao de servidor e agente do Zabbix precisoremoverozabbix_agentesuapginademanual,umavezqueiremosusar apenas o daemon zabbix_agentd. Tambm uma boa prtica no manter os smbolos de depuraonosbinriosdeproduo.Ocomandostripirretirarestessmboloseoexecutvel finalserligeiramentemenoremtamanho(oqueajudaaconsumirmenosmemriatambm). #rm/opt/zabbix1.8.4/sbin/zabbix_agent #rm/usr/share/man/man1/zabbix_agent.1* #stripstripall/opt/zabbix1.8.4/*/* Noaconselhvelexecutardaemonsdesistemacomousurioroot,porissovamos criarumgrupoeusuriodenomezabbixparaqueoservioentrenamemriacomousuriono privilegiado. OnomedousurioqueoZabbixusahadcoded,ouseja,eleprogramadodentrodo cdigofonteenopodeseralteradoviaconfigurao.Dessemodosempretemosque criarousuriocomonomezabbix,jonomedogrupototalmenteopcional. #groupaddzabbix #useraddgzabbixms/bin/bashzabbix
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 37 Ambososdaemons,doagenteedoservidor,precisamdedoisdiretriosparaarmazenar oslogseoarquivodePID.Comoscomandosabaixocrieedaspermissesnecessriaspara ambos. #mkdir/var/{log,run}/zabbixp #chownzabbix./var/{run,log}/zabbix
2.5.3.Serviosderede
Acrescente ao /etc/services o mapeamento de portas do Zabbix Agent e Zabbix Trapper. #vim/etc/services zabbixagent10050/tcpZabbixAgent zabbixagent10050/udpZabbixAgent zabbixtrapper10051/tcpZabbixTrapper zabbixtrapper10051/udpZabbixTrapper Estas entradas permitem que programas como wireshark e netstat reconheam as portasdoZabbix.
2.5.4.Arquivosdeconfigurao
Os arquivos de configurao do Zabbix acompanham os seus fontes, mas a 4Linux preparouumconjuntodearquivosparausoemproduocomumaorganizaomelhorada.Ao invsdesimplesmentecolocartodasasconfiguraesemumnicoarquivo,osparmetrosforam distribudosemgruposlgicosseparadosemvriosarquivosediretrios. OZabbixporpadroprocurapelosseusarquivosem/etc/zabbix,apartirdosarquivos principais(zabbix_server.confezabbix_agentd.conf)outrosarquivosforamchamadoseinseridos na configurao. A tabela abaixo demonstra como ficaram organizados os diretrios e seu contedo.
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.Nodeintenodestematerial dissecar cada uma das opes de configurao, vamos abordar apenas as mais relevantes, pormosarquivostemextensoscomentriosemportuguscriadospeloautordestematerial.
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 39 #cd/ #tarxf/tmp/configserver.tar.bz2 #tarxf/tmp/configagent.tar.bz2 #chownroot.zabbix/etc/zabbixR #find/etc/zabbixtypedexecchmod0750{}\; #find/etc/zabbixtypefexecchmod0640{}\; 1) Notequeogrupodosdiretrioseseusarquivosforamapontadosparazabbix.O donocontinuouaseroroot; 2) Todososdiretriostiveramapermissodeacessoglobalrevogada,nenhumusurio do sistema tem que acessar esta pasta exceto o do Zabbix (existem informaes sensveiscomosenhasemtext/plainnestesarquivos).Tambm,apenasoroottem direitosdegravaonessaspastasogrupozabbixtemapenasacessodeleitura. 3) Osarquivosseguemamesmalgicaqueosdiretrios.
exportPATH=$PATH:/opt/zabbix/sbin:/opt/zabbix/bin
2.5.5.Testandosuainstalao
Utilizeomanualdozabbix_agentdparadescobrircomolistarasmtricassuportadas peloambienteecomotestarumdelasindividualmente.Depoisinicieoagente,vejaocontedodo arquivodelogseuseoscomandospsenetstatparaverquaisosprocessosqueeleinicioue emquaisportaselessevincularam. Depoisdotrminocomoagentevamosconfiguraroservidorconformeospassosaseguir erealizaromesmoprocedimentodeinicializaoepesquisaquenoagente.
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 40 #vim/etc/zabbix/server.d/database.conf DBHost=127.0.0.1 DBPort=5432 DBName=zabbixdb DBUser=zabbix DBPassword=zabbixdbpw 1) OendereoIPounomeDNSdoservidorqueestacomobancodedados.Comono nossocenrioobancoeoservidorZabbixestonamesmamquinavirtualutilizamos oendereodeloopback; 2) AportaTCPdeacessodobanco.EstaaportapadrodoPostgreSQL; 3) Nomedobancodedadosquecriamosnoinciodocaptulo; 4) Nomedousurioquecriamosedemospermisso; 5) Senhadousurioacima. Agoraexecuteoscomandosdeinicializaodosdaemonsconformeindicadoabaixo. #zabbix_agentd #zabbix_server Verifiqueseasltimaslinhasdologindicamseambosiniciaramcorretamenteetambm setodososprocessosestonamemria. #tailn1/var/log/zabbix/zabbix_server.log 1203:20110207:092633.044server#1started[DBCache] #tailn1/var/log/zabbix/zabbix_agentd.log 871:20110207:092607.522zabbix_agentdcollectorstarted #psuCzabbix_agentd SERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND zabbix8630.00.14836496?SN09:250:00/opt/zabbix/sbin/zabbix_agentd #psuCzabbix_server USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND zabbix12010.01.0466962636?SN09:260:03/opt/zabbix/sbin/zabbix_server
Note que a sada do ltimo comando muito grande. Ao final dos testes mate os processoscomocomandokillall: #killallzabbix_serverzabbix_agentd
2.5.6.Scriptsdeboot
No CD temos alguns scripts de boot prontos para uso no Debian, copie os arquivos boot/debian/serverbootscripts.tar.bz2 e boot/debian/agentbootscripts.tar.bz2 para o /tmp e descompacteosnaraiz. #cd/ #tarxvf/tmp/serverbootscripts.tar.bz2 #tarxvf/tmp/agentbootscripts.tar.bz2 Testeainstalaodosscripts. #/etc/init.d/zabbixserverstart #/etc/init.d/zabbixagentstart Porfim,coloqueosscriptsnobootdamquinavirtual. #updaterc.dzabbixagentdefaults #updaterc.dzabbixserverdefaults
2.6.InstalaodoagenteZabbixviacompilao
AgorachegouomomentodeinstalaroagentedoZabbixnasoutrasmquinasvirtuais comGnu/Linux.Oprocedimentodeinstalaosimilaraodoservidor,masnoiremoshabilitara opoenableservernoconfigure.Tambmnosonecessriostodosasopesdewith usadasacima.Oagentecertamentemaissimplesqueoservidoremtermosdefuncionamentoe sprecisadosuporteaLDAP.
2.6.1.Exerccio:compileeinstaleoagentenasVMcomGnu/Linux
Comasinformaesacimaemmosrealizeosprocedimentosdeinstalaodosagentes namquinavirtual Presentation.Noseesqueatambmdecolocarosscriptsdebooteos arquivosdeconfiguraonelaeiniciaroprocessonamemria.
2.6.2.Acessoaoagentepeloservidor
Agoraqueoagenteestainstaladoerodando precisorealizaralgumasconfiguraes bsicasparaqueelepermitaoacessovindodoservidor. Primeirovamosverificarsesuasconfiguraesdeportaeredeestodeacordo,usandoo comandonetstatparalistarasportasqueeleestaescutando. #netstatlntp|grepzabbix tcp00127.0.0.1:100500.0.0.0:*OUA592/zabbix_agentd Asadadocomandomostraqueodaemonestaapenasvinculadoaoendereolocalhost damquina,vamosmodificarseuarquivodeconfiguraoereinicilo.IdentifiquequaloIPlocal da mquina que pertence a DMZ (rede 172.27.0.0/24) e substitua 127.0.0.1 por ele dentro do arquivo/etc/zabbix/agent.d/networks.confnoparmetroListenIP. #vim/etc/zabbix/agent.d/network.conf
1
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. Nestepontoimportanteparamosparaverificarumapossvelfalhadeconexo.Vamos foraraVMzabbixsrvasecomunicarcomogateway(presentation)viazabbix_get.Vamos usarakeyagent.pingcomoexemplo. #zabbix_getsgatewayk'agent.ping' zabbix_get[6646]:Getvalueerror:***Cannotconnectto[gateway]:10050[Connectiontimed out] Noteamensagem'Connectiontimedout'nofinaldalinhadeerro,tambmrepareque levoualgumtempoparaqueocomandoretornasseamensagem.Issoaconteceporqueofiltrode pacotes da mquina esta bloqueando conexes, podemos averiguar isto com mais preciso usandoaferramentanmapconformeabaixo: #nmapP0p10050gateway
Oestadodaportaqueonmapretornoufiltered,ouseja,nohretornodepacotesdo sistema.Para podermos liberaro acesso use o procedimento abaixo no terminal da mquina presentation. #iptablesAINPUTjACCEPTptcpdport10050s172.27.0.10 #iptablessave>/etc/iptables/rules RepetindoonmapapartirdoservidordoZabbix: #nmapP0p10050gateway StartingNmap5.00(http://nmap.org)at2011013002:34BRST Interestingportsongateway.curso468.4linux.com.br(172.27.0.1): PORTSTATESERVICE 10050/tcpopenunknown MACAddress:08:00:27:BD:55:12(CadmusComputerSystems) Nmapdone:1IPaddress(1hostup)scannedin0.27seconds Seoestadoretornadoforopen,entooservidorcapazdeseconectaraoagenteno nvel da camada TCP, mas ainda precisamos ter certeza absoluta que ele esta permitindo conexesnonveldecamadadeaplicao.Vamosrepetirotestecomozabbix_geteverseo agenteretornaovalor1. #zabbix_getsgatewayk'agent.ping' Notequeelenoretornanada!Apenasumalinhaembrancoaparecenoresultadodo comando.Issoestaocorrendoporqueoagenteprecisaliberaraconsultaparaoservidor,por padroosarquivosdeconfiguraoapenaspermitemqueelesejaacessadoapartirdolocalhost. Paraliberaroacessotemosqueeditaroarquivo/etc/zabbix/agent.d/checkings.confemudar doisparmetros.
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 45 Oprimeiro,obviamenteoServer queaceitaumalistaseparadaporvrgula(,)dos endereosquesopermitidosfazeraconsulta.Osegundo oHostname representandoo nomedamquinacomoqualoagentedeveseapresentaraoservidor.Estenomedevesernico enonecessariamenteprecisaserigualaohostnamerealdamquina,defatononossocenrio iremosdeixlodiferente. #vim/etc/zabbix/agent.d/checkings.conf
1
#Esteoarquivoparaconfiguraodechecagensnoagente.Hdoistiposdechecagens,a # #Checagenspassivassoopadro,oservidorfazoagendamentodasmtricasemanda
passivaeaativa.
2
umarequisioaoagentequeaguardapassivamente(daionome),esteentocoletaodado dosistemaeenviadevoltaaoservidor.
4
# #Umachecagemativapermitequeoagenterecebaumalistadeitensaseremmonitorados
doservidoreaoinvsdesteltimocuidardoagendamentoerequisiesoagentequetoma parasiestatarefa.
6
# #ChecagensativassoteisquandooFirewallnopermitequeoservidordemonitoramento
alcanceoagenteviaredeouquandoseutilizaumsistemademonitoramentodelogsondeo monitoramentoativoobrigatrio.
8
checagensativas.
10
11 12
13
hostnamedamquinaeleumastringdeidentificaodoagenteparacomoservidordo Zabbix.
14
# Hostname=Presentation
15
2.6.3.ExercciosobreinstalaodeagenteemLinux
1) Instale o agente do Zabbix via compilao nas mquinas virtuais Application e Databaseconformemostradonestecaptulo.
2.7.InstalandooagenteemambientesWindows
Um dos objetivos do curso demonstrar como o Zabbix capaz de monitorar redes heterogneascomvriossistemasoperacionaiseativosderede.Estasessocuidadeinstalaro agentedoZabbixemumWindows2003.
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 trs diretrios:conf,logebinecopieosexecutveisdescompactadosdentrodesteltimo. ObtenhaosarquivosdoDVDcomaconfiguraodoagentedoWindows(conf/agentwin config.zip)edescompactedentrodaconfoseucontedo.Apagueoarquivozipdepoisdisso. O arquivo zabbix_agentd.conf deve ficar na raiz da pasta conf, assim como os diretriosagenteexternalscripts.Cuidadonahoradedescompactar.
Edite o arquivo c:\Zabbix\conf\agent\checkings.conf e mude os parmetros Server e HostName conforme a Figura 2.17, para permitir o acesso do servidor e o arquivo c:\Zabbix\conf\agent\network.confparavinculloaoendereoIPdaplacaderede.
Use o Wordpad para alterar estes arquivos, o Notepad tem vrios problemas com codificaoefinaisdelinha.
Agoravamostestarainstalao,abradoispromptsdecomando,noprimeiroacesseo diretriodosbinrioseexecuteocomandoconformeabaixo. cdC:\Zabbix\bin zabbix_agentdc..\zabbix_agentd.conf Notequeumamensagemdizendoqueelefoiiniciadopeloconsoleiraparecernatela. porqueoWindowsnocapazdeexecutaroagentecomoumdaemondamaneiraqueoLinux faz,maisafrenteveremoscomoinicilocomoserviodoWindowsquemaneiracorretadese fazer.Outramensagem,destavezviacaixadedialogo,tambmvaiaparecernatela.oservio de segurana do Windows que esta perguntado se deve bloquear ou no esta aplicao. ObviamentedevemosclicaremDesbloquear.
Agora no segundo prompt de comando, use o comando netstat como abaixo para verificarseeleestaescutandonoendereocorreto. netstatan
2.7.1.Executandooagentecomoservio
InstalaroagentedoZabbixcomoserviomuitosimples.Nopromptdecomandoonde voc o testou pressione CTRL+C para cancelar a execuo do programa (demora alguns segundos).Quandoopromptretornardigite: zabbix_agentd.execc:\Zabbix\conf\zabbix_agentd.confinstall DuasmensagensiroaparecerindicandoainstalaodoagentecomoServiceeEvent Source.ParaconferirseoagenteestamesmonoarabraoPaineldeControle Ferramentas AdministrativasServioseprocurepeloserviochamadoZabbixAgent.
2.8.1.Obtenodobinrio
Sigaoprocedimentoabaixoparaobterobinriodozapcat.VocirbaixlodoSource Forge. #cd/var/tmp #wgethttp://ufpr.dl.sourceforge.net/project/zapcat/zapcat/zapcat1.2/zapcat1.2.zip #unzipzapcat1.2.zip #cdzapcat1.2 #ls binbuild.xmlCOPYINGlibopenfireREADMEsamplessrctemplateswebappzapcat 1.2.jarzapcat1.2.warzapcatopenfire1.2.jar Notequeozapcatvemnaformadeum.war(aplicaowebjava)e.jar(applicativojava). Vamosnosaterapenasaomodoweb.
2.8.2.Deployment
ParainstalaroZapcat,simplesmentecopieobinrioparaapastadedeploydainstncia emexecuodoJBoss.Nonossocasoestapasta/opt/jboss/server/application/deploy/.
#cpzapcat1.2.war/opt/jboss/server/application/deploy/ #tail/opt/jboss/server/application/log/server.log 2011013006:08:10,616INFO[org.jboss.system.server.Server]JBoss(MXMicroKernel) [4.2.3.GA(build:SVNTag=JBoss_4_2_3_GAdate=200807181417)]Startedin27s:81ms 2011013006:10:25,679INFO[org.jboss.web.tomcat.service.TomcatDeployer]deploy, ctxPath=/zapcat1.2,warUrl=.../tmp/deploy/tmp3690979215130123277zapcat1.2exp.war/ Altimamensagemdologindicaqueopacotefoiinstaladocomsucesso(deployed).Ele j esta funcionando e podemos averiguar isso com o comando netstat como fizemos anteriormente. #netstatlntp|grep':1005' tcp00172.27.0.20:100500.0.0.0:*OUA28751/zabbix_agentd tcp000.0.0.0:100520.0.0.0:*OUA29181/java Repare que, como ele um aplicativo java, o netstatno vai informar o nome dele (Zapcat)nasadacomp.
2.8.3.OpesdeinicializaodoJBoss
O JBoss precisa de trs opes para permitir que o Zapcat possa ler todos os seus MBeans ( O Tomcat s precisa da primeira). Edite o arquivo de configuraes do JBoss e e acrescenteaofinaldeleoseguintecontedo. #vim/opt/jboss/bin/run.conf
1
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.ElaopcionaleporpadrooZapcatescutana porta10052; 5) EstaopodefineaqualIPozapcatdevesevincular.Elaopcionaleporpadroele sevinculaatodososendereosdisponveisdohost(0.0.0.0). Reinicie o JBoss e teste o acesso ao Zapcat pelo endereo
http://javaapp.curso468.4linux.com.br/zapcat1.2/,atelaabaixodeveaparecer.
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)entoseusistemaj consegueleroSNMPdoswitch. Se vocestiverusandoumhardwarecomumaMIBproprietria,localizee baixe o arquivonaInternetecopieonodiretrio/usr/share/snmp/mibs/
2.9.1.ConceitosdeSNMP
O SNMP um protocolo de monitoramento bem difundido, principalmente entre equipamentosderede.Agrandemaioriadohardwareembarcadopararedesuportaalgumtipode versodomesmo.Amaiscomumaverso2,masaverso1(consideradaobsoleta)eaverso 3(amaissegura)temumaincidnciaregular.Sevoctiverqueoptarporumadelas,sempre tenteescolheramaisrecentepossvel.Apesardeadicionarumacertacomplexidade,averso3 ajudaemmuitonaseguranapoistrabalhacomACLsporautenticaoecriptografia.Nocurso veremos a verso 2 que mais comum de se encontrar nos equipamentos (opo v2c no comando usado anteriormente), mas a diferena de trabalho entre elas bem pequena (praticamentealgunscamposamaisnaverso3). Todas as trs verses trabalham com MIBS, arquivos texto com definies de como coletarasOIDS,asstringsdeacessodasmtricas.UmaOIDpodeserrepresentadaporumtexto como DISMANEVENTMIB::sysUpTimeInstance ou por uma representao numrica como .
Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema - 57 1.3.6.1.2.1.1.3.0. SevocpossuiraMIBdeumequipamentomonitoradopeloZabbixequiserutilizara formatextualmostradaacimaemvezdanumrica,terquecopiaroarquivodetextodeladentro dodiretriodesuadistribuioGnu/Linuxondeoservidorestiverinstalado. Normalmenteestediretrioestaem/usr/share/snmp/mibs/,masrecomendadoque vocconfirmeseistovaleparaadistroquevocestausando. Porfim,apartirdaverso2doprotocoloSNMPpassouseatrabalharcomumastring decomunidade(community).Porpadroestastringtemovalorpublicarmazenadodentrodela (parmetrocdocomandosnmpwalk).Estevalortemcomoobjetivopermitirapenasquequem conheaacommunitysejacapazdeacessaroSNMP. Francamente,colocaraseguranadeumsistemaemcimadeumvaloremtextoplano que viaja sem criptografia na rede no nada seguro. Se voc realmente quiser seguranadeveusaraverso3.Tambmprotejaaomximooacessoaporta161(ou a qual voc definiu) de acessos indevidos, o ideal permitir apenas acesso dos endereosdosservidoresdemonitoramento. Apenasselembrequeaindaassim, nadainviolveleoSNMPnoexceo.
2.10.InstalandooservidorZabbixviapacote
NocasodorepositriodeumaversodeDebianpossuirumaversodoZabbixque adequadoasuasnecessidadesentoaoinvsdecompilarrecomendadoquevocoutilize.No presentemomentodaescritadestematerialessenoeraocaso. #aptitudeinstallzabbixserverpgsql #aptitudeinstallzabbixagent
OCentOSnotempacotesnoseurepositrio.
2.11.Preparandooservidorweb
ComovistoanteriormenteoZabbixumsistemacomponentizadoesuainterfaceweb rodadentrodeumservidorcomsuporteaPHP.Estasessodescrevecomoinstalareconfigurar umservidorApache2.2paratalintento.
2.11.1.InstalaodoApacheePHP5
ParainstalarumnovopacoteapachecomsuporteaPHPsigaospassosabaixo.OZabbix precisaaindadosuporteaGD(umabibliotecagrfica)parageraodeimagenseacessoao PostgreSQL. #aptitudeinstallapache2libapache2modphp5php5gdphp5pgsqlphp5ldap NocentOS,useoseguintecomando. #yuminstallphphttpphpgdphppgsqlphpldap
2.11.2.ConfiguraodoVirtualHost
ParacriarumaconfiguraodehostvirtualnoApacheparaoZabbix,vamosprimeiro criarumdiretrioecopiarocontedodapastafrontendsdoseudiretriodefontes. #mkdirp/var/lib/zabbix/frontend #cd/usr/src/zabbix1.8.4/frontends/php/ #cp*/var/lib/zabbix/frontend/a Paraassegurarqueoapachetenhaacessoapenasdeleituraapastaeseusarquivos executeoprocedimentoabaixo. #cd/var/lib/zabbix/ #findfrontendtypedexecchmod0750{}\; #findfrontendtypefexecchmod0640{}\; #chownroot.wwwdatafrontendR #chmod0770frontend/conf
O ltimo comando d permisses de escrita na pasta conf ao servidor, isso necessrioapenasinicialmenteeserremovidodepoisdoterminodaconfiguraodo frontend. Agora vamos criar o arquivo de virtual host. Note que o diretrio criado acima apontadocomoraizeosarquivosdelogssoseparadosdopadroparafacilitaradepuraode erros. #cd/etc/apache2/sitesavailable #vimzabbixfrontend.conf
1
<VirtualHost*:80> ServerAdminsysadmin@curso468.4linux.com.br DocumentRoot/var/lib/zabbix/frontend <Directory/> OptionsFollowSymLinks AllowOverrideNone </Directory> <Directory/var/lib/zabbix/frontend> OptionsIndexesFollowSymLinksMultiViews AllowOverrideNone Orderallow,deny allowfromall </Directory> ErrorLog${APACHE_LOG_DIR}/errorzabbixfrontend.log #Possiblevaluesinclude:debug,info,notice,warn,error,crit, #alert,emerg. LogLevelwarn CustomLog${APACHE_LOG_DIR}/accesszabbixfrontend.logcombined
3 4
5 6
10
11
12
13
14
15
16 17
18 19
20
21
22 23
</VirtualHost>
1) DocumentRootprecisaapontarparaodiretrioondeinstalamosofrontend. 2) Em ErrorLog,vamosdirecionaroslogsdeerrosparaumarquivoespecficodeste virtualhost. 3) OmesmodeveserfeitocomoCustomLog,apontandoparaumarquivoespecficode acessos. EstepassoestasubstituindoositepadropelodoZabbix.Sehouveremoutroshosts virtuaisnamesmamquina no necessrio removlos,apenas ajuste asconfiguraesdo arquivoacimaparareceberconexesapenasdeumaURLemparticular. #cd/etc/apache2/sitesenabled #rm000default #lnsv../sitesavailable/zabbixfrontend000zabbixfrontend Reinicie o Apache, abra a porta 80 do firewall e teste acessando a URL http://zabbix.curso468.4linux.com.br/. #/etc/init.d/apache2restart #iptablesAINPUTjACCEPTptcpdport80 #iptablessave>/etc/iptables/rules O primeiro acesso ao front end vai enviar o browser direto para o wizzard de inicializaodosite.Sigaospassoscomodescritoaseguirparaativarainterface.
2.11.3.Configurandoofrontend
Aprimeiratelaapenasumamensagemdeboasvindas.CliqueemNextparacomear.
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,pormprecisoavaliarseo 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 configurao todas as opes relevanteseconfigureasparaatingiroRecommended. Parmetro do PHP date.timezone Significado Qual fuso horrio o PHP deve usar? Mesmo que o seu sistema esteja corretamente configurado importante configurar este parmetro para o seu fuso horrio (usualmente America/Sao_Paulo). Tempo mximo que um processo do PHP pode rodar antes de ser morto. Tempo mximo que um processo do PHP pode gastar interpretando dados. O quanto uma nica instncia de execuo do PHP pode usar de memria. O mximo tamanho que uma requisio POST pode enviar ao servidor. Tamanho mximo para upload de um arquivo.
Se todos os prrequisitos foram supridos clique em Next. Seno refaa os passos acimaatconseguirchegaraosvaloresrecomendados. OsuporteaGDdoPHPnoDebianSqueezenoatingeorecomendadomasfunciona 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.
Estajanelaindicaqueoarquivodeconfiguraofoigravadocomsucessonodiretrio confquedeixamoscompermissesdeescritaanteriormente.horaderevogaraspermisses deescritanestediretrio. #cd/var/lib/zabbix/frontend/ #lslhdconf drwxrwx2rootwwwdata4,0KJan2722:58conf #chmod0750conf #lslhconf total28K rwrr1wwwdatawwwdata440Jan2722:58zabbix.conf.php #chownroot.wwwdataconf/zabbix.conf.php #chmod0640conf/zabbix.conf.php
AgorapressioneNextparairparaaprximatela.
2.12.Exercciosdereviso
1) possvelcolocaroagentedoZabbixparaserexecutadonoWindowscomoservio? Como? ________________________________________________________________________ ________________________________________________________________________ 2) QuaisospossveisbackendsdebancosdedadosqueoservidordoZabbixsuporta? ________________________________________________________________________ ________________________________________________________________________ 3) possvelinstalaraInterfacedofrontendemqualquerservidorquesuportePHP? ________________________________________________________________________ ________________________________________________________________________ 4) ComosnmpwalkpodemoslistarvriaspartesoumesmotodasasmtricasSNMP. Qualocomandovocusariaparapegarapenasumamtrica? ________________________________________________________________________ ________________________________________________________________________ 5) RealizeumabrevepesquisanaInterneterelacionetodososagentesdeZabbixque vocencontrar. ________________________________________________________________________ ________________________________________________________________________ 6) Comozabbix_get,coleteviaterminaldeconsoleovalordaschavesabaixodos hostswin2003eapplication: 6.1) agent.version: 6.2) system.cpu.num: 6.3) vm.memory.size: _________________________________________ _________________________________________ _________________________________________
7) (Desafio)Sevoctentarusarozabbix_getparacoletardadosdoZapcatverque 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,voccolocounoartodaainfraestruturadasoluodemonitoramento,agoraumweb sitecomalgunsmenusestadiantedevoc.Eagora? Bom,oprimeiropasso entendercomoosmenusdoZabbixtrabalhameaprendera encontrarasopesquevocdesejatrabalhar.Estainterfaceextremamentepoderosaeao mesmo tempo simples de se operar. No incio provvel que haja uma certa confuso na distribuiodasjanelasefunes,masacredite,elafoidesenvolvidaparaserfcildeusaraps aprenderosentremeiosdosmenus. Aproveite e passeie com o mouse nos menus. Note que no necessrio clicar em nenhum dos menus superiores, somente a passagem do ponteiro j exibir as opes dos submenus.Nestessimnecessrioclicarparaabrirateladesejada!NaTabelaabaixohuma descriosuperficialdoquecadaitemdemenufaz. Menu Monitoring Dashboard Overview Web Latestdata Funo Menuparaacessoaomonitoramento,depoisqueoZabbixestiver completamenteconfiguradoesteomenumaisacessadodetodos. Teladecentralizaodasinformaesdemonitoramento. Permite a visualizao global ou por grupos das mtricas monitoradasedosalarmes. Visualizaodomonitoramentodosserviosdeweb(noconfundir commonitoramentodoservidorweb). Mostra os ltimos dados (e quando eles foram coletados) do monitoramentodeumhost.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 76 Menu Triggers Funo Mostraostatusdosltimostriggers(gatilhos)epermiteinterao com eles (como por exemplo dar um Acknowledge a um determinadogatilho) Mostra os ltimos eventos causados pelos triggers ou pelo autodiscovery. Visualizaoindividualdosgrficoscadastradosnoshosts. Visualizao dos screens. Telas que agrupam elementos monitorados(comomapas,grficosewidgets). Visualizaodosmapas. Hosts e elementos que foram descobertos pelo sistema de auto detecodehosts. Visualizao de SLA baseada no monitoramentodehosts,ativos e/ouservios. Inventriodehosts Hostsquefazempartedoinventrio. Menuderelatrio. Umateladeresumo(quetambmmostradanoDashboard)para avalizaodaperformancedoservidorZabbix. Relatriosdedisponibilidadeporhostsoutriggers.
Most busy triggers Os100triggersmaisativosnosistema. Top100 BarReport Mostradadosagregadosdentrodegrficosdebarra,porexemplo, vocpoderiaveramdiadeusodelinkporsemanaaoinvsde usarosgrficospadro. Menuparaacessoasopesdeconfiguraodemonitoramento. Gruposlgicosparadividiroshosts. Gerenciamento de templates (modelos), uma das telas que mais vamosacessarduranteocurso. Gerenciamentodoshostsmonitorados. Tela para colocar ou tirar um determinado host em estado de manuteno. Configuraodecenriosdetestedeserviosweb. Gerenciamentodeaesqueostriggersdevemtomaraoalertarem algum comportamento (exemplo: enviar um email quando o servidorXYZcair). Gerenciamentoeconstruodescreens. Gerenciamentoeconstruodeslideshows. Gerenciamentoeconstruodemapas.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 77 Menu ITServices Discovery General DM Authentication Users MediaTypes Scripts Audit Queue Notifications Locales Instalation Funo GerenciamentodosserviosparaclculodeSLA Gerenciamentodoautodiscovery. Menuparaacessosopesdeadministraodofrontend. Opesglobaisdofrontend. Configuraodemonitoramentodistribudo. Mtodosdeautenticao. Gerenciamentodeusuriosparaacessoaofrontend. Gerenciamentodeformasdealertas(emails,SMS,etc.) Gerenciamentodescriptsparatestesonlinepelofrontend. Logs de auditoria de aes dos usurios e de eventos gerados pelasActions. Filadealertasaseremacknowledged. Notificaesenviadasporusurio/tempo. Personalizao das strings de exibio para traduo (portugus brasileirojestapronto,portantonoprecisamosmexeraqui). Telasdeinstalao(asmesmasquepassamosagoraapoucopara configurarofrontend).
Administration
Tabela 4: Funo dos menus no front end Nointenodocursodetalhartodosositensdetodasastelas(issoprovavelmente seriatarefadeumlivrobemgrande).EmborasimplesainterfacedoZabbixtemumamagnitude deopesbemgrandeevamosnosconcentrarnelasaospoucosconformeanecessidadee escopodocurso.
3.2.Gerenciamentodeusurios
Opontomaislgicoparacomearadministrarquempodeacessarofrontendedefinir umasenhaaousurioAdmin.VamosentrarnomenuAdministration Users.Nocantodireito datelaquevaiaparecer,vocverumcomboboxaoladodobotoCreateUsercliquesobre eleeselecioneUsers.AFigura3.1mostraatelaqueirserexibida.
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.IssoapenasumsalvaguardaemcasosdeproblemasdeautenticaocomoLDAP, comovocverlogoaseguiriremospassartodaaautenticaoparaosistemadediretrio(que tambmpossuiumusurioAdmin). Em produo no desligue o autologout de nenhum usurio a menos que seja absolutamentenecessrio!Paraserexato,onicomotivovlidoqueoautorencontrou emdeixarumusurio100%dotempologadoquandooZabbixestasendousado paraexibirummapa,screensouslideshowemumteloouTVcomacompanhamento visual24x7.
Osdadosaquipreenchidosvariamdeumambienteparaoutro,nocasodeestudodo cursoestamosdizendoaoZabbixondeestoservidor(LDAPHost e Port),qual araizdo domnio(BaseDN),qualoatributousadoembusca(porprofundidade),nofoifornecidousurio esenhadeacessoaoLDAP,ouseja,elereadonlyguestbased(BindDNeBindPassword)e ativamosaautenticao(LDAPAuthenticationEnabled). possvelerecomendadoqueasenhadousurioAdmincadastradadentrodoLDAP sejatestada,preenchaasenhaecliquenobotoTest.OZabbixvaidizersefoibemsucedido ouno.Parasalvartambmobrigatrioqueasenhasejadigitadacorretamente. NormalmenteteremosumusurioesenhacomreadonlyparaacessodoLDAPem produo.Permitiracessoreadonlyguestbasednoaformamaisseguradese fazeracessoabasedediretrios.
3.2.1.CadastrandoosusuriosdoLDAPnoZabbix
ApesardoZabbixestarapontandoparaoLDAPeoAdminestarfuncionando preciso mapearquaisusuriosdarvoredediretriosparadentrodofrontend.Sevocnoofizer,no sercapazdelogarcomumdeterminadousurio. NocenrioqueestamosusandotemosalgunsusuriosdescritosnaTabelaquedevem seradicionadosealgunsnovosgruposdeusuriosqueiroorganizaralgunsdeles. Usurio sysadmin winadmin javaeng dba Descrio Administrador sistemas UNIX Grupos de Network Administrators, UNIX Administrators, Web Administrators Windows
Administrador de Network Administrators, sistemas Windows Administrators Administrador JBoss AS Administrador banco de dados do JBoss Administratros do Database Administrators
Table 5: Usurios do cenrio do curso NotemososgruposWindowsAdministratorseJBossAdministratorsprcadastrados noZabbix.Portantooprimeiropassojustamentecrilos.EntreemAdministration Userse cliquenobotoCreateGroup.NaFigura 3.4 temosumexemplodateladecriaodoJBoss Administrators.NonecessriomaisdoqueonomedogruponocampoGroupName,pois iremosdefinirsuaspermissesmaisadiante.
Podemosainda criar outros dois tipos de usurios,como o Zabbix Admin que pode acessaromonitoramentoeaconfiguraodehosts.Estecasotilquandoalgumdeveter permissesdeverificaoetambmdireitodecadastraremodificarhostsmonitoradosassim comoseustemplatesegrupos.PorfimtemosoZabbixSuperAdminqueocasodonosso usurioAdmin.Esteltimopodefazertudo,inclusiveadicionareremoverdireitosaousurios. Maisafrenteiremosacrescentardireitosaosusuriosetambmmudaremosseustipos conformeanecessidade.
3.3.Meiosdealertas
OsMediaTypesosnomesqueoZabbixatribuiaosmeiosdeenviodealertas.Comoj foiditooZabbixsuportacorreioeletrnico,SMSviamodem,SMSviaservioderede(EUAe Canadaapenas),mensageiroinstantneoviaJabberechamadadescriptsexternos.Nonosso cenriodecursoiremosaprenderatrabalharcomestesrecursosusandoosistemadeemaile jabber (os quaisconfiguramosos clientesno incio do captulo). Entre em Administration Media Types a tela da Figura 3.6 ser exibida com os trs meios de comunicao pr configuradosnoservidor.Paraeditarqualquerumdelescliquenonomedacoluna Description. Paracriarumnovo,cliqueemCreateMediaType. possveltermltiplosmeiosdomesmotipo,porexemplo,tervriosservidoresdeemail paraajudarnaredundnciadoserviodealertaoudedicardeterminadostiposdeemailspara diferentesservidores.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 84 Tambmaconselhvellimparos MediaTypes nousados,comononossocasode uso,nousaSMS,marquenocheckboxafrentedeseunome,eemseguidaselecioneDelete selectednacaixadeaesaofimdatabelaecliqueemGo(1).Confirmeaexcluso. Ambas,aoperaodelimpezaeomododefazla,sobemtriviaiseseromuito comunsnocurso.Elaserrepetidaemmuitosoutroslocais.
3.3.1.Correioeletrnico
Agora edite oitemde email,a tela da Figura 3.7 ser exibida. Preencha oscampos conformeamesma.Descriptionumcampodescritivoapenasenotemefeitosnaconfigurao a no ser identificar este Media type na interface; SMTP Server aponta para o nome/IP do servidordeemails(portaTCP/25);SMTPhelousadonamensageminicialtrocadaentreZabbix eservidores,aconselhvelcolocarodomniodaprpriaempresa;SMTPemailoendereode remetentequeoZabbixusarparaenviaramensagem.
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.
CliqueemAddparaadicionarumnovomeiodealertaaousurio.Vamoscomearpelo email.
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 86 AsintaxedoWhenActiveusa1comosegundae7comodomingo,definirporexemplo segundaasextaficaria15.Umavrgulaseparaodiadohorrio,segundaasextadas09:00at as18:00ficaria15,09:0018:00.Podemosaindausaropontoevrgulaparadefiniroutrasfaixas, porexemplosegundaasexta,das09:00s18:00esbadodas09:00s13:00ficaria15,09:00 18:00;6,09:0013:00. OUseifseverityfiltraostiposdeseveridadedeumcampo.Elessoimportantespara quemeiosdealertascomcusto(SMS)nosejamusadosparaalertasdepoucaimportncia. Tambmsousadosparanocausaravalanchesdealertasemummeioosquaiselesmais incomodariamdoqueajudariam,imagineseralertadotodominutopormensageminstantnea queumserviofoireiniciado!Seriatotalmenteimprodutivo. Porfim,StatuscontrolaseesteMediaTypeestarounoativo.Issoparticularmente tilquandoofuncionrioresponsvelestiverdefolga,afastadooudefrias. CliqueemAddparasalvareadicioneoutroMediaTypeparaoJabber.
Salveerepitaparatodososusuriosagora.
3.3.4.BoasprticascomMediatypes
Halgumasrecomendaesaseremfeitasquandosetrabalhacomalertasdesistemas monitorados. 1) Mantenha mais de um meio de alerta para sistemas crticos. Isso pode ser feito mantendovriosserviosdemesmotipo(doisservidoresdeemail,doismodems SMS,etc.)ou melhor,fazendo comque eleseja enviado porvriasmdias(SMS, Jabbereemail,todosaosmesmotempo). 2) EscolhaosMediaTypesdemaneiralgica.NoadiantaenviaralertasviaJabberse ostcnicosraramenteestoonlinedosistemademensagensinstantneas.Tambm noadiantaenviarumemaildedesastreastrsdamadrugadaquandoningumesta olhandoemails. 3) Procuredeixaralertasqueprecisamderespostaimediataemmeiosquealcanamo usuriocomfacilidade.SMSmaisclssico,masoautorjimplementouumquese vinculavaaoasteriskefaziaumaligaodescrevendooproblema(comoumaURA ativa). 4) Planeje!Faaescalasentreosfuncionrios,evitedaraltaprioridadeaalertastriviaise cuidadocomosfalsospositivos,elespodemgeraroproblemadolobo. OproblemadoloboaquelahistriadomeninopastorquegritavaLOBO!LOBO!na vilaondemoravaetodosiamcorreraoseusocorro,paradescobrirqueeraapenas umabrincadeira.Apsvriosepisdios,osaldeescomearamaignorarosapelos falsosdogaroto,ejustonestediaumloboapareceudeverdade. Receber alertas seguidos vai treinar o nosso crebro a ignorlos se eles se comprovarem falsos positivos. Veremos ao longo do curso como diminuir os falsos positivos.
3.4.Hosts,hostgroupsetemplates
Nesta sesso iremos abordar os conceitos mais fundamentais de monitoramento do Zabbix:hosts,hostgroupsetemplates.
Hostssoarepresentaodeumservidor,servioouativoderedeasermonitorado. Elesnormalmenterepresentamumsistemafsico,masissonototalmenteverdade,oagente doZapcatporexemplo,serrepresentadoporumhostaparteeelenoumhardware. Hostgroupsseparamlogicamenteoshostsepermitemquesejamatribudaspermisses deacessosdosusuriosaumdeterminadohost. Templates(modelos)soosblocosdeconstruodomonitoramento,enquantonoso obrigatrios, pois podemos acrescentar mtricas de monitoramentos direto a um host, eles ajudamagerenciardemaneiraefetivaosdiversostiposdemonitoramentospossveiserepliclos atantoshostsquantoquisermos(ouoquantonossossistemasaguentarem,oquevierprimeiro). Ostemplatesagregammtricasdemonitoramentochamadositems,macroseoutrosvaloresque soimportantesparaconstruirumasoluodemonitoramento.Amaiorpartedoseutrabalhono cursoseremcimadostemplates.
3.4.1.Templatesparaocasodeestudo
OprimeiropassolimpartodosostemplatespreexistentesnoZabbix.Apesardeparecer umtantoagressivoexcluirtodososmodelosprcriados,partedointuitodocursoconstruiros seustemplatesdemaneiraadequadaasuanecessidade.Emproduovocpodeconservlos se desejar, mas isso no um requerimento a menos que voc tenha garantidamente um equipamentoparaoqualumdosmodelostenhasidoconstrudo.Outraopofazerbackupdos originais(vejaaprximasesso).
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.
Paracriarumnovotemplate,cliquenobotoadireitadatelaCreateTemplateconforme indicadonaFigura3.15.Umanovatelavaiseabrirconformeafiguraaseguir.
1) NocampoNamesercolocadoonomedonovotemplate.Queser4LinuxICMP base.EstetemplateconterasmtricasmaisbsicasdetestesporICMP.
3.4.2.Vnculoentretemplates
possvel estabelecerum relao de dependnciasentre um modelo e outro,isso extremamentetilparacriarestruturasdetemplatesquesocompostosporvriaspartes,por exemplo,umconjuntodetemplatesquetestaumserviosobreumsistemaoperacional.Quando o template de servio adicionado ao host todos os outros aos quais ele dependem so adicionados. Umdetalhedeextremaimportnciadesterecursoquepodemoscriarumadependncia entreastriggers(gatilhos)queativamosalertasdoZabbix.Issoimportanteporqueumatrigger dealtonvelnodeveserativadaseumamaisbsicaestiverativa(noprecisotestarseo agentedoZabbixestempseopingICMPestiveracusandohostinalcanvel). Seguindo as mesmas instrues mencionadas acima, crie mais um modelo chamado 4LinuxS.O.Base.
1) Na parte inferiorda tela voc ver um boto Add ao lado do campo Link with template 2) Escolhaotemplaterelacionado(4LinuxICMPnonossocaso). 3) Salveotemplate. Agoraseassociarmosumhostcomotemplate4LinuxS.O.Baseeleautomaticamente vai receber todos os objetos definidos no 4Linux ICMP. Aproveite e crie mais um ltimo templateparausarmosnaprticadirigida,4LinuxSNMPBasetambmvinculadoao4Linux ICMP.
3.4.3.Backupdostemplates
Umaaoimportanteemtodosistemacriarumbackupdasconfiguraes.Apartirde agoratodamodificaoquefizermosnosmapas,templates,gruposehostsdeverserseguidade umbackup.Aoperaodebackup,chamadaExport bastantepadronizada,todasastelas pertinentesafazerbackuputilizamomesmoprocedimentoexplicadoabaixo.Oresultado um arquivoXMLcontendoosdadosdeconfigurao.
3.4.4.Hosts
Agoraqueumtemplatefoidefinidovamoscriarumhosteassociloaestemodelo.Na Figura3.19estaumarepresentaodecomoasmquinasvirtuaisestodispostasemtermosde layoutderede.EmnossaprticadirigidairemoscadastraroshostsPresentationeSwitch, almdemodificaroZabbixServerquecriadoautomaticamentenomomentodoimportede dadosdoPostgreSQL.
Tambmdevemoscriaralgunsgruposadicionaisparasepararlogicamentecadaservidor, paraissovamosgerenciarosHostGroups.
3.4.5.GerenciandoosHostGroups
UmHostgrouptemduasfunesdentrodoZabbix:aprimeiraemaisbviamanter oshostsorganizadosdetalformaquesejamaisfcillocalizarouexibirumgrupodeservidores comservioscorrelacionados.Asegundaosistemadepermissionamentodeacessoaoshosts quesertrabalhadoaolongodocurso. Para exemplificar a criao dos hosts vamos criar apenas um deles, que conter os equipamentos de rede. Clique no menu Configuration Host Groups, e clique no boto CreateGroupconformeaFigura.
Aseguintetelairsurgir.
1) NocampoGroupnamecoloqueonomedonovogrupo(NetworkDevicesnonosso caso).
3.4.6.Criandoumnovohost
Agora que geramos um host group, vamos criar os hosts, acesse Configuration Hosts,algosimilaraFigura3.22iraparecer.Comoditoanteriormentealistadehostsjpossuio prprioservidordoZabbixprcadastrado.
Para criar um novo host para o host Presentation da infraestrutura clique no boto 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) OcampoConnecttopermitequesejaescolhidooacessopeloendereoIPoupelo nomedeDNS.Oclssicousaroendereo(evitandoconsultasDNSexcessivasno ladodoservidor),maspossvelquesejanecessriomonitorarestaesdeusurios ouservidoresqueestejamemambientescomIPdinmico(viaDHCP)enestecaso somenteviaDNSpossvelencontrarohost. 7) QualaportaTCPdoagente.Vamosmudaristoparamonitoraro Zapcat,masem todososoutroscasosdeixaremoselanopadro10050. 8) Nomonitoraremosestehostviaproxy. 9) No Status deixe como Not monitored por enquanto, quando associarmos os templatesiremosativarestehost.
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.
Dentrodateladogrupolocalizenaparteinferiordatelaascaixasdepermisses(Figura 3.26).CliquenobotoAdddacaixaReadWrite.
NodialogoqueaparecerselecioneogrupodehostsLinuxServersecliqueemselect.
Aoretornarvocverogruponacaixa.Cliqueem Save epronto,quempertencerao grupoUnixadministratorsvaipoderleregravarnoshostsdentrodeLinuxservers. Os direitos de deny tem precedncia aos de read only, que por sua vez tem precednciasobreosdereadwrite.
3.4.9.Exercciossobreusurios,hosts,gruposepermisses.
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.Elessodeextremavaliaparaequipesqueavaliamasadedasmquinas constantementeeprecisamreagirrapidamentediantedeumincidente. OMapatambmpodeajudaradiagramarestruturasfsicasderedeeajudamamostrar como os equipamentos se relacionam, embora o front end no seja uma ferramenta de desenhosdediagramaspropriamentedita.
3.5.1.Importandoimagensparaomapa
Antesde criarummapa preciso definirasfigurarque faro parte de seu desenho. AnteriormentenspulamosodumpdasfiguraspadrodoZabbix,issofoipropositalpoisiremos inserirfigurasdemelhorqualidadedentrodofrontend. OconjuntodefigurasqueutilizaremosestadentrodofrumdoZabbixatravsdolink http://www.zabbix.com/wiki/_media/contrib/zabbix_icons_set_generic.zip. Acesseo e baixe o arquivoparaumapastaemsecomputador(nonecessrioenvilasmquinadestinadaao servidor, todo o procedimento de insero ser feitopelo front end).Depoisdescompacte o arquivoparateracessosimagens.
NestatelacliquenobotoCreateImageparaabrirodilogodeimportaodeumanova imagem.Conformeasinstruesabaixoimporteaprimeiraimagem.
1) Nome da imagem a ser inserido, este nome precisa ser nico. No primeiro caso coloqueovalorServerOn. 2) Podemosenviarcones(Icons)oufundodetelas(Background)aofrontend.cones sousadosnoselementoscomohosts,triggerseimagensestticas,telasdefundo obviamentesousadascomoumfundoparaomapa. 3) Nocampo Upload,cliquenoboto Browse... eescolhaolocalondeaimagemse encontra,nocasodocursoaimagemutilizadaoconedetamanho48x48enome 48_g_srv_tower_on.png. Realizeomesmoprocedimentoparaoutrasimagensconformeatabelaabaixo.
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
Agoraquetodososconesestodentrodofrontendvamoscriaroprimeiroprottipode 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) AopoIconhighlightingserveparapediraoZabbixdesenharfundosnoscones pararepresentarestados,elaumtantoredundanteemrelaoamltiplasfigurasde conescomovamosvermaisafrente,pormiremosdeixlasligadasmesmoassim. 6) Se o cone possuir um trigger que teve seu estado mudado recentemente, uma bordaserdesenhaemvoltadocone. 7) Nocasodehaverumincidentecomumitememparticular,eelefornico(somente um problema para aquele item em particular) podemos deixar o campo Expand singleproblemligadoparaqueadescriodoproblemasejaapresentadonomapa (evitandoterqueclicarnoitemparaexibilo). 8) Qualotipodemensagemqueseradicionadaaonomedoitemnatelaquandoum trigger forexibido.Osvalorespossveisso: Label,odefaultindicandoquedeve exibironomedortulo; IPAddress,mostraoendereoderededohost; Element name, o nome do elemento que esta apresentando problemas; Statusonly, que indicaostatusdotrigger(OKouPROBLEM);Nothing,nadamostrado. 9) Localizaopadrodoslabels. 10) NocampoProblemdisplaypodemosescolhersedesejamosmostrartodos os problemas em uma nica linha (All), duas linhas com os problemas com acknowlegment e outro sem (Separated), ou ainda somente os problemas sem acknowlegmentchamadosdeUnacknowledged. DepoiscliquenobotoSave.Vocirretornaratelaanterior.Agoraparacriaromapa visualcliquesobreonomedomapa.
Nosepreocupeemdecoraretestartodasasopesdemapas,iremosdetalhara maiorpartedelasduranteocurso.
3.5.3.Adicionandoumelemento
Dentrodatelademapas,umareaembrancodivididaporlinhasdealinhamentoser exibida.Seutamanhoodefinidonateladecadastrodemapas.Napartesuperiordatelavoc podeverumabarradeferramentascomonaFigura3.34,aexplicaoqueseguedefineousode cadaboto.
1) Obotocomsinaldemais(+)adicionaumnovocone,queoelementoprincipal dentrodeummapa.Este conepodeserumafiguraesttica,umtrigger,umlink paraoutromapa,etc.Sevocselecionarumoumaiselementoseclicarnobotocom sinaldemenos()vocirexcluiresteselementos. 2) Aoclicaremdoiselementospossvelcriarumlinkentreeles,representadoporuma linha(cor,formato,etc.podemserpersonalizados).Estelinkpodeconterumalabele indicaramudanadeestadosdeumgatilho. 3) NocampoGridpodemosdeixaragradedealinhamentoocultaounoclicandoem Shown/Hide. 4) TambmpodemosligaroudesliglaclicandoemOn/Off. 5) Nacaixadecombinaoaseguiraresoluodagradepodeserescolhida,variando desde20x20(paraajustefinodecones)at100x100(paracasosdemapasextensos ouconesbemgrandes). 6) Porfim,oboto AlignIcons foraoZabbixaalinhartodososelementosdomapa noslimitesmaisprximosdagrade. Paraopropsitoinicialdocursoaresoluode50x50osuficiente.Vamosinserirum novoconepararepresentarolinkdeinternet.CliquenobotomaisdocampoIconeumnovo elemento ir aparecer no canto superior do mapa. Note que o Zabbix escolher o primeiro elementogrficodisponvelparaele.
Arrasteoatapartedatelaquevocdesejarparaposicionlo.
VersesanterioresdoZabbixnoeramcapazesdeusarDrag&Drop.Tudotinhaque serfeitocomcoordenadasmanuais.
3.5.4.Editandoumelementodomapa
Umavezqueoconeestejaposicionado,possveleditarosseusatributosconformeos passosdescritosaseguir.Umelementonatelapodeserdevriostipos,elepodeporexemplo representarumaimagemesttica,umhostouumgatilho. Quandooconerepresentaumelementodinmicoelevaireagiramudanasdosestados de qualquer um dos triggers associados visualmente. Como j foi dito antes isso extremamenteimportanteparaacompanhamentosvisuais,especialmenteseforutilizadoteles oumonitoresnumasaladeacompanhamentodeincidentes.
1) Cliquesobreoobjetocriadoanteriormente.Atelaadireitairserexibidaepodeser reposicionadanatelapermitindoenxergarumdeterminadotrechodomapanatela. 2) OcampoTypeindicaotipodeobjetomencionadoanteriormente,noprimeirocaso iremosescolher Image porqueolinknorepresentanenhumelementomonitorado (apesar que posteriormente vamos monitorar o estado do link). Conforme o andamentodocursoveremosmuitosoutrostipos. 3) No campo Label digite o texto a ser exibido como rtulo do cone. Aqui como veremosmaistardepossvelcolocarvariveisespeciaischamadasdeMacrosque oservidorassociaavaloresdinmicos. 4) AlocalizaodestertulopodeserescolhidaemLabellocation.Porpadroelafica comofoidefinidonopadrodacriaodoMapa. 5) Qualaimagemdoconeaserexibida?Nestecasovamosdeixarcomoesta,mas todasasimagensquefizemosuploadestosendoexibidasnestacaixadeseleo. 6) Porfimpodemosconfigurarascoordenadasdaposiodoelementodentrodomapa empixels.NormalmentefazemosissopelosistemaDragandDrop. NotrminocliqueemApplyparaaceitarasmodificaes.Issonovaifecharatelade edio,paraissoaindatemosqueclicaremClose.
3.5.5.Salvandoomapa
importantequesalvemosconstantementeomapa,poissevocclicaremoutrolinkde menudofrontendirperdertodasasalteraesfeitasatessemomento.Parasalvaromapa cliquenobotoSave(Figura3.38).
3.5.6.Adicionandoosoutroselementos
AgoraadicionemaisdoiselementosnomapapararepresentaroshostsPresentatione SwitcheposicioneoscomonaFigura3.40.
Cliquenoelementodomeioparaeditloconformeabaixo,eleservirderepresentao paraohostPresentationagora.
1) Neste campo vamos escolher o valor host. Visto que vamos utilizar um dos previamentecadastrados,vocverqueporeleestardesativado,quandoclicarem Apply,olabelDISABLEDsermostradoemvermelho. 2) Neste campo o valor da macro {HOSTNAME} ser substitudo pelo nome que cadastramosohostnogerenciamentodosmesmos.EstamacrointernadoZabbixe no precisa ser definida pelo usurio. Durante o curso aprenderemos outras e definiremosvriasqueseropersonalizadasparaanossanecessidade. 3) Neste campo, que aparece sempre que escolhemos Host em Type clique em Selecteescolhaohostdesejado.NestecasooPresentation. 4) TroqueoconeparaServerOn,visualmenteeledeverepresentarumamquina.
5) Aoativar Useadvancedicons oscamposdoitem6seroexibidos.Issopermite escolhermos um cone diferente para cada estado. Como foi mencionado anteriormenteissoumtantoredundantecomosistemade highlighting domapa, masvamosativarambosparaquevocvejaadiferenaentreeles. 5.1) Nestescamposescolhaosconesconformeindicado.Cadaumdosestadosir exibirumconediferente.PercebaqueoexibidonatelaaoclicaremApplyo ServerDisable. OmesmoserfeitoparaoelementodohostSwitch,aFigura3.42mostraquaissoos valoresutilizados.
ComoresultadofinalumaimagemparecidacomaFigura3.43deveestarnomeiodesua reademapa.
3.5.7.Criandoeeditandolinks
Comoselementosdehostseimagensnomapaaindafaltacriaroslinksqueinterligam umelementoaoutro.Oslinkspodemtantoserumsimplestraoparamostrarumaligaoentre 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) NocampoLabelpodemoscolocarumaidentificaodestelink.Assimcomoortulo doselementoscomimagenselatambmaceitamacros. 2) NosdoiscamposdeElementsositensqueestovinculadospodemseralterados. 3) Em Link indicators vamos, mais a frente, associar um link com gatilhos. No momentodeixeovalorcomoesta. 4) EmType(OK)escolhaBoldline parapodervisualizarolinkcommaisfacilidade. Estecampousadoquandoumoumaisgatilhosaoqualolinkestaassociadono estejoativos. 5) PorfimemColour(OK)podemosescolherumacorparaolink.
Agoravocjtemomapafinaldestaprticadirigida.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,montamalgicaparageraralertasbaseadonainformao coletadapelosItems.ApartemaiscomplexadoZabbix montarasexpresses booleanasdosgatilhosdemaneiraconcisaeequilibrada,evitandofalsospositivosao mesmotempoquegeraalertasemumtempohbil.Inciaremosoestudodelesno prximocaptulo. 4) OsGraphssoelementosqueexibemgrficos.Tambminiciaremosseuestudono prximocaptulo. Nesta sesso nos concentraremos apenas nos Applications e Items.
3.6.1.CriandoumApplicationeumItemdentrodeumtemplate
AindaemConfiguration Templates,cliquenolinkApplications(0)comoindicadona Figura3.49.
Umanovatelasurgir.LocalizenocantosuperiordireitodelaobotoCreateapplication comonaFigura3.50ecliquesobreele.
AteladeNewapplicationsurgirconformeabaixo.
1) Coloqueonomedaapplicationaqui,quenestecasoelaserICMP. 2) Podemos opcionalmente escolher outro template ou host para associar este application.Poucoprovvelquevenhamosaalterarestetipodeoponestatela. CliqueemSaveparaconcluireretornaratelaquelistatodasasapplications.
Nossonovoapplication estaexibidonatabela.Agoraomomentodecriarumnovo 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 anteriormenteumitemapartemaisimportantedeumtemplateeoseukeya partemaisimportantedeumitem.Saberqualusaremqualsituao,fazparteda competnciadeusaraferramentaedecriarummonitoramentoeficaz.Nonossocaso vamos criar um item que faz um ping via ICMP no host, logo a chave ser icmpping.ClicaremSelect abreumajanelacominfindveiskeysevocpode selecionlasporessajanela,sedesejar.
4) Repetindo:CadaitemdoZabbixcapazdearmazenarapenasum,esomenteum valor. No possvel armazenar objetos complexos dentro dos items, por isso precisamosdefinirqualoformatodovalorqueserarmazenado.Nocasodakey icmppingeleretorna1seopingfoibemsucedidoe0seno.Valoresinteirossem sinalcomoestessoNumeric(Unsigned). 5) OUpdateinterval,otempoentreumacoletaeoutra,emsegundos.Porpadroo Zabbixusa30segundos.Emnossocenriousaremos10,mastenhaemmenteque estesnosobonsvalores.Enquantopodemosnossentirtentadosausarintervalos curtosparatermosumagranulidadededadosbemalta(emaisprximadarealidade) eleimpactapesadamenteemduascoisas:espaoemdisco,queaparentemente pequeno mascomea a tomargrandes propores em ambiente commilhares de mtricaseoenfileiramentodemtricasaseremprocessadaspeloservidor.Altima em particular muito ruim, pois causar todo tipo de buraco possvel nos seus grficos.Veremoscomocalcularumbomintervaloapartirdoprximocaptulo. 6) OscamposKeephistoryeKeeptrendsindicamporquantotempo,emdias,os dadoscoletadosseroarmazenados.Oprimeirotempodelenatabelahistorydo bancodedadosquemantmosdadosipsesliteriscomocoletados.Asegunda uma mdia de 3 horas dos valores coletados para economizar espao. Como veremos,o Zabbix temumaoperaorotineirachamadahousekeeping quelimpa osdadosvencidos(depoisquepassarosdiasemkeephistory)databelahistory, passandoamdiaparaatrends.DepoisquevencerotempoemKeeptrendsos dadossoapagadosdefinitivamente. 7) Escolhao application ICMP quecriamosanteriormente.Seexistiremmaisdeum applicationnestalista,vocpodepressionarCTRLparaselecionarvrios. 8) CliqueemSaveparafinalizar.
OresultadofinalmostradonaFigura3.55.
3.6.2.Interdependnciadetemplates
Emvriassituaesprticasseremosobrigadosacriarumalgicadechecagensentreos triggersqueirogeraralertaseusarapplications queestoemoutrostemplates.Issos pode ser feito se criarmos templates que so associados a outros. No nosso cenrio de exemplosteremosvrioscasosdestetipo.
Normalmenteostemplatesmaisprximosda raizsoaquelesque realizamostestes maisprimrios,comootemplatedeICMPcriadoanteriormente.Defatoeleseraraizdamaioria dos outros templates, com destaque para o de JBoss, sistemas operacionais e SNMP. Para exemplificarcrieumnovotemplatechamado4LinuxJBossBase.Antesdesalvarnotequeh umcamponofinaldoformulriochamadoLinkwithtemplate.
CliquenobotoAddparaabrirateladetemplates.
Najaneladedialogoqueaparecerselecione4LinuxICMPecliqueemSelect.Voc podeescolhertantostemplatesquantoprecisarnestatela.
3.7.Associandoostemplatesaoshosts
Agora que temos os templates criados podemos vincular cada um deles aos hosts criados.Fazerissoparaumhostmuitosimples,sigaospassosabaixo.
NapartedireitadatelalocalizeoquadroLinkedtemplates(Figura3.62)ecliquesobre obotoAdd.
Figura 3.63: Associando o template do JBoss ao host JBoss AS
(3/6)
Vocveronomedostemplatesescolhidosapareceremnestequadro,conformeaFigura 3.64demonstra.
ParafinalizarcliqueemSave.
Figura 3.66: Associando o template do JBoss ao host JBoss AS (6/6)
Notequeotemplateescolhidoesuasdependncias,entreparnteses,seroexibidasna Listadetemplates.
Figura 3.67: Templates para Windows e SNMP associados aos seus respectivos hosts
Agoravamosfazerumpequenoexerccioquevaidemonstraroutrorecursointeressante doZabbix:oMassupdate.Imaginequevocpossuiumaquantidadegrandedehostseprecisa associlos ao mesmo template, temos um caso destes no nosso cenrio: os hosts Presentation,application,DatabaseeZabbixserverprecisamservinculadosaotemplate 4LinuxLinux,umavezquetodasestasmquinasvirtuaissoservidoresGnu/Linux.Vata teladehostsesigaospassosaseguir.
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.
Umdialogoirsurgirperguntandoseohostdevesermesmoativado.Confirmeclicando emOK.
AcolunaondeclicamosinicialmenteagoradeveestarcomolinkMonitored emverde. Aproveiteeativetodososhosts. Ao invs de ativar um por um. Use o recurso de ativao de todos os hosts simultaneamente ativando Enable selected na caixa de opes abaixo da lista de hosts.
3.8.1.Throubleshootingparaitenscomproblemas
Tecnicamente, com os templates, a instalao e a ativao em ordem, a esta altura o Zabbix estar coletando dados. Mas se formos at Monitoring Overview veremos que nada aparece. Isso aconteceu porque, deliberadamente, um componente da instalao foi omitido: o item que o criamos dentro do template 4Linux ICMP. O objetivo deste tpico justamente ensinar a voc como lidar com itens com problemas dentro do Zabbix. Sempre que suspeitar que uma mtrica no esta funcionando devidamente, o lugar correto para descobrir o que pode estar acontecendo, est dentro dos itens do host. V at Configuration Hosts e clique sobre um dos nomes dos hosts.
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 Notequeeleestem/usr/bineoservidorestaprocurandoeleem/usr/sbin.Isso claro varia de uma distribuio de Gnu/Linux para outra. O que fazer neste caso? Simples mudaremosaconfiguraodoservidorparaseadequaraoambienteemqueelefoiinstalado. Editeoarquivo /etc/zabbix/zabbix_server.conf eprocureaslinhascomasopesindicadas abaixo. #vim/etc/zabbix/zabbix_server.conf # ======================================================================== ==== #Localizaodoprogramadeping(ipv4eipv6) # FpingLocation=/usr/bin/fping
Captulo 3 Criando uma Infraestrutura de Monitoramento - Parte 2, Front end - 127 Fping6Location=/usr/bin/fping6 1) FpingLocaltion: indica o caminho do fping para pacotes ICMP usando IPV4. Mudepara/usr/bin/fping. 2) Fping6Localtion:comoacima,masparaIPV6.Mudepara/usr/bin/fping6. Comasopesmodificadasreinicieoservidor. #/etc/init.d/zabbixserverrestart StoppingZabbixserverdaemon:zabbix_server StartingZabbixserverdaemon:zabbix_server
Umaoutrapossibilidadepararesolveroproblema fazerumlinksimbliconosistema operacional.Avantagemdestemtodoquenosernecessrioalterarnenhumarquivode configuraoenemreiniciaroZabbix. lns/usr/bin/fping/usr/sbin/fping Confira no s logs se alguma outra mensagem apareceu e acesse Coonfiguration hosts,seoitemaparecercomonosuportadoaindanosepreocupeeleretornarembreve.Se quiserque eleseja ativado agora,cliquesobre o Notsupported eeleser restabelecido.A imagemabaixomostracomoeledeveficaraofinaldaoperao.
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.Enquantoadisponibilidadenosejao nico motivo de se monitorar ativos e servios, ela o fator que mais impacta em custo e investimentos realizados. Quanto custa uma hora de seu principal servio parado para sua empresa? Neste captulo ser abordado uma multitude de possibilidades para medir o quo disponvelestoseusservidores,servioseativosderede.OZabbixpossuidiversasmaneirasde descobrir se algo no esta funcionando e aqui veremos como fazer isso usando protocolos bsicosderede,testadoresdeprotocolos,cenriosdetesteweb,oprprioagentedoZabbix, SNMPeoagentedoZabbixparaJBoss. Tambmvamosentendercomocriartriggers(gatilhos)eActions(aestomadasquando umgatilhomudadeestado)eenviaralertasdeparadademaneirainteligente,paraevitarfalsos positivosepermitirqueaequipedesuportereajaatempoquandoumincidenteacontecer. Almdisso,vamosvercomomedirdiversasmtricasegerarnossosprimeirosgrficos dentrodofrontend.
4.2.Checagensmanualviafrontend
ObviamenteoZabbixpermitequerealizemosvriaschecagensdemaneiraautomtica, afinalessasuaprincipalfuno,masantesdecomearacoletarmtricasemaismtricas, vamos ver como usar o front end para realizar testes manuais, incluindo tambm a personalizaodestestestes. VatMonitoring MapsecliquesobreohostDatabasecomobotoesquerdodo mouse(defatopodeserqualquerhostasuaescolha).Ummenu popup irsurgircomona Figura4.1.
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,quesoopadrodo traceroute.Nestecasoteramosduaspossibilidades: 1) LiberarnofirewallumaregrapermitindoqueoservidordoZabbixalcanceoshostspor UDP; 2) ModificarocomandoparaqueelerealizetraceroutebaseadoemICMPquejesta liberadonoFirewall. Nestacasovamosoptarpelasegunda,parademonstrarcomoalterarasconfiguraes destescomandos(queoZabbixchamadescripts).Masdependendodeseucenrioreal,pode serprecisoliberaroFirewallparapermitirapassagemdedeterminadospacotes. Semprecabeaoadministradorougerentederedetomarestasdecisescombasena simplicidade,seguranaenecessidadedoambiente.Infelizmenteestassoregrasque sempreentramemconflito,ponderebastanteparanodeixarfalhasdeseguranae verifiqueseocomandoaserhabilitadomesmonecessrio.
4.2.1.Adequandooscriptdetraceroute
OservidordoZabbix,assimcomoseuagente,soexecutadoemformadedaemone porquestesdeseguranaelessoexecutadoscompermissesdousurio6zabbix(egruposao qualestacontapertena). Este usurio no deve ter permisses de superusurio (conforme sua criao nos captulosanteriores)esendoassim,somosobrigadosachecarseoscomandosquecolocaremos nofrontendpodemserexecutadospelodaemon. Primeirovamostestarcomorootofuncionamentodocomando.Nocasodotraceroutea opopararealizartraamentoderotasviaICMPoI. #tracerouteIwin2003 traceroutetowin2003(172.28.0.10),30hopsmax,60bytepackets 1gateway.curso468.4linux.com.br(172.27.0.1)0.954ms0.820ms0.724ms 2172.28.0.10(172.28.0.10)1.158ms1.066ms1.054ms Perfeito!ViaICMPotracerouteconseguechegaratodestinoemostrarasrotas.Agora vamostentarcomousurioZabbix. #suzabbix $tracerouteIwin2003 Thespecifiedtypeoftraceroutingisallowedforsuperuseronly $logout # Voc no pensou que seria to fcil, pensou? Como verificado, o usurio no tem permissodeexecutarotraceroutecomICMP.Issoaconteceuporquesomenteousurioroottem direitosdecriarpacotesdacamadaderedearbitrariamente.Programascomoping,fping,entre outrostempermissoSUIDativaparagarantirqueusuriosconvencionaissejamcapazesde executarestesprogramas. EviteusarSUIDparadarpermissesdeexecuesaosusuriosnormais!Issopode causarfalhasdesegurana.
FelizmenteexisteumaalternativanomundoUNIX:osudo,umprogramaqueverificase umusuriotempermissodeexecuoapartirdesuasconfiguraes. Mesmo o sudo teve seu histrico de segurana comprometido, por isso sempre mantenha sua distribuio atualizada com os ltimos patches de segurana, pois nuncasesabequandoumanovafalhavaisair. InstaleosudoapartirdorepositriodoDebiannohostZabbixserver. #aptitudeinstallsudo Agora use o comando visudo para adicionar a permisso do usurio zabbix de executar o comando traceroute. #visudo
1
#/etc/sudoers # #ThisfileMUSTbeeditedwiththe'visudo'commandasroot. # #Seethemanpagefordetailsonhowtowriteasudoersfile. # Defaultsenv_reset #Hostaliasspecification #Useraliasspecification #Cmndaliasspecification #Userprivilegespecification rootALL=(ALL)ALL #Allowmembersofgroupsudotoexecuteanycommand
7 8
9 10
11 12
13 14
15 16
17
18 19
21
22
23
24
25 26
NocampoCommandmodifiqueovalor,colocandosudoseguidodeespaoantesdo traceroute e clique em Save. Agora volte at o mapa (Monitoring Maps) e execute o comandoemvrioshosts.
AsadadaFigura4.4mostraasadadocomandosobreohostWindows2003.Noteque elaidnticasadadoterminal.
4.2.2.Criandonovoscomandosparaomenu
Quandoascoisascomeamadarerradoeosalertaschegam,vocpodenecessitarque usuriosdeprimeironvelsemconhecimentoprofundodeUnixouWindows,econsequentemente semacessoaosconsolesdoservidor,precisemrealizartestes.Logo,existirocasosemqueseu ambientedemandedevriosscriptsaseremexecutadoapartirdoservidorviafrontend.Um exemplomuitocomumodetestesdeportasdeserviosTCP. Paraexemplificarestecaso,vamoscriarumscriptquechamaumcomandnmappara testar a porta 22/TCP (SSH) dos servidores Gnu/Linux em nosso cenrio. Volte para AdministrationScripts.
Figura 4.5: Criando um novo script para testar portas SSH (1/2)
CliquesobreobotoCreatescriptconformeaFigura4.5paraacessarateladecriao decomandos.
Figura 4.6: Criando um novo script para testar portas SSH (2/2)
1) Name:onomedocomandoaserexibidonomenu; 2) Command: O comando a ser executado, no nosso caso nmap P04 p 22 {HOST.CONN}.OparmetroP0donmapindicaqueohostnodeveserpingado antesdetestaraporta(p22).{HOST.CONN}umamacrodoZabbixquecontmo IPdoservidor(ounomeDNSdomesmo,dependedoqueescolhemosnacriaodo host).Vriasmacros,inclusivepersonalizadaspodemserusadasnestecaso. 3) Usergroups:Indicao grupo usuriosquepodemexecutarestecomando.Escolha Allparaestecenrio. Se voc possuir vrios tipos de usurios que precisem executar apenas alguns comandos,compensacriarumgrupodeusuriossparaissoeatribuirquaisusurios pertencem a estes grupos. No esquea de dar permisso conforme os campos a seguirparaqueelesejacapazdeveroscomandos. 4) Hostgroups:indicaemquaisgruposdehostsumcomandopodeserexecutado.Em combinaocomaopoanteriorpossvelcriarregrasbemcomplexas.Almdisso nofazsentidotestarumSSHemumWindowsporexemplo.EscolhaLinuxservers.
AFigura4.7demonstracomoopopupsermostrado.CliquesobreonovosciptSSH paraexecutlo.
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 aplicaes. Somente os usurios suporteejavaengdevempoderexecutlo 2.3) (Desafio)Testaraporta80/TCPdo gateway ondeficaosistemadecachee proxyreverso e do servidorde aplicaes. Somenteos usurios suporte e sysadmin podemexecutlos.Nocasodesteexercciovocdeveverificarse foiretornadoHTTP200. 2.4) (Desafio)Testaraporta5432/TCPdohost Database.Somenteos usurios suporteedbapodemexecutlo.Nocasodesteexercciovocdeveverificar sefoiretornadoovalorumapartirdeumSELECT1. 2.5) (Desafio)O Varnish temumconsolelocaldecomandosacessadoporuma porta.Namquina Presentation crieumscriptqueacessaesteconsolee limpaocachedoVarnishparaserchamadoviascriptdoZabbix.Somenteo sysadminpodeexecutarestecomando.
4.3.ChecandodisponibilidadeviaprotocoloICMP
Criar comandos de teste interessante mas no automatiza o monitoramento que o servidordeve fazerconstantemente.Logo,chegou o momentode verificarcomo o hostpode apresentarindisponibilidadeapartirdachecagemderetornodepacotesICMPreply. NemtodosossistemaspermitempacotesICMP.Seesteforocaso,noadiantacriar testescomooaseguir,pulediretoparaverificaodeagenteseportas.
4.3.1.ComofuncionaopingICMP
O ICMPInternetControlMessageProtocol umprotocolodacamadaderededo modeloTCP/IPresponsvelportrocarmensagensdecontroleentreoshosts(porexemplo,falhas derotas).
Estetestejestasendorealizadoemnossocenrio,vistoquecriamosoitemicmpping dentrodotemplate4LinuxICMPeativamososhosts.Emboramuitoprimrio,estetestevalida todoocaminhofsicoentreoscomponentesderededodestinoedaorigem(switches,cabos, placas,roteadores,etc.)eporissomuitoutilizadodentrodevrioscenriosreais.Podemosver atrocadepacotesaconteceratravsdocomandotsharkaseguir. #tsharknieth0icmpandhost172.27.0.1 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 0.000000172.27.0.10>172.27.0.1ICMPEcho(ping)request 0.000959172.27.0.1>172.27.0.10ICMPEcho(ping)reply 1.000731172.27.0.10>172.27.0.1ICMPEcho(ping)request 1.001954172.27.0.1>172.27.0.10ICMPEcho(ping)reply 2.000778172.27.0.10>172.27.0.1ICMPEcho(ping)request 2.001882172.27.0.1>172.27.0.10ICMPEcho(ping)reply Notequeparatodosospacotesechorequest,umechoreplyretornadodestino.
4.3.2.VisualizandoopingICMPnoFrontend
Podemos visualizar o resultado dentro da tela de Overview do front end. Acesse MonitoringOverviewparaexibila.
NaFigura4.10temosumexemplodestatelamostrandotodososhosts.Seelanoestiver aparecendonoseesqueadeselecionarnocomapoTypeovalorData. Embora o Overview esteja exibindo corretamente o valor 1 da key icmpping no muitointuitivoolharparaumnmeroemmeioaumatabela(semlevaremcontaqueestatabela podeserdemasiadamenteextensa).PorissooZabbixofereceumrecursointeressantechamado ValuesMapsquepermitemdarnomesaosvalores. J existem vrios deles definidos por padro. Entre em Administration General, no canto direito da tela e selecione Value Maps. Aproveite a oportunidade e apague todos eles, exceto Service State e Windows Services, assim mantemos o ambiente limpo.
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.VatConfiguration templates,cliquesobreovaloritemsdo4LinuxICMPe depoissobreonomedoitemICMPPing.
4.3.3.Criandoumgatilhodeparadadehost
EmborajsaibamosqualhostestaOK,aindanopedimosaoservidorparanosalertar viaemail/Jabberaparadadeumdeles.Vamosprimeirotestaroqueofrontendjnosmostrae depoisiremoscriarnossoprimeirotriggerquevaiavisarquandoalgodeerradoacontecercom
1) CasodesejepodeseescolherogrupoDatabaseserversparafacilitaravisualizao dentrodoOverview. Agora que j sabemos que o item esta funcionando corretamente, vamos criar nosso trigger.Antesativeamquinavirtual,assimotriggerentrardesligado.
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.Noexemplodestaprtica dirigidausamosovalorHost{HOSTNAME}inalcanvel.Onde{HOSTNAME}ser substitudopelonomedohostcujotriggerforativado. 2) Expression: onde iremos escrever o teste do gatilho, ou seja, sua expresso boleana.CliqueemToggleinputmethodparamudaromododeescritadogatilho, porpadroteramosqueescreveraexpressonamo,mascomovocaindaesta iniciandonoZabbixiremosusaroauxiliardeexpresses.
1) Item:indicaamtricacoletadanestetemplateaseravaliada.Cliqueem Select e escolhaoICMPPing. 2) Function:afunousadaparaverificarogatilho.Aoclicarnacaixadecombinao vocverumagrandequantidadedefunespossveis.OZabbixmuitoextensoe provvelquevocnovenhaausartodasestasfunesemproduo,noentanto elasestolsevocprecisar.Nocursoveremosapenasasmaisrelevantes.Escolha Lastvalue=Nparaquepossamostestarseoltimovalordopingfoiumafalha. 3) Last of (T): define o tempo ou contagem de coletas a serem analisadas. Vamos selecionar1coleta(altima). 4) N:OvalordeNnaexpressodafunoescolhidanoitem2.zerononossocaso, quedefineumpingmalsucedido. TemosaindaoTimeshiftquepermiteretrocedernotempoparacoletarmtricasaum espaodefinidodesegundos,nopassado.Nousaremoseleainda.CliquenobotoInsertpara retornaratelaanterior.
Vejaqueoconstrutordeexpressojescreveuparanstodaafrmula.Ovalor{4Linux ICMP:icmpping.last(#1)}=0oresultadofinaldasescolhasfeitasnatelaanterior.Elaestano formato {Template:item.funo(parmetros)}=valor. No se preocupe tanto com isso por enquanto, mas voc deve ser capaz de ler as expresses e comparlas com o gerador automtico,poisnomanualasrefernciassomostradascomoonomedecadafunoeno pelosmenus.ParaacrescentlauseobotoAdd.
um erro muito comum dos iniciantes (e mesmo de alguns veteranos) que esqueamosdeclicaremAdd.Nocasodevocreceberumerroaosalvardizendo 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
Todogatilhogeraumeventoquerepresentaumnicoincidente,normalmenteumevento representaoinciooutrminodomesmo.DentrodoZabbixvocdeveaprenderalidarcomos eventos e usar o front end para verificar se um deles ocorreu. So muitas as telas onde podemosverificarqueumincidenteaconteceuemumhost.Pausenovamenteohost Database paraprovocaroincidentedechamadadeleevatMonitoringDashboard.
Porfimexistea tela de eventos em Monitoring Events, onde podemosmanipular esteseventos.Antesdeentrarnela, removaapausadamquina Database.Issovaiforaro Zabbixagerarumeventoderetornoqueservisualizadonaprximatela.
PercebaqueacolunaStatustemduaslinhas:umaparaaativaodotriggereoutra paraadesativao.Estecomportamentodesejadopoisparasabemosporquantotempoum determinadotriggerficouativo(eporconsequncia,porquantotempooincidenteocorreuna suainfra),bastaanalisaracolunaDuration. NacolunaDurationseumeventomudoudeestadoumaltimavez,ovalormostrado indicaotempodesdeaquelepontoatopresentemomento. OutropontoimportanteacolunaAck(acknowledgement,ouconfirmao).Elamostra seumdeterminadoeventofoipercebidoporalgum,edeboaprticasemprepreenchlocom algorelevante,mesmoquesejaumsimplestextodeestasendoverificado.Issopermitequeo Zabbixsejausadocomoumsinalizadordetickets.CliquesobreolinkNo indicadonaFigura 4.31dalinhacomstatusPROBLEM.
NatelaquesurgirpreenchaoquadrodetextoecliqueemAcknowledge&Return.
Note que a coluna Ack agora apresenta o valor Yes em azul. Faa o mesmo procedimentoparaofinaldoincidente. Nuncadeixeeventossemacknowledgement,issofazcomqueohistricodeeventos doZabbixfiqueimprecisoedeixedeserconfivel.
ATENO! A partir de agora voc obrigado a colocar confirmao em todos os eventosqueocorreremnocurso,principalmenteseelesestiveremdentrodasprticas dirigidaseexerccios.
4.3.5.Criandoumaactionparaenviodealerta
Usarainterfacewebparalidarcomeventosimportante,masvocsvaisaberquealgo ocorreusealgumficarnafrentedeummonitor.Enquantoestasetornandocomumousode teles(normalmenteTVsdeLCDmodernas)paraexibirmapasescreenscomosstatusdos hosts, de suma importncia que o Zabbix envie mensagens pelas mdias de alertas aos envolvidos. ParaissotemosquecriarumaAction,queacolaentreosMediaTypesdosusurios eamudanadestatusdos triggers.Vat Configuration Actions paraexibiratelade aes.
ConformenaFigura4.34,nocantodiretodatelacliqueemCreateAction.Umajanela decadastrodaaoirsurgirconformeaseguir.
Captulo 4 Monitoramento voltado para disponibilidade - 151 1) Name:indicaonomedaaoeeledevesernico. 2) Eventsource:mostradeondeoeventofoioriginado.Nonossocasoumtrigger. 3) Default subject: o campo assunto do email a ser enviado ou valor do SMS/mensagemjabber.Notequepossvel,eindicado,ousodemacros. 4) DefaultMessage:umadescriodetalhadadoevento,tambmaconselhvelo usodemacros. Osoutroscamposdestequadronosorelevantesnomomento,deixeosnodefault. AntesdeclicaremSavehmaisdoislugaresaseremconfigurados.
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.NoquadroActionoperationa 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,maspodemhavercasosdeoperaesqueprecisemdeumamensagem maisespecfica,comoumSMScomumcorpodetextomaiscompacto. CliqueemAddevocverqueanovaoperaoseradicionadaaoquadro.
ApsissocliqueemSavenoquadroprincipal.
Chegou o momento de testar nossa action. Pause por alguns minutos a mquina Database e volte ela ao normal. Nesse nterim, consulte os emails no Evolution e as mensagensnoPidgin.
Voc deve receber dois alertas: um de parada (PROBLEM) e outro de retorno (OK). PercebaqueosvaloresdasmacrosforamsubstitudospeloZabbix.
4.3.6.Exerccios
1) Aproveiteomomentoquevoctemcomumaactionplenamentefuncionaleconsulte omanualonlinedoZabbixparaconhecerasmacrosdisponveisnoservidor,ealtere os textos e ttulos das mensagens para experimentar os valores possveis nas mensagens. 2) ReinicieamquinavirtualDatabaseconformeaFiguraabaixoindica,edigaoque aconteceucomoseventos.Vocachaqueissoumcomportamentocorreto? ________________________________________________________________________ ________________________________________________________________________
4.3.7.Boasprticascomtriggers
Sevocfezoltimoexerccio,deveterpercebidoqueoeventofoiacionadopeloreboot damquinavirtual.Estetipodecomportamentoesperado,afinalarespostadopingdeixoude ser enviado ao servidor. No entanto a mquina no caiu, e uma simples reinicializao providencialemumservidorouservio,nodeveseracusadacomoquedadehost.Ambosso situaesdiferentes. Porissodevemossempreteremmentequenossostriggersnodevemselimitara verificarumnicovalordemudanadeestado.precisodeumalgicamaisbemtrabalhadae fazerusodeumrecursochamadojaneladetempo.AFigura4.45ilustracomoajaneladetempo funciona.
As janelas de tempo so intervalos de segurana nos quais nos baseamos a fim de permitirqueoservidordemonitoramentoseadapteaumamudananosvaloresdecoleta.Seu principalefeitonoalertarfalsospositivos,quepodemserpioresdoquefalsosnegativosem certascircunstncias(lembradahistriadolobo?).Oalertadequedadehostaoreiniciarohost umfalsopositivo,nohouvequedareal,apenasumareinicializao. Notequequandooservidorpararderesponder,nenhumalertaenviadoimediatamente. Otriggeriraguardarotempodeterminadonajanelaatdecidirmudardeestado.Omesmo acontececomoretornodohost.Emborapareacontraprodutivoissoreduzoriscodeenviode mensagensdealertaatoa.Dependendodotipodemensagem,issopodeinclusiverepresentar umaeconomiaparaaempresaseoMediatypeusadoforpago(comooSMS).Imaginereceber centenas(oumilharesdeSMS)porcausadetrafegoexcessivoqueimpediuqueospingsICMP chegassemaoservidor!Nadasaiudoar,apenasotrafegoderedeficouinsuportavelmentelento. Eaintermitnciadospacotespodegerarmaisdoresdecabeadoqueauxlio. Obviamentetemosquetomarcuidadosparaquehajamalertasdeoutrosestadosque umhostoutodaainfraestruturapodealcanar.Maisadiantenestecaptulovamos,por exemplo,criarumatriggerparaalertasdereinicializaes. Definirgatilhoseaesparatodasaspossibilidadesdesuainfraestruturajustamente omaiordesafiodepoisderesponderaperguntaoquedevomonitorar?.Geralmente estetipodegranulaosalcanadodepoisdealgunsmesescomomonitoramento ativado,eamelhormaneiradeseplanejartudoissocomearpequenoecobrirnovas necessidades conforme elas aparecem. Receitas de bolo como a ITIL so excelentesguiasparasedecidirporondeequandocomear.
1) Function:mudeafunoparaSumofvaluesforperiodoftimeT=N,justamenteo Tnossajanela. 2) Lastof(T):adefiniodajanela,nonossoexemplo,serde60segundos,vistoque nossoitempingaohostdedestinoacada10segundos.Procuredeixarajanela prximaaotempodecoletaentrex3ax6. Salvetudoereinicieohostnovamente.Setudocorrerbemajanelavaievitarqueoalerta sejaenviado.Seaindaassimvocreceberoalertaprecisoaumentarajaneladetempo. Qual um bom tamanho de janela de tempo? Isso uma pergunta que depende inteiramentedeseussistemas.Amaioriadoscasosnorequerumajanelamenordo que5minutos.Janelasmuitoextensaspodemdiminuirotempoderespostadaequipe de TI e janelas muito pequenas tendem a gerar falsos positivos. Tente achar o equilbrio.
4.4.Checagemgenricadeportaseservios
ComoditoanteriormenteICMPrequestspodemserbarradosporFirewalls.Seesteforo seucaso,entovocnopodedependerdelesparamedirasuadisponibilidadeedeverecorrera outrosmtodos.Nestetpicoveremosummuitocomum,achecagemdeportasTCP.
4.4.1.ConexesTCPehandshakes
ComosedaverificaoremotadeumserviorodandoemumsoqueteTCP?Vamos fazer uma pequena prtica para a verificao do mesmo, e entender o famoso Three wy handshakedoprotocoloTCP. PrimeiroativenohostApplicationoseguintecomando: #tsharknieth0host172.27.0.10andport8080 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 OtsharkocomandodelinhasdeconsoledoWireshark,emuitomaispoderoso que o tcpdump. No caso do comando acima pedimos que ele capture todo o trafego da interfaceeth0quevierdoZabbixservereusaraporta8080. AgoranoservidordoZabbixdenossocenrio,useocomandonmapparavarreraporta 8080dohostApplication. #nmapsTP0p8080172.27.0.20
1 O SYN Scan um mtodo considerado furtivo antigamente. Ele fazia apenas metade dos passos para abertura de uma conexo.
Captulo 4 Monitoramento voltado para disponibilidade - 158 Capturingoneth0 0.000000172.27.0.10>172.27.0.20TCP50952>8080[SYN]Seq=0Win=5840Len=0 MSS=1460TSV=4629163TSER=0WS=4 0.000090172.27.0.20>172.27.0.10TCP8080>50952[SYN,ACK]Seq=0Ack=1Win=5792 Len=0MSS=1460TSV=4617797TSER=4629163WS=4 0.000602172.27.0.10>172.27.0.20TCP50952>8080[ACK]Seq=1Ack=1Win=5840 Len=0TSV=4629163TSER=4617797 0.000727172.27.0.10>172.27.0.20TCP50952>8080[RST,ACK]Seq=1Ack=1Win=5840 Len=0TSV=4629163TSER=4617797 Percebaque4pacotesforamtrocados.OprimeirooSYN(syncronization)quepedea aberturadaconexo.OsegundoquepartedoservidordedestinocomorespostaoSYN/ACK (syncronizationandacknowledgement)queconfirmaaaberturadepacoteseoterceirooACK apenasparaconcluiraabertura.Onmapusaraindaumltimopacotepararesetaraconexo (RST,ACK)quenovemaocaso. Atrocadestespacotesnestaordemoesperadopelasfunesdesoquetedosistema operacional,seelaforrealizadadessaformaissosignificaqueaportaremotaestaemestadode escuta(listening)ouqueestaaberta.Masaivemaperguntaeumaportafechada,oqueretorna? Vamosseguircomaprtica,novamentenohostApplicationexecuteosseguintescomandos. #iptablesAINPUTjACCEPTptcpdport10000 #tsharknieth0host172.27.0.10andport10000 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 Oiptables2liberanofiltrodepacotesdeentradaaporta10000/TCP.Agoraapartirdo servidorZabbixtesteaporta10000. #nmapsTP0p10000172.27.0.20
Nmapdone:1IPaddress(1hostup)scannedin0.10seconds Noteoestadocloseddasadadonmap!VatotsharkdoApplicationevejao trafegodospacotescapturado. #tsharknieth0host172.27.0.10andport10000 Runningasuser"root"andgroup"root".Thiscouldbedangerous. Capturingoneth0 0.000000172.27.0.10>172.27.0.20TCP47673>10000[SYN]Seq=0Win=5840Len=0 MSS=1460TSV=4696578TSER=0WS=4 0.000096172.27.0.20>172.27.0.10TCP10000>47673[RST,ACK]Seq=1Ack=1Win=0 Len=0 #iptablesDINPUTjACCEPTptcpdport10000 Notequehapenasdoispacotes,oSYNdeinciodeconexocomonoexemploanterior e outro com RST/ACK pedindo para encerrar imediatamente a conexo. assim que um sistemaoperacionalinformaqueumaportaestafechadaparaumatentativadeconexoremota. UmtimeoutnaaberturadeumaconexoTCPporqueoclientenorecebeunem umRST/ACKouumSYN/ACKapsumperodo(quenamaioriadasvezesde60 segundos).
4.4.2.Criandoumtestedeservioviavarreduradeportas
Comestesdadosdisponveisvamoscriarumasituaoondehavertrscasosdeportas: aberta,fechadaefiltradaporfirewall. Noexisteumamaneiraconfiveldesechecarserviosqueusam"UDPsemapelar paraacamadadeapresentaodomodeloTCP/IP. PrimeiropareoserviodeSSHnoDatabase. #/etc/init.d/sshstop DepoisremovaaregrasdepermissodeacessodeSSHdaApplication.
StartingNmap5.00(http://nmap.org)at2011020914:04BRST Interestingportsonapplication.curso468.4linux.com.br(172.27.0.20): PORTSTATESERVICE 22/tcpfilteredssh MACAddress:08:00:27:4B:97:E3(CadmusComputerSystems) Interestingportsongateway.curso468.4linux.com.br(172.27.0.1): PORTSTATESERVICE 22/tcpopenssh MACAddress:08:00:27:BD:55:12(CadmusComputerSystems) Interestingportsondatabase.curso468.4linux.com.br(172.27.0.30): PORTSTATESERVICE 22/tcpclosedssh MACAddress:08:00:27:A3:73:61(CadmusComputerSystems) Nmapdone:3IPaddresses(3hostsup)scannedin0.48seconds Note que no Database que desligamos o SSH retornou closed e o firewall do Applicationretornoufiltered,somenteoPresentationdeuumopen.Anoteesteresultados poisiremoscomparloscomoqueoZabbixretornar. Notemplate4LinuxS.O.Linuxcrieumnovoitemdesimplecheckcomakeyssh. ParaqueoservidorpossauslaprecisoqueeleestejacompiladocomsuportealibSSH(opo enablelibssh).
NotecomoosdoisservioscomfirewallecomoSSHdesligadoretornaramFalha(0)eo queestavaemfuncionamentoretornou1. UmadasgrandesvantagensdetestarportasTCPqueapossibilidadedeincidnciade perdasdepacotesbembaixaemrelaoaotesterealizadocomoUDP. Enquanto o manual do Zabbix contma informao de que a checagem de vrios serviosretornamovalor2aoacharumtimeout,oautornofoicapazdereproduzir estecomportamentocomsucesso.
4.4.3.Exercciosobrechecagemdeportas
1) SeguindoomesmoprocedimentodoICMPPing.Crieumtriggerparaalertasde quedasdeportas. 2) Crieositensparamonitorartodososserviosviasimplecheckconformeatabela abaixo. Nopossvelmonitorarumdosserviosmencionadosnatabela,aodescobrirqual anoteomesmoexplicandoporquenofoipossvelrealizarumsimplechecknele. Maisafrentevoltaremosaestecasoefaremosomonitoramentodeoutramaneira.
Captulo 4 Monitoramento voltado para disponibilidade - 163 Servios OpenSSH Varnish cacher) Porta 22/TCP (HTTP 80/TCP 8080/TCP 8080/TCP (HTTP) 80/TCP 5432/TCP 389/TCP Application Database Database Apache PostgreSQL OpenLDAP Host Todos os Linux Presentation Presentation Template S.O. Linux Varnish Apache JBoss base ssh http http tcp,8009 http,8080 http tcp,5432 ldap Key
4.5.ValidaodepginasWEB
UmrecursoapartenosistemademonitoramentodoZabbixotestedecenriosweb.O servidorcapazdedispararchecagempeloprotocoloHTTPereconhecimentodepadresHTML paravalidarpginasHTML,inclusivecomvalidaodeformulrios(tantocomGETouPOST). Para suportar este tipo de checagem o servidor deve ser compilado com suporte bibliotecaCURL(enablecurl).
4.5.1.Disponibilidadedosite.
OZabbixdenominaumtestedeumsitecomoumscenario(cenrio),edentrodeste cenriohvrioselementoschamadosdesteps(passos)quecorrespondemaumarequisio, ouseja,aumaURL. O principal uso deste tipo de teste verificar se a URL esta respondendo adequadamente,podemos,porexemplo,verificarseoHTMLcontmumadeterminadastringou seocdigo de retorno corresponde aumsucesso,quenormalmente 200 OK.Masestas checagenstemoutrositensembutidosnela.Oservidorcalculaautomaticamentealatnciade redeeavelocidadededownloaddosdadosnaURLejgeragrficosdestasestatsticas.Um
Captulo 4 Monitoramento voltado para disponibilidade - 164 triggertambmcriadoautomaticamenteparaalertarcdigosderetornosinesperadosoufalta em uma determinada string na pgina de resposta. Ele no entanto, no gera uma action sozinho. MuitasdestasfuncionalidadessoencontradasemoutrasferramentascomooJMeter (que possui asserts capazes de realizar este tipo de verificao), porm uma soluo no substituiaoutra,poisaintenodoZabbixnoserumvalidadordeaplicativoswebesimum verificadordefuncionalidadespontuaisdeURL.Eletambmnodeveserusadocomogeradorde cargas para testes de performance. No entanto o Zabbix consegue armazenar o histrico de resultadosonlineporumlongotempo. ParacriarumnovocenrioacesseConfiguration Web.Natelaquesurgirvocver queobotodecriaoestardesabilitado(Figura 4.48).Parahabilitloprecisoescolherum grupoehostconformeabaixo:
CliquesobreCreatescenario,umanovajaneladecadastroirsurgir.
1) Application: o application de identificao para o cenrio. Como ele no cadastradoemnenhumtemplatetomecuidadoparanoescolherum application queexisteemoutrapartedoZabbix.ColoqueCenrioHTTPparaonossoexemplo. 2) Name:oidentificadornicodocenriodentrodohost.Estenomevaiaparecerno momentodomonitoramento.OvalorquecolocaremosTestedeaplicaoPHPno Apache. 3) Authetication:nocasodaURLrequereralgumtipodeautenticaoHTTP,vocpode definilaaqui.Nohnecessidadedeautenticaononossoexemplo. 4) Updateinverval(insec):otempoentreumacoletaeoutra.Deixe10segundospara nossocenrio. 5) Agent:comooZabbixvaiseidentificarparaoservidorweb.Essencialmenteastring dobrowserpeloqualelevaisefazerpassar. 6) Status:Seeleestouno,ativo. 7) Variables: um conjunto de variveis para serem enviadas ao servidor. Deixe em branconestecaso. Note que em lugar algum foi definido qual a URL que este cenrio vai acessar. Isso porquepossveldefinirvriasURLsdentrodele,cadaumaumstep.CliquenobotoAdd docampoStepsparacriarumnovopasso.
1) Name: o nome deste step normalmente representa a URL a ser testada (por exemplopginaprincipal,carrinhodecompras,blog,etc.) 2) URL:oendereowebaseracessado.PodeincluirparmetrosdemtodoGETse desejado.Nonossocasocolocaremosphpapp.curso468.4linux.com.br. 3) Post:seapginareceberdadosviaPOST,asvariveisevalores(umemcada linha)podemseracrescentadosaqui.Nestecasonohnenhuma. 4) Timeout:porquantotempooZabbixvaiesperararespostadoservidorwebondea URLaponta.Ovaloremsegundos.Deixe15.Valoresmenorespodemserusadosse o teste for executado em infraestruturas locais, sites de baixo movimento ou em servidoresdealtssimondicedetempoderesposta. 5) Required:umtextoqueesperadonapginaderesposta.Seoservidorfalharem entregarumapginacomestastringumtriggeracionado. 6) Statuscode:qualocdigoHTTPesperadoparaaresposta.Normalmenteele200 quesignificaOK,pginaencontrada.VocpodeverarelaodecdigosHTTPem http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Note que este camponoobrigatrio,vocpodesimplesmentepedirproZabbixverseoservidor estaretornandoalgo,masissonomuitotilnamaioriadasvezes. Paraterminarainserodo step cliqueem Add.Antesdecontinuarvalemencionar queaURLdetestesusadanestesteppassapelaestruturadecacheeproxyreversodocenrio (Varnish Apache+mod_proxy Apache+PHP5) e por isso esta testando toda esta infraestrutura.PoderamosfazerumtestediretonoservidorApachesenecessrio.
Notequenofinaldoquadrodajaneladecenrioonovostepficalistadoemformade tabela. Ainda no vamos acrescentar outros steps neste cenrio. Salve clicando no boto Save.
Nalistadecenrios,temosagoraonossocadastrado.Paraverificarestemonitoramento temosumatelaespecialsparaele.AcesseMonitoringWeb.
Cliquesobreonomedocenrioenotequeeleestasendoorganizadopelaapplication escolhidaquandoocadastramos.
Natelaseguinteumresumodaltimacoletacomavelocidade(Speed),latnciaderede (Response time), ltimo cdigo HTTP de resposta (Response code) e Status dos triggers geradosautomaticamente.Logoabaixodestequadrotemosdoisgrficosdevelocidadeetempo derespostaprontos.
Comovocpodever,acriaodeumcenriosimples,maspermiteumaflexibilidade muitogrande.Vamosemseguidavercomorealizarumavalidaodeumformulrioweb.
4.5.2.Exerccios
1) Crieumactionparaostriggersqueocenriogerouefaaosseguintestestes: 1.1) PararoservidorApachenohostApplication. 1.2) PararoservidorApachenohostPresentation. 1.3) PararoservidorVarnishnohostPresentation. 1.4) MudaroHTMLdapginaprincipalparanoretornarastringesperada.
4.6.Checandodisponibilidadeviaagentes
Asduassimplechecksicmppingesshqueusamoseocenriowebcriadonoutilizam oagente,porissosodenominadasagentless.Issotilquandoosistemafinalnopermite quesejainstaladooagenteporummotivoqualquereusaapenasprotocolosderedeparaavaliar adisponibilidadedoobjetofinal. Porm essas checagens so muito limitadas e se no houver, ao menos, um agente SNMPnohostdedestinonopossvelcoletarmtricasdoservidoredeterminaroquecausou umadeterminadaparada.PorissooZabbixvemcomumagentequepodeserinstaladonoshosts dedestino,comofizemosnoCaptulo 2.Chegouahoradeutilizaresteagentepararealizaras checagens de disponibilidade. Vamos comear com mtricas simples e depois passaremos a checarmtricasdesistemaoperacionalmuitomaisricas.
4.6.1.Checandoseoagenteestaoperacional
Oprimeiro passo verificarseoagenteestafuncionandoe escutando na suaporta, normalmente10050/TCP.Usamosemcaptulosanterioresozabbix_getparacoletardadosda keyagent.pingcomoumteste.Estakeyretorna1seoagenteestaoperando,masconsidere queseelenoestiverfuncionandonohcomoeleretornar0paraalertarumaqueda! PorissoessakeytemumtratamentoespecialdentrodoZabbix.Sealgumproblemade rede,firewall,daemon,etcnopermitirqueoagentesejaalcanadoeoservidorregistrarerroele ir gravarumvalornulonacoleta.Este valorpoder sertestadonumtriggercomafuno nodata()(vejamaisafrente)oquerequerumtratamentoespecialparaocaso.Vatatelade itemsdotemplate4LinuxS.O.Baseecrieumnovoitem. Aocriaroitemaquiostemplates 4LinuxS.O.Linux e 4LinuxS.O.Windows automaticamenteherdaroele.
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 no diferenciavahostsetemplates(defatoeleainda fazpouca dissociao entre eles algumasvezes).VocvaiescolherHost nestecampoparaquelogoabaixopossa escolherostemplates. 2) Group:escolhaohostgroupTemplates. 3) Target:marqueotemplatedoJBosscomoindicado. CliqueemCopyparafinalizaraoperao.Oitemagorafazpartedeambostemplates. ConfirapeloOverviewsetodososhostsGnu/LinuxeWindow,almdoJBossclaro,estocom esteitemfuncionando.
4.6.2.Criandoumtriggercomafunonodata()
Agora vamos criar um trigger que opera com a funo nodata() conforme citao anterior.OprocedimentomuitosimilaraodogatilhoparaoICMP,excetopelafunousada. Anodata()operacombaseemerrosdecoletaparadefiniraquedadeumagente.Se algumerroocorrerelaretorna1,casocontrrioumdadofoirecebidoearmazenadoeelaretorna 0. Usaremos este truque mais a frente para triggers que podem parar de receber dados e apresentarconstantementeosindesejveisestadosUNKNOWN. Dentrodotemplate4LinuxS.O.Basecrieumnovotrigger. NotequeotriggerherdadodoICMPBaseestaaparecendonasualistadetriggers destetemplate.
1) Item:EscolhaoitemAgentPingparaseravaliado. 2) Function:Procurenofinaldalistaafunoescolhidanaimagem.Elarepresentaa nodata(). 3) Last of (T): Nossa janela de tempo. Como no icmpping vamos esperar por um minutosemrespostaeentoativarotrigger. 4) N:Ovaloresperadoparaafuno.Conformecitado,eleser1. VocnopodeescolherumvalordeLastof(T)menordoque30segundosparaa funonodata(sec).OZabbixfazchecagensdefaltaderecebimentoacadameio minuto,porissodeixarestecampomenorqueestevalornovaiterfunoalguma.
Adicioneaexpressoaotrigger.
Agoravamosadicionarumadependnciaaestetrigger,elesdeveseravaliadoseo testedepingICMPforbemsucedido.Issoevitasuascoisas:primeiroquemaisdeumaction sejaativadoemcasodeumcongelamentodohost(oqueeconomizaalertas),segundopermite queoZabbixnopercatempocomprocessamentodegatilhosquesodesnecessriosparaa ocasio(quegastamtempodeCPUnoservidordemonitoramento).Nonossocenrioseohost noestiverrespondendorequisioICMPintiltestaroagente. Notequeistopodenoserverdadenocenriodesuaempresa!Avaliaradependncia dos triggers importante quando se est construindo uma soluo eficiente de monitoramento. CliquenobotoAddeselecioneotriggerdoICMP.
Notequeagoraeleaparecenalistadedependncias.Salveonovogatilho.
Captulo 4 Monitoramento voltado para disponibilidade - 174 Percebaqueambas,adependnciaeanovafuno,aparecemnalistadetriggers. Vamosrealizarumtesteagora,parandooagentedozabbixsrv. #/etc/init.d/zabbixagentstop VatoOverview,selecionetriggers nocampo Type eaguardeoativamentodo mesmo.
Note que h setas nos detalhes dos Triggers para o servidor. Uma seta para cima significaqueotriggerjcaiuevoltouaoestadodeOK.Umasetaparabaixosignificaqueseu estadoatualPROBLEM.Retorneoagenteaoestadonormal,atribuaumacknowledgemente vamosaoutroteste. Destavezderrubaremosdoishosts,pausandoamboseverificandoseelesvoativaro triggerdeagentealmdodoICMP.PareohostWindows2003 e Database eretorneao Overview.
Figura 4.68: Dependncia entre triggers evitando que o gatilho filho seja ativado
Perceba como ambos os triggers de agente ficaram cinzas enquanto os de ICMP alertaramumaqueda.
Nopossvelusarafunonodata()paraverificaradisponibilidadeviaSNMP.
4.6.3.Exerccios
1) CopieotriggerparaotemplatedoJBoss. 2) Crie as actions necessrias para enviar os alertas de paradas doshosts a seus respectivosresponsveis,conformeatabelaabaixo. Host Application Database JBoss AS Presentation Switch Windows2003 Zabbixsrv Tabela 9: Responsveis de cada host Responsveis sysadmin, javaeng sysadmin, dba javaeng sysadmin sysadmin, winadmin winadmin sysadmin
4.7.TempoonlineeltimainicializaodoS.O.
Vimosanteriormente que o Zabbix alertou uma queda de host quando nosso trigger ICMP estava realizando uma checagem ruim sem janela de tempo. Ao concertar este comportamentodeixamosdesaberquandoumhostfoireiniciado.Verificarareinicializaode hostsimportantenamediodadisponibilidadedomesmo.Estetpicotratajustamentedesta questo. Primeirovamosaoproblemaprticoquetemosemmos:temosquemedirotempode uptimedetodososhostsincluindoaiosGnu/Linux,Windows,switcheamquinavirtualjavana qualoJBossexecutado.Issonosdtrscasosdecoleta:peloagentenormal,peloagente ZapcatepeloSNMP.
Isso vai demonstrar como o sistema do Zabbix consegue lidar com ambiente heterogneosevaidemonstrarquedepoisdacoletaotratamento,armazenamentoeanliseno muda. Oprimeiropassoanalisaroretornodosvaloresviaconsole.Issoimportanteparaque tenhamosparmetrosdetiposdedados(inteiros,float);nomecorretodaskeys,OIDs,etce acesso.OagentedoZabbixpossuiumakeychamadasystem.uptime queretornaotempo desde o ltimo boot. De maneira equivalente o JBoss tem um JMX java.lang:type=Runtime,Uptimequetambmfazisso,masparaainicializaodaJVMeoSNMP porpadrotemoOIDDISMANEVENTMIB::sysUpTimeInstance. AOIDdoSNMPmuitovariveldeumequipamentoparaoutro,sempreconsulteo manualouaMIBdoseufabricanteparadeterminaroqueestadisponvelparacoleta. Vamosusarosseguintescomandosparaoscasosdeuso. #zabbix_getk"system.uptime"sapplication 59545 #echo"jmx[java.lang:type=Runtime][Uptime]"|ncapplication10052;echo ZBX59374361 #snmpgetv2ccpublic172.27.0.135DISMANEVENTMIB::sysUpTimeInstance DISMANEVENTMIB::sysUpTimeInstance=Timeticks:(6026194)16:44:21.94 Sevocfezodesafiodotpico 2.12,pgina 72 podeusaroseuscriptemvezdo segundocomando. Cadacomandoretornouumvalorinteiro,todosrepresentandoouptimedosistema.A grandediferenaentreelesaprecisodetempoutilizada,oagentedoZabbixretornaovalorem segundos,oZapcatemmilissegundoseoagenteSNMPemcentsimosdesegundos(queele chamadetimeticks). Noseincomodecomasadaemtextodevriosdessescomandos,oZabbixlidacom osnmerosdestacadosemnegritoapenas. Toda essa diferena requer um tratamento no momento da coleta, ou seja, na
1) Description:coloqueadescrio,conformeafigura. 2) Key:comousamosnocomandozabbix_get,achavesystem.uptime vaicoletaro tempodefuncionamentodohost. 3) Units:estecampopermitequefaamosalgumaspersonalizaesnotratamentoda sadadoitemnoOverviewegrficos.EmborasimilaraoValuesmapselemais sofisticado,poisformataasadaconformenecessrioemvezdesimplesmentedar umapelidoparaumatabeladevalores.Nestecasouseouptime. 4) Newapplication:definaumnovoapplicationparaositemsdesistema. Salveefaaomesmoparaotemplate4LinuxJBossBasemascomasmodificaesa seguir.
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:comoesteitemobtidopeloSNMP,temosqueconfiguraroitemparaqueo Zabbixentendacomocoletlo.NonossocasoestamosusandoSNMPverso2,no caso de outros equipamentos a verso 1 (obsoleta) ou 3 (mais segura) pode ser usada.Consulteomanualdeseufabricante.Estaoporequerqueoservidorseja compiladocomsuporteanetsnmp(enablesnmp).Notequeoscamposabaixose alteramconformevocescolheoutrostiposdevalores.
Captulo 4 Monitoramento voltado para disponibilidade - 179 2) SNMP OID: coloque a object identifier da mtrica desejada conforme sua necessidade,nonossocasoDISMANEVENTMIB::sysUpTimeInstance. 3) SNMPCommunity:coloquea string decomunidadedoSNMP,normalmenteeste valorpublic. 4) SNMPPort:AportaUDPemqueoagenteSNMPestaouvindo,opadro161. 5) Key: invente uma key a seu gosto, ela s no pode conflitar com outras keys criadasourepetirumakeyregistrada.Parapadronizarocurso,todasaschavesde SNMPsodefinidascomosnmp.funo.Nesteexemploutilizamossnmp.uptime. 6) Units:repitaousadonoitemdoagente. 7) Usecustommultiplier:comooSNMP,retornaumvaloremcentsimosdesegundos temosquemultipliclopor.01paraconverterparasegundos. SalveoitemevatoOverview.
Figura 4.72: Overview exibindo os uptimes a partir do agente padro, Zapcat e SNMP
Novamente,issodemonstrouacapacidadeemcoletardadosdeambienteheterogneos, desdequevoctenhaumagentesuportadonohproblemas.OagentepadrodoZabbix compatvelcom9sistemasoperacionaisdomercado,asJVMscomTomcate/ouJBossso suportadas pelo Zapcat e a maioria esmagadora de ativos de redes (desde switches at
4.7.1.Triggerparaalertadereinicializao
Avaliarseumhostfoireinicializadofcil.Devemosverificarseouptimedelemenor queumvalorprestabelecido.Noentanto,reinicializaodeservidorespodenoumincidente crtico,defato,normalmenteeleapenasumeventoplanejado(amenosquevocpossuauma hardwarecomproblemassrios),porissoiremoscategorizlacomoumeventodeseveridade warning(aviso).Noumerro,masaindaassimdignadeumaatenomaispontual.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) Crieasdevidasactionsparaalertadereinicializaoenviandomensagensapenas aosindivduosresponsveisporcadahost(consulteaTabela 9 napgina 175 para detalhes).
4.8.Checandoserviospeloagente
Checar se um determinado servio est em funcionamento atravs de sua porta funcional,masalgumasvezesprecisamosdemaisinformaesdoqueexatamenteocorreuno host. Imaginequeporexemploaoinvsdequedadodaemon,umsistemaproteocomoo OSSECbarrouacidentalmenteaportadedestinodehostslegtimoscomooprprioservidorde monitoramento.Issonofoiumaquedadeservioeoutroshostspodemaindanoconseguirse conectar.Paradetectarestetipodecoisaprecisamosdemaisdadossobreosistemaondeo servioestasendoexecutadoepodemosfazloatravsdoagentedoZabbix.
4.8.1.Verificandoosprocessosativosnamemria
OZabbixtemumakeychamadaproc.numquepodeserusadaparaverificaronmero deprocessosnamemria.Seusadasemnenhumparmetroelafazumacontagemdetodosos processossemdiscriminao,paraexemplificarousodelevamosverificarseoprocessodoSSH estanamemriadasmquinasGnu/Linux. Asintaxedachaveaseguinte(todososparmetrossoopcionais): proc.num[<name>,<user>,<state>,<cmdline>] Onde, name: o nome do processo. Se voc estiver checando processos numa mquina Windows,certifiquesequeoprocessodelecontmaextenso.exe(ousimilar)nofinal donome. user:qual ousurioqueestaexecutando umdeterminado processoouconjuntode processos.Opadroverificardetodososprocessos.
Captulo 4 Monitoramento voltado para disponibilidade - 182 state:qualoestadodoprocesso.Podendoserall(padro),run,sleepouzombie (esteltimosomenteemambientes*nix). cmdline:filtrapelalinhadecomando.Issotilparaaplicaesquesempreiniciamo mesmoprocesso,comoojava. Emnossa prtica atual,o nico parmetro relevante o primeiro, poisvamosbuscar apenasumprocessobemdefinidodentrodamemria(odaemondoSSH).Paradescobrirqual oprocessousaremosocomandops.EntrenoconsoledoservidordoZabbixsrv. #psuax|grepsshi root11610.00.35496988?Ss14:090:00/usr/sbin/sshd root35940.21.183042868?Ss14:400:00sshd:root@pts/0 root36740.00.33316836pts/0S+14:410:00grepcolorssh O primeiro processo o daemon, o segundo uma conexo ssh acontecendo e o terceirooprpriogrepnamemriaqueusamosnalinhadecomandoeportantopodeser ignorado.Notequeonomedoprocessosshdenosimplesmentessh.Comissoemmos, podemossermaispontuaiscomops,aopoCpoucoconhecidaeusada,listaapenasos processoscomonomeindicado.Elaincompatvelcomasopesaex,porissousaremos emcombinaocomau,apenas. #psuCsshd USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND root11610.00.25496624?Ss14:090:00/usr/sbin/sshd root35940.00.883042204?Ss14:400:00sshd:root@pts/0 Guardeestaopodops,vocvaiprecisardelanofuturo. Vamosusarozabbix_getparacoletarainformaodachaveagora.
AFigura4.74ilustracomooitemparacontagemdeprocessodevesercriado,elebem trivial.
NoOverview,jpodemosrastrearofuncionamentodacontagemdeprocessos.Note
Captulo 4 Monitoramento voltado para disponibilidade - 184 queonmerodeprocessosdohostZabbixServer estacom2porquehumaconexossh ocorrendonele,nosoutrosapenasodaemon,aguardandoaconexo,estsendoexecutado. Comosdadossendocoletadojpodemoscriarumtrigger.
2) Eledevedependerdachecagemdeagenteporquenohsentidoemtestaruma mtricaquedependedelamesmo.Almdissosenoofizermosestatriggervai resultaremumunknownseoagentecair. 3) AseveridadedesteincidentevaiserclassificadacomoAveragepoisoSSHnoum servio prioritrio para o funcionamento das aplicaes, no entanto ele no um Warning,poisaindaclassificadocomoerroeprecisadeintervenoimediata. SalveotriggerevatoconsoledohostDatabaseeparaoSSH. #/etc/init.d/sshstop Acesse a lista de eventosem Monitoring Events para acompanhar a ativao do
TambmolhenoOverviewcomootriggerficouexibido.
4.8.2.Checagemdeportaseservioslocalmenteviaagente
Almdotestefeitopeloservidornaporta22/TCP,tambmpodemospediraoagente para realizar o mesmo teste. Este tipo de teste de agente til para criarmos lgicas mais inteligentesdeanlisedocenrio. Akeynet.tcp.service[ssh]temomesmoefeitoecomportamentoqueassh.Suasolene diferenaqueeladotipozabbixagent emvezdesimplecheck.Crieoitemconformea Figuraaseguir.
Apsacriaodoitem,verifiqueseacoletaestasendorealizada.Setudoestivercorreto, horadepassarparaaverificaodasmudanasdestatus.Atomomentotemos3maneirasde checaroservio:contandoosprocessosativosnamquina,checandoaportaremotamentepelo servidordoZabbixe/ouchecandoaportalocalmentepeloagentedoZabbix. Todas tem suas vantagens e desvantagens, mas em vez de uslas de forma discriminada,vamosjuntaraforadetodaselasefazercomquealgicadetodososgatilhos trabalhememconjunto.Essacapacidadedeoferecerdependnciaentreumachecagemeoutra queoZabbixoferecedeextremopoder,emesmosemexpressesbooleanascomplexasdentro decadatriggerseremoscapazesdedeterminarqualopossvelacontecimento,dependendode qualtriggerfoiativado.Acompanheaexplicaoaseguir,comeandopelaleituradofluxograma naFigura4.80.
Osegundo, aanlise daportalocalmente a partirdoagente,se noh processos escutandonaportaapartirdaprpriamquinalocalentooprocessomasterdaaplicao provavelmentecaiu.Notequesevocpararosshpeloserviodebootasconexesqueestoem andamentonosointerrompidas!Logopossvelterumasituaoondehprocessossshdna memria que esto apenas atendendo a conexes que foram estabelecidas anteriormente quedadoprocessoprincipalesvomorrerseestasconexesforemencerradas.
Captulo 4 Monitoramento voltado para disponibilidade - 188 Essetipodecomportamentomuitocomumemserviosquesobaseadosemforks, como o Apache, o prprio Zabbix, muitos daemons escritos em Perl, etc. Programas que trabalhampuramentecomthreads,comoasaplicaesfeitasemjava,incluindoaquioTomcate oJBosstemumprocessomonolticoenoseguemestaregra. Finalmente, o terceiro trigger checa se servidor consegue abriruma conexo com a portaremotamente.Nocasodeumbloqueioporfiltrodepacotesnohostdedestinoounomeio docaminho,oufalhasderotas,estegatilhoativado.Estecasocobreaocorrnciadodaemon estaremperfeitofuncionamentomasospacotesderedenoestaremalcanandoodestino(ou noestovoltandoapropriadamente). ComooterceiroschecadoseosegundoestivercomstatusOK,eesteltimoseo primeiroestivercomstatusOK,oZabbixnogastaprocessamentocomostrsgatilhos,amenos quetudoestejanamaisperfeitaordem.Seumdosprimriosfalharementoosoutrosnosero executados. Obviamentepodehavermuitomaistiposdeproblemas,quevoalmdacontagemde processos e verificao de portas. Um binrio corrompido pode causar quedas de conexeslegtimasalgunssegundosdepoisdeseremestabelecidaspeloservio,ou aindaelepodesempreretornarumerronacaradoclientesemsaircompletamentedo ar.Paraestescasoscontinueempilhandooutraschecagensapsverificarestastrs quegeralmenteestosemprepertodabase. Masvamoscontinuarcomnossaprticadirigidaecriarosdoistriggersquefaltam,pois oprimeirojestaprontodesdeotpicoanterior.
Captulo 4 Monitoramento voltado para disponibilidade - 190 JodaFigura 4.82 fazaverificaodaportaremotamenteetemcomodependnciao segundogatilho.Outropontoimportantequesuajaneladetempode70segundos(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/Linuxcomaomenosumaconexoaberta (somenteosegundogatilhodevedisparar).Restaureodaemon. 1.3) Cortearegra deSSHdosfiltrodepacotes(iptables)deumdosGnu/Linux, somenteoterceirogatilhodevedisparar.Restaurearegraapsotermino.
4.8.4.VerificandoserviosnoWindows
Assim como o Gnu/Linux, o Windows tem seu sistema de gerenciamento do servios ativosnamemria.Usamoselenotpico2.7.1.,pgina50paraexecutaroserviodoagentedo Zabbix.AcesseoPaineldeControlesFerramentasAdministrativasServios. Natelaquelistaosservios,localizeoserviodeTelnet.Eledeveestardesativado.
Confiraseumdosprocessosbatecomonomedoservio.Provavelmentevocacharo processotlntsvr.exe.Anotetambmestenome. Antes de cadastrar novos items vamos fazer um pequeno teste via console: use o zabbix_getparacoletaronmerodeprocessostelnetnamemria(deveretornar1). NovamentelembramosquenoWindows,deveseincluiraextenso.exenofinaldos processosparaakeyproc.num. #zabbix_getswin2003k'proc.num[tlntsvr.exe]' 1 Agoravamostestarakeyservice_statequefazaverificaodosserviosdoWindows noZabbix.UseonomequepegamosdasconfiguraesdoTelnetcomoparmetrodela. #zabbix_getswin2003k'service_state[TlntSvr]' 0
Notequeoresultadofoizero.Issoporquezerosignificarodando,experimentepausaro servionoWindowseexecuteocomandonovamente. #zabbix_getswin2003k'service_state[TlntSvr]' 1 Agoraretornou1.Sim,parececontraprodutivo,masestatabelafoibaseadaemnmeros queaprpriaAPIdosistemaWindowsretorna.OsvalorespossveisestonaTabelaabaixo. Valor 0 1 2 3 4 5 6 7 255 Table 10: Valores da key service_state Mas isso ainda no suficiente. Temosque pedir ao Windows que libere a porta do FirewallparaoacessoaoTelnet.Porpadrotodosostelnetsusamaporta23/TCP.Acesse PaineldeControlesFirewallparaabriraspreferncias. Rodando Pausado Incio requisitado Pausa requisitada Continuao requisitada Parada requisitada Parado Desconhecido Servio no existe (no esta cadastrado na lista de servios do Windows) Estado
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 nohostmonitoradopodecausarfalhasdeseguranasenohouvercuidadotriplicado. Somenteuseesterecursosevocrealmenteprecisaretiverabsolutacertezadoque estafazendo. Um recurso poderoso a capacidade do agente do Zabbix de executar comandos remotosapedidodoservidor.Issopossibilitaquesejamoscapazesderestaurarumservioque caiu,oureiniciarumqueestcomproblemasnoatendimentoderequisies. Obviamente o agente por padro no executa nada, tampouco capaz de executar comandosadministrativosarbitrariamente.Issosedeveadoisfatos:osdefaultsdosarquivosde configuraoeaexecuododaemondoZabbixcomousurionoprivilegiado. Nossaprimeiraprioridadejustamenteliberaroagenteparaexecutaroscomandos.O arquivo /etc/zabbix/agent.d/remote_command.conf contm as configuraes para tal procedimento.ElejaumadasmquinasvirtuaisGnu/Linuxecomecearealizarosprocedimentos aseguir. #vim/etc/zabbix/agent.d/remote_commands.conf
1
3 4
========================================================================
5
10
#questoenviadopeloservidor.Paraissooueleexecutadocomoroot #(desaconselhvel)ouchamaexecutveiscomsuid(desaconselhvel)ouutiliza #sudopararodaroscomandos.Esteltimoaopomaisseguradastrs,mas #requerconfiguraesextrasnoarquivosudoers. # EnableRemoteCommands=1 # #Nocasodehabilitadaaexecuodecomandosremotos,aconselhveldeixar #estaopoativadaparaauditoriadosistema.Elavairegistrarnoarquivo #delogsdoagentequandoequalcomandofoiexecutado(ounomnimofoi #tentado). # LogRemoteCommands=1
12
13
14
15
16
17 18
========================================================================
19
20
21
22
23
24
#/etc/init.d/zabbixagentrestart preciso mudar para 1 ambos EnableRemoteCommands e LogRemoteCommands. Seusnomessobemsubjetivos,eapesardenohavernecessidadedeativarosegundopara queacoisatodafuncioneextremamenteaconselhvelfazlo. J estamos ampliando bastante a confiana do agente no servidor, vamos ser cautelososeaomenoscolocarastentativasdeexecuodecomandosnoslogspara auditoria. recomendvelquevocdesabiliteoarquivodelogtambmefaaoagentegravarno syslog,dessaformaelenoterdireitodeescritanosarquivosusadosparaarmazenar suasmensagens. Agora a segunda parte: como usurio zabbix, o agente no ser capaz de iniciar nenhum servio do Gnu/Linux, somente o root pode fazlo. Ento vamos apelar ao sudo novamenteparaexecuodocomando(instaleosudosenecessrio). Configure o sudo para permitir que o agente execute sem senha o script de reinicializaodossh.
#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,ativadoapartirdoquadroActionoperations.
1) Operation type: escolha Remote command ao invs do valor para envio de mensagens.Notequeocampoabaixovaimudar. 2) Remotecommand:vocprecisacolocarocomandocomasintaxeHost:command, ondehostolocalondeocomandoserexecutado(ondevochabilitouocomando remoto no agente) e command o comando propriamente dito. No nosso caso usaremosDatabase:sudo/etc/init.d/sshrestart. Vocpodeusarmacrosnoscomandosepodeinvocarquantoscomandosvocquiser, emquaisquerservidores,emqualquersequncia. Agora vamos ao teste: v at o host no qual voc configurou o agente para aceitar comandosremotosepareoserviodeSSH,emseguidaabraologeaguarde.
Captulo 4 Monitoramento voltado para disponibilidade - 202 #/etc/init.d/sshstop #tail/var/log/zabbix/zabbix_agentd.logf 7287:20110215:192625.462Executingcommand'sudo/etc/init.d/sshrestart' StartingOpenBSDSecureShellserver:sshd. Sevocvoltarteladeeventosverquehdoisdeles,umdequedaeoutrodevolta.
4.8.6.Exerccios
1) CrieomesmoesquemademonitoramentofeitoparaoSSHparaoApachedentrodo application. Gere um template a parte para o Apache para conter os items e configuraes.Tambmcrieumaactioncapazdereiniciaroserviosefordetectado quenenhumdaemondoapacheestarodando. 2) CrieumtriggerparaavaliarseumserviodoWindowsnoestarodandoeuma action para alertar o administrador Windows. No corpo da mensagem coloque o estadoemqueoestadoseencontravanomomentodoalerta.Useamesmatticade checagemdeportasemltiplosgatilhos.
4.9.Medindoasadedesuarede
At o momento nossos esforos foram dirigidos a checagem de dados que indicam apenasseumdadohost(ouservio)estoperacionalouno.Vamoscomearaabordaroutros tpicos, que embora, indiretamente relacionados com os servios podem afetar seu funcionamento. Estetpicoabordaapartedenetworkingemostracomomonitoraroquosaudvelsua redeest.
4.9.1.Latnciaderede
Oprimeiropontoquevamosanalisarsoascausasdeindisponibilidadeporexcessode trafegonarede.Notequemedirabandapodeajudaraidentificargargalosderede,masamtrica maisindicadaparamedirlentidoalatnciaderede,quepodeestarbaixamesmoquandono htrafego!Comosemprevamoscomearcomacriaodoitemdentrodotemplate4Linux ICMP.
Neste item, atente para o campo Units que contm o valor s (segundos). Ele ir formatarovalorrecebidopeloitemparaumaformalegvelporsereshumanos.Emaisimportante, desta vez Type of Information esta como Numeric (float), porque o retorno da key icmppingsecemsegundos,masnormalmenteostemposderespostassoquebradosemtrs casasdecimais(milissegundos).
4.9.2.Macroparaolimiardalatnciaderede
Umpontomuitoimportantedefiniroqueumalatnciaruim.Issomuitovarivelde umambienteparaoutro,sevocestivermedindoalatnciaemumaredelocalento,provvel que uma latncia acima de 10 milissegundos seja alta. No caso de medir a latncia de um equipamentocomlinkviasatlite,podemosencontrarlatnciasdealgunssegundoscomopadro dependendodatecnologia. Para deixar nossos templates flexveis o suficiente para se adequarem a quaisquer ambientes podemos usar um recurso muito interessante do Zabbix chamado macros de usurios. Existemtrstiposdeescopodemacro:global(definidoemAdministration General) quevaleparatodosostemplatesehosts;macrosdetemplates,cujoalcancevaleparatodosos hostsassociadosaumdadotemplateemacrosdehost,quevalesparaaquelehost.Sevoc redefinir(comovamosfazer)umamacronumambientemaisrestrito,oqueirvalersereste ltimo. OZabbixtemvriasmacrosinternasejtivemoscontatocomalgumasquandocriamos nossostriggers.{HOSTNAME},queamaiscomum,armazenaonomedohostdefinidodentro dofrontend.Quandodefinirmosumamacrodeusurioimportantequeemsuasintaxeum sinaldecifro($)sejacolocadoantesdonomeedentrodaschaves. Porexemplo,vamosdefinirumamacroparalatnciaderedecomonomeLATENCIA, logosuasintaxeser{$LATENCIA}.Eviteousodeoutroscaracteresnonomedamacroexceto porunderline (_). Tambm no comece onomeda macro pornmeros. uma boa prtica manterosnomesemcaixaalta. No caso de nosso cenrio iremos definir um padro de 0.01 segundos (10 milissegundos)paranossamacro,elavaiserumamacrodetemplate,maisespecificamenteo template 4Linux ICMP. Abra as configuraes do mesmo clicando no nome dele em Configuration Templates. No canto direito do quadro principal voc vai achar a rea de definiodemacros.
Agrandediferenadestetemplateparaosanterioresousodamacro.Presteateno no campo Expression, seu valor indica a frmula {HOST:ITEM.avg(60)}>{$LATENCIA}. Podemosinserirquantasmacrosquisermosnaexpressodogatilho. A partir de agora se reutilizarmos estes templates em outros ambientes, podemos adequaralatnciaderedeglobalmentealterandoovalordamacronotemplate.Nocasodeum doshostsemnossosistematerumlimiardiferentedelatncia,podemosaindaredefiniramacro dentrodoprpriohost,alterandoassimocomportamentodeseutriggerpontualmente.
4.9.3.Nossoprimeirogrfico
Vamosagoracriarumgrficoqueirusarestetriggerparaexibirolimiardetestena tela.OresultadosersimilaraodaFigura4.99.
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.Nonossocasovamoscolocarapenasovalormnimode0 (assim o cho de nosso grfico sempre se manter em 0) e o mximo em Calculated,poisnotemoscomosaberondeestaotopoparacadaambiente.Em algunscasos,comoemporcentagens,normalmenteomximoumvalorfixo,em outroselepodeserovalordeumitem. 7) Items:aquipodemosdefinirquaissooscamposquedesejamosincluirnogrfico. Procuresempreusaromnimopossveldeinformaonestecaso.Paraacrescentar umItemcliqueemAdd.Ajaneladenovoitemparaogrficoseabrircomoaseguir.
1) Parameter:qualkeycadastradanotemplateesteelementorepresentar. 2) Type:se esteitem Simple ou Agregated.Campos agregados agrupamvrias contagememum nicovalor.Soteispara visualizaodevariao commenor granularidadenumdadoespaodetempo.Porexemplo,sevocquiserapenasa mdia,dehoraemhora,aoinvsdeusarointervalodecoleta. 3) Function:qualvalordevesermostradosehouveraexistnciademaisdeumvalor porpixelnoeixox.Asfunessoavg(mdia,omaiscomum),max(mximo), min (mnimo)ouall (todosostrs).Emvariaesmuitobaixas,all podeno exibirnadasignificante.
4) Drawstyle:Comoalinhaserdesenhada.Osvalorespossveisso:Line (linha simples), Filled region (rea preenchida), Bold line (linha mais espessa), Dot (pontos), Dashed line (tracejado) e Gradient (rea com gradiente da cor gradativamenteindoparatransparente).Estegrficousaalphablender. 5) Colour:obviamenteacor. 6) Yaxisside:Seosvaloresdesteitemseroexibidosdoladoesquerdooudireitodo grfico. 7) Sortorder:umnmeroindicandoaordemdedesenhonogrfico,vaide0a100. Vocpodeordenaroselementosdosgrficoscomodesejarnateladeconstruodo grficodepoisdeacrescentartodoseles. Clique em Save em ambas as telas e o grfico estar pronto para exibio em MonitoringGraphs. ObotodePreviewqueexistenateladeconstruodosgrficosnosercapazde exibir os grficos se voc estiver acrescentando ele a um template como estamos fazendo.Elesfuncionanocasodeumgrficosercriadodiretoemumhost.
4.9.4.Personalizandoomapaparaexibiodeinformaes
O mapa do Zabbix extremamente personalizvel, e permite que visualizemos praticamentequalquervalorquecoletamoseprocessamos,desdeitemsattriggers.Vamos aproveitarquecoletamosvriasmtricasimportanteseassocilasaomapa.Oresultadofinal deveficarcomonaFigura.
Paradefinirestesvaloresbastantesimples:editeaoitemdehostclicandosobreelee preencha,linhaalinha,osvaloresdocampoLabel.Noexemploquevimos,vrioshostsexibem o Uptime obtido de {Host:system.uptime.last(0)} e de latncia de rede, obtido de {Host:icmppingsec.avg(60)}.Atenoespecialaosegundo,poisusamosafunoavgeno last,issototalmentepermitido. NaFigura4.103temosumexemplocomohostPresentation.Apseditarovalorclique emApply.
NoesqueadesalvaromapaconstantementenobotoSave.
4.9.5.Exerccios
1) Assimcomooicmppingsec estaparaoicmpping,vriaskeyscomsufixo_perf esto para os equivalentes das simple checks de portas TCP. Por exemplo, ssh_perfamediodelatnciaparaoservidordeconexesremotassegura.Crie ositemsegrficos(vejaoexemploabaixo)paraosoutrosserviosquevocjcriou anteriormentededisponibilidade.Cadastremacrosparamedirolimiarefinalizecom ostriggersdosmesmos. Emsaladeaula,criepelomenosumdeles,osoutrospodemserfeitosemcasa.
4.10.Espaodisponvelemdisco
Alatnciaderedepodemedironvelderespostafinaldasaplicaesdisponibilizadasvia TCP.Masumitemextremamentecrtico,poispodecausarparadasdeserviosabruptamente,o espaodisponvelemdisco.
Vrios daemons simplesmente saem de funcionamento porque no so capazes de escreverempartiesdelogs,ebancosdedadosepastasdeusuriossemprepodemexceder asestimativasprevistas.Porissoimportantequeverifiquemosambasaspartiesdesistemae dedadosdentrodeumservidor. ComoexemploiremoscriarumaverificaodaraiznosGnu/Linux.Depoisestenderemos o mesmo princpio ao Windows. Outro ponto que nos servidores sempre existem vrias parties(aomenosnosbeminstalados),eporissotemosquetermltiplositemsparacobrir todososcasosedeixarmargem,atravsdemacros,parapartiescomnomespersonalizados peloadministrador. Porfim,destavezteremosquecoletarvriasmtricas(aomenostrs)paracriaodos grficosetriggers.Espaototal,usadoelivre. Existem outras mtricas como porcentagem utilizada e livre do disco (pfree e pused),almdeitemsbaseadoseminodes.ConsulteomanualdoZabbixpara maisdetalhes. Antesdecomearacriaritemsvamosdefinirumvalorlimiteparanossostriggerscomo fizemos na latncia de rede. A utilizao dos espaos em disco pode variar muito entre os servidores. Todas as nossas aes sero dentro do template 4Linux S.O. Linux. Comece criandoamacroconformeabaixo.
Captulo 4 Monitoramento voltado para disponibilidade - 212 pused (porcentagem utilizada) e pfree (porcentagem livre). Vamos usar apenas os trs primeiros,comeandopelototal,conformeaseguir. Oagentenoverificaseodiretriocolocadonoparmetroaraizdeumpontode montagem.Nocasodenoser,elecontinuarobtendoovalordoespaodapartio comoumtodo(pensenelecomoumdfaoinvsdeumcomandodu.
EditeoitemdeEspaototalecliquenobotoClone.
Voc ver que os dados se repetiro. Altere apenas a key (que deve ser nica) e o description.Repitaparaooutroitemevocteroutrasduasmtricasprontasecoletandoem tempo recorde! Confira no Overview se os dados esto sendo coletados adequadamente (atentandoparaqueelesestejamemnotaoabreviada,Mb,Gb,etc).
4.10.1.Grficosparaespaoemdisco
Vamoscriardoisgrficosparavisualizaodeespaoemdisco:oprimeiroumgrfico depizza(tambmchamadosdetorta,masonomeoficialgrficocircular)paramostraroatual volumedeusododisco.Apesardeparecerintil,estetipodegrficotemumavantagemgrande sobre o de linha: ele exibe de maneira visual o estado atual com propores facilmente reconhecveisporolhoshumanos.VejaaFigura4.109,queilustraogrficoquevamoscriardaqui apouco,facilmenteconseguimosverqueestapartioestacommaisde50%ocupadasomente olhandoparaogrfico. Novamente, como usamos o campo Unit igual a b, os valores j aparecero convertidoseabreviadosparafacilitarleiturahumana.
Paragerarumgrficocomoessesigaospassosaseguir.
Nohmuitossegredosnestatela,aoselecionarPieemGraphTypemenoscampos iro aparecer no formulrio. Vamos deixar a legenda ativa. Podese fazer grficos em 3D se desejado, mas no h grandes vantagens neles em relao aos normais em termos de visualizao,apenasesttica. Notequevamosutilizardoisitemsaomesmotempo:espaoutilizadoelivre. Foi usado vermelho para o espao utilizado por um bom motivo, as cores quentes tendemaatrairoolhohumanoquandoemcontrastecomcoresfriasoumaisclaras. Isso faz com que inconscientemente o administrador ou suporte, fixe no espao utilizadooqueocrticonestecaso.
Captulo 4 Monitoramento voltado para disponibilidade - 215 Enquanto o grfico circular indicado para mostrar o ltimo status de vrios items relacionados,proporcionalmenteeleocultaohistricodoespaoocupado.Porissoprecisamos criar,tambm,umgrficosimples.Oprocedimentosimilaraoanterioreresultarnogrficoda Figura4.111. Seudiferencialquevamosusarumlimitesuperioraoinvsdeumlimitecalculado.Para indicarotopodogrficovamosapontarparaoespaototaldapartioobtidoatravsdeumitem.
Crieumgrficocomoantes,masatenteparaodetalhesemdestaqueabaixo.
Aps acrescentar o item de espao utilizado, no campo Y axis MAX value escolha Itemeselecioneoitemdeespaototal.Issovailimitarotopodogrficoedarumavisualizao maisprecisadoespaoqueestsendoutilizadoemrelaoaototal.Sevocnoofizeretiver porexemplopoucoespaousadoogrficoficarajustadoaotamanhomximoatingidooque podelevarumobservadordesavisadoainterpretarcomodiscocheio!
4.10.2.Gatilhosparaalertasdeespaoemdisco
Agoravamosusaramacroquedefinimosanteriormenteparacalcularovolumededisco usado.Paraissovamosusarumafrmulapara,apartirdototal,saberqualaporcentagemem bytesqueapartioterdelimiar.Aexpressolgicomatemticaseria. ESPAO_USADO>(ESPAO_TOTAL*LIMITE/100) Sendoque: ESPAO_USADO:amdiadajaneladetempodoespaoutilizadonapartio. ESPAO_TOTAL:oltimovalorcoletadodoespaototaldapartio. LIMITE: o valor definido em nossa macro, representando a porcentagem de limite (padro80%)paraaveriguaodeestourodeusodedisco. Noteque,vocpoderiausaropusedparapegaraporcentagemutilizadaaoinvs destafrmula,masissoacrescentamaisumitemnomonitoramento.Almdomais esteumexemplobemdidticoparaexpressesmaiscomplexas. NocasodenossocenrioaexpressocompletaapresentadanaFigura4.113ecalcula exatamentequantosporcentosdeusodapartioapresenta.
Noteaindaque,comosempre,colocamosumadependnciaaoAgentPingparaevitar testescomvaloresinexistentequeresultamemUNKNOWN. Verifiquesealgumamquinaexcedeuoespaoeacionouo trigger.Nestecasovoc deveaumentarovalordamacro paraaquelehostsomente.Issoumcasoatpicononosso cenrioentootrataremoscomoumaexceo. ParatestarotriggeruseoseguintecomandoemumadasmquinasGnu/Linux: #ddif=/dev/zeroof=/tmp/lixobs=1kcount=$((200*1024)) Issovaigerarumarquivode200Mbno /tmp.Mudeotamanhodoarquivoconforme acharnecessrioparafazeroteste.Deixeelelatotriggeralarmaredepoisapagueopara liberaroespaoeforaratrocadeestadoparaOK.
4.10.3.Exerccios
1) Cloneositemscriadosparaapartio/alterandoparaasparties/usr,/var, /tmp,/boote/home(asnormalmentecriadasnumainstalao).Repliquetambm as macros, os grficos e os triggers. Deixetodasestasmtricasegatilhoscomodisabledporpadro!Elasdependemda instalaodeGnu/Linux.Emsalarepliqueaomenosuma,asoutraspodemserfeitas emcasa. 2) CrieasmesmasmtricasparaoWindows,mascomaspartiesdeC:atG:.Em salacrieaomenosuma,asoutraspodemserfeitasemcasa.
3) Desafio: crie mtricas que checam parties personalizadas pelo administrador, usandomacrosparadefinirospontosdemontagem.
4.11.Scriptsexternos
Fizemos vrias checagens at o momento usando os recursos do Zabbix. Mas nem sempreteremostudoamo.Estetrechodocursoensinaaestenderoagentedetalformaacriar novaskeysatravsdachamadadescriptsexternos. Alm disso algumas mtricas do Windows s podem ser obtidas pelo sistema de performancecountersqueumtipoderegistrodecoletadeperformancepadrodoWindows. Veremoscomoutilizarambosparaadicionarmaispoderdefogoaonossoarsenalde monitoramento.
4.11.1.ChecandoadisponibilidadedoPostgreSQL
OZabbixnotemsuporteatodososprotocolosTCPdafacedaTerra.Defatoissoseria umfeitoimpressionanteparaumaplicativodemonitoramento.OprotocolodoPostgreSQlesta entreosnosuportados,eemboratenhamosutilizadokeyscomotcpetcp_perfparamedir suadisponibilidadepodemocorrersituaesondeobancoaceiteconexesmasnoresponda nada,ouofaamuitolentamente. Nestescasosiremoscriarumaextensodoagenteaptaarealizaruma nicaconsulta (SELECT1)everificarseeleretornouovalorcorreto.Estaextensovaichamarumscriptcriado embashqueacionalocalmenteoservidor,fazaconsultaedeterminaoresultado.Prepareos conhecimentosdeshellscript,respirefundoevamoscomearacessandoohostDatabase. Oprimeiropassopermitirqueousuriozabbixseconecteaobancosemanecessidade de senhas. Isso necessrio porque o comando ser executado automaticamente sem a intervenomanualdeumadministrador. Comovamosusaropsql,clientepadroviaconsoledoPostgreSQL,podemosusarum artifciointeressantecomoarquivo.pgpass.Estearquivodeveficardentrododiretriohomedo zabbixedeveconterumastringcomosparmetrosdeacesso.Cadapermissodeacessodo
Captulo 4 Monitoramento voltado para disponibilidade - 219 usuriozabbixdeveestaremumalinha(assimpodemosacessarmltiplosbancosdedados). Oformatodaslinhasdestearquivoseguemasintaxe: hostname:porta:basededados:usurio:senha Enonossocasovamosacessarobancoprincipaldosistemapostgres,logoovalorfinal serlocalhost:5432:postgres:zabbix:zabbixdb.Osseguintescomandoscriamoarquivo,ajustam suapermissoefazemotestelocal. #suzabbix $echo"localhost:5432:postgres:zabbix:zabbixpwd">.pgpass $chmod0400.pgpass $psqlhlocalhostUzabbixpostgrescSELECT1; 1 $logout Apermissodoarquivo.pgpassdeveser0600ou0400eodonodoarquivodeveser ousuriozabbix. Aindatemosquecriarousuriozabbixdentrodobancocomasenhazabbixpwd. #supostgres $psqlpostgres postgres#CREATEROLEzabbixLOGIN; postgres#\passwdzabbix Digitenovasenha:zabbixpwd Digiteanovamente:zabbixpwd postgres#\q Agora vamos criar um arquivo para conter as configuraes do script. Ele vai conter apenas uma varivel por enquanto. Mais a frente vamos colocar outros valores aqui para o conjuntodescriptsdoPostgreSQL. #vim/etc/zabbix/pgaccess.conf
1
HOST=localhost
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) Oretornodocomandoverificadoenocasodeerros,umamensagemgravadana sadadeerroseoscriptparacomretorno1.OZabbixtrataistoenviandoasadapara ozabbix_agentd.log. 3) No caso do SELECT ser bem sucedido, o valor retornado ser 1 (definido no cabealhodoscript). 4) Casocontrriooscriptretorna0egravaumamensagemnologindicandoporque. Notequeocomportamento,de1significasucessoe0parafalha,replicaopadrodas
29
30
31
32 33
keysdedisponibilidadequevimosanteriormente.Issoajudaamanteropadroepermiteousodo valuemapsquecriamos. Todo script de comando externo deve retornar um, e apenas um valor! Repita isso consigomesmo!NohcomopegarvalorescompostosnoZabbixetrabalharcomeles individualmentedepois.Cadaitemarmazenaumsinglecontent. Agoravamoscriarumanovakey pgsql.ping,dentrodoagente.Paraissousamoso UserParameter,dentrodeumdosarquivosdeconfiguraodoagente.Asintaxedestalinha: UserParamente=key,comando arg1 arg2 ... No caso de nossa necessidade ficar como a seguir. #cat/etc/zabbix/agent.d/pgsql_checks.conf
1
UserParameter=pgsql.ping,/etc/zabbix/externalscripts/pgsql_ping.sh
Temosqueacertaraspermissesdosarquivosereiniciaroagente. #chownroot.zabbix/etc/zabbix/pgaccess.conf/etc/zabbix/agent.d/pgsql_checks.conf /etc/zabbix/externalscripts/pgsql_ping.sh #chmod0640/etc/zabbix/pgaccess.conf/etc/zabbix/agent.d/pgsql_checks.conf #chmod0750/etc/zabbix/externalscripts/pgsql_ping.sh #/etc/init.d/zabbixagentrestart J podemos fazer o teste local, o script deve retornar o valor 1. #suzabbixc/etc/zabbix/externalscripts/pgsql_ping.sh 1 ApartirdoZabbixservertesteoacessoanovachave.Oresultadotambmdeveser1. #zabbix_getsdatabasek'pgsql.ping' 1 Setodosostestesforamresolvidosomomentodevoltaraofrontend.Crieumnovo template4Linux PostgreSQL 8.4 on Linux, ele devedependerdo template4LinuxS.O. Linux.DepoisentrenohostDatabase,removaotemplate4LinuxS.O.Linux peloboto Unlink (conservandoassimosdadoscoletados)eadicioneonovomodeloconformeaFigura 4.114.
VerifiquesenoOverviewosdadosestosendorecebidos.
Comissojpoderamoscriartriggersefazeromesmoescalonamentodegatilhospara averiguarqualtipodeerropodeacontecer.
4.11.2.MedindoadisponibilidadedeumlinkInternet
Agorafaremosumabordagemdiferente:vamosmediralatnciadolinkdeInternetapartir dohostPresentation(assimpodemosobterumvalorpuroentreohostdebordaeogateway daoperadora). Estescript,umpoucomaiscomplexoqueoanterior,permitequecoletemosamdiade 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 umpingemcadaumdosendereosldentro.Paracadacoletabemsucedidaele somaamdiaqueocomandoretorna(emmilissegundos). 2) Nosegundotrechoapartirdoresultadodasomaedaquantidadedetestesobtidaa mdia final e convertida para segundos (assim podemos usar o Unit s para formatarasada). O arquivo de links pode conter tantas entradas o quanto quisermos, mas no recomendvelquehajamaisdoque5,queotempolimitequeoZabbixesperaporumscript executarantesdedesistireretornarnulo. #vim/etc/zabbix/internet_perf.links
1
nossoscript. #vim/etc/zabbix/agent.d/internet_perf.conf
1
UserParameter=internet.perf,/etc/zabbix/externalscripts/internet_perf.sh Finalmenteacerteaspermissesdosarquivos.
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/Linuxparacoletadetodasasinformaes.
Processamento
Estaprimeiramtricadeperformanceque,geralmente,observadaquandoosistema ficalento.Algumasconsideraesdevemserfeitasquandosebuscamonitoraroprocessamento paraidentificargargalos: 1) 100%deprocessamentonoquerdizernada! 1.1) Picos de processamentos so mais corriqueiros do que imaginamos, eles acontecem frequentemente, mas so to momentneos que nem os percebemosmesmoemgrficoscomcurtosintervalosdecoleta.Sempreque procurarporeles,concentreseapenasnosdelongadurao.
- 231
1.2) SevoccriargatilhosdeverificaodeCPU,faaoscomumajaneladetempo razovel. O aconselhado que ela seja em torno dos 15 minutos, se o processamento ficou muito alto, por tanto tempo assim, provavelmente h algumacoisaerradanasuaaplicaoouseuhardwareestmaldimensionado.
2) QuandocoletarinformaesdeCPUvocpodesedepararcommuitasopes,aqui voalgumasdicassobreoquefazerparadecidiroquecoletar. 2.1) Antes de olhar a porcentagem da CPU, olhe para o system load (key system.cpu.load).Elaindicaoenfileiramentodeprocessos,oquepodeser bempiordoquesimplesmenteterCPUaltaotempotodo. 2.2) Mantenhaaomenosumacoletageraldebaixonvel.OconsumodeCPU dividido em vrios tipos, os mais relevantes so user (consumo realizado pelosprocessos),system(consumorealizadopelokernel)ewait(consumo realizado por espera de I/O, geralmente de disco). Existem outros menos relevantes, portanto consulte a documentao do Zabbix sobre a key system.cpu.utilparaobtermaisdetalhes. 2.3) Aomonitorarmltiploscoresindividualmente,coleteapenasoidledecadaum deles.Raramentevocprecisardecoletasdetalhadasporncleo. 2.4) Monitore tambm o context switch pela key system.cpu.switches para verificaronmerodevezesqueosprocessosnascem,dormem,acordame morremnoscores,almdeindicaramigraodethreads.
Mtricasdememria
OsegundopontomaisimportantedesemonitorarnumS.O.amemria,incluindoaqui areadetroca(swap). 1) Consumodememriapodeserbemcomplicadodesemonitorarsevocnoprestar ateno nos tipos de memria que existem. No Gnu/Linux, por exemplo, temos a memriadeprocessos,adebuffereadecache.Porpadroakeyvm.memory.size nocapazdecapturaramemriadosprocessos(queaimportante).Parafazer issovoctemquecriarumitemcalculadoquesubtraiamemriaavailable(enoa free)dototal.
- 232
Throughputebandaderede
Bandapodeserumitemimportantesevocnotemumlinksuficientementegrande paracomportarsuasnecessidades,masothroughputoquerealmentedeveserobservado. 1) Grande largura de banda com baixo throughput e alta latncia de rede indicam, problemas de rede (provavelmente fsicos). A key net.if.in e net.if.out so as indicadasparaisso. 2) LembresequeoZabbix,osistemaoperacionaleseusaplicativosmedemoconsumo deredeembytesenoembits.Noentantotodososequipamentosderedeelinks deInternetsocompradospelosegundo.Prefiraexibirmesmoassimosdadosem bytes.Sevocrealmentetiverqueexibirembitsterquecriarumcampocalculado quelemultiplicaovalordoitemembytes. 3) Cuidado ao estipular valores de topo dos grficos de banda para redes internas. EnquantonoslinksdeInternetissoumaprticarecomendvel,paraconsumosde servidoresemredesde100ou1000Mbpsosvaloresvoficartoprximosdoeixox queaimpressoserdetrfegozero.
PerformancedeDisco
Parabancosdedados,analiseaperformancededisco.Otemplateda4Linuxfazusode umscriptexternoquecoletadadosdebaixonvel,opadrodoZabbixaindanocapazde coletarestesdados. 1) Noseatenhaathroughputdediscoembytes,elesvariamtantodeumhardware para outroque difcil deestabelecerumpadro. Use mtricascomo nmerode operaes,tempo gastoemescrita/leituraeenfileiramentodeoperaes,elesso muitomaissignificativos. 2) Procureporpontosdeincidnciadeoperaesirregulares,seotempotodoseudisco ficanumamdiadeoperaesederepenteelemuda,avalieoquepodeterocorrido nesteperodo,mesmoquesejaparamenoscarga(oquepodeindicardelaysde operao).
- 233
AnexoII Performancedeservios
Introduo
Performancedeserviosumassuntoextensoedemandariavrioscursosapartepara poder cobrir sua toda a sua extenso. De fato, uma parte dos cursos avanados da 4Linux detalhamestetipodeestudo.Aquivamosapenasarranharapontadoiceberg. Os templates completos do final do curso contm muito mais detalhes dos que os discutidosaqui.
PostgreSQL
ObancodedadosdoPostgreSQLpossuiumsistemadetabelaschamadascatlogos. Estastabelasarmazenamdiversasoperaesimportantes. 1) Nopercatempoolhandoestatsticasdenvelmuitobaixo.Comecepordadoscomo nmerodeconexesedeoperaesnobanco.Noaumenteasconexesdobanco arbitrariamente,essaumaprticaruim!
- 234
JBoss
OservidordeaplicaesJBosstemtodosaquelesMBeansqueoZapcatdissecoupara ns.Vamoscomentarosmaisimportantes. 1) Aplicaes java no usam fork. Eles sempre trabalham em threads, por isso monitorarthreads(principalmenteosHTTPeAJP)vomostrarousodaJVMpara conexes. 2) O JBoss usa datasources, que possuem poolings de conexes. Monitorar as conexesdestespoolstambmumaboamtrica.Viaderegraumaboaaplicao, mesmo muito ocupada, no deve usar mais do que algumas poucas dezenas de conexes. 3) Consumo de memria heap pode indicar garbage collectors fazendo muitas operaes(nuncacoloquemuitamemriadeheapparaasJVMs,poisoGCpode derrubar as JVMs). Vazamentos Leaks de memrias tambm podem ser detectadoscomestetipodemonitoramento. 4) Monitorar a rea de perm gen normalmente no necessrio, mas pode indicar quandoredeploysacabamconsumindotodaamemriadestinadaabytecodes.
Apache
OtemplatedoApacheprecisadomod_statusativadoparacoletadeinformaes. 1) Normalmente a mtrica mais significativa o nmero de conexes e uso de processos. 2) Verificarosprocessosemidlepodeindicarqueaconfiguraopodeserajustada paramenos,paraconsumirmenosrecursos.