Escolar Documentos
Profissional Documentos
Cultura Documentos
Zabbix
Zabbix
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, istema..........................................1! 2.1. Introdu"#o........................................................................................................................1$ 2.2. Confi%urando os componentes de recebimento de alertas............................................1$
2.2.1. Confi%urando o cliente de correio eletr&nico........................................................................1' 2.2.2. Mensa%ens instant(neas.........................................................................................................2!
-3
2.1-. Instalando o ser/idor Zabbix /ia pacote.......................................................................$* 2.11. Preparando o ser/idor >eb............................................................................................$+
2.11.1. Instala"#o do 3pache e PDP$...............................................................................................$+ 2.11.2. Confi%ura"#o do 9irtual Dost...............................................................................................$+ 2.11.3. Confi%urando o front end......................................................................................................'1
2.12. 7xerccios de re/is#o.....................................................................................................*2 Captulo 3 Criando uma Infraestrutura de Monitoramento E Parte 2, Front end.......................................*! 3.1. Introdu"#o........................................................................................................................*$
3.1.1. )r%aniBa"#o do front end.......................................................................................................*$
3.$. Mapas...............................................................................................................................6+
3.$.1. Importando ima%ens para o mapa..........................................................................................6+ 3.$.2. Criando um mapa..................................................................................................................1-3.$.3. 3dicionando um elemento.....................................................................................................1-3 3.$.!. 7ditando um elemento do mapa...........................................................................................1-! 3.$.$. al/ando o mapa...................................................................................................................1-' 3.$.'. 3dicionando os outros elementos.........................................................................................1-' 3.$.*. Criando e editando linGs.......................................................................................................113.$.+. Pr,tica 1iri%ida.....................................................................................................................111 3.$.6. 7xerccios sobre Mapas........................................................................................................113
-4
3.+. 3ti/ando um host............................................................................................................123
3.+.1. 5hroubleshootin% para itens com problemas.......................................................................12!
Captulo ! Monitoramento /oltado para disponibilidade..........................................................................12+ !.1. Introdu"#o......................................................................................................................126 !.2. Checa%ens manual /ia front end...................................................................................126
!.2.1. 3de4uando o script de traceroute........................................................................................132 !.2.2. Criando no/os comandos para o menu.................................................................................13$ !.2.3. 7xerccios..............................................................................................................................13+
-5
!.6.3. Cosso primeiro %r,fico.........................................................................................................2-$ !.6.!. PersonaliBando o mapa para exibi"#o de informa".es........................................................2-+ !.6.$. 7xerccios..............................................................................................................................21-
!.1-. 7spa"o dispon/el em disco.........................................................................................21!.1-.1. :r,ficos para espa"o em disco...........................................................................................213 !.1-.2. :atilhos para alertas de espa"o em disco..........................................................................21' !.1-.3. 7xerccios............................................................................................................................21*
!.11.
cripts externos...........................................................................................................21+
!.11.1. Checando a disponibilidade do Post%re O<......................................................................21+ !.11.2. Medindo a disponibilidade de um linG Internet.................................................................223 !.11.3. 7xerccios............................................................................................................................22*
L7F7LPCCI3 @I@<I):LQFIC3 ......................................................................................................................22+ 3nexo I Performance do istema )peracional..................................................................................23Introdu"#o.......................................................................................................................................23Processamento.................................................................................................................................23MHtricas de mem0ria......................................................................................................................231 5hrou%hput e banda de rede...........................................................................................................232 Performance de 1isco.....................................................................................................................232
ndice de tabelas
5abela 18 )p".es de compila"#o do Zabbix............................................................................3! 5abela 28 @in,rios de uma instala"#o de ser/idor e a%ente do Zabbix.................................3' 5abela 38 3r4ui/os e diret0rios de confi%ura"#o....................................................................3+ 5abela !8 Fun"#o dos menus no front end..............................................................................** 5able $8 Rsu,rios do cen,rio do curso...................................................................................+1 5abela '8 Lela"#o de permiss.es entre hosts e usu,rios.......................................................6+ 5abela *8 <ista de ima%ens iniciais para o mapa.................................................................1-5abela +8 er/i"os do cen,rio do curso................................................................................1'3 5abela 68 Lespons,/eis de cada host...................................................................................1*$ 5able 1-8 9alores da GeA ser/iceSstate.................................................................................163
-6
ndice de Figuras
Fi%ura 2.18 Confi%ura"#o do e/olution I1;1-J........................................................................1' Fi%ura 2.28 Confi%ura"#o do e/olution I2;1-J........................................................................1* Fi%ura 2.38 Confi%ura"#o do e/olution I3;1-J........................................................................1+ Fi%ura 2.!8 Confi%ura"#o do e/olution I!;1-J........................................................................16 Fi%ura 2.$8 Confi%ura"#o do e/olution I$;1-J........................................................................2Fi%ura 2.'8 Confi%ura"#o do e/olution I';1-J........................................................................21 Fi%ura 2.*8 Confi%ura"#o do e/olution I*;1-J........................................................................22 Fi%ura 2.+8 Confi%ura"#o do e/olution I+;1-J........................................................................23 Fi%ura 2.68 Confi%ura"#o do e/olution I6;1-J........................................................................23 Fi%ura 2.1-8 Confi%ura"#o do e/olution I1-;1-J....................................................................2! Fi%ura 2.118 5ela de boas /indas do Pid%in............................................................................2$ Fi%ura 2.128 Confi%urando uma conta ?abber no Pid%in.......................................................2$ Fi%ura 2.138 1efinindo o uso de cripto%rafia.........................................................................2' Fi%ura 2.1!8 @aixando o a%ente do Zabbix no =indo>s........................................................!* Fi%ura 2.1$8 Instalando os execut,/eis no =indo>s.............................................................!+ Fi%ura 2.1'8 1iret0rio de confi%ura"#o do Zabbix no =indo>s............................................!+ Fi%ura 2.1*8 Confi%urando o a%ente no =indo>s..................................................................!6 Fi%ura 2.1+8 1esblo4ueando o a%ente no =indo>s...............................................................$Fi%ura 2.168 ) a%ente do Zabbix sendo executado como ser/i"o autom,tico......................$1 Fi%ura 2.2-8 5ela de entrada do Zapcat.................................................................................$! Fi%ura 2.218 Confi%ura"#o do front end I1;1-J......................................................................'1 Fi%ura 2.228 Confi%ura"#o do front end I2;1-J......................................................................'2 Fi%ura 2.238 Confi%ura"#o do front end I3;1-J......................................................................'3 Fi%ura 2.2!8 Confi%ura"#o do front end I!;1-J......................................................................'$ Fi%ura 2.2$8 Confi%ura"#o do front end I$;1-J......................................................................'' Fi%ura 2.2'8 Confi%ura"#o do front end I';1-J......................................................................'* Fi%ura 2.2*8 Confi%ura"#o do front end I*;1-J......................................................................'+ Fi%ura 2.2+8 Confi%ura"#o do front end I+;1-J......................................................................'6 Fi%ura 2.268 Confi%ura"#o do front end I6;1-J......................................................................*Fi%ura 2.3-8 Confi%ura"#o do front end I1-;1-J....................................................................*1 Fi%ura 2.318 5ela inicial do Zabbix ap0s o primeiro lo%in.....................................................*1 Fi%ura 3.18 :erenciamento de usu,rios do Zabbix................................................................*+ Fi%ura 3.28 7ditando o 3dmin.................................................................................................*6 Fi%ura 3.38 Confi%urando a autentica"#o <13P....................................................................+Fi%ura 3.!8 Co/o :rupo ?@oss 3dministrators.......................................................................+1 Fi%ura 3.$8 Co/o usu,rio Asadmin.......................................................................................+2
-7
Fi%ura 3.'8 Media 5Apes.........................................................................................................+3 Fi%ura 3.*8 Confi%urando o Zabbix para en/iar eEmails........................................................+! Fi%ura 3.+8 Confi%urando o Zabbix para en/iar mensa%ens instant(neas...........................+! Fi%ura 3.68 Media 5Apes de um usu,rio sem apontamentos.................................................+$ Fi%ura 3.1-8 3dicionando o Media 5Ape 7mail a um usu,rio................................................+$ Fi%ura 3.118 3dicionando um media tApe ?abber a um usu,rio............................................+' Fi%ura 3.128 Media 5Apes de um usu,rio ap0s o cadastro....................................................+' Fi%ura 3.138 elecionando todos os templates prH cadastrados...........................................++ Fi%ura 3.1!8 7xcluindo os templates selecionados................................................................+6 Fi%ura 3.1$8 Criando um no/o template.................................................................................+6 Fi%ura 3.1'8 Cadastrando um no/o template.........................................................................+6 Fi%ura 3.1*8 9inculando um template a outro.......................................................................6Fi%ura 3.1+8 7xportando um template...................................................................................61 Fi%ura 3.168 <aAout dos hosts a serem monitorados.............................................................62 Fi%ura 3.2-8 Como criar um no/o %rupo de hosts.................................................................63 Fi%ura 3.218 Co/o host %roup.................................................................................................63 Fi%ura 3.228 Dost prHEcadastrado no front end na tela de Dosts..........................................63 Fi%ura 3.238 @ot#o para criar um host...................................................................................63 Fi%ura 3.2!8 5odos os hosts do cen,rio cadastrados.............................................................6$ Fi%ura 3.2$8 Concedendo permiss.es de acesso I1;!J...........................................................6$ Fi%ura 3.2'8 Concedendo permiss.es de acesso I2;!J...........................................................6' Fi%ura 3.2*8 Concedendo permiss.es de acesso I3;!J...........................................................6' Fi%ura 3.2+8 Concedendo permiss.es de acesso I!;!J...........................................................6* Fi%ura 3.268 5ela inicial das ima%ens.....................................................................................66 Fi%ura 3.3-8 Importando uma no/a ima%em..........................................................................66 Fi%ura 3.318 Ima%em do primeiro mapa a ser criado..........................................................1-Fi%ura 3.328 Mapas prHEcadastrados....................................................................................1-1 Fi%ura 3.338 Co/o mapa........................................................................................................1-1 Fi%ura 3.3!8 @arra de ferramentas para edi"#o de mapas..................................................1-3 Fi%ura 3.3$8 Criando um no/o elemento..............................................................................1-3 Fi%ura 3.3'8 Posicionando um no/o elemento com o mouse...............................................1-! Fi%ura 3.3*8 7ditando um elemento na tela.........................................................................1-$ Fi%ura 3.3+8 @ot#o a/e do mapa.........................................................................................1-' Fi%ura 3.368 1ialo%o de sal/ar mapa....................................................................................1-' Fi%ura 3.!-8 )utros elementos %r,ficos a serem adicionados............................................1-* Fi%ura 3.!18 7ditando o elemento 4ue representa o host Presentation.............................1-+ Fi%ura 3.!28 1etalhes do host s>itch dentro do mapa........................................................1-6 Fi%ura 3.!38 Dosts acrescentados no mapa.........................................................................11Fi%ura 3.!!8 Criando um no/o linG entre o host Presentation e a ima%em Internet..........111
-8
Fi%ura 3.!$8 7ditando as propriedades do no/o linG...........................................................112 Fi%ura 3.!'8 <inG entre o host Presentation e o >itch......................................................113 Fi%ura 3.!*8 Mapa final.........................................................................................................11! Fi%ura 3.!+8 5emplates e seus elementos............................................................................11! Fi%ura 3.!68 Criando um application I1;!J...........................................................................11$ Fi%ura 3.$-8 Criando um application I2;!J...........................................................................11$ Fi%ura 3.$18 Criando um application I3;!J...........................................................................11$ Fi%ura 3.$28 Criando um application I!;!J...........................................................................11' Fi%ura 3.$38 Criando seu primeiro item I1;3J......................................................................11' Fi%ura 3.$!8 Criando seu primeiro item I2;3J......................................................................11* Fi%ura 3.$$8 Criando seu primeiro item I3;3J......................................................................11+ Fi%ura 3.$'8 Campo para associa"#o de templates.............................................................116 Fi%ura 3.$*8 5ela para escolha de templates.......................................................................116 Fi%ura 3.$+8 5emplate associado..........................................................................................116 Fi%ura 3.$68 5emplate associado na lista de templates.......................................................116 Fi%ura 3.'-8 InterErela"#o dos templates base....................................................................12Fi%ura 3.'18 3ssociando o template do ?@oss ao host ?@oss 3 Fi%ura 3.'28 3ssociando o template do ?@oss ao host ?@oss 3 Fi%ura 3.'38 3ssociando o template do ?@oss ao host ?@oss 3 Fi%ura 3.'!8 3ssociando o template do ?@oss ao host ?@oss 3 Fi%ura 3.''8 3ssociando o template do ?@oss ao host ?@oss 3 I1;'J.................................12I2;'J.................................12I3;'J.................................12I!;'J.................................121 I';'J.................................121
Fi%ura 3.'$8 3ssociando templates a hosts I$;11J...............................................................121 Fi%ura 3.'*8 5emplates para =indo>s e CMP associados aos seus respecti/os hosts. . .121 Fi%ura 3.'+8 3ssociando um template a mKltiplos hosts simultaneamente I1;!J..............122 Fi%ura 3.'68 3ssociando um template a mKltiplos hosts simultaneamente I2;!J..............122 Fi%ura 3.*-8 3ssociando um template a mKltiplos hosts simultaneamente I3;!J..............123 Fi%ura 3.*18 3ssociando um template a mKltiplos hosts simultaneamente I!;!J..............123 Fi%ura 3.*28 5odos os templates associados aos hosts do cen,rio....................................123 Fi%ura 3.*38 Dost presentation n#o monitorado..................................................................12! Fi%ura 3.*!8 1ialo%o de confirma"#o de ati/a"#o...............................................................12! Fi%ura 3.*$8 Dost presentation monitorado.........................................................................12! Fi%ura 3.*'8 Item n#o suportado..........................................................................................12$ Fi%ura 3.**8 Item suportado e ati/o.....................................................................................12* Fi%ura !.18 Menu de Ferramentas acessado pelo mapa......................................................13Fi%ura !.28 ada de um comando pin%................................................................................13Fi%ura !.38 ada de um comando 4ue falhou do traceroute..............................................131 Fi%ura !.!8 ada do traceroute ade4uando a no/a necessidade .......................................13$ Fi%ura !.$8 Criando um no/o script para testar portas Fi%ura !.'8 Criando um no/o script para testar portas D I1;2J......................................13' D I2;2J......................................13'
-9
Fi%ura !.*8 Co/a entrada de menu com o script criado......................................................13* Fi%ura !.+8 Lesultado do comando ati/ado no host.............................................................13* Fi%ura !.68 1ia%rama de comportamento do echo ICMP....................................................136 Fi%ura !.1-8 Dosts ati/os com pin% ICMP em funcionamento............................................1!Fi%ura !.118 Rm /alue maps de estado de ser/i"os............................................................1!Fi%ura !.128 7ditando o /alue map para nossa necessidade...............................................1!Fi%ura !.138 9alue map editado e pronto para uso..............................................................1!1 Fi%ura !.1!8 elecionando um /alue map no tri%%er..........................................................1!1 Fi%ura !.1$8 9alues maps no o/er/ie>.................................................................................1!1 Fi%ura !.1'8 Pausando o host 1atabase...............................................................................1!2 Fi%ura !.1*8 Dost database parado no o/er/ie>.................................................................1!2 Fi%ura !.1+8 Criando um tri%%er para a parada do host I1;6J.............................................1!3 Fi%ura !.168 Criando um tri%%er para a parada do host I2;6J.............................................1!3 Fi%ura !.2-8 Criando um tri%%er para a parada do host I3;6J.............................................1!3 Fi%ura !.218 Criando um tri%%er para a parada do host I!;6J.............................................1!3 Fi%ura !.228 Criando um tri%%er para a parada do host I$;6J.............................................1!! Fi%ura !.238 Criando um tri%%er para a parada do host I';6J.............................................1!! Fi%ura !.2!8 Criando um tri%%er para a parada do host I*;6J.............................................1!$ Fi%ura !.2$8 Criando um tri%%er para a parada do host I+;6J.............................................1!$ Fi%ura !.2'8 Criando um tri%%er para a parada do host I6;6J.............................................1!' Fi%ura !.2*8 Indica"#o de problemas no 1ashboard...........................................................1!' Fi%ura !.2+8 )/er/ie> com indica"#o dos items com alerta...............................................1!* Fi%ura !.268 )/er/ie> com /isualiBa"#o dos tri%%ers ati/os..............................................1!* Fi%ura !.3-8 Mapa indicando o host 1atabase como do>n.................................................1!+ Fi%ura !.318 5ela de 7/ents, indicando a 4ueda e o retorno dos hosts..............................1!+ Fi%ura !.328 5ela de acGno>led%ement...............................................................................1!6 Fi%ura !.338 3cGno>led%e Iconfirma"#oJ aplicado..............................................................1!6 Fi%ura !.3!8 Criando uma action para en/iar o alerta I1;6J................................................1$Fi%ura !.3$8 Criando uma action para en/iar o alerta I2;6J................................................1$Fi%ura !.3'8 Criando uma action para en/iar o alerta I3;6J................................................1$1 Fi%ura !.3*8 Criando uma action para en/iar o alerta I!;6J................................................1$1 Fi%ura !.3+8 Criando uma action para en/iar o alerta I$;6J................................................1$1 Fi%ura !.368 Criando uma action para en/iar o alerta I';6J................................................1$2 Fi%ura !.!-8 Criando uma action para en/iar o alerta I*;6J................................................1$2 Fi%ura !.!18 Criando uma action para en/iar o alerta I+;6J................................................1$2 Fi%ura !.!28 Criando uma action para en/iar o alerta I6;6J................................................1$3 Fi%ura !.!38 Mensa%ens de alerta recebidas no 7/olution.................................................1$3 Fi%ura !.!!8 Leiniciando o host 1atabase...........................................................................1$! Fi%ura !.!$8 <0%ica de um %atilho com tempo de se%uran"a.............................................1$$
- 10
Fi%ura !.!'8 imple checG para o D................................................................................1'1 D...........................................................1'2
Fi%ura !.!+8 Criando um cen,rio para disponibilidade =eb I1;'J......................................1'! Fi%ura !.!68 Criando um cen,rio para disponibilidade =eb I2;'J......................................1'! Fi%ura !.$-8 Criando um cen,rio para disponibilidade =eb I3;'J......................................1'$ Fi%ura !.$18 Criando um cen,rio para disponibilidade =eb I!;'J......................................1'' Fi%ura !.$28 Criando um cen,rio para disponibilidade =eb I$;'J......................................1'* Fi%ura !.$38 Criando um cen,rio para disponibilidade =eb I';'J......................................1'* Fi%ura !.$!8 9isualiBando a checa%em =eb.........................................................................1'* Fi%ura !.$$8 1etalhes do monitoramento =eb....................................................................1'* Fi%ura !.$'8 :r,fico de /elocidade de do>nload para o cen,rio =eb................................1'+ Fi%ura !.$*8 :r,fico de tempo de resposta para o cen,rio =eb.........................................1'+ Fi%ura !.$+8 Co/o item para monitorar o a%ente................................................................1*Fi%ura !.$68 Copiando o item de pin% de a%ente para o template do ?@oss I1;2J..............1*Fi%ura !.'-8 Copiando o item de pin% de a%ente para o template do ?@oss I2;2J..............1*1 Fi%ura !.'18 Criando um tri%%er para o a%ent.pin% I1;$J....................................................1*2 Fi%ura !.'28 Criando um tri%%er para o a%ent.pin% I2;$J....................................................1*2 Fi%ura !.'38 Criando um tri%%er para o a%ent.pin% I3;$J....................................................1*3 Fi%ura !.'!8 Criando um tri%%er para o a%ent.pin% I!;$J....................................................1*3 Fi%ura !.'$8 Criando um tri%%er para o a%ent.pin% I$;$J....................................................1*3 Fi%ura !.''8 5ri%%er para o a%ent pin% criado e ati/o........................................................1*3 Fi%ura !.'*8 5ri%%er de a%ente ati/ado...............................................................................1*! Fi%ura !.'+8 1epend2ncia entre tri%%ers e/itando 4ue o %atilho filho seTa ati/ado..........1*! Fi%ura !.'68 Item para tempo de uptime.............................................................................1** Fi%ura !.*-8 Rptime /ia Zapcat............................................................................................1*+ Fi%ura !.*18 Rptime /ia CMP.............................................................................................1*+ Fi%ura !.*28 )/er/ie> exibindo os uptimes a partir do a%ente padr#o, Zapcat e CMP..1*6 Fi%ura !.*38 Rm tri%%er para a reinicialiBa"#o de um host................................................1+Fi%ura !.*!8 Item para /erifica"#o de nKmero de processos..............................................1+3 Fi%ura !.*$8 )/er/ie> refletindo o nKmero de processos...................................................1+3 Fi%ura !.*'8 5ri%%er para 4ueda do daemon.......................................................................1+! Fi%ura !.**8 5este de 4ueda do sshd....................................................................................1+$ Fi%ura !.*+8 Leflexo da 4ueda do daemon D no o/er/ie>..............................................1+$ Fi%ura !.*68 Item para /erifica"#o da porta local...............................................................1+' Fi%ura !.+-8 Fluxo%rama da depend2ncia entre tri%%ers para an,lise de ser/i"os...........1+* Fi%ura !.+18 5ri%%er para /erifica"#o da porta local...........................................................1+6 Fi%ura !.+28 5ri%%er para /erifica"#o de porta remota.......................................................1+6 Fi%ura !.+38 er/i"o telnet do =indo>s..............................................................................16Fi%ura !.+!8 Dabilitando o ser/i"o de telnet do =indo>s...................................................161
Fi%ura !.6'8 Item para lat2ncia de rede...............................................................................2-3 Fi%ura !.6*8 Macro para lat2ncia de rede............................................................................2-$ Fi%ura !.6+8 5ri%%er para lat2ncia de rede usando a macro...............................................2-$ Fi%ura !.668 :r,fico para medir a lat2ncia de rede............................................................2-' Fi%ura !.1--8 Criando um %r,fico de lat2ncia de rede........................................................2-' Fi%ura !.1-18 3dicionando mHtricas ao %r,fico...................................................................2-* Fi%ura !.1-28 Mapa com labels personaliBadas exibindo dados.........................................2-6 Fi%ura !.1-38 7xemplo de labels com /alores de mHtricas.................................................2-6 Fi%ura !.1-!8 7xemplo de %r,fico de lat2ncia de ser/i"os para exerccios........................21Fi%ura !.1-$8 Macro para limite de espa"o em disco utiliBado...........................................211 Fi%ura !.1-'8 Primeiro item de espa"o em disco.................................................................212 Fi%ura !.1-*8 Items a serem clonados para espa"o em disco.............................................213 Fi%ura !.1-+8 @ot#o para clonar items.................................................................................213 Fi%ura !.1-68 :r,fico de piBBa para exibi"#o de espa"o li/re e ocupado...........................21! Fi%ura !.11-8 Criando um %r,fico de piBBa..........................................................................21! Fi%ura !.1118 :r,fico de hist0rico de espa"o em disco.......................................................21$ Fi%ura !.1128 Criando o %r,fico de hist0rico de uso de disco.............................................21$ Fi%ura !.1138 5ri%%er para c,lculo de espa"o em disco......................................................21* Fi%ura !.11!8 5rocando o template do host database para o Post%re O<.........................222 Fi%ura !.11$8 1isponibilidade do Post%re O< ati/a no database.......................................223 Fi%ura !.11'8 <at2ncia sendo exibida no label do linG........................................................22' Fi%ura !.11*8 <at2ncia de rede e tri%%er associados ao linG com a Internet no mapa......22' Fi%ura !.11+8 <inG no mapa identificando status do tri%%er...............................................22'
)@?75I9) Apresentar a ferramento ao aluno. Como o front end organiza os componentes dentro do Zabbix. Componentes visuais de monitoramento. Alertas de incidentes. Reinicializao de servios. Mostrar ao aluno onde obter informaes.
http://www.zabbix.com/forum/. Em destaque os seguinte: Zabbix announcements: anncios e novas verses Zabbix help: frum principal de ajuda Zabbix cookbook: vrias configuraes prontas postadas e comentadas. Muito til. Zabbix throubleshooting: se um problema persiste, este o local para postar erros e solues. Zabbix em portugus y em espanhol: frum em portugus e espanhol, til quando voc no l ingls muito bem.
OBJETIVOS
Preparar o ambiente de recebimento de alertas: Configurar o Evolution para receber e-mails de alertas; Configurar o Pidgin para receber mensagens instantneas de alertas. Preparar o ambiente para instalar o servidor do Zabbix: Obter os fontes da ferramenta; Preparar o PostgreSQL para servir de back end. Instalar o servidor e agente: Compilar o servidor e agente na mquina destinada a ser o monitorador e nas demais; Instalao dos binrios dentro do Windows 2003 (com inicializao do agente como servio); Executar deploy do agente Zapcat no JBoss para monitoramento do servidor de aplicaes Configurao de um virtual host dentro do Apache para o front end, incluindo modifica o dos parmetros do PHP.
2.1. Introduo
Este captulo apresenta todas as tarefas relacionadas a cria o da base de sua soluo de monitoramento. Aqui onde ser abordado a maior parte do conhecimento t cnico de console Linux, deploying em JBoss, servios de Windows e acesso SNMP, visando incutir as competncias necessrias para que, sozinho, voc seja capaz de reproduzir estes passos em um ambiente de produo. Alm disso, sero vistos os primeiros passos na utilizao e familiarizao com a interface web do Zabbix, mostrando como gerenciar os elementos mais b sicos da ferramenta: usurios, hosts, templates, grupos de hosts e mapas.
Comearemos a configurar as contas de usurios dentro do sistema de LDAP que o cenrio possui. Preencha os campos como abaixo para configurar a primeira conta e, em seguida, clique em Avanar. 1) Nome Completo: System administrator 2) Endereo de e-mail: #$#admin%cur#o&'(.&linux.com.br.
3) Tipo de Servidor: devemos escolher POP, que o recurso implantado para recepo de e-mails no cenrio. 4) Servidor: o endereo externo do servidor de e-mail. 5) Nome do usurio: o primeiro usurio que usaremos o sysadmin. 6) Lembrar senha: para comodidade dos testes em curso ative o recurso de armazenamento de senha. Esta opo no segura para ser usada em produo! Mas como no curso os usurios so fictcios e possuem a senha 123456 isso no vai nos impactar.
Nesta tela, configure o recebimento automtico a cada 1 minuto, assim no precisamos ficar esperando e-mails chegarem e, tambm no precisamos ficar clicando em Enviar/Receber a todo momento.
Apesar de no utilizar o envio de e-mail sob o ponto de vista do usu rio, interessante configurar o SMTP para averiguar se os e-mails esto caminhando dentro do cenrio. 1) No Tipo de Servidor escolha SMTP. 2) No Servidor coloque o mesmo endereo de e-mail que colocamos no POP3. No reproduza este comportamento de aceite de e-mails sem autentica o em produo! O servidor de correio eletrnico dentro do cenrio apenas um meio de sabermos que as mensagens de alertas do Zabbix esto sendo enviadas por e-mail.
1) Nome: Por final, configure um nome para esta conta. Isto usado apenas para exibio no Evolution.
Na primeira vez que voc entrar ele ir pedir a senha (123456) do usurio, digite-a e verifique se no houve nenhum erro. No h nenhum e-mail na caixa de mensagens do sysadmin, logo nenhuma mensagem vai aparecer. Agora que o Evolution esta funcionamento, acesse o menu Editar Preferncias e clique no cone Contas de Correio a esquerda. Atravs do boto Adicionar cadastre mais trs contas seguindo os mesmos passos que anteriormente, mudando apenas os nomes e usu rios. As contas a serem acrescentadas so Windows Administrator (winadmin), Java Engineer (javaeng) e DBA (dba). Aps o trmino, escolha duas contas e teste o envio de mensagens entre elas.
1) O protocolo Jabber usa a opo XMPP. 2) No nome do usurio use sysadmin. 3) No domnio, voc deve apontar o nome da mquina cadastrada para IM e no o domnio. 4) Na senha coloque 123456. 5) Ative o Lembrar Senha. No ative a opo Lembrar Senha em produo! Isso seria uma terrvel falha de segurana. Ela s esta sendo ativada para comodidade do curso.
1) Clique na aba Avanado. 2) Escolha para usar criptografia apenas se estiver dispon vel. Clique em Adicionar e ative a conta na interface do Pidgin.
2.4.1. Instalao
Para instalar a verso do repositrio do PostgreSQL: # aptitude install postgresql-8.4
Agora que conseguimos o acesso como superusu rio, vamos primeiro criar o banco de dados. O comando create database ir cuidar desta tarefa. Note que todos os comandos digitados dentro deste console terminam com ponto-e-v rgula (;). postgres=# CREATE DATABASE zabbixdb; Com o banco de dados criado com sucesso vamos criar o usu rio e definir sua senha. Para propsito de organizao deste material a senha do banco de dados do zabbix ser zabbixdbpw. Ao digitar a senha note que ela n o aparece como no quadro de comando abaixo! Este apenas um demonstrativo didtico. postgres=# CREATE ROLE zabbix LOGIN; postgres=# \password zabbix Digite nova senha: zabbixdbpw Digite-a novamente: zabbixdbpw interessante definir a senha por \password pois assim ela n o fica armazenada no histrico de comandos do usurio. Agora precisamos liberar a conexo do servidor ao banco de dados do zabbix, para isso edite o arquivo pg_hba.conf conforme abaixo e acrescente a linha em destaque. postgres=# \q $ logout # vim /etc/postgresql/8.4/main/pg_hba.conf host zabbixdb zabbix 127.0.0.1/32 md5
Reinicie o banco de dados e realize o teste de conexo. # /etc/init.d/postgresql restart # psql -h localhost -U zabbix zabbixdb psql (8.4.5) conexo SSL (cifra: DHE-RSA-AES256-SHA, bits: 256)
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 30 Digite "help" para ajuda. zabbixdb=> \q # Se voc estiver usando a verso 9.0 do PostgreSQL importante lembrar que o suporte a imagens do Zabbix assume que o banco utiliza a forma antiga de armazenamento bytea (escape em vez de hex). Para configurar o comportamento antigo use o comando ALTER DATABASE nomedabase SET
bytea_output=escape; dentro do console do psql. Isso pode ser configurado no usurio ou no postgresql.conf tambm.
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 31 $ psql zabbixdb
1
postgres=# \t postgres=# \a postgres=# \o /tmp/grantzabbix.sql postgres=# SELECT 'GRANT SELECT,UPDATE,DELETE,INSERT ON ' || schemaname || '.'
$ logout 1) O comando \a remove o alinhamento dos elementos na tabela; 2) O \t mostra apenas tuplas, eliminando cabealhos e rodaps; 3) O comando \o grava o output no arquivo definido ( /tmp/grantzabbix.sql). Note que preciso de outro \o sem o nome do arquivo para encerrar o output; 4) Este comando em SQL seleciona todas as tabelas do banco de dados e monta uma string com o comando de permisso (GRANT), voc pode ver o contedo deste comando no arquivo /tmp/grantzabbix.sql; 5) O comando \i carrega e executa o contedo do arquivo gerado acima.
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 32 com altas cargas de mtricas sendo monitoradas. Para comear, vamos instalar os dois pacotes mais bsicos para compilao de fontes no Debian, o build-essential e o make. O primeiro um meta pacote que ir instalar todos os pacotes mnimos de compilao de fontes (compilador, linkeditor, cabealhos do kernel e da libc, etc.) e o segundo um automatizador de compilao. No terminal do zabbixsrv rode os seguintes comandos. # aptitude install build-essential make # cd /usr/src/zabbix-1.8.4 # ./configure --help | less O configure um script gerado a partir do autotools, que um conjunto de ferramentas para facilitar a compilao de fontes em C. A opo --help fornecida acima ir listar todas as opes que podemos ativar ou no para compilar o Zabbix. Note que o configure no compila nada ele apenas prepara a cama para realizar a compila o com o make. Na tabela a seguir esto as opes relevantes do configure para a nossa tarefa. Opo do configure EEprefixUdiret1rio Descrio 1efine onde o Zabbix ser, instalado. V importante lembrar 4ue se nada for confi%urado nesta op"#o os bin,rios e manuais ser#o colocados em /u#r/local como padr#o. Co entanto para manter a instala"#o or%aniBada e facilitar atualiBa".es de /ers.es do Zabbix n0s o colocaremos em /opt/zabbix21.(.&.
EEmandirU;usr;share;man 3ponta a localiBa"#o correta das p,%inas de manual, assim podemos usar o comando man para acessar as op".es dos bin,rios do Zabbix. EEenableEstatic 3ti/a a %era"#o de bin,rios em forma est,tica Isem shared librariesJ. V recomendado deixar esta op"#o desli%ada. 3ti/a a compila"#o do ser/idor. Co caso presente iremos ati/ar esta op"#o, 4uando formos compilar apenas o a%ente iremos desabilit,Ela. Compila os bin,rios para sistemas distribudos. Como neste curso n#o abordaremos o sistema de proxA do Zabbix /amos deixar esta op"#o sempre desabilitada. Compila os bin,rios para os a%entes. V uma excelente ideia sempre deixar esta op"#o ati/ada. Mesmo em ser/idores dedicados do Zabbix H uma boa pr,tica monitorar a pr0pria m,4uina.
EEenableEser/er
EEenableEproxA
EEenableEa%ent
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 33 Opo do configure EEenableEip/' Descrio Compila com suporte a IP9'. 7mbora n#o seTa absolutamente necess,rio, dado ao recente anKncio do es%otamento de endere"os IP da I3C3 o IP9' lo%o ser, necess,rio em muitos ambiente. 3ti/a o suporte ao MbacG endN do bando de dados I@M 1@2. 9amos deix,Elo desabilitado uma /eB 4ue usaremos o Post%re O<. 9oc2 pode escolher apenas um MbacG endN. 3ti/a o suporte ao MbacG endN do bando de dados MA O<. 9amos deix,Elo desabilitado uma /eB 4ue usaremos o Post%re O<. 9oc2 pode escolher apenas um MbacG endN. 3ti/a o suporte ao MbacG endN do bando de dados )racle. 9amos deix,Elo desabilitado uma /eB 4ue usaremos o Post%re O<. 9oc2 pode escolher apenas um MbacG endN. 3ti/a o suporte ao MbacG endN do bando de dados Post%re O<, /amos deix,Elo habilitado. 9oc2 pode escolher apenas um MbacG endN. 3ti/a o suporte ao MbacG endN do bando de dados s4lite /ers#o 3. 9amos deix,Elo desabilitado uma /eB 4ue usaremos o Post%re O<. 9oc2 pode escolher apenas um MbacG endN. 3ti/a o suporte do ser/idor de contato com ser/idores ?abber permitindo 4ue o Zabbix en/ie alertas tara/Hs deste ser/i"o de mensa%ens instant(neas. 9amos ati/ar essa op"#o. 3ti/a o suporte a biblioteca de D55P CRL<. V necess,ria para o monitoramento de ser/i"os =eb e autentica"#o /ia D55P. 3ti/a o suporte ao MbacG endN do bando de dados /ia )1@C. C#o H recomendado. Como o anterior mas usa unix)1@C ao in/Hs de i)1@C. 7ste pacote H mais encontrado do 4ue o i)1@C. 3ti/a o suporte a monitoramento /ia CMP usando a biblioteca MnetEsnmpN do unix. 9amos deix,Ela ati/ada. Mesmo 4ue o anterior, mas usando a biblioteca ucd, menos comum. 9amos deix,Ela desati/ada. 3ti/a suporte a monitoramento /ia D e /erifica"#o de status de um ser/i"o de conex#o remota se%ura. 9amos deix,Elo ati/ado. 3ti/a suporte a comandos e monitoramento de hard>are por IPMI. 0 H rele/ante 4uando o hard>are 4ue /oc2 /ai monitorar e o .). Instalado nele possuem esta especifica"#o. Para este curso deixaremos ele desati/ado.
EE>ithEibmEdb2
EE>ithEmAs4l
EE>ithEoracle
EE>ithEp%s4l
EE>ithEs4lite3
EE>ithETabber
EE>ithElibcurl
EE>ithEopenipmi
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 34 Opo do configure EE>ithEldap Descrio 3ti/a suporte a autentica"#o /ia <13P e monitoramento do status de um ser/i"o de diret0rios remoto. 9amos deix,Ela ati/ada.
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 35 Voc pode otimizar os binrios tornando o Zabbix mais rpido mas dependente de uma CPU compatvel se voc exportar as variveis de ambiente CFLAGS e CXXFLAGS com o seguinte valor -O2 -pipe -march=native, antes de executar o configure. Se voc estiver usando um sistema de 32 bits acrescente ainda -fomit-frame-pointer. Cuidado com outros flags de compilao! Voc pode acabar com um binrio defeituoso!
BabbixSsender
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 36 Binrio Funcionalidade item especial do tipo M3abbix trap4 para lidar com estes en/ios. Wtil para alertar incidentes instantaneamente para o ser/idor como o incio, termino ou erro de um bacGup. BabbixSa%ent 3%ente para ser usado com o Msuper daemon xinetdN ou similar. C#o H necess,rio na %rande maioria dos casos e ser, remo/ido do diret0rio. ) daemon do a%ente do Zabbix 4ue fica na mem0ria a espera das re4uisi".es do ser/idor. ) daemon do ser/idor do Zabbix. 7ste H o componente principal de toda a infraestrutura.
BabbixSa%entd
BabbixSser/er
Tabela 2: Binrios de uma instalao de servidor e agente do Zabbix preciso remover o zabbix_agent e sua pgina de manual, uma vez que iremos usar apenas o daemon zabbix_agentd. Tambm uma boa prtica no manter os smbolos de depurao nos binrios de produo. O comando strip ir retirar estes smbolos e o executvel final ser ligeiramente menor em tamanho (o que ajuda a consumir menos mem ria tambm). # rm /opt/zabbix-1.8.4/sbin/zabbix_agent # rm /usr/share/man/man1/zabbix_agent.1* # strip --strip-all /opt/zabbix-1.8.4/*/* No aconselhvel executar daemons de sistema com o usurio root, por isso vamos criar um grupo e usurio de nome zabbix para que o servio entre na memria como usurio no privilegiado. O nome do usurio que o Zabbix usa hadcoded, ou seja, ele programado dentro do cdigo fonte e no pode ser alterado via configurao. Desse modo sempre temos que criar o usurio com o nome zabbix, j o nome do grupo totalmente opcional. # groupadd zabbix # useradd -g zabbix -m -s /bin/bash zabbix
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 37 Ambos os daemons, do agente e do servidor, precisam de dois diret rios para armazenar os logs e o arquivo de PID. Com os comandos abaixo crie e d as permisses necessrias para ambos. # mkdir /var/{log,run}/zabbix -p # chown zabbix. /var/{run,log}/zabbix
zabbix-trapper 10051/tcp Zabbix Trapper zabbix-trapper 10051/udp Zabbix Trapper Estas entradas permitem que programas como wireshark e netstat reconhe am as portas do Zabbix.
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 38 Diretrio ou arquivo a%ente principalJ ;etc;Babbix;a%ent.d;checGin%s.conf ;etc;Babbix;a%ent.d;lo%s.conf ;etc;Babbix;a%ent.d;net>orG.conf ;etc;Babbix;a%ent.d;remoteScommands.conf ;etc;Babbix;alert.d ;etc;Babbix;externalscripts ;etc;Babbix;ser/er.d Descrio Icarre%ado pelo ar4ui/o
Confi%ura"#o de checa%ens ati/as e passi/as do a%ente. Confi%ura"#o de lo%s Ilocal, n/el de debu%, etc.J do a%ente. Confi%ura".es de rede do a%ente. Confi%ura"#o de recebimento comandos remotos no a%ente. 1iret0rio externos para scripts de de
alertas
1iret0rio para scripts de extens#o do a%ente do Zabbix. 1iret0rio para confi%ura".es extras do ser/idor Icarre%ado pelo ar4ui/o principalJ Confi%ura"#o do MbacG endN de banco de dados do ser/idor. Confi%ura"#o de lo%s Ilocal, n/el de debu%, etc.J do ser/idor. Confi%ura".es de rede do ser/idor. Confi%ura".es de 4uais daemons de/em iniciar e 4uantos de cada um deles, alHm de consumo de mem0ria do ser/idor. Confi%ura"#o de monitoramento distribudo do ser/idor. 3r4ui/o principal de confi%ura"#o do a%ente 3r4ui/o principal de confi%ura"#o do ser/idor
Copie o arquivo compactado do DVD (confs/config-server.tar.bz2 e confs/configagent.tar.bz2) para dentro do /tmp da mquina virtual. Este arquivos tem vrios valores padres razoveis para comear e necessitam de pouca configurao. No de inteno deste material dissecar cada uma das opes de configurao, vamos abordar apenas as mais relevantes, porm os arquivos tem extensos comentrios em portugus criados pelo autor deste material.
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 39 # cd / # tar xf /tmp/config-server.tar.bz2 # tar xf /tmp/config-agent.tar.bz2 # chown root.zabbix /etc/zabbix -R # find /etc/zabbix -type d -exec chmod 0750 {} \; # find /etc/zabbix -type f -exec chmod 0640 {} \; 1) Note que o grupo dos diretrios e seus arquivos foram apontados para zabbix. O dono continuou a ser o root; 2) Todos os diretrios tiveram a permisso de acesso global revogada, nenhum usurio do sistema tem que acessar esta pasta exceto o do Zabbix (existem informa es sensveis como senhas em text/plain nestes arquivos). Tamb m, apenas o root tem direitos de gravao nessas pastas o grupo zabbix tem apenas acesso de leitura. 3) Os arquivos seguem a mesma lgica que os diretrios.
No deixe de fazer o procedimento das permisses, ele vai tornar a sua instalao do Zabbix muito mais segura. Para finalizar vamos configurar o sistema para apontar o PATH para o link simb lico de instalao. Isso vai facilitar o acesso aos comandos. # vim /etc/profile.d/zabbix-path.sh
8
export PATH=$PATH:/opt/zabbix/sbin:/opt/zabbix/bin
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 40 # vim /etc/zabbix/server.d/database.conf DBHost=127.0.0.1 DBPort=5432 DBName=zabbixdb DBUser=zabbix DBPassword=zabbixdbpw 1) O endereo IP ou nome DNS do servidor que esta com o banco de dados. Como no nosso cenrio o banco e o servidor Zabbix est o na mesma mquina virtual utilizamos o endereo de loopback; 2) A porta TCP de acesso do banco. Esta a porta padro do PostgreSQL; 3) Nome do banco de dados que criamos no incio do captulo; 4) Nome do usurio que criamos e demos permisso; 5) Senha do usurio acima. Agora execute os comandos de inicializao dos daemons conforme indicado abaixo. # zabbix_agentd # zabbix_server Verifique se as ltimas linhas do log indicam se ambos iniciaram corretamente e tamb m se todos os processos esto na memria. # tail -n1 /var/log/zabbix/zabbix_server.log 1203:20110207:092633.044 server #1 started [DB Cache] # tail -n1 /var/log/zabbix/zabbix_agentd.log 871:20110207:092607.522 zabbix_agentd collector started # ps u -C zabbix_agentd SER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND zabbix 863 0.0 0.1 4836 496 ? SN 09:25 0:00 /opt/zabbix/sbin/zabbix_agentd # ps u -C zabbix_server USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND zabbix 1201 0.0 1.0 46696 2636 ? SN 09:26 0:03 /opt/zabbix/sbin/zabbix_server
Note que a sada do ltimo comando muito grande. Ao final dos testes mate os processos com o comando killall: # killall zabbix_server zabbix_agentd
# Este o arquivo de configurao de rede do agente do Zabbix. #==================================================================== # Qual porta e IP que o agente vai se vincular para receber checagens passivas do servidor. # ListenIP=172.27.0.1 ListenPort=10050 #==================================================================== # IP o qual o agente do Zabbix ir usar para enviar dados, opcional pois o sistema usa o IP #
2 3
8 9
10
SourceIP= 1) Mudar para o IP interno do Presentation. Agora reinicie o agente e confira novamente a qual IP ele esta vinculado.
# /etc/init.d/zabbix-agent restart Stopping Zabbix agent daemon: zabbix_agentd Starting Zabbix agent daemon: zabbix_agentd # netstat -lntp | grep zabbix tcp 0 0 172.27.0.1:10050 0.0.0.0:* OUA 654/zabbix_agentd Se o servio agora estiver vinculado ao IP correto repita estes passos em cada VM. Neste ponto importante paramos para verificar uma poss vel falha de conexo. Vamos forar a VM zabbixsrv a se comunicar com o gateway (presentation) via zabbix_get. Vamos usar a key agent.ping como exemplo. # zabbix_get -s gateway -k 'agent.ping' zabbix_get [6646]: Get value error: *** Cannot connect to [gateway]:10050 [ Connection timed out] Note a mensagem 'Connection timed out' no final da linha de erro, tambm repare que levou algum tempo para que o comando retornasse a mensagem. Isso acontece porque o filtro de pacotes da mquina esta bloqueando conexes, podemos averiguar isto com mais precis o usando a ferramenta nmap conforme abaixo: # nmap -P0 -p 10050 gateway Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-30 02:17 BRST Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE 10050/tcp filtered unknown MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems) Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds
O estado da porta que o nmap retornou filtered, ou seja, no h retorno de pacotes do sistema. Para podermos liberar o acesso use o procedimento abaixo no terminal da m quina presentation. # iptables -A INPUT -j ACCEPT -p tcp --dport 10050 -s 172.27.0.10 # iptables-save > /etc/iptables/rules Repetindo o nmap a partir do servidor do Zabbix: # nmap -P0 -p 10050 gateway Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-30 02:34 BRST Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE 10050/tcp open unknown MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems) Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds Se o estado retornado for open, ento o servidor capaz de se conectar ao agente no nvel da camada TCP, mas ainda precisamos ter certeza absoluta que ele esta permitindo conexes no nvel de camada de aplicao. Vamos repetir o teste com o zabbix_get e ver se o agente retorna o valor 1. # zabbix_get -s gateway -k 'agent.ping' Note que ele no retorna nada! Apenas uma linha em branco aparece no resultado do comando. Isso esta ocorrendo porque o agente precisa liberar a consulta para o servidor, por padro os arquivos de configurao apenas permitem que ele seja acessado a partir do localhost. Para liberar o acesso temos que editar o arquivo /etc/zabbix/agent.d/checkings.conf e mudar dois parmetros.
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 45 O primeiro, obviamente o Server que aceita uma lista separada por vrgula (,) dos endereos que so permitidos fazer a consulta. O segundo o Hostname representando o nome da mquina com o qual o agente deve se apresentar ao servidor. Este nome deve ser nico e no necessariamente precisa ser igual ao hostname real da m quina, de fato no nosso cenrio iremos deix-lo diferente. # vim /etc/zabbix/agent.d/checkings.conf
1
# Este o arquivo para configurao de checagens no agente. H dois tipos de checagens, a # # Checagens passivas so o padro, o servidor faz o agendamento das mtricas e manda
passiva e a ativa.
2
uma requisio ao agente que aguarda passivamente (dai o nome), este ent o coleta o dado do sistema e envia de volta ao servidor.
4
# # Uma checagem ativa permite que o agente receba uma lista de itens a serem monitorados
do servidor e ao invs deste ltimo cuidar do agendamento e requisies o agente que toma para si esta tarefa.
6
alcance o agente via rede ou quando se utiliza um sistema de monitoramento de logs onde o monitoramento ativo obrigatrio.
8
#==================================================================== # Quais so os servidores para recebimento de requisies ou obteno da lista de Server=172.27.0.10 #==================================================================== # Como este host esta cadastrado dentro do Zabbix isto no precisa corrsponder ao
checagens ativas.
10
11 12
13
hostname da mquina ele uma string de identificao do agente para com o servidor do Zabbix.
14
# Hostname=Presentation
15
1) Sempre temos que mudar este parmetro para o endereo do servidor ou nome DNS do mesmo. Se houverem mais de um servidor, separe os endere os/nome por vrgula; 2) Este o nome a ser cadastrado no front end do Zabbix e n o o nome de DNS (apesar de poderem ser os mesmos). Reinicie o agente mais uma vez e faa o teste com zabbix_get a partir do servidor. # zabbix_get -s gateway -k 'agent.ping' 1 Se o comando resultante retornou 1 ent o o servidor poder acessar o agente a partir de agora.
Primeiro 2.14.
preciso
baixar
os
executveis
pelo
endereo
Clique no link de download e escolha um local para colocar o arquivo compactado, no exemplo da apostila ele foi colocado em C:\Downloads. Abra a pasta em que o arquivo foi salvo e descompacte o arquivo. Dentro dele voc encontrar outras duas pastas para arquiteturas de 32 e 64 bits. No nosso caso iremos usar os de 32 bits.
Volte a raiz e crie um diretrio chamado Zabbix e dentro dele ainda crie mais tr s diretrios: conf, log e bin e copie os executveis descompactados dentro deste ltimo. Obtenha os arquivos do DVD com a configurao do agente do Windows (conf/agent-winconfig.zip) e descompacte dentro da conf o seu conte do. Apague o arquivo zip depois disso. O arquivo zabbix_agentd.conf deve ficar na raiz da pasta conf, assim como os diretrios agent e externalscripts. Cuidado na hora de descompactar.
Edite o arquivo c:\Zabbix\conf\agent\checkings.conf e mude os par metros Server e HostName conforme a Figura 2.17, para permitir o acesso do servidor e o arquivo c:\Zabbix\conf\agent\network.conf para vincul-lo ao endereo IP da placa de rede.
Use o Wordpad para alterar estes arquivos, o Notepad tem v rios problemas com codificao e finais de linha.
Agora vamos testar a instalao, abra dois prompts de comando, no primeiro acesse o diretrio dos binrios e execute o comando conforme abaixo. cd C:\Zabbix\bin zabbix_agentd -c ..\zabbix_agentd.conf Note que uma mensagem dizendo que ele foi iniciado pelo console ir aparecer na tela. porque o Windows no capaz de executar o agente como um daemon da maneira que o Linux faz, mais a frente veremos como inici-lo como servio do Windows que maneira correta de se fazer. Outra mensagem, desta vez via caixa de dialogo, tamb m vai aparecer na tela. o servio de segurana do Windows que esta perguntado se deve bloquear ou n o esta aplicao. Obviamente devemos clicar em Desbloquear.
Agora no segundo prompt de comando, use o comando netstat como abaixo para verificar se ele esta escutando no endereo correto. netstat -an
Nesta tela tambm possvel parar, reiniciar, etc. o agente atravs da barra de cones na parte superior da janela. Como o servi o inicia parado devemos clicar sobre ele e no cone Iniciar o Servio (representado pelo smbolo de play). Certifique-se que ele esta para ser iniciado automaticamente, assim quando o sistema for reiniciado o servio tambm ser. Teste no servidor do Zabbix se ele esta conseguindo alcan ar o agente. # zabbix_get -s win2003 -k 'agent.ping' 1 Se ele retornar 1 como acima, ento a instalao esta concluda.
2.8.2. Deployment
Para instalar o Zapcat, simplesmente copie o binrio para a pasta de deploy da instncia em execuo do JBoss. No nosso caso esta pasta /opt/jboss/server/application/deploy/.
# cp zapcat-1.2.war /opt/jboss/server/application/deploy/ # tail /opt/jboss/server/application/log/server.log 2011-01-30 06:08:10,616 INFO [org.jboss.system.server.Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 27s:81ms 2011-01-30 06:10:25,679 INFO [org.jboss.web.tomcat.service.TomcatDeployer] deploy, ctxPath=/zapcat-1.2, warUrl=.../tmp/deploy/tmp3690979215130123277zapcat-1.2-exp.war/ A ltima mensagem do log indica que o pacote foi instalado com sucesso (deployed). Ele j esta funcionando e podemos averiguar isso com o comando netstat como fizemos anteriormente. # netstat -lntp | grep ':1005' tcp 0 0 172.27.0.20:10050 0.0.0.0:* OUA 28751/zabbix_agentd tcp 0 0 0.0.0.0:10052 0.0.0.0:* OUA 29181/java
Repare que, como ele um aplicativo java, o netstat no vai informar o nome dele (Zapcat) na sada com -p.
-Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImp l"
4
JAVA_OPTS="$JAVA_OPTS -Dorg.kjkoster.zapcat.zabbix.port=10052
JAVA_OPTS="$JAVA_OPTS -Dorg.kjkoster.zapcat.zabbix.address=0.0.0.0 1) O JMX remote ativa o sistema de consultas via JMX no JBoss e Tomcat. No caso do segundo apenas este parmetro necessrio; 2) O Mbean server a implementao do JBoss para acesso aos JMX via servidor; 3) Indica a classe que deve ser usada para manipular os Mbeans internamente no JBoss; 4) Esta opo define a porta do Zapcat. Ela opcional e por padro o Zapcat escuta na porta 10052; 5) Esta opo define a qual IP o zapcat deve se vincular. Ela opcional e por padro ele se vincula a todos os endereos disponveis do host (0.0.0.0). Reinicie o JBoss e teste o acesso ao Zapcat pelo endere o
No prximo captulo voltaremos a este acesso. Por hora j basta verificar se o Zapcat esta funcionando.
# # As the snmp packages come without MIB files due to license reasons, loading # of MIBs is disabled by default. If you added the MIBs you can reenable # loaging them by commenting out the following line. #mibs : Agora utilize o comando snmpwalk para verificar se o switch retorna os dados de
interfaces de rede. # snmpwalk -c public -v2c 172.27.0.135 if IF-MIB::ifIndex.1 = INTEGER: 1 IF-MIB::ifIndex.2 = INTEGER: 2 IF-MIB::ifIndex.3 = INTEGER: 3 IF-MIB::ifIndex.4 = INTEGER: 4 IF-MIB::ifIndex.5 = INTEGER: 5 IF-MIB::ifIndex.6 = INTEGER: 6
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 56 IF-MIB::ifDescr.1 = STRING: lo IF-MIB::ifDescr.2 = STRING: eth0 IF-MIB::ifDescr.3 = STRING: eth1 IF-MIB::ifDescr.4 = STRING: eth2 IF-MIB::ifDescr.5 = STRING: eth3 IF-MIB::ifDescr.6 = STRING: switch0 IF-MIB::ifSpecific.1 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.2 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.3 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.4 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.5 = OID: SNMPv2-SMI::zeroDotZero IF-MIB::ifSpecific.6 = OID: SNMPv2-SMI::zeroDotZero Se o comando retornou a lista acima (que foi truncada pelo tamanho) ent o seu sistema j consegue ler o SNMP do switch. Se voc estiver usando um hardware com uma MIB proprietria, localize e baixe o arquivo na Internet e copie-o no diretrio /usr/share/snmp/mibs/
Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 57 1.3.6.1.2.1.1.3.0. Se voc possuir a MIB de um equipamento monitorado pelo Zabbix e quiser utilizar a forma textual mostrada acima em vez da numrica, ter que copiar o arquivo de texto dela dentro do diretrio de sua distribuio Gnu/Linux onde o servidor estiver instalado. Normalmente este diretrio esta em /usr/share/snmp/mibs/, mas recomendado que voc confirme se isto vale para a distro que voc esta usando. Por fim, a partir da verso 2 do protocolo SNMP passou-se a trabalhar com uma string de comunidade (community). Por padro esta string tem o valor public armazenado dentro dela (parmetro -c do comando snmpwalk). Este valor tem como objetivo permitir apenas que quem conhea a community seja capaz de acessar o SNMP. Francamente, colocar a segurana de um sistema em cima de um valor em texto plano que viaja sem criptografia na rede no nada seguro. Se voc realmente quiser segurana deve usar a verso 3. Tambm proteja ao mximo o acesso a porta 161 (ou a qual voc definiu) de acessos indevidos, o ideal permitir apenas acesso dos endereos dos servidores de monitoramento. Apenas se lembre que ainda assim, nada inviolvel e o SNMP no exceo.
O ltimo comando d permisses de escrita na pasta conf ao servidor, isso necessrio apenas inicialmente e ser removido depois do termino da configurao do front end. Agora vamos criar o arquivo de virtual host. Note que o diret rio criado acima apontado como raiz e os arquivos de logs s o separados do padro para facilitar a depurao de erros. # cd /etc/apache2/sites-available # vim zabbix-front end.conf
1
<VirtualHost *:80> ServerAdmin sysadmin@curso468.4linux.com.br DocumentRoot /var/lib/zabbix/frontend <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/lib/zabbix/front end> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error-zabbix-frontend.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access-zabbix-frontend.log combined
3 4
5 6
10
11
12
13
14
15
16 17
18 19
20
21
22 23
</VirtualHost>
1) DocumentRoot precisa apontar para o diretrio onde instalamos o front end. 2) Em ErrorLog, vamos direcionar os logs de erros para um arquivo espec fico deste virtual host. 3) O mesmo deve ser feito com o CustomLog, apontando para um arquivo especfico de acessos. Este passo esta substituindo o site padro pelo do Zabbix. Se houverem outros hosts virtuais na mesma mquina no necessrio remov-los, apenas ajuste as configuraes do arquivo acima para receber conexes apenas de uma URL em particular. # cd /etc/apache2/sites-enabled # rm 000-default # ln -sv ../sites-available/zabbix-front end 000-zabbix-front end Reinicie o Apache, abra a porta 80 do firewall e teste acessando a URL http://zabbix.curso468.4linux.com.br/. # /etc/init.d/apache2 restart # iptables -A INPUT -j ACCEPT -p tcp --dport 80 # iptables-save > /etc/iptables/rules O primeiro acesso ao front end vai enviar o browser direto para o wizzard de inicializao do site. Siga os passos como descrito a seguir para ativar a interface.
A primeira tela apenas uma mensagem de boas vindas. Clique em Next para comear.
Marque a opo I agree para concordar com a licena do Zabbix e clique em Next.
Nesta tela muitos alertas de falha iro aparecer, isso porque o Zabbix requer uma configurao muito alm dos padres do PHP. Neste ponto preciso editar o arquivo de configurao do PHP e modificar os valores necessrios. Note que o status de cada parmetro pode ser um OK em verde (o servidor j esta configurado para o recomendado ou superior), Ok em vermelho claro (o servidor j esta configurado para o mnimo, mas no alcanou o ideal) ou Fail em vermelho que indica que nem o mnimo foi atingido. O ideal deixar tudo no Recommended, porm preciso avaliar se o servidor ter os recursos necessrios para a execuo dessas configuraes. Normalmente teremos servidores que so capazes de fornecer recursos o suficiente para tal. Com o vim abra o arquivo conforme abaixo. # vim /etc/php5/apache2/php.ini
Procure com o apoio da tabela abaixo e da tela de configura o todas as opes relevantes e configure-as para atingir o Recommended. Parmetro do P P date.timeBone !ignificado Oual fuso hor,rio o PDP de/e usarX Mesmo 4ue o seu sistema esteTa corretamente confi%urado H importante confi%urar este par(metro para o seu fuso hor,rio Iusualmente 3merica; aoSPauloJ. 5empo m,ximo 4ue um processo do PDP pode rodar antes de ser morto. 5empo m,ximo 4ue um processo do PDP pode %astar interpretando dados. ) 4uanto uma Knica inst(ncia de execu"#o do PDP pode usar de mem0ria. ) m,ximo tamanho 4ue uma re4uisi"#o P) 5 pode en/iar ao ser/idor. 5amanho m,ximo para MuploadN de um ar4ui/o.
Depois de alterar e salvar o arquivo, reinicie o apache. # /etc/init.d/apache2 reload Ento clique no boto Retry. A tela que ser recarregada ir ser similar a abaixo.
Se todos os pr-requisitos foram supridos clique em Next. Seno refaa os passos acima at conseguir chegar aos valores recomendados. O suporte a GD do PHP no Debian Squeeze n o atinge o recomendado mas funciona sem problemas com o Zabbix.
A tela de conexo ao banco de dados precisa ser preenchida conforme explica o abaixo e Figura 2.26. 1) Escolha o banco de dados, no nosso cenrio o PostgreSQL. 2) Coloque o nome ou IP do host do banco de dados, no nosso caso localhost. 3) Coloque a porta TCP para o acesso, por padro a do PostgreSQL 5432. 4) Em Name coloque o nome do banco de dados, zabbixdb em nosso caso. 5) Em User coloque o nome do usurio que criamos anteriormente, zabbix. 6) Em Password coloque a senha do usurio acima.
Depois de preencher o formulrio clique em test connection para se certificar de que tudo correu bem. Se um Ok aparecer acima do boto, clique em Next.
Preencha o formulrio com os dados do servio de monitoramento, 1) O servidor de Zabbix esta em localhost, mas ateno para ambientes de produo onde o servidor do Zabbix esta em outra mquina, neste caso deve ser preenchido o endereo ou nome da mquina remota. 2) O campo Port corresponde a porta TCP em que o Zabbix esta escutando (Zabbix trapper), normalmente esta porta a 10051. 3) O Name um ttulo do servio de front end do Zabbix. Este ttulo vai ficar estampando na barra do browser e somente ajuda a identificar o front end quando voc tem vrias barras de navegao.
Esta janela indica que o arquivo de configura o foi gravado com sucesso no diretrio conf que deixamos com permisses de escrita anteriormente. hora de revogar as permisses de escrita neste diretrio. # cd /var/lib/zabbix/frontend/ # ls -lhd conf drwxrwx--- 2 root www-data 4,0K Jan 27 22:58 conf # chmod 0750 conf # ls -lh conf total 28K -rw-r--r-- 1 www-data www-data 440 Jan 27 22:58 zabbix.conf.php # chown root.www-data conf/zabbix.conf.php # chmod 0640 conf/zabbix.conf.php
Clique em Finish. O front end ir abrir uma tela de login, voc pode acessar usando o usurio Admin (com o A em maiscula) e a senha zabbix. A tela a seguir ser a mostrada para voc.
7) (Desafio) Se voc tentar usar o zabbix_get para coletar dados do Zapcat ver que ele vai falhar retornando um valor no suportado. Voc consegue descobrir como, via linha de comando poderamos coletar os valores deste agente? Se sim crie um pequeno script para fazer a coleta passando para ele host, porta e chave. ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________
OBJETIVOS Conhecer a configurao do Zabbix via Front end. Gerenciar os hosts e templates para o monitoramento. Criar mtricas de monitoramento. Depurar itens no suportados. Gerenciar acessos e permisses aos hosts monitorados atravs de usurios cadastrados numa base LDAP. Configurar os meios de alerta. Criar mapas. Realizar backups das configuraes.
3.1. Introduo
A partir deste ponto a interao administrativa via console vai diminuir consideravelmente, pois vamos comear a trabalhar com a interface web do Zabbix. Quase 100% de todas as tarefas com a ferramenta executada atravs dessa interface. Nesta sesso e nas prximas sero apresentadas dicas de uso, organizao, todas as configuraes do ncleo do front end e criao dos elementos mais bsicos de monitoramento (hosts, templates, grupos, etc.).
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 76 "enu Triggers Funo Mostra o status dos ltimos triggers (gatilhos) e permite intera o com eles (como por exemplo dar um Acknowledge a um determinado gatilho) Mostra os ltimos eventos causados pelos triggers ou pelo autodiscovery. Visualizao individual dos grficos cadastrados nos hosts. Visualizao dos screens. Telas que agrupam monitorados (como mapas, grficos e widgets). Visualizao dos mapas. Hosts e elementos que foram descobertos pelo sistema de auto deteco de hosts. Visualizao de SLA baseada no monitoramento de hosts, ativos e/ou servios. Inventrio de hosts Hosts que fazem parte do inventrio. Menu de relatrio. Uma tela de resumo (que tambm mostrada no Dashboard) para avalizao da performance do servidor Zabbix. Relatrios de disponibilidade por hosts ou triggers. elementos
Most busy triggers Os 100 triggers mais ativos no sistema. Top 100 Bar Report Mostra dados agregados dentro de grficos de barra, por exemplo, voc poderia ver a mdia de uso de link por semana ao invs de usar os grficos padro. Menu para acesso as opes de configurao de monitoramento. Grupos lgicos para dividir os hosts. Gerenciamento de templates (modelos), uma das telas que mais vamos acessar durante o curso. Gerenciamento dos hosts monitorados. Tela para colocar ou tirar um determinado host em estado de manuteno. Configurao de cenrios de teste de servios web. Gerenciamento de aes que os triggers devem tomar ao alertarem algum comportamento (exemplo: enviar um e-mail quando o servidor XYZ cair). Gerenciamento e construo de screens. Gerenciamento e construo de slide shows. Gerenciamento e construo de mapas.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 77 "enu IT Services Discovery General DM Authentication Users Media Types Scripts Audit Queue Notifications Locales Instalation Funo Gerenciamento dos servios para clculo de SLA Gerenciamento do auto discovery. Menu para acesso s opes de administrao do front end. Opes globais do front end. Configurao de monitoramento distribudo. Mtodos de autenticao. Gerenciamento de usurios para acesso ao front end. Gerenciamento de formas de alertas (e-mails, SMS, etc.) Gerenciamento de scripts para testes on-line pelo front end. Logs de auditoria de aes dos usurios e de eventos gerados pelas Actions. Fila de alertas a serem acknowledged. Notificaes enviadas por usurio/tempo. Personalizao das strings de exibio para traduo (portugus brasileiro j esta pronto, portanto no precisamos mexer aqui). Telas de instalao (as mesmas que passamos agora a pouco para configurar o front end).
Administration
Tabela $: %uno dos menus no #ront end No inteno do curso detalhar todos os itens de todas as telas (isso provavelmente seria tarefa de um livro bem grande). Embora simples a interface do Zabbix tem uma magnitude de opes bem grande e vamos nos concentrar nelas aos poucos conforme a necessidade e escopo do curso.
Dois usurios sero exibidos: Admin, superusurio do front end, com o qual estamos logados e guest, usado para acesso sem autenticao. No tente apagar o usurio guest. Ele necessrio para a tela de login quando entramos na interface. Esta tela mostra vrias informaes interessantes, como por exemplo, quando foi realizado o ultimo login e quem esta on-line no front end. Para editar o Admin clique sobre o link com o nome dele. Uma nova tela ira aparecer.
Clique em Change password e coloque a senha a sua escolha, no esquea essa senha ou vai ser necessrio reinici-la no banco de dados. Para evitar que o Zabbix fique desligando nossa sesso a todo momento desligue a opo Auto-logout. Depois de terminar clique no boto Save. Isso apenas um salva-guarda em casos de problemas de autentica o com o LDAP, como voc ver logo a seguir iremos passar toda a autentica o para o sistema de diretrio (que tambm possui um usurio Admin). Em produo no desligue o auto-logout de nenhum usurio a menos que seja absolutamente necessrio! Para ser exato, o nico motivo vlido que o autor encontrou em deixar um usurio 100% do tempo logado quando o Zabbix esta sendo usado para exibir um mapa, screens ou slide show em um tel o ou TV com acompanhamento visual 24x7.
Agora que o Admin teve a senha modificada, o momento de configurar o Zabbix para autenticar no diretrio LDAP instalado no servidor. Entre em Administration Authetication, selecione em Default Authetication a opo LDAP e preencha os campos conforme abaixo.
Os dados aqui preenchidos variam de um ambiente para outro, no caso de estudo do curso estamos dizendo ao Zabbix onde est o servidor ( LDAP Host e Port), qual a raiz do domnio (Base DN), qual o atributo usado em busca (por profundidade), n o foi fornecido usurio e senha de acesso ao LDAP, ou seja, ele read only guest based (Bind DN e Bind Password) e ativamos a autenticao (LDAP Authentication Enabled). possvel e recomendado que a senha do usu rio Admin cadastrada dentro do LDAP seja testada, preencha a senha e clique no boto Test. O Zabbix vai dizer se foi bem sucedido ou no. Para salvar tambm obrigatrio que a senha seja digitada corretamente. Normalmente teremos um usurio e senha com read only para acesso do LDAP em produo. Permitir acesso read only guest based no a forma mais segura de se fazer acesso a base de diretrios.
3dministrador de Cet>orG 3dministrators, sistemas =indo>s 3dministrators 3dministrador ?@oss 3 3dministrador banco de dados do ?@oss 3dministratros do 1atabase 3dministrators
Table &: 'surios do cenrio do curso No temos os grupos Windows Administrators e JBoss Administrators pr cadastrados no Zabbix. Portanto o primeiro passo justamente cri-los. Entre em Administration Users e clique no boto Create Group. Na Figura 3.4 temos um exemplo da tela de criao do JBoss Administrators. No necessrio mais do que o nome do grupo no campo Group Name, pois iremos definir suas permisses mais adiante.
Salve e escolha Users no combobox ao lado do boto Create Group, isso vai nos fazer voltar tela de usurios onde editamos o Admin. Clique no boto Create User e cadastre os usurios da Tabela 5 conforme a Figura 3.5.
O Alias o campo com o nome do usurio e deve estar 100% igual ao dentro do LDAP. Name e Surname so apenas labels para exibio e no quadro Groups use o boto add para acrescentar a quais grupos o usurio pertence. Um campo que merece uma ateno especial o User Type que permite dar alguns privilgios iniciais conta. No nosso caso iremos utilizar o tipo mais simples, o Zabbix User, que permite apenas acesso ao menu de monitoramento.
Podemos ainda criar outros dois tipos de usu rios, como o Zabbix Admin que pode acessar o monitoramento e a configurao de hosts. Este caso til quando algum deve ter permisses de verificao e tambm direito de cadastrar e modificar hosts monitorados assim como seus templates e grupos. Por fim temos o Zabbix Super Admin que o caso do nosso usurio Admin. Este ltimo pode fazer tudo, inclusive adicionar e remover direitos ao usu rios. Mais a frente iremos acrescentar direitos aos usurios e tambm mudaremos seus tipos conforme a necessidade.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 84 Tambm aconselhvel limpar os Media Types no usados, como no nosso caso de uso, no usa SMS, marque no checkbox a frente de seu nome, e em seguida selecione Delete selected na caixa de aes ao fim da tabela e clique em Go (1). Confirme a excluso. Ambas, a operao de limpeza e o modo de faz-la, so bem triviais e sero muito comuns no curso. Ela ser repetida em muitos outros locais.
Os campos Jabber identifier e Password so o usurio e senha de uma conta cadastrada no IM destinada exclusivamente ao Zabbix, a senha no curso 123456. Salve os dados. Sempre que utilizar um identificador de usurio no Jabber voc deve incluir o nome do servidor completo aps o @ e no apenas o domnio.
Clique em Add para adicionar um novo meio de alerta ao usu rio. Vamos comear pelo e-mail.
Coloque o e-mail do usurio (que o mesmo que seu Alias mais o domnio do curso no exemplo: sysadmin@curso468.4linux.com.br). Nesta tela podemos ainda escolher quando este meio vai ficar ativo no campo When active. Este campo tem uma sintaxe bem peculiar, ele indica quais os dias da semana e a faixa de horrio que o usurio pode receber alertas. Isso til para no enviar alertas a pessoas fora do expediente, isso claro, supondo que haja outra pessoa de prontido no horrio determinado.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 86 A sintaxe do When Active usa 1 como segunda e 7 como domingo, definir por exemplo segunda a sexta ficaria 1-5. Uma vrgula separa o dia do horrio, segunda a sexta das 09:00 at as 18:00 ficaria 1-5,09:00-18:00. Podemos ainda usar o ponto-e-v rgula para definir outras faixas, por exemplo segunda a sexta, das 09:00 s 18:00 e sbado das 09:00 s 13:00 ficaria 1-5,09:0018:00;6,09:00-13:00. O Use if severity filtra os tipos de severidade de um campo. Eles s o importantes para que meios de alertas com custo (SMS) n o sejam usados para alertas de pouca import ncia. Tambm so usados para no causar avalanches de alertas em um meio os quais eles mais incomodariam do que ajudariam, imagine ser alertado todo minuto por mensagem instant nea que um servio foi reiniciado! Seria totalmente improdutivo. Por fim, Status controla se este Media Type estar ou no ativo. Isso particularmente til quando o funcionrio responsvel estiver de folga, afastado ou de frias. Clique em Add para salvar e adicione outro Media Type para o Jabber.
No nosso exemplo deixe o Jabber apenas com severidade High e Disaster. O nome do usurio em Send to o mesmo que o Alias. Salve e veja na Figura 3.12 como o campo Media ficar.
Hosts so a representao de um servidor, servio ou ativo de rede a ser monitorado. Eles normalmente representam um sistema fsico, mas isso no totalmente verdade, o agente do Zapcat por exemplo, ser representado por um host a parte e ele no um hardware. Host groups separam logicamente os hosts e permitem que sejam atribu das permisses de acessos dos usurios a um determinado host. Templates (modelos) so os blocos de construo do monitoramento, enquanto no so obrigatrios, pois podemos acrescentar mtricas de monitoramentos direto a um host, eles ajudam a gerenciar de maneira efetiva os diversos tipos de monitoramentos poss veis e replic-los a tantos hosts quanto quisermos (ou o quanto nossos sistemas aguentarem, o que vier primeiro). Os templates agregam mtricas de monitoramento chamados items, macros e outros valores que so importantes para construir uma soluo de monitoramento. A maior parte do seu trabalho no curso ser em cima dos templates.
Para selecionar todos os templates, entre em Configuration Templates e clique no checkbox do topo da tabela conforme indicado a Figura 3.13.
Depois escolha no combobox no final da tabela o valor Delete selected with linked elements e pressione o boto Go. Perceba que o Zabbix indica quantos elementos sero afetados pela ao do combobox no boto Go no nmero entre parnteses.
Esta operao pode demorar alguns minutos dependendo da CPU e do I/O de disco que seu equipamento possui. Agora o momento de criar o primeiro template.
Para criar um novo template, clique no boto a direita da tela Create Template conforme indicado na Figura 3.15. Uma nova tela vai se abrir conforme a figura a seguir.
1) No campo Name ser colocado o nome do novo template. Que ser 4Linux ICMP base. Este template conter as mtricas mais bsicas de testes por ICMP.
2) No campo Groups, quadro In Groups o grupo Templates deve ficar selecionado. Note que os grupos para hosts so misturados com os grupos de templates. Voc pode criar um novo grupo usando o campo New group sem a necessidade de faz-lo na tela de grupos de hosts.
1) Na parte inferior da tela voc ver um boto Add ao lado do campo Link with template 2) Escolha o template relacionado (4Linux ICMP no nosso caso). 3) Salve o template. Agora se associarmos um host com o template 4Linux S.O. Base ele automaticamente vai receber todos os objetos definidos no 4Linux ICMP. Aproveite e crie mais um ltimo template para usarmos na prtica dirigida, 4Linux SNMP Base tambm vinculado ao 4Linux ICMP.
1) Selecione todos os templates que voc desejar. 2) Selecione Export Selected na caixa de opes do final da tabela. 3) Clique no boto Go. Uma tela de download ir ser exibida, escolha o nome e local do arquivo e salve-o. Mantenha estes dados em um local seguro e sempre realize esta opera o aps algum tipo de alterao.
3.4.4. Hosts
Agora que um template foi definido vamos criar um host e associ -lo a este modelo. Na Figura 3.19 esta uma representao de como as mquinas virtuais esto dispostas em termos de layout de rede. Em nossa prtica dirigida iremos cadastrar os hosts Presentation e Switch, alm de modificar o Zabbix Server que criado automaticamente no momento do importe de dados do PostgreSQL.
Tambm devemos criar alguns grupos adicionais para separar logicamente cada servidor, para isso vamos gerenciar os Host Groups.
1) No campo Group name coloque o nome do novo grupo ( Network Devices no nosso caso).
Para criar um novo host para o host Presentation da infraestrutura clique no bot o Create Host (Figura 3.23).
1) O campo Name coloque o nome do host (Presentation no nosso caso). 2) No Groups escolha quais grupos este host deve pertencer. Lembre-se que estes grupos vo indicar quem pode ou no acessar este host pelo front end. 3) Se houver um novo grupo no cadastrado acima possvel cri-lo aqui. 4) Qual o nome DNS da mquina. 5) Qual o endereo da mquina. 6) O campo Connect to permite que seja escolhido o acesso pelo endere o IP ou pelo nome de DNS. O clssico usar o endereo (evitando consultas DNS excessivas no lado do servidor), mas possvel que seja necessrio monitorar estaes de usurios ou servidores que estejam em ambientes com IP din mico (via DHCP) e neste caso somente via DNS possvel encontrar o host . 7) Qual a porta TCP do agente. Vamos mudar isto para monitorar o Zapcat, mas em todos os outros casos deixaremos ela no padro 10050. 8) No monitoraremos este host via proxy. 9) No Status deixe como Not monitored por enquanto, quando associarmos os templates iremos ativar este host.
10)
1)
Dentro da tela do grupo localize na parte inferior da tela as caixas de permiss es (Figura 3.26). Clique no boto Add da caixa Read-Write.
No dialogo que aparecer selecione o grupo de hosts Linux Servers e clique em select.
Ao retornar voc ver o grupo na caixa. Clique em Save e pronto, quem pertencer ao grupo Unix administrators vai poder ler e gravar nos hosts dentro de Linux servers. Os direitos de deny tem precedncia aos de read only, que por sua vez tem precedncia sobre os de read write.
1) O cenrio do curso precisa de um conjunto de permiss es conforme a Tabela abaixo. Crie grupos de hosts e usurios, e atribua permisses conforme for necessrio para chegar a este resultado. Note que h um novo usurio.
#surio %pplica& Data'a& (Boss %! Presen& tion se tation suporte sAsadmin readE >rite readE >rite read onlA readE >rite
!)itc*
+indo)s ,--.
/a''i0 server
read onlA read onlA read onlA read onlA read onlA read onlA read onlA readE >rite read onlA readE >rite readE >rite read onlA
>inadmin read onlA read onlA read onlA read onlA readE >rite dba Ta/aen% read onlA readE >rite
read onlA read onlA read onlA read onlA read onlA read onlA read onlA read onlA read onlA
Tabela (: )elao de permisses entre *osts e usurios Exceto pelos usurios suporte e Admin, todos os usurios devem ter permisso de mudana de configurao dos hosts no qual eles tem direito de escrita.
3.5. Mapas
Os mapas so elementos visuais teis para determinar onde foi o ponto de falha dentro de uma infraestrutura. Eles so de extrema valia para equipes que avaliam a sa de das mquinas constantemente e precisam reagir rapidamente diante de um incidente. O Mapa tambm pode ajudar a diagramar estruturas fsicas de rede e ajudam a mostrar como os equipamentos se relacionam, embora o front end n o seja uma ferramenta de desenhos de diagramas propriamente dita.
Acesse o menu Administration General, e escolha na caixa de opes a esquerda. A opo Images.
Nesta tela clique no boto Create Image para abrir o dilogo de importao de uma nova imagem. Conforme as instrues abaixo importe a primeira imagem.
1) Nome da imagem a ser inserido, este nome precisa ser nico. No primeiro caso coloque o valor Server On. 2) Podemos enviar cones (Icons) ou fundo de telas (Background) ao front end. cones so usados nos elementos como hosts, triggers e imagens est ticas, telas de fundo obviamente so usadas como um fundo para o mapa. 3) No campo Upload, clique no boto Browse... e escolha o local onde a imagem se encontra, no caso do curso a imagem utilizada o cone de tamanho 48x48 e nome 48_g_srv_tower_on.png. Realize o mesmo procedimento para outras imagens conforme a tabela abaixo.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 100
1ome da imagem <inG er/er 1isable er/er )ff er/er RnGno>n >itch 1isable >itch )ff >itch )n >itch RnGno>n Tabela +: ,ista de imagens iniciais para o mapa
Com isso todas as imagens necessrias para o primeiro estgio do mapa foram criadas.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 101
Este mapa no tem todos os elementos a serem inseridos no mapa, mas vai proporcionar um bom primeiro exemplo. Abra a tela de gerenciamento de mapas acessando o menu Configuration Maps, um mapa pr-cadastrado (Local network) ir ser exibido, marque a caixa de checagem dele e exclua ele da lista.
Depois de apagar o mapa existente crie outro novo clicando no bot o Create Map no canto direito da tela. Uma tela como na Figura 3.33 ir surgir e preciso cadastrar os dados do novo mapa conforme a seguir.
1) O campo Name indica o nome do novo mapa, no caso desta prtica dirigida coloque Infraestrutura Curso 468. 2) A largura em pixels do mapa, 600 um bom tamanho para o nosso caso. 3) A altura do mapa, 500 um bom tamanho para o nosso curso. 4) No campo Background Image podemos escolher uma figura de fundo para este mapa. Vamos deixar o mapa sem figura de fundo.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 102
5) A opo Icon highlighting serve para pedir ao Zabbix desenhar fundos nos cones para representar estados, ela um tanto redundante em relao a mltiplas figuras de cones como vamos ver mais a frente, porm iremos deix-las ligadas mesmo assim. 6) Se o cone possuir um trigger que teve seu estado mudado recentemente, uma borda ser desenha em volta do cone. 7) No caso de haver um incidente com um item em particular, e ele for nico ( somente um problema para aquele item em particular) podemos deixar o campo Expand single problem ligado para que a descrio do problema seja apresentado no mapa (evitando ter que clicar no item para exibi-lo). 8) Qual o tipo de mensagem que ser adicionada ao nome do item na tela quando um trigger for exibido. Os valores possveis so: Label, o default indicando que deve exibir o nome do rtulo; IP Address, mostra o endereo de rede do host; Element name, o nome do elemento que esta apresentando problemas; Status only, que indica o status do trigger (OK ou PROBLEM); Nothing, nada mostrado. 9) Localizao padro dos labels. 10) No campo Problem display podemos escolher se desejamos mostrar todos os problemas em uma nica linha (All), duas linhas com os problemas com acknowlegment e outro sem (Separated), ou ainda somente os problemas sem acknowlegment chamados de Unacknowledged. Depois clique no boto Save. Voc ir retornar a tela anterior. Agora para criar o mapa visual clique sobre o nome do mapa.
No se preocupe em decorar e testar todas as opes de mapas, iremos detalhar a maior parte delas durante o curso.
Decidir o tamanho da rea de mapas uma arte, ela depende de vrios fatores como por exemplo o tamanho do monitor onde ele ser exibido. No se acanhe de retornar a edio de configuraes do mapa se o tamanho da rea no ficar a seu gosto em um primeiro momento.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 103
1) O boto com sinal de mais (+) adiciona um novo cone, que o elemento principal dentro de um mapa. Este cone pode ser uma figura esttica, um trigger, um link para outro mapa, etc. Se voc selecionar um ou mais elementos e clicar no bot o com sinal de menos (-) voc ir excluir estes elementos. 2) Ao clicar em dois elementos possvel criar um link entre eles, representado por uma linha (cor, formato, etc. podem ser personalizados). Este link pode conter uma label e indicar a mudana de estados de um gatilho. 3) No campo Grid podemos deixar a grade de alinhamento oculta ou n o clicando em Shown/Hide. 4) Tambm podemos ligar ou deslig-la clicando em On/Off. 5) Na caixa de combinao a seguir a resoluo da grade pode ser escolhida, variando desde 20x20 (para ajuste fino de cones) at 100x100 (para casos de mapas extensos ou cones bem grandes). 6) Por fim, o boto Align Icons fora o Zabbix a alinhar todos os elementos do mapa nos limites mais prximos da grade. Para o propsito inicial do curso a resoluo de 50x50 o suficiente. Vamos inserir um novo cone para representar o link de internet. Clique no bot o mais do campo Icon e um novo elemento ir aparecer no canto superior do mapa. Note que o Zabbix escolher o primeiro elemento grfico disponvel para ele.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 104
Verses anteriores do Zabbix no eram capazes de usar Drag & Drop. Tudo tinha que ser feito com coordenadas manuais.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 105
1) Clique sobre o objeto criado anteriormente. A tela a direita ir ser exibida e pode ser reposicionada na tela permitindo enxergar um determinado trecho do mapa na tela. 2) O campo Type indica o tipo de objeto mencionado anteriormente, no primeiro caso iremos escolher Image porque o link no representa nenhum elemento monitorado (apesar que posteriormente vamos monitorar o estado do link). Conforme o andamento do curso veremos muitos outros tipos. 3) No campo Label digite o texto a ser exibido como rtulo do cone. Aqui como veremos mais tarde possvel colocar variveis especiais chamadas de Macros que o servidor associa a valores dinmicos. 4) A localizao deste rtulo pode ser escolhida em Label location. Por padro ela fica como foi definido no padro da criao do Mapa. 5) Qual a imagem do cone a ser exibida? Neste caso vamos deixar como esta, mas todas as imagens que fizemos upload est o sendo exibidas nesta caixa de seleo. 6) Por fim podemos configurar as coordenadas da posi o do elemento dentro do mapa em pixels. Normalmente fazemos isso pelo sistema Drag and Drop. No trmino clique em Apply para aceitar as modificaes. Isso no vai fechar a tela de edio, para isso ainda temos que clicar em Close.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 106
Um dilogo sempre aparecer ao salvar um mapa. Ele no esta confirmando se voc quer salvar, e sim perguntando se deve retornar a tela anterior ou continuar no mapa. Cancel usado para continuar no mapa e OK para voltar a tela de gerenciamento de mapas.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 107
Clique no elemento do meio para edit-lo conforme abaixo, ele servir de representao para o host Presentation agora.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 108
1) Neste campo vamos escolher o valor host. Visto que vamos utilizar um dos previamente cadastrados, voc ver que por ele estar desativado, quando clicar em Apply, o label DISABLED ser mostrado em vermelho. 2) Neste campo o valor da macro {HOSTNAME} ser substitudo pelo nome que cadastramos o host no gerenciamento dos mesmos. Esta macro interna do Zabbix e no precisa ser definida pelo usurio. Durante o curso aprenderemos outras e definiremos vrias que sero personalizadas para a nossa necessidade. 3) Neste campo, que aparece sempre que escolhemos Host em Type clique em Select e escolha o host desejado. Neste caso o Presentation. 4) Troque o cone para Server On, visualmente ele deve representar uma mquina.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 109
5) Ao ativar Use advanced icons os campos do item 6 sero exibidos. Isso permite escolhermos um cone diferente para cada estado. Como foi mencionado anteriormente isso um tanto redundante com o sistema de highlighting do mapa, mas vamos ativar ambos para que voc veja a diferena entre eles. 5.1) Nestes campos escolha os cones conforme indicado. Cada um dos estados ir exibir um cone diferente. Perceba que o exibido na tela ao clicar em Apply o Server Disable. O mesmo ser feito para o elemento do host Switch, a Figura 3.42 mostra quais s o os valores utilizados.
Como resultado final uma imagem parecida com a Figura 3.43 deve estar no meio de sua rea de mapa.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 110
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 111
Figura ).&&: Criando um novo linG entre o ho#t .re#entation e a imagem 7nternet
1) Primeiro selecione o cone da Internet. 2) Pressione CTRL e clique no cone do host Presentation. A tela direita de edio vai representar uma mescla dos dois itens. 3) Clique no boto de adicionar link. Uma nova parte da janela intitulada Connectors ir surgir. 4) Dentro dela um link chamado Link_1 vai estar cadastrado e ir indicar quais so os elementos que ele interliga. Clique sobre o nome dele para exibir suas propriedades na aba Connect Editor.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 112
1) No campo Label podemos colocar uma identifica o deste link. Assim como o rtulo dos elementos com imagens ela tambm aceita macros. 2) Nos dois campos de Elements os itens que esto vinculados podem ser alterados. 3) Em Link indicators vamos, mais a frente, associar um link com gatilhos. No momento deixe o valor como esta. 4) Em Type (OK) escolha Bold line para poder visualizar o link com mais facilidade. Este campo usado quando um ou mais gatilhos ao qual o link esta associado n o estejo ativos. 5) Por fim em Colour (OK) podemos escolher uma cor para o link.
Clique em Apply e salve o mapa. Agora s preciso adicionar mais um link entre o Presentation e o Switch. A figura 3.46 mostra como este ltimo vinculo deve ser cadastrado
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 113
Agora voc j tem o mapa final desta prtica dirigida. Salve e confirme o retorno para a tela de gerenciamento de mapas. No esquea de fazer o backup do mapa exportando-o do mesmo modo que fez com os templates e hosts.
1) Faa upload das figuras do DVD contidas na pasta Imagens Mapas. S o imagens do logotipo do servidor Jboss. Os nomes no front end devem corresponder aos das imagens. 2) Construa o mapa final conforme a Figura 3.47.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 114
1) Applications so pequenos grupos para organizar o prximo tipo de elemento (os Items) dentro de um template. Eles so significativos na tela de Latest data. 2) Os Items so provavelmente o objeto mais importante dentro de todo o Zabbix. Eles so as definies das mtricas de coletas. Quase que 90% de todo o trabalho de monitoramento gira em torno de um Item.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 115
3) Os Triggers, ou gatilhos, montam a lgica para gerar alertas baseado na informa o coletada pelos Items. A parte mais complexa do Zabbix montar as expresses booleanas dos gatilhos de maneira concisa e equilibrada, evitando falsos positivos ao mesmo tempo que gera alertas em um tempo hbil. Inciaremos o estudo deles no prximo captulo. 4) Os Graphs so elementos que exibem grficos. Tambm iniciaremos seu estudo no prximo captulo. Cesta sess#o nos concentraremos apenas nos M%pplicationsN e M5temsN.
Uma nova tela surgir. Localize no canto superior direito dela o boto Create application como na Figura 3.50 e clique sobre ele.
1) Coloque o nome da application aqui, que neste caso ela ser ICMP. 2) Podemos opcionalmente escolher outro template ou host para associar este application. Pouco provvel que venhamos a alterar este tipo de opo nesta tela. Clique em Save para concluir e retornar a tela que lista todas as applications.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 116
Nosso novo application esta exibido na tabela. Agora o momento de criar um novo item. Clique sobre o link Items (0) nesta tela (no caso de estar em outra tela, acesse Configuration Templates e clique no link de mesmo nome na linha do template que voc deseja acrescentar).
Na tela de items, clique no boto Create Item para exibir a tela a seguir. Ainda no ser explicado campo a campo do cadastro de um novo item. Isso ser feito no decorrer do curso.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 117
1) No campo Description coloque um identificador (de preferncia nico, mas isso no necessrio). O nome dele ser o exibido em grficos, usado em triggers, etc. Escolha coerentemente. 2) O Type indica como este item vai fazer a coleta de uma mtrica. Os diversos tipos que sero abordados neste curso sero explicados nos prximos captulos, aqui vamos usar Simple check que significa usar checagens via protocolo de rede. 3) O Key o campo mais importante de todos, ele deve ser nico dentro de cada template e host. Sua funo definir qual mtrica ser coletada. Como dito anteriormente um item a parte mais importante de um template e o seu key a parte mais importante de um item. Saber qual usar em qual situa o, faz parte da competncia de usar a ferramenta e de criar um monitoramento eficaz. No nosso caso vamos criar um item que faz um ping via ICMP no host, logo a chave ser icmpping. Clicar em Select abre uma janela com infindveis keys e voc pode selecion-las por essa janela, se desejar.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 118
4) Repetindo: Cada item do Zabbix capaz de armazenar apenas um, e somente um valor. No possvel armazenar objetos complexos dentro dos items, por isso precisamos definir qual o formato do valor que ser armazenado. No caso da key icmpping ele retorna 1 se o ping foi bem sucedido e 0 se no. Valores inteiros sem sinal como estes so Numeric (Unsigned). 5) O Update interval, o tempo entre uma coleta e outra, em segundos. Por padr o o Zabbix usa 30 segundos. Em nosso cenrio usaremos 10, mas tenha em mente que estes no so bons valores. Enquanto podemos nos sentir tentados a usar intervalos curtos para termos uma granulidade de dados bem alta (e mais pr xima da realidade) ele impacta pesadamente em duas coisas: espa o em disco, que aparentemente pequeno mas comea a tomar grandes propores em ambiente com milhares de mtricas e o enfileiramento de mtricas a serem processadas pelo servidor. A ltima em particular muito ruim, pois causar todo tipo de buraco possvel nos seus grficos. Veremos como calcular um bom intervalo a partir do prximo captulo. 6) Os campos Keep history e Keep trends indicam por quanto tempo, em dias, os dados coletados sero armazenados. O primeiro tempo dele na tabela history do banco de dados que mantm os dados ipses-literis como coletados. A segunda uma mdia de 3 horas dos valores coletados para economizar espa o. Como veremos, o Zabbix tem uma operao rotineira chamada house keeping que limpa os dados vencidos (depois que passar os dias em keep history) da tabela history, passando a mdia para a trends. Depois que vencer o tempo em Keep trends os dados so apagados definitivamente. 7) Escolha o application ICMP que criamos anteriormente. Se existirem mais de um application nesta lista, voc pode pressionar CTRL para selecionar vrios. 8) Clique em Save para finalizar.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 119
Normalmente os templates mais prximos da raiz so aqueles que realizam os testes mais primrios, como o template de ICMP criado anteriormente. De fato ele ser a raiz da maioria dos outros templates, com destaque para o de JBoss, sistemas operacionais e SNMP. Para exemplificar crie um novo template chamado 4Linux JBoss Base. Antes de salvar note que h um campo no final do formulrio chamado Link with template.
Na janela de dialogo que aparecer selecione 4Linux ICMP e clique em Select. Voc pode escolher tantos templates quanto precisar nesta tela.
A Figura 3.58 mostra como a tela ficar. Ela indica que o novo template vinculado ao 4Linux ICMP. Finalmente salve o template.
Note que todo template que tem alguma associa o ser mostrado na coluna Linked templstes na tela de Templates List. Agora todo host que for associado ao template 4Linux JBoss ser automaticamente associado ao 4Linux ICMP, alm disso o primeiro pode utilizar os applications do segundo e seus triggers podem depender dos do segundo. Para finalizar com os templates, crie todos os templates indicados abaixo e associe-os conforme a estrutura de rvore indicada:
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 120
V at Configuration Hosts e clique sobre o nome do host (no nosso caso vamos usar JBoss AS) para editar as preferncias do mesmo.
Na parte direita da tela localize o quadro Linked templates (Figura 3.62) e clique sobre o boto Add.
Figura ).'): =##ociando o template do -5o## ao ho#t -5o## =@
)/'"
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 121
No dilogo que surgir, escolha o template desejado ( 4Linux JBoss Base) e clique em Select. Voc pode escolher tantos templates o quanto quiser aqui, desde que eles n o estejam associados entre si e nem tenham um template pai em comum.
Voc ver o nome dos templates escolhidos aparecerem neste quadro, conforme a Figura 3.64 demonstra.
Note que o template escolhido e suas depend ncias, entre parnteses, sero exibidas na Lista de templates.
Figura ).'+: /emplate# para 6indow# e @?A. a##ociado# ao# #eu# re#pectivo# ho#t#
Agora vamos fazer um pequeno exerccio que vai demonstrar outro recurso interessante do Zabbix: o Mass update. Imagine que voc possui uma quantidade grande de hosts e precisa associ-los ao mesmo template, temos um caso destes no nosso cenrio: os hosts Presentation, application, Database e Zabbix server precisam ser vinculados ao template 4Linux Linux, uma vez que todas estas mquinas virtuais so servidores Gnu/Linux. V at a tela de hosts e siga os passos a seguir.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 122
1) Selecione todos os 4 hosts indicados 2) Na caixa de opes marque Mass update. 3) Clique em Go (4), note que o nmero de hosts selecionados indicado neste boto entre parnteses.
1) Marque a opo Link addictional templates; 2) Clique em Add. Nossa velha tela de templates ir surgir.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 123
Note que o template ficar logo acima dos botes de adicionar e remover. Clique em Save para finalizar.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 124
V em Configuration Hosts e clique sobre o link Not monitored conforme a Figura 3.73 indica.
Um dialogo ir surgir perguntando se o host deve ser mesmo ativado. Confirme clicando em OK.
A coluna onde clicamos inicialmente agora deve estar com o link Monitored em verde. Aproveite e ative todos os hosts. Ao invs de ativar um por um. Use o recurso de ativao de todos os hosts simultaneamente ativando Enable selected na caixa de opes abaixo da lista de hosts.
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 125
A Figura 3.76 mostra como o item ICMP Ping deve estar com problemas. Note que o 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. A mensagem neste caso /usr/sbin/fping: [2] No such file or directory . O servidor no esta conseguindo encontrar o executvel que ele utiliza para realizar os pings ICMP (fping). Um outro lugar que tambm indica o que pode estar acontecendo o log do servidor. Entre no console do Zabbix server e liste o final do arquivo de log conforme abaixo. # tail /var/log/zabbix/zabbix_server.log 2518:20110201:202018.896 server #18 started [Escalator] 2519:20110201:202018.900 server #19 started [Proxy Poller] 2506:20110201:202020.097 server #6 started [Poller. SNMP:YES] 2511:20110201:202020.108 Deleted 0 records from history and trends 2504:20110201:202020.147 server #4 started [Poller. SNMP:YES] 2502:20110201:202020.150 server #2 started [Poller. SNMP:YES] 2507:20110201:202020.218 server #7 started [Poller for unreachable hosts. SNMP:YES] 2503:20110201:202020.242 server #3 started [Poller. SNMP:YES] 2505:20110201:202020.293 server #5 started [Poller. SNMP:YES] 2509:20110201:202023.022 /usr/sbin/fping: [2] No such file or directory A ltima linha mostra a mesma mensagem que no front end. Para remediar esta situao devemos instalar o fping pelo gerenciador de pacotes da distro que estamos utilizando. No caso do Debian: # aptitude install fping Note que mesmo depois de instalar o aplicativo o erro persiste! Novamente consulte os logs (ou o front end).
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 126
# tail /var/log/zabbix/zabbix_server.log 2506:20110201:202020.097 server #6 started [Poller. SNMP:YES] 2511:20110201:202020.108 Deleted 0 records from history and trends 2504:20110201:202020.147 server #4 started [Poller. SNMP:YES] 2502:20110201:202020.150 server #2 started [Poller. SNMP:YES] 2507:20110201:202020.218 server #7 started [Poller for unreachable hosts. SNMP:YES] 2503:20110201:202020.242 server #3 started [Poller. SNMP:YES] 2505:20110201:202020.293 server #5 started [Poller. SNMP:YES] 2509:20110201:202023.022 /usr/sbin/fping: [2] No such file or directory 2509:20110201:202923.237 /usr/sbin/fping: [2] No such file or directory 2509:20110201:203002.281 /usr/sbin/fping: [2] No such file or directory Mesmo aps instalar o pacote, o erro persiste! Ento provavelmente o Zabbix deve estar procurando o executvel no lugar errado. Vamos usar o comando which (pode ser o whereis tambm) para saber onde ele est armazenado. root@zabbixsrv:~# which fping /usr/bin/fping Note que ele est em /usr/bin e o servidor esta procurando ele em /usr/sbin. Isso claro varia de uma distribuio de Gnu/Linux para outra. O que fazer neste caso? Simples mudaremos a configurao do servidor para se adequar ao ambiente em que ele foi instalado. Edite o arquivo /etc/zabbix/zabbix_server.conf e procure as linhas com as opes indicadas abaixo. # vim /etc/zabbix/zabbix_server.conf # ======================================================================== ==== # Localizao do programa de ping (ipv4 e ipv6) # FpingLocation=/usr/bin/fping
Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 127 Fping6Location=/usr/bin/fping6 1) FpingLocaltion: indica o caminho do fping para pacotes ICMP usando IPV4. Mude para /usr/bin/fping. 2) Fping6Localtion: como acima, mas para IPV6. Mude para /usr/bin/fping6. Com as opes modificadas reinicie o servidor. # /etc/init.d/zabbix-server restart Stopping Zabbix server daemon: zabbix_server Starting Zabbix server daemon: zabbix_server
Uma outra possibilidade para resolver o problema fazer um link simblico no sistema operacional. A vantagem deste mtodo que no ser necessrio alterar nenhum arquivo de configurao e nem reiniciar o Zabbix. ln -s /usr/bin/fping /usr/sbin/fping Confira no s logs se alguma outra mensagem apareceu e acesse Coonfiguration hosts, se o item aparecer como no suportado ainda no se preocupe ele retornar em breve. Se quiser que ele seja ativado agora, clique sobre o Not supported e ele ser restabelecido. A imagem abaixo mostra como ele deve ficar ao final da opera o.
OBJETIVOS Utilizar o Zabbix como uma ferramenta para medir disponibilidade: Medir a disponibilidade dos equipamentos via checagens simples e (incluindo aqui o Zapcat) Alertar quedas de hosts, servios e reinicializaes. Medir a sade da infraestrutura: Latncia de rede e de servios. Espao em disco nos servidores. Servios ativos. Interface Teste manual. Uso de grficos e mapas. Comandos externos. agente
4.1. Introduo
Disponibilidade! Provavelmente o que vem na mente da maioria dos consultores e gerentes de TI quando ouvem a palavra monitoramento. Enquanto a disponibilidade n o seja o nico motivo de se monitorar ativos e servios, ela o fator que mais impacta em custo e investimentos realizados. Quanto custa uma hora de seu principal servi o parado para sua empresa? Neste captulo ser abordado uma multitude de possibilidades para medir o qu o disponvel esto seus servidores, servios e ativos de rede. O Zabbix possui diversas maneiras de descobrir se algo no esta funcionando e aqui veremos como fazer isso usando protocolos bsicos de rede, testadores de protocolos, cen rios de teste web, o prprio agente do Zabbix, SNMP e o agente do Zabbix para JBoss. Tambm vamos entender como criar triggers (gatilhos) e Actions (a es tomadas quando um gatilho muda de estado) e enviar alertas de parada de maneira inteligente, para evitar falsos positivos e permitir que a equipe de suporte reaja a tempo quando um incidente acontecer. Alm disso, vamos ver como medir diversas mtricas e gerar nossos primeiros grficos dentro do front end.
Note que uma aba divisria chamada Tools apresenta duas opes de comando que podemos pedir ao servidor para realizar: Ping e Traceroute. Ambos so comandos bem conhecidos de um administrador de sistemas *nix. Realize um teste clicando sobre o comando Ping.
Depois de alguns segundos voc ver um dialogo surgir como na Figura 4.2. Ele a sada textual do comando. No caso demonstrado o ping foi bem sucedido e o comando executado inclusive mostrado no ttulo da tela. Vamos agora ao outro comando. Clique em Close para fechar esta janela e execute o outro comando via o menu popup.
Apesar do comando ter retornado uma sada, ela extremamente inadequada, pois sabemos que os hosts do cenrio esto a 1 ou dois hops (saltos de roteadores) apenas. Isso aconteceu porque o Firewall das mquinas esta bloqueando pacotes UDP, que s o o padro do traceroute. Neste caso teramos duas possibilidades: 1) Liberar no firewall uma regra permitindo que o servidor do Zabbix alcance os hosts por UDP; 2) Modificar o comando para que ele realize traceroute baseado em ICMP que j esta liberado no Firewall. Nesta caso vamos optar pela segunda, para demonstrar como alterar as configura es destes comandos (que o Zabbix chama de scripts). Mas dependendo de seu cen rio real, pode ser preciso liberar o Firewall para permitir a passagem de determinados pacotes. Sempre cabe ao administrador ou gerente de rede tomar estas decis es com base na simplicidade, segurana e necessidade do ambiente. Infelizmente estas s o regras que sempre entram em conflito, pondere bastante para no deixar falhas de segurana e verifique se o comando a ser habilitado mesmo necessrio.
Felizmente existe uma alternativa no mundo UNIX: o sudo, um programa que verifica se um usurio tem permisso de execuo a partir de suas configuraes. Mesmo o sudo teve seu histrico de segurana comprometido, por isso sempre mantenha sua distribuio atualizada com os ltimos patches de segurana, pois nunca se sabe quando uma nova falha vai sair. Instale o sudo a partir do repositrio do Debian no host Zabbix server. # aptitude install sudo 3%ora use o comando /isudo para adicionar a permiss#o do usu,rio Babbix de executar o comando traceroute. # visudo
1
# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset
7 8
9 10
# Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL
11 12
13 14
15 16
17
18 19
# (Note that later entries override this, so you might need to move # it further down) %sudo ALL=(ALL) ALL # #includedir /etc/sudoers.d zabbix ALL = NOPASSWD: /usr/bin/traceroute Salve o arquivo e teste novamente o comando usando agora o sudo antes dele.
21
22
23
24
25 26
# su zabbix $ sudo traceroute -I win2003 traceroute to win2003 (172.28.0.10), 30 hops max, 60 byte packets 1 gateway.curso468.4linux.com.br (172.27.0.1) 0.980 ms 0.855 ms 0.926 ms 2 172.28.0.10 (172.28.0.10) 3.805 ms 4.292 ms 4.211 ms Voil! Seu usurio Zabbix j consegue usar o comando no sistema. Vamos voltar ao front end. Entre em Administration Scripts e clique sobre o nome do comando Traceroute. Uma tela de edio do script ir surgir.
No campo Command modifique o valor, colocando sudo seguido de espao antes do traceroute e clique em Save. Agora volte at o mapa ( Monitoring Maps) e execute o comando em vrios hosts.
A sada da Figura 4.4 mostra a sada do comando sobre o host Windows2003. Note que ela idntica sada do terminal.
Figura &.*: Criando um novo #cript para te#tar porta# @@E 1/2"
Clique sobre o boto Create script conforme a Figura 4.5 para acessar a tela de criao de comandos.
Figura &.': Criando um novo #cript para te#tar porta# @@E 2/2"
1) Name: o nome do comando a ser exibido no menu; 2) Command: O comando a ser executado, no nosso caso nmap -P04 -p 22 {HOST.CONN}. O parmetro -P0 do nmap indica que o host no deve ser pingado antes de testar a porta (-p 22). {HOST.CONN} uma macro do Zabbix que contm o IP do servidor (ou nome DNS do mesmo, depende do que escolhemos na cria o do host). Vrias macros, inclusive personalizadas podem ser usadas neste caso. 3) User groups: Indica o grupo usurios que podem executar este comando. Escolha All para este cenrio. Se voc possuir vrios tipos de usurios que precisem executar apenas alguns comandos, compensa criar um grupo de usurios s para isso e atribuir quais usurios pertencem a estes grupos. No esquea de dar permisso conforme os campos a seguir para que ele seja capaz de ver os comandos. 4) Host groups: indica em quais grupos de hosts um comando pode ser executado. Em combinao com a opo anterior possvel criar regras bem complexas. Alm disso no faz sentido testar um SSH em um Windows por exemplo. Escolha Linux servers.
5) Qual tipo de permisso o grupo do usurio deve ter no host groups para exibir o comando. Ao menos a permisso de READ requerida. Depois de cadastrar os campos clique em Save e v at o mapa para testar o comando. Clique sobre um host Gnu/Linux.
A Figura 4.7 demonstra como o popup ser mostrado. Clique sobre o novo scipt SSH para execut-lo.
Se tudo correu bem a sada do comando deve ser mostrada conforme a Figura 4.8. Note que os hosts switch, JBoss AS e Windows 2003 no devem exibir este comando.
4.2.3. Exerccios
1) Gerencie o permissionamento para que o comando SSH seja somente executado pelos usurios suporte e sysadmin. 2) Crie o seguinte conjunto de comandos para teste de portas: 2.1) 2.2) 2.3) Testar a porta 445/TCP dos hosts com sistema operacional Windows. Somente os usurios suporte e winadmin devem pode execut-lo. Testar as portas 8009/TCP do servidor de aplica es. Somente os usurios suporte e javaeng devem poder execut-lo (Desafio) Testar a porta 80/TCP do gateway onde fica o sistema de cache e proxy reverso e do servidor de aplicaes. Somente os usurios suporte e sysadmin podem execut-los. No caso deste exerccio voc deve verificar se foi retornado HTTP 200. 2.4) (Desafio) Testar a porta 5432/TCP do host Database. Somente os usurios suporte e dba podem execut-lo. No caso deste exerccio voc deve verificar se foi retornado o valor um a partir de um SELECT 1. 2.5) (Desafio) O Varnish tem um console local de comandos acessado por uma porta. Na mquina Presentation crie um script que acessa este console e limpa o cache do Varnish para ser chamado via script do Zabbix. Somente o sysadmin pode executar este comando.
O utilitrio ping ou fping (instalado no captulo anterior e usado pelo Zabbix para enviar testes de ICMP) e tantos outros, utilizam apenas duas mensagens definidas na RFC 792 para fazer testes de rede. Um para envio da mensagem e outro para resposta (Figura 4.9).
Este teste j esta sendo realizado em nosso cenrio, visto que criamos o item icmpping dentro do template 4Linux ICMP e ativamos os hosts. Embora muito primrio, este teste valida todo o caminho fsico entre os componentes de rede do destino e da origem (switches, cabos, placas, roteadores, etc.) e por isso muito utilizado dentro de vrios cenrios reais. Podemos ver a troca de pacotes acontecer atravs do comando tshark a seguir. # tshark -ni eth0 icmp and host 172.27.0.1 Running as user "root" and group "root". This could be dangerous. Capturing on eth0 0.000000 172.27.0.10 -> 172.27.0.1 ICMP Echo (ping) request 0.000959 172.27.0.1 -> 172.27.0.10 ICMP Echo (ping) reply 1.000731 172.27.0.10 -> 172.27.0.1 ICMP Echo (ping) request 1.001954 172.27.0.1 -> 172.27.0.10 ICMP Echo (ping) reply 2.000778 172.27.0.10 -> 172.27.0.1 ICMP Echo (ping) request 2.001882 172.27.0.1 -> 172.27.0.10 ICMP Echo (ping) reply Note que para todos os pacotes echo request, um echo reply retorna do destino.
Na Figura 4.10 temos um exemplo desta tela mostrando todos os hosts. Se ela n o estiver aparecendo no se esquea de selecionar no comapo Type o valor Data. Embora o Overview esteja exibindo corretamente o valor 1 da key i cmpping no muito intuitivo olhar para um nmero em meio a uma tabela (sem levar em conta que esta tabela pode ser demasiadamente extensa). Por isso o Zabbix oferece um recurso interessante chamado Values Maps que permitem dar nomes aos valores. ?, existem /,rios deles definidos por padr#o. 7ntre em %dministration 6 $eneral, no canto direito da tela e selecione MDalue Aap#4. 3pro/eite a oportunidade e apa%ue todos eles, exceto M @ervice @tate4 e M6indow# @ervice#4, assim mantemos o ambiente limpo.
Agora conforme a Figura 4.11 indica, clique sobre o nome do Value Map chamado Service State para edit-lo. Vamos transformar seus valores Up e Down em Ok e Falha.
1) Name: Aqui definido o nome do novo conjunto de valores, vamos mud -lo para Estado.
2) Mapping e New mapping: Estes campos permitem a edio dos valores que so mapeados. Clique sobre os valores de Up e Down e clique no boto Delete Selected para remov-los e depois use o New Mapping para adicionar os novos valores conforme a ilustrao demonstra. Clique em Save para salvar e sair.
Note que o Value Map foi alterado. Agora vamos associar o Ping ICMP ao novo Estado. V at Configuration templates, clique sobre o valor items do 4Linux ICMP e depois sobre o nome do item ICMP Ping.
Procure o comando Show value conforme indicado na Figura 4.14 e escolha a opo Estado. Salve o item e volte ao Overview.
Note que agora todas as opes que possuem o valor 1 esto com a string OK. Isso facilita e muito a visualizao dos valores e sempre que possvel iremos criar ou usar Values Maps prontos para melhorar a apresentao de dados.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 142 nossos hosts. Primeiro pause uma das mquinas virtuais (o exemplo utiliza o Database), pelo console do Virtual Box selecione o menu Machine Pause (Ou use CTRL Direito + P).
Depois de alguns segundos (dez para ser mais exato) o Overview vai indicar que o Database esta parado.
1) Caso deseje pode-se escolher o grupo Database servers para facilitar a visualizao dentro do Overview. Agora que j sabemos que o item esta funcionando corretamente, vamos criar nosso trigger. Antes ative a mquina virtual, assim o trigger entrar desligado.
Um trigger, ou gatilho, um teste de condio que possui um estado (OK, PROBLEM ou UNKNOWN) e permite que o Zabbix tome uma decis o sobre a ocorrncia de um incidente dentro do cenrio monitorado. Um nico trigger pode conter um simples teste boleano como o que usaremos daqui a pouco, como tambm verdadeiras equaes boleanas que testam inmeras possibilidades para decidir o que aconteceu. Felizmente a grande maioria dos casos requerem testes simples de valores de um nico item. V para a tela de templates em Configuration Templates onde esta o 4Linux ICMP.
No canto direito da tela clique no boto Create Trigger. Uma nova tela ir aparecer.
1) Name: indica o nome do gatilho. Este nome ser exibido quando o gatilho for disparado em vrios lugares e pode ser referenciado nos e-mails, SMS e outras formas de alerta . Por isso o nome permite o uso de macros. No exemplo desta pr tica dirigida usamos o valor Host {HOSTNAME} inalcanvel. Onde {HOSTNAME} ser substitudo pelo nome do host cujo trigger for ativado. 2) Expression: onde iremos escrever o teste do gatilho, ou seja, sua expresso boleana. Clique em Toggle input method para mudar o modo de escrita do gatilho, por padro teramos que escrever a expresso na mo, mas como voc ainda esta iniciando no Zabbix iremos usar o auxiliar de express es.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 144 Note que a tela vai mudar conforme a Figura 4.21. Para criar nossa expresso use o boto Edit. A tela Condition ir surgir para que possamos montar a opo do teste.
1) Item: indica a mtrica coletada neste template a ser avaliada. Clique em Select e escolha o ICMP Ping. 2) Function: a funo usada para verificar o gatilho. Ao clicar na caixa de combina o voc ver uma grande quantidade de funes possveis. O Zabbix muito extenso e provvel que voc no venha a usar todas estas funes em produo, no entanto elas esto l se voc precisar. No curso veremos apenas as mais relevantes. Escolha Last value = N para que possamos testar se o ltimo valor do ping foi uma falha. 3) Last of (T): define o tempo ou contagem de coletas a serem analisadas. Vamos selecionar 1 coleta (a ltima). 4) N: O valor de N na expresso da funo escolhida no item 2. zerono nosso caso, que define um ping mal sucedido. Temos ainda o Time shift que permite retroceder no tempo para coletar mtricas a um espao definido de segundos, no passado. No usaremos ele ainda. Clique no boto Insert para retornar a tela anterior.
Veja que o construtor de expresso j escreveu para ns toda a frmula. O valor {4Linux ICMP:icmpping.last(#1)}=0 o resultado final das escolhas feitas na tela anterior. Ela esta no formato {Template:item.funo(parmetros)}=valor. No se preocupe tanto com isso por enquanto, mas voc deve ser capaz de ler as expresses e compar-las com o gerador automtico, pois no manual as referncias so mostradas como o nome de cada funo e no pelos menus. Para acrescent-la use o boto Add.
um erro muito comum dos iniciantes (e mesmo de alguns veteranos) que esqueamos de clicar em Add. No caso de voc receber um erro ao salvar dizendo que a expresso invlida verifique se voc deixou de adicionar a frmula.
Com a nova expresso ativada podemos nos ater a outros pontos do trigger. O boto Test pode ajudar a resolver uma expresso mais complexa, mas tenha em mente que a entrada de dados da expresso s pode ser obtida manualmente (voc vai digit-las). No possvel coletar os dados do item para averiguar se voc fez certo.
1) The trigger depends on: aqui podemos escolher se este trigger depende de outros, de forma que ele no seja ativado se outro mais bsico esta com status PROBLEM. Vamos ver dependncias mais a frente, por hora deixe vazio. 2) Event generation: indica se o trigger vai gerar um evento apenas uma ou m ltiplas vezes. 3) Severity: um dos campos mais importante de todos, indica o qu o grave pode ser a ocorrncia de um incidente.
4) Comments: um texto explicando o que este trigger representa e o que acarreta ele esta ligado. til para o pessoal de primeiro nvel de suporte que no tem conhecimento profundo do sistema. Clique em Save para finalizar este passo.
Note que a coluna Disaster do quadro System status esta indicando que um host do grupo Database Servers e Linux Servers est com problemas. Na verdade o mesmo host Database que esta nos dois grupos. Outro lugar que deve estar refletindo a condi o de falha o prprio Overviiew, tanto no modo de dados como na Figura 4.28 como na de gatilhos na Figura 4.29.
O Mapa tambm deve estar mostrando o status do trigger no host Database. V at Monitoring Maps e perceba como o Zabbix colocou um crculo vermelho no fundo do host. O nome do gatilho tambm esta aparecendo abaixo do label de nome.
Por fim existe a tela de eventos em Monitoring Events, onde podemos manipular estes eventos. Antes de entrar nela, remova a pausa da mquina Database. Isso vai forar o Zabbix a gerar um evento de retorno que ser visualizado na prxima tela.
1) Group: filtra as opes de host groups. 2) Host: filtra os hosts do grupo escolhido. 3) Source: define a origem dos eventos, um evento pode ser gerado por um gatilho ou por deteces de hosts feitas pelo Zabbix.
Perceba que a coluna Status tem duas linhas: uma para a ativao do trigger e outra para a desativao. Este comportamento desejado pois para sabemos por quanto tempo um determinado trigger ficou ativo (e por consequ ncia, por quanto tempo o incidente ocorreu na sua infra), basta analisar a coluna Duration. Na coluna Duration se um evento mudou de estado uma ltima vez, o valor mostrado indica o tempo desde aquele ponto at o presente momento. Outro ponto importante a coluna Ack (acknowledgement, ou confirmao). Ela mostra se um determinado evento foi percebido por algu m, e de boa prtica sempre preench-lo com algo relevante, mesmo que seja um simples texto de esta sendo verificado. Isso permite que o Zabbix seja usado como um sinalizador de tickets. Clique sobre o link No indicado na Figura 4.31 da linha com status PROBLEM.
Na tela que surgir preencha o quadro de texto e clique em Acknowledge & Return.
Note que a coluna Ack agora apresenta o valor Yes em azul. Faa o mesmo procedimento para o final do incidente. Nunca deixe eventos sem acknowledgement, isso faz com que o hist rico de eventos do Zabbix fique impreciso e deixe de ser confivel.
ATENO! A partir de agora voc obrigado a colocar confirmao em todos os eventos que ocorrerem no curso, principalmente se eles estiverem dentro das prticas dirigidas e exerccios.
Conforme na Figura 4.34, no canto direto da tela clique em Create Action. Uma janela de cadastro da ao ir surgir conforme a seguir.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 151 1) Name: indica o nome da ao e ele deve ser nico. 2) Event source: mostra de onde o evento foi originado. No nosso caso um trigger. 3) Default subject: o campo assunto do e-mail a ser enviado ou valor do SMS/mensagem jabber. Note que possvel, e indicado, o uso de macros. 4) Default Message: uma descrio detalhada do evento, tambm aconselhvel o uso de macros. Os outros campos deste quadro no so relevantes no momento, deixe-os no default. Antes de clicar em Save h mais dois lugares a serem configurados.
Um deles o quadro Action condition logo abaixo do quadro principal. Clique em New conforme indicado na Figura 4.36.
1) Na primeira caixa de opes, escolha Trigger, note que h vrios tipos de valores que podem ser usados para disparar uma ao. 2) Na segunda caixa escolha =. 3) Por fim clique em Select e ative o trigger que criamos anteriormente. Esta condio diz que toda vez que o gatilho escolhido mudar de estado esta action ser disparada. Clique em Add para adicionar e finalizar esta parte.
Note que a condio exibida no Action conditions. possvel adicionar quantas condies voc desejar.
Agora precisamos escolher o que a action deve fazer. No quadro Action operation a esquerda do principal, podemos listar vrias operaes para serem ativadas quando a action for disparada. aqui onde escolhemos qual meio de alerta ser usado para uma action em particular. Clique em New conforme mostrado na Figura 4.39.
1) Operation type: podemos escolher se vamos enviar uma mensagem de alerta ou executar um comando remoto. 2) Send message to: indica para quem a mensagem deve ser enviada. Podemos escolher grupos ou usurios em particular. Para o nosso caso, uma parada de ping deve ser enviada ao grupo Network administrattors. 3) Send only to: aqui escolhemos quais media types devemos usar. Pode-se optar por usar todos os disponveis. 4) Default message: envia a mensagem padro operao. Geralmente este o desejado, mas podem haver casos de opera es que precisem de uma mensagem mais especfica, como um SMS com um corpo de texto mais compacto. Clique em Add e voc ver que a nova operao ser adicionada ao quadro.
Chegou o momento de testar nossa action. Pause por alguns minutos a m quina Database e volte ela ao normal. Nesse nterim, consulte os e-mails no Evolution e as mensagens no Pidgin.
Voc deve receber dois alertas: um de parada (PROBLEM) e outro de retorno (OK). Perceba que os valores das macros foram substitudos pelo Zabbix.
4.3.6. Exerccios
1) Aproveite o momento que voc tem com uma action plenamente funcional e consulte o manual on-line do Zabbix para conhecer as macros dispon veis no servidor, e altere os textos e ttulos das mensagens para experimentar os valores poss veis nas mensagens. 2) Reinicie a mquina virtual Database conforme a Figura abaixo indica, e diga o que aconteceu com os eventos. Voc acha que isso um comportamento correto? ________________________________________________________________________ ________________________________________________________________________
As janelas de tempo so intervalos de segurana nos quais nos baseamos a fim de permitir que o servidor de monitoramento se adapte a uma mudan a nos valores de coleta. Seu principal efeito no alertar falsos positivos, que podem ser piores do que falsos negativos em certas circunstncias (lembra da histria do lobo?). O alerta de queda de host ao reiniciar o host um falso positivo, no houve queda real, apenas uma reinicializa o. Note que quando o servidor parar de responder, nenhum alerta enviado imediatamente. O trigger ir aguardar o tempo determinado na janela at decidir mudar de estado. O mesmo acontece com o retorno do host. Embora parea contra produtivo isso reduz o risco de envio de mensagens de alerta a toa. Dependendo do tipo de mensagem, isso pode inclusive representar uma economia para a empresa se o Media type usado for pago (como o SMS). Imagine receber centenas (ou milhares de SMS) por causa de trafego excessivo que impediu que os pings ICMP chegassem ao servidor! Nada saiu do ar, apenas o trafego de rede ficou insuportavelmente lento. E a intermitncia dos pacotes pode gerar mais dores de cabea do que auxlio. Obviamente temos que tomar cuidados para que hajam alertas de outros estados que um host ou toda a infraestrutura pode alcan ar. Mais adiante neste captulo vamos, por exemplo, criar uma trigger para alertas de reinicializa es. Definir gatilhos e aes para todas as possibilidades de sua infraestrutura justamente o maior desafio depois de responder a pergunta o que devo monitorar?. Geralmente este tipo de granulao s alcanado depois de alguns meses com o monitoramento ativado, e a melhor maneira de se planejar tudo isso comear pequeno e cobrir novas necessidades conforme elas aparecem. Receitas de bolo como a ITIL s o excelentes guias para se decidir por onde e quando come ar.
Vamos ento criar um trigger com uma janela de tempo. Edite a condi o do nosso trigger criado anteriormente, acessando Configuration Templates, clique no valor triggers do template 4Linux ICMP e depois abra a condio do gatilho. Dois campos sero alterados como a seguir:
1) Function: mude a funo para Sum of values for period of time T = N, justamente o T nossa janela. 2) Last of (T): a definio da janela, no nosso exemplo, ser de 60 segundos, visto que nosso item pinga o host de destino a cada 10 segundos. Procure deixar a janela prxima ao tempo de coleta entre x3 a x6. Salve tudo e reinicie o host novamente. Se tudo correr bem a janela vai evitar que o alerta seja enviado. Se ainda assim voc receber o alerta preciso aumentar a janela de tempo. Qual um bom tamanho de janela de tempo? Isso uma pergunta que depende inteiramente de seus sistemas. A maioria dos casos no requer uma janela menor do que 5 minutos. Janelas muito extensas podem diminuir o tempo de resposta da equipe de TI e janelas muito pequenas tendem a gerar falsos positivos. Tente achar o equilbrio.
1 ) \C can H um mHtodo considerado furti/o anti%amente. 7le faBia apenas metade dos passos para abertura de uma conex#o.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 158 Capturing on eth0 0.000000 172.27.0.10 -> 172.27.0.20 TCP 50952 > 8080 [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=4629163 TSER=0 WS=4 0.000090 172.27.0.20 -> 172.27.0.10 TCP 8080 > 50952 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=4617797 TSER=4629163 WS=4 0.000602 172.27.0.10 -> 172.27.0.20 TCP 50952 > 8080 [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4629163 TSER=4617797 0.000727 172.27.0.10 -> 172.27.0.20 TCP 50952 > 8080 [RST, ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4629163 TSER=4617797 Perceba que 4 pacotes foram trocados. O primeiro o SYN (syncronization) que pede a abertura da conexo. O segundo que parte do servidor de destino como resposta o SYN/ACK (syncronization and acknowledgement) que confirma a abertura de pacotes e o terceiro o ACK apenas para concluir a abertura. O nmap usar ainda um ltimo pacote para resetar a conexo (RST, ACK) que no vem ao caso. A troca destes pacotes nesta ordem o esperado pelas funes de soquete do sistema operacional, se ela for realizada dessa forma isso significa que a porta remota esta em estado de escuta (listening) ou que esta aberta. Mas ai vem a pergunta e uma porta fechada, o que retorna? Vamos seguir com a prtica, novamente no host Application execute os seguintes comandos. # iptables -A INPUT -j ACCEPT -p tcp --dport 10000 # tshark -ni eth0 host 172.27.0.10 and port 10000 Running as user "root" and group "root". This could be dangerous. Capturing on eth0 O iptables 2libera no filtro de pacotes de entrada a porta 10000/TCP. Agora a partir do servidor Zabbix teste a porta 10000. # nmap -sT -P0 -p 10000 172.27.0.20 Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-09 17:13 BRST Interesting ports on application.curso468.4linux.com.br (172.27.0.20): PORT STATE SERVICE 10000/tcp closed snet-sensor-mgmt
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds Note o estado closed da sada do nmap! V at o tshark do Application e veja o trafego dos pacotes capturado. # tshark -ni eth0 host 172.27.0.10 and port 10000 Running as user "root" and group "root". This could be dangerous. Capturing on eth0 0.000000 172.27.0.10 -> 172.27.0.20 TCP 47673 > 10000 [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=4696578 TSER=0 WS=4 0.000096 172.27.0.20 -> 172.27.0.10 TCP 10000 > 47673 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0 # iptables -D INPUT -j ACCEPT -p tcp --dport 10000 Note que h apenas dois pacotes, o SYN de incio de conexo como no exemplo anterior e outro com RST/ACK pedindo para encerrar imediatamente a conex o. assim que um sistema operacional informa que uma porta esta fechada para uma tentativa de conex o remota. Um timeout na abertura de uma conexo TCP porque o cliente no recebeu nem um RST/ACK ou um SYN/ACK aps um perodo (que na maioria das vezes de 60 segundos).
# iptables -D INPUT -j ACCEPT -p tcp --dport 22 A partir do zabbixsrv faa a seguinte varredura de portas. # nmap -p 22 application presentation database -P0 Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-09 14:04 BRST Interesting ports on application.curso468.4linux.com.br (172.27.0.20): PORT STATE SERVICE 22/tcp filtered ssh MAC Address: 08:00:27:4B:97:E3 (Cadmus Computer Systems) Interesting ports on gateway.curso468.4linux.com.br (172.27.0.1): PORT STATE SERVICE 22/tcp open ssh MAC Address: 08:00:27:BD:55:12 (Cadmus Computer Systems) Interesting ports on database.curso468.4linux.com.br (172.27.0.30): PORT STATE SERVICE 22/tcp closed ssh MAC Address: 08:00:27:A3:73:61 (Cadmus Computer Systems) Nmap done: 3 IP addresses (3 hosts up) scanned in 0.48 seconds Note que no Database que desligamos o SSH retornou closed e o firewall do Application retornou filtered, somente o Presentation deu um open. Anote este resultados pois iremos compar-los com o que o Zabbix retornar. No template 4Linux S.O. Linux crie um novo item de simple check com a key ssh. Para que o servidor possa us-la preciso que ele esteja compilado com suporte a libSSH (op o --enable-libssh).
1) Key: a chave ssh faz um teste na porta 22 dos servidores. 2) Show value: escolha o value map Estado como fizemos no ICMP ping. A chave escolhida tambm retorna 1 para sucesso e 0 para falha. 3) New application: crie uma aplicao exclusiva para o servio de SSH. No esquea de preencher os outros campos conforme a ilustra o. Depois de salvar este novo item, consulte a sada do Overview.
Note como os dois servios com firewall e com o SSH desligado retornaram Falha (0) e o que estava em funcionamento retornou 1. Uma das grandes vantagens de testar portas TCP que a possibilidade de incidncia de perdas de pacotes bem baixa em relao ao teste realizado com o UDP. Enquanto o manual do Zabbix contm a informao de que a checagem de vrios servios retornam o valor 2 ao achar um timeout, o autor n o foi capaz de reproduzir este comportamento com sucesso.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 163 !ervios )pen 9arnish cacherJ D Porta 22;5CP ID55P +-;5CP +-+-;5CP +-+-;5CP ID55PJ +-;5CP $!32;5CP 3+6;5CP 3pplication 1atabase 1atabase 3pache Post%re O< )pen<13P ost 5odos os <inux Presentation Presentation 4emplate .). <inux 9arnish 3pache ?@oss base ssh http http tcp,+--6 http,+-+http tcp,$!32 ldap 7e8
Captulo 4 #onitoramento )oltado para di"ponibilidade - 164 trigger tambm criado automaticamente para alertar cdigos de retornos inesperados ou falta em uma determinada string na pgina de resposta. Ele no entanto, no gera uma action sozinho. Muitas destas funcionalidades so encontradas em outras ferramentas como o JMeter (que possui asserts capazes de realizar este tipo de verifica o), porm uma soluo no substitui a outra, pois a inteno do Zabbix no ser um validador de aplicativos web e sim um verificador de funcionalidades pontuais de URL. Ele tambm no deve ser usado como gerador de cargas para testes de performance. No entanto o Zabbix consegue armazenar o hist rico de resultados on-line por um longo tempo. Para criar um novo cenrio acesse Configuration Web. Na tela que surgir voc ver que o boto de criao estar desabilitado (Figura 4.48). Para habilit-lo preciso escolher um grupo e host conforme abaixo:
1) Group: escolha o grupo Linux servers. 2) Host: escolha Application, que o host interno de nosso cenrio que possui um JBoss e um Apache executando aplicaes. Ao escolher os dois valores o boto ser habilitado. Isso acontece porque no possvel colocar um cenrio dentro de um template, apenas dentro de um host. Da a necessidade de se escolher um host.
1) Application: o application de identificao para o cenrio. Como ele no cadastrado em nenhum template tome cuidado para no escolher um application que existe em outra parte do Zabbix. Coloque Cenrio HTTP para o nosso exemplo. 2) Name: o identificador nico do cenrio dentro do host. Este nome vai aparecer no momento do monitoramento. O valor que colocaremos Teste de aplicao PHP no Apache. 3) Authetication: no caso da URL requerer algum tipo de autentica o HTTP, voc pode defini-la aqui. No h necessidade de autenticao no nosso exemplo. 4) Update inverval (in sec): o tempo entre uma coleta e outra. Deixe 10 segundos para nosso cenrio. 5) Agent: como o Zabbix vai se identificar para o servidor web. Essencialmente a string do browser pelo qual ele vai se fazer passar. 6) Status: Se ele est ou no, ativo. 7) Variables: um conjunto de variveis para serem enviadas ao servidor. Deixe em branco neste caso. Note que em lugar algum foi definido qual a URL que este cen rio vai acessar. Isso porque possvel definir vrias URLs dentro dele, cada uma um step. Clique no boto Add do campo Steps para criar um novo passo.
1) Name: o nome deste step normalmente representa a URL a ser testada (por exemplo pgina principal, carrinho de compras, blog, etc.) 2) URL: o endereo web a ser acessado. Pode incluir parmetros de mtodo GET se desejado. No nosso caso colocaremos phpapp.curso468.4linux.com.br. 3) Post: se a pgina receber dados via POST, as variveis e valores (um em cada linha) podem ser acrescentados aqui. Neste caso no h nenhuma. 4) Timeout: por quanto tempo o Zabbix vai esperar a resposta do servidor web onde a URL aponta. O valor em segundos. Deixe 15. Valores menores podem ser usados se o teste for executado em infraestruturas locais, sites de baixo movimento ou em servidores de altssimo ndice de tempo de resposta. 5) Required: um texto que esperado na pgina de resposta. Se o servidor falhar em entregar uma pgina com esta string um trigger acionado. 6) Status code: qual o cdigo HTTP esperado para a resposta. Normalmente ele 200 que significa OK, pgina encontrada. Voc pode ver a relao de cdigos HTTP em http://www.w).org/.rotocol#/rfc2'1'/rfc2'1'2#ec1!.html. Note que este campo no obrigatrio, voc pode simplesmente pedir pro Zabbix ver se o servidor esta retornando algo, mas isso no muito til na maioria das vezes. Para terminar a insero do step clique em Add. Antes de continuar vale mencionar que a URL de testes usada neste step passa pela estrutura de cache e proxy reverso do cenrio (Varnish Apache+mod_proxy Apache+PHP5) e por isso esta testando toda esta infraestrutura. Poderamos fazer um teste direto no servidor Apache se necessrio.
Note que no final do quadro da janela de cenrio o novo step fica listado em forma de tabela. Ainda no vamos acrescentar outros steps neste cenrio. Salve clicando no boto Save.
Na lista de cenrios, temos agora o nosso cadastrado. Para verificar este monitoramento temos uma tela especial s para ele. Acesse Monitoring Web.
Clique sobre o nome do cenrio e note que ele esta sendo organizado pela application escolhida quando o cadastramos.
Na tela seguinte um resumo da ltima coleta com a velocidade (Speed), lat ncia de rede (Response time), ltimo cdigo HTTP de resposta (Response code) e Status dos triggers gerados automaticamente. Logo abaixo deste quadro temos dois gr ficos de velocidade e tempo de resposta prontos.
Como voc pode ver, a criao de um cenrio simples, mas permite uma flexibilidade muito grande. Vamos em seguida ver como realizar uma valida o de um formulrio web.
4.5.2. Exerccios
1) Crie um action para os triggers que o cenrio gerou e faa os seguintes testes: 1.1) 1.2) 1.3) 1.4) Parar o servidor Apache no host Application. Parar o servidor Apache no host Presentation. Parar o servidor Varnish no host Presentation. Mudar o HTML da pgina principal para no retornar a string esperada.
O preenchimento dos campos j bem trivial a esta altura. A Figura 4.58 mostra quais so os valores que devem ser colocados em cada um. Como este item suportado pelo Zapcat tambm iremos copi-lo para o outro template. Salve e siga os passos abaixo.
Figura &.*,: Copiando o item de ping de agente para o template do -5o## 1/2"
1) Selecione o item dentro da lista 2) Escolha Copy selected to... na caixa de aes. 3) Clique em Go (1).
Figura &.'!: Copiando o item de ping de agente para o template do -5o## 2/2"
1) Target Type: esta parte um pouco confusa, pois antigamente o Zabbix n o diferenciava hosts e templates (de fato ele ainda faz pouca dissocia o entre eles algumas vezes). Voc vai escolher Host neste campo para que logo abaixo possa escolher os templates. 2) Group: escolha o host group Templates. 3) Target: marque o template do JBoss como indicado. Clique em Copy para finalizar a operao. O item agora faz parte de ambos templates. Confira pelo Overview se todos os hosts Gnu/Linux e Window, alm do JBoss claro, esto com este item funcionando.
Exceto pelo Expression preencha os campos conforme a Figura 4.61. Depois mude o mtodo de entrada e clique em Edit.
1) Item: Escolha o item Agent Ping para ser avaliado. 2) Function: Procure no final da lista a funo escolhida na imagem. Ela representa a nodata(). 3) Last of (T): Nossa janela de tempo. Como no icmpping vamos esperar por um minuto sem resposta e ento ativar o trigger. 4) N: O valor esperado para a funo. Conforme citado, ele ser 1. Voc no pode escolher um valor de Last of (T) menor do que 30 segundos para a funo nodata(sec). O Zabbix faz checagens de falta de recebimento a cada meio minuto, por isso deixar este campo menor que este valor n o vai ter funo alguma.
Agora vamos adicionar uma dependncia a este trigger, ele s deve ser avaliado se o teste de ping ICMP for bem sucedido. Isso evita suas coisas: primeiro que mais de um action seja ativado em caso de um congelamento do host (o que economiza alertas), segundo permite que o Zabbix no perca tempo com processamento de gatilhos que s o desnecessrios para a ocasio (que gastam tempo de CPU no servidor de monitoramento). No nosso cen rio se o host no estiver respondendo requisio ICMP intil testar o agente. Note que isto pode no ser verdade no cenrio de sua empresa! Avaliar a dependncia dos triggers importante quando se est construindo uma soluo eficiente de monitoramento. Clique no boto Add e selecione o trigger do ICMP.
Note que agora ele aparece na lista de dependncias. Salve o novo gatilho.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 174 Perceba que ambas, a dependncia e a nova funo, aparecem na lista de triggers. Vamos realizar um teste agora, parando o agente do zabbixsrv. # /etc/init.d/zabbix-agent stop V at o Overview, selecione triggers no campo Type e aguarde o ativamento do mesmo.
Note que h setas nos detalhes dos Triggers para o servidor. Uma seta para cima significa que o trigger j caiu e voltou ao estado de OK. Uma seta para baixo significa que seu estado atual PROBLEM. Retorne o agente ao estado normal, atribua um acknowledgement e vamos a outro teste. Desta vez derrubaremos dois hosts, pausando ambos e verificando se eles v o ativar o trigger de agente alm do do ICMP. Pare o host Windows 2003 e Database e retorne ao Overview.
Figura &.'(: 0ependNncia entre trigger# evitando 9ue o gatilho filho #eOa ativado
Perceba como ambos os triggers de agente ficaram cinzas enquanto os de ICMP alertaram uma queda.
Se o seu teste no funcionou pode ser necessrio aumentar a janela de tempo em relao ao trigger pai. Nunca deixe a janela do filho exatamente igual ou menor que a do pai, a folga pode ser pequena mas deve existir.
4.6.3. Exerccios
1) Copie o trigger para o template do JBoss. 2) Crie as actions necessrias para enviar os alertas de paradas dos hosts a seus respectivos responsveis, conforme a tabela abaixo. ost 3pplication 1atabase ?@oss 3 Presentation >itch =indo>s2--3 Zabbixsr/ Tabela /: )esponsveis de cada *ost 9esponsveis sAsadmin, Ta/aen% sAsadmin, dba Ta/aen% sAsadmin sAsadmin, >inadmin >inadmin sAsadmin
Isso vai demonstrar como o sistema do Zabbix consegue lidar com ambiente heterogneos e vai demonstrar que depois da coleta o tratamento, armazenamento e an lise no muda. O primeiro passo analisar o retorno dos valores via console. Isso importante para que tenhamos parmetros de tipos de dados (inteiros, float); nome correto das keys, OIDs, etc e acesso. O agente do Zabbix possui uma key chamada system.uptime que retorna o tempo desde o ltimo boot. De maneira equivalente o JBoss tem um JMX java.lang:type=Runtime,Uptime que tambm faz isso, mas para a inicializao da JVM e o SNMP por padro tem o OID DISMAN-EVENT-MIB::sysUpTimeInstance. A OID do SNMP muito varivel de um equipamento para outro, sempre consulte o manual ou a MIB do seu fabricante para determinar o que esta dispon vel para coleta. Vamos usar os seguintes comandos para os casos de uso. # zabbix_get -k "system.uptime" -s application 59545 # echo "jmx[java.lang:type=Runtime][Uptime] " | nc application 10052; echo ZBX59374361 # snmpget -v2c -c public 172.27.0.135 DISMAN-EVENT-MIB::sysUpTimeInstance DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (6026194) 16:44:21.94 Se voc fez o desafio do tpico 2.12, pgina 72 pode usar o seu script em vez do segundo comando. Cada comando retornou um valor inteiro, todos representando o uptime do sistema. A grande diferena entre eles a preciso de tempo utilizada, o agente do Zabbix retorna o valor em segundos, o Zapcat em milissegundos e o agente SNMP em cent simos de segundos (que ele chama de timeticks). No se incomode com a sada em texto de vrios desses comandos, o Zabbix lida com os nmeros destacados em negrito apenas. Toda essa diferena requer um tratamento no momento da coleta, ou seja, na
Captulo 4 #onitoramento )oltado para di"ponibilidade - 177 configurao de cada item. Primeiro vamos coletar o dado do agente do Zabbix. No template 4Linux S.O. Base crie um novo item conforme a seguir.
1) Description: coloque a descrio, conforme a figura. 2) Key: como usamos no comando zabbix_get, a chave system.uptime vai coletar o tempo de funcionamento do host. 3) Units: este campo permite que faamos algumas personalizaes no tratamento da sada do item no Overview e grficos. Embora similar ao Values maps ele mais sofisticado, pois formata a sada conforme necessrio em vez de simplesmente dar um apelido para uma tabela de valores. Neste caso use o uptime. 4) New application: defina um novo application para os items de sistema. Salve e faa o mesmo para o template 4Linux JBoss Base mas com as modificaes a seguir.
1) Key: aqui usaremos a sintaxe da key jmx pela primeira vez. Ela normalmente composta por duas partes, o nome do JMX e seu atributo cada um dentro de seu prprio colchetes. Cada jmx aponta para um Mbean no servidor. Para saber quais Mbeans esto disponveis em um servidor com Zapcat, acesse a URL http://P#ervidorQ/zapcat21.2/mbean#.O#p substituindo <servidor> pelo seu DNS ou IP conforme for o caso. Um estudo mais aprofundado dos MBeans realizado nos cursos 436 e 467 sobre JBoss na 4Linux. 2) Use custom multiplier: neste campo faremos o tratamento de dados para converter o resultado para segundos. Como a JVM retorna um valor em milissegundo, temos que multiplicar por .001. Salve este item e crie o ltimo, dentro do template 4Linux SNMP conforme a seguir.
1) Type: como este item obtido pelo SNMP, temos que configurar o item para que o Zabbix entenda como colet-lo. No nosso caso estamos usando SNMP vers o 2, no caso de outros equipamentos a verso 1 (obsoleta) ou 3 (mais segura) pode ser usada. Consulte o manual de seu fabricante. Esta op o requer que o servidor seja compilado com suporte a net-snmp (--enable-snmp). Note que os campos abaixo se alteram conforme voc escolhe outros tipos de valores.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 179 2) SNMP OID: coloque a object identifier da mtrica desejada conforme sua necessidade, no nosso caso DISMAN-EVENT-MIB::sysUpTimeInstance. 3) SNMP Community: coloque a string de comunidade do SNMP, normalmente este valor public. 4) SNMP Port: A porta UDP em que o agente SNMP esta ouvindo, o padro 161. 5) Key: invente uma key a seu gosto, ela s no pode conflitar com outras keys criadas ou repetir uma key registrada. Para padronizar o curso, todas as chaves de SNMP so definidas como snmp.funo. Neste exemplo utilizamos snmp.uptime. 6) Units: repita o usado no item do agente. 7) Use custom multiplier: como o SNMP, retorna um valor em centsimos de segundos temos que multiplic-lo por .01 para converter para segundos. Salve o item e v at o Overview.
Figura &.+2: :verview exibindo o# uptime# a partir do agente padroM 3apcat e @?A.
A Figura 4.72 mostra todos os hosts, com as mtricas de tempo ligado obtidas conforme sua interface de coleta. Graas ao campo Unit todas esto exibindo o tempo em um formato legvel por humanos e o campo Use custom multiplier ajustou os valores para segundos, que uma unidade com a qual o Zabbix sabe trabalhar.
Novamente, isso demonstrou a capacidade em coletar dados de ambiente heterog neos, desde que voc tenha um agente suportado no h problemas. O agente padro do Zabbix compatvel com 9 sistemas operacionais do mercado, as JVMs com Tomcat e/ou JBoss so suportadas pelo Zapcat e a maioria esmagadora de ativos de redes (desde switches at
Captulo 4 #onitoramento )oltado para di"ponibilidade - 180 impressoras, passando por no-breaks) suportam alguma verso de SNMP hoje em dia.
1) Expression: defina a expresso como sendo o ltimo valor da ltima hora como sendo menor do que 1800 (meia hora). Dois pontos importantes aqui: primeiro o tempo de janela da funo last() deve ser sempre maior do que o valor comparado e segundo, o tempo de ativao deve ser maior do que o tempo de coleta.
2) Trigger depends on: coloque como dependncia deste trigger o da verificao do agente. No h sentido em tentar analisar uma mtrica que no esta sendo recebida. Isso evita que ela apresente valores desconhecidos.
4.7.2. Exerccios
1) Crie as triggers para os templates do JBoss e do SNMP. 2) Crie as devidas actions para alerta de reinicializa o enviando mensagens apenas aos indivduos responsveis por cada host (consulte a Tabela 9 na pgina 175 para detalhes).
Captulo 4 #onitoramento )oltado para di"ponibilidade - 182 state: qual o estado do processo. Podendo ser all (padr o), run, sleep ou zombie (este ltimo somente em ambientes *nix). cmdline: filtra pela linha de comando. Isso til para aplicaes que sempre iniciam o mesmo processo, como o java. Em nossa prtica atual, o nico parmetro relevante o primeiro, pois vamos buscar apenas um processo bem definido dentro da memria (o daemon do SSH). Para descobrir qual o processo usaremos o comando ps. Entre no console do servidor do Zabbixsrv. # ps uax | grep ssh -i root root root 1161 0.0 0.3 5496 988 ? 3594 0.2 1.1 8304 2868 ? 3674 0.0 0.3 3316 836 pts/0 Ss 14:09 0:00 /usr/sbin/sshd Ss 14:40 0:00 sshd: root@pts/0 S+ 14:41 0:00 grep --color ssh
O primeiro processo o daemon, o segundo uma conexo ssh acontecendo e o terceiro o prprio grep na memria que usamos na linha de comando e portanto pode ser ignorado. Note que o nome do processo sshd e no simplesmente ssh. Com isso em mos, podemos ser mais pontuais com o ps, a opo -C pouco conhecida e usada, lista apenas os processos com o nome indicado. Ela incompatvel com as opes a e x, por isso usaremos em combinao com a u, apenas. # ps u -C sshd USER root root PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 1161 0.0 0.2 5496 624 ? 3594 0.0 0.8 8304 2204 ? Ss 14:09 0:00 /usr/sbin/sshd Ss 14:40 0:00 sshd: root@pts/0
Guarde esta opo do ps, voc vai precisar dela no futuro. Vamos usar o zabbix_get para coletar a informao da chave agora.
# zabbix_get -s localhost -k "proc.num[sshd]" 2 A chave retornou 2, que exatamente o nmero de processos que contamos com o ps. Com o teste concludo vamos criao do item e trigger. Use o template 4Linux S.O. Linux.
A Figura 4.74 ilustra como o item para contagem de processo deve ser criado, ele bem trivial.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 184 que o nmero de processos do host Zabbix Server esta com 2 porque h uma conexo ssh ocorrendo nele, nos outros apenas o daemon, aguardando a conexo, est sendo executado. Com os dados sendo coletado j podemos criar um trigger.
1) A condio do trigger bem padro em relao aos nossos gatilhos anteriores: use a funo sum() para descobrir se algum processo esta rodando na janela de tempo de 1 minuto.
2) Ele deve depender da checagem de agente porque no h sentido em testar uma mtrica que depende dela mesmo. Alm disso se no o fizermos esta trigger vai resultar em um unknown se o agente cair. 3) A severidade deste incidente vai ser classificada como Average pois o SSH no um servio prioritrio para o funcionamento das aplicaes, no entanto ele no um Warning, pois ainda classificado como erro e precisa de interveno imediata. Salve o trigger e v at o console do host Database e para o SSH. # /etc/init.d/ssh stop Acesse a lista de eventos em Monitoring Events para acompanhar a ativao do
Note que o teste de porta tambm falhou, mas no emitiu alerta pois ainda no temos triggers associados a ele. # /etc/init.d/ssh start
Aps a criao do item, verifique se a coleta esta sendo realizada. Se tudo estiver correto, hora de passar para a verificao das mudanas de status. At o momento temos 3 maneiras de checar o servio: contando os processos ativos na mquina, checando a porta remotamente pelo servidor do Zabbix e/ou checando a porta localmente pelo agente do Zabbix. Todas tem suas vantagens e desvantagens, mas em vez de us -las de forma discriminada, vamos juntar a fora de todas elas e fazer com que a lgica de todos os gatilhos trabalhem em conjunto. Essa capacidade de oferecer depend ncia entre uma checagem e outra que o Zabbix oferece de extremo poder, e mesmo sem expresses booleanas complexas dentro de cada trigger seremos capazes de determinar qual o poss vel acontecimento, dependendo de qual trigger foi ativado. Acompanhe a explica o a seguir, comeando pela leitura do fluxograma na Figura 4.80.
O primeiro trigger (cada um representado pelo losango) o que criamos anteriormente para verificar se h, ao menos, um processo sshd sendo executado. No caso de n o haver nenhum, ele deve alertar o administrador respons vel pelo servio. Note que se realmente no h nenhum tipo de processo do servio sendo executado, ento no h sentido em verificar portas, correto?
O segundo, a anlise da porta localmente a partir do agente, se n o h processos escutando na porta a partir da prpria mquina local ento o processo master da aplicao provavelmente caiu. Note que se voc parar o ssh pelo servio de boot as conexes que esto em andamento no so interrompidas! Logo possvel ter uma situao onde h processos sshd na memria que esto apenas atendendo a conexes que foram estabelecidas anteriormente queda do processo principal e s vo morrer se estas conexes forem encerradas.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 188 Esse tipo de comportamento muito comum em servios que so baseados em forks, como o Apache, o prprio Zabbix, muitos daemons escritos em Perl, etc. Programas que trabalham puramente com threads, como as aplicaes feitas em java, incluindo aqui o Tomcat e o JBoss tem um processo monoltico e no seguem esta regra. Finalmente, o terceiro trigger checa se servidor consegue abrir uma conex o com a porta remotamente. No caso de um bloqueio por filtro de pacotes no host de destino ou no meio do caminho, ou falhas de rotas, este gatilho ativado. Este caso cobre a ocorrncia do daemon estar em perfeito funcionamento mas os pacotes de rede no estarem alcanando o destino (ou no esto voltando apropriadamente). Como o terceiro s checado se o segundo estiver com status OK, e este ltimo se o primeiro estiver com status OK, o Zabbix no gasta processamento com os trs gatilhos, a menos que tudo esteja na mais perfeita ordem. Se um dos prim rios falharem ento os outros no sero executados. Obviamente pode haver muito mais tipos de problemas, que v o alm da contagem de processos e verificao de portas. Um binrio corrompido pode causar quedas de conexes legtimas alguns segundos depois de serem estabelecidas pelo servi o, ou ainda ele pode sempre retornar um erro na cara do cliente sem sair completamente do ar. Para estes casos continue empilhando outras checagens ap s verificar estas trs que geralmente esto sempre perto da base. Mas vamos continuar com nossa prtica dirigida e criar os dois triggers que faltam, pois o primeiro j esta pronto desde o tpico anterior.
O trigger da Figura 4.81 a segunda checagem (porta local). Note que ele tem como dependncia o trigger da contagem de processos.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 190 J o da Figura 4.82 faz a verificao da porta remotamente e tem como depend ncia o segundo gatilho. Outro ponto importante que sua janela de tempo de 70 segundos (10 a mais que o anterior), esta folga evita que ambos sejam ativados simultaneamente. Deixar uma margem entre 10 e 5 segundos na janela de um trigger que depende de outro uma boa prtica.
Como foi dito anteriormente, no h como verificar de maneira confivel se uma porta UDP est aberta. Mas o agente tem uma chave chamada net.udp.listen que verifica se localmente uma dada porta UDP esta esperando requisi es.
4.8.3. Exerccios
1) Agora teste os gatilhos realizando as seguintes tarefas: 1.1) 1.2) 1.3) Pare o daemon ssh de um Gnu/Linux sem conexes abertas para ele (somente o primeiro gatilho deve disparar). Restaure o daemon. Pare o daemon ssh de um Gnu/Linux com ao menos uma conex o aberta (somente o segundo gatilho deve disparar). Restaure o daemon. Corte a regra de SSH dos filtro de pacotes (iptables) de um dos Gnu/Linux, somente o terceiro gatilho deve disparar. Restaure a regra aps o termino.
Vamos us-lo como exemplo para monitoramento de servios no Windows. O Telnet simples de se colocar em funcionamento, de fato quase nada configurado. Clique duas vezes sobre o nome dele.
1) Nome do servio: anote o nome do servio! O Zabbix precisa dele para conseguir localiz-lo no sistema. No nosso caso TlntSvr. 2) Tipo de inicializao: mude para automtico. Depois de terminar clique em OK, o servio vai entrar registrado mas ainda no iniciado.
Para iniciar use a barra de ferramentas no topo da tela como indicado na Figura 4.85. Agora pressione CTRL+ALT+DEL, e abra o Gerenciador de tarefas.
Confira se um dos processos bate com o nome do servi o. Provavelmente voc achar o processo tlntsvr.exe. Anote tambm este nome. Antes de cadastrar novos items vamos fazer um pequeno teste via console: use o zabbix_get para coletar o nmero de processos telnet na memria (deve retornar 1). Novamente lembramos que no Windows, deve-se incluir a extens o .exe no final dos processos para a key proc.num. # zabbix_get -s win2003 -k 'proc.num[tlntsvr.exe]' 1 Agora vamos testar a key service_state que faz a verificao dos servios do Windows no Zabbix. Use o nome que pegamos das configuraes do Telnet como parmetro dela. # zabbix_get -s win2003 -k 'service_state[TlntSvr]' 0
Note que o resultado foi zero. Isso porque zero significa rodando, experimente pausar o servio no Windows e execute o comando novamente. # zabbix_get -s win2003 -k 'service_state[TlntSvr]' 1 Agora retornou 1. Sim, parece contra produtivo, mas esta tabela foi baseada em n meros que a prpria API do sistema Windows retorna. Os valores possveis esto na Tabela abaixo. :alor 1 2 3 ! $ ' * 2$$ Table 10: 1alores da 2e3 service4state Mas isso ainda no suficiente. Temos que pedir ao Windows que libere a porta do Firewall para o acesso ao Telnet. Por padro todos os telnets usam a porta 23/TCP. Acesse Painel de Controles Firewall para abrir as preferncias. Lodando Pausado Incio re4uisitado Pausa re4uisitada Continua"#o re4uisitada Parada re4uisitada Parado 1esconhecido er/i"o n#o existe In#o esta cadastrado na lista de ser/i"os do =indo>sJ Estado
Clique em Adicionar Porta... e preencha a janela que aparecer conforme indicado a seguir.
1) Nome: o nome do servio apenas um label para o Firewall. Defina como telnet. 2) Nmero da porta: coloque 23. 3) O protocolo usado o TCP. Clique em OK para finalizar.
Por fim, clique em OK novamente. Para averiguar se tudo esta correto faa um teste a partir do console do host Zabbix server.
# nmap -P0 -p 23 win2003 Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-15 18:39 BRST Interesting ports on 172.28.0.10: PORT STATE SERVICE 23/tcp open telnet Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds # telnet win2003 Trying 172.28.0.10... Connected to win2003.curso468.4linux.com.br. Escape character is '^]'. Welcome to Microsoft Telnet Service login: administrador password: *=============================================================== Bem-vindo ao Microsoft Telnet Server. *===============================================================
C:\Documents and Settings\Administrador>exit Se o teste correu bem, v at o template 4Linux S.O. Windows 2003 e crie um novo item conforme abaixo.
Nenhuma grande novidade aqui, apenas atente para a key e para o campo New application. Outro ponto importante o uso do Value map Windows service state.
/etc/zabbix/agent.d/remote_command.conf
cont m
as
configuraes
para
tal
procedimento. Eleja uma das mquinas virtuais Gnu/Linux e comece a realizar os procedimentos
# Este o arquivo de configurao do agente do Zabbix para comandos # remotos. # # Liga/Desliga o recurso de comandos remotos do agente. # # Este tipo de feature vem desligada por padro devido ao risco de segurana # que ela pode apresentar se mal configurada. # # Note que o usurio do Zabbix tem que ter direitos de execuo do comando em
3 4
========================================================================
5
10
# questo enviado pelo servidor. Para isso ou ele executado como root # (desaconselhvel) ou chama executveis com suid (desaconselhvel) ou utiliza # sudo para rodar os comandos. Este ltimo a opo mais segura das trs, mas # requer configuraes extras no arquivo sudoers. # EnableRemoteCommands=1 # # No caso de habilitada a execuo de comandos remotos, aconselhvel deixar # esta opo ativada para auditoria do sistema. Ela vai registrar no arquivo # de logs do agente quando e qual comando foi executado (ou no m nimo foi # tentado). # LogRemoteCommands=1
12
13
14
15
16
17 18
========================================================================
19
20
21
22
23
24
# /etc/init.d/zabbix-agent restart preciso mudar para 1 ambos EnableRemoteCommands e LogRemoteCommands. Seus nomes so bem subjetivos, e apesar de no haver necessidade de ativar o segundo para que a coisa toda funcione extremamente aconselhvel faz-lo. J estamos ampliando bastante a confian a do agente no servidor, vamos ser cautelosos e ao menos colocar as tentativas de execu o de comandos nos logs para auditoria. recomendvel que voc desabilite o arquivo de log tambm e faa o agente gravar no syslog, dessa forma ele no ter direito de escrita nos arquivos usados para armazenar suas mensagens. Agora a segunda parte: como usurio zabbix, o agente no ser capaz de iniciar nenhum servio do Gnu/Linux, somente o root pode faz-lo. Ento vamos apelar ao sudo novamente para execuo do comando (instale o sudo se necessrio). Configure o sudo para permitir que o agente execute sem senha o script de reinicializao do ssh.
Seja metdico e defina exatamente quais so os parmetros permitidos dentro do sudo, principalmente para scripts de sistema. No queremos ningum dando stop no ssh pelo Zabbix, acidentalmente ou no! Crie uma action para conter o comando remoto.
As configuraes padres so bem apropriadas, apenas acrescente o adendo na mensagem que o servios esta sendo reiniciado manualmente.
Nas condies, importante notar que h trs delas. Uma indica que o status do trigger deve ser PROBLEM.
Voc no quer que o servio seja reiniciado quando o gatilho voltar a OK, certo? As outras duas possibilidades so o trigger de processo ou de checagem local de portas serem ativados. Qualquer um deles que apresentar PROBLEM dispara esta a o.
Uma mensagem para os envolvidos com esse host deve ser enviada. E por fim o comando remoto, ativado a partir do quadro Action operations.
1) Operation type: escolha Remote command ao invs do valor para envio de mensagens. Note que o campo abaixo vai mudar. 2) Remote command: voc precisa colocar o comando com a sintaxe Host:command, onde host o local onde o comando ser executado (onde voc habilitou o comando remoto no agente) e command o comando propriamente dito. No nosso caso usaremos Database:sudo /etc/init.d/ssh restart. Voc pode usar macros nos comandos e pode invocar quantos comandos voc quiser, em quaisquer servidores, em qualquer sequncia. Agora vamos ao teste: v at o host no qual voc configurou o agente para aceitar comandos remotos e pare o servio de SSH, em seguida abra o log e aguarde.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 202 # /etc/init.d/ssh stop # tail /var/log/zabbix/zabbix_agentd.log -f 7287:20110215:192625.462 Executing command 'sudo /etc/init.d/ssh restart' Starting OpenBSD Secure Shell server: sshd. Se voc voltar tela de eventos ver que h dois deles, um de queda e outro de volta.
4.8.6. Exerccios
1) Crie o mesmo esquema de monitoramento feito para o SSH para o Apache dentro do application. Gere um template a parte para o Apache para conter os items e configuraes. Tambm crie uma action capaz de reiniciar o servi o se for detectado que nenhum daemon do apache esta rodando. 2) Crie um trigger para avaliar se um servio do Windows no esta rodando e uma action para alertar o administrador Windows. No corpo da mensagem coloque o estado em que o estado se encontrava no momento do alerta. Use a mesma t tica de checagem de portas e mltiplos gatilhos.
A chave icmppingsec tambm faz um ping como a icmpping, mas diferente desta ela retorna o nmero de segundos que o pacote levou para ir e voltar (na verdade a m dia de trs pacotes).
Neste item, atente para o campo Units que contm o valor s (segundos). Ele ir formatar o valor recebido pelo item para uma forma leg vel por seres humanos. E mais importante, desta vez Type of Information esta como Numeric (float), porque o retorno da key icmppingsec em segundos, mas normalmente os tempos de respostas s o quebrados em trs casas decimais (milissegundos).
Acrescente os valores conforme a Figura 4.97 e salve o template. Ela j estar valendo para todos os hosts associados a ele. Vamos agora us -la no gatilho para verificao de latncia alta de rede. Crie o trigger no template conforme a seguir.
A grande diferena deste template para os anteriores o uso da macro. Preste ateno no campo Expression, seu valor indica a frmula {HOST:ITEM.avg(60)}>{$LATENCIA}.
Podemos inserir quantas macros quisermos na expresso do gatilho. A partir de agora se reutilizarmos estes templates em outros ambientes, podemos adequar a latncia de rede globalmente alterando o valor da macro no template. No caso de um dos hosts em nosso sistema ter um limiar diferente de lat ncia, podemos ainda redefinir a macro dentro do prprio host, alterando assim o comportamento de seu trigger pontualmente.
V at a tela de criao de grficos e clique em Create Graph. Siga as instruo abaixo para construir um grfico como demonstrado acima.
1) Name: nome do grfico. A partir da verso 1.8.4 do Zabbix possvel usar macros aqui. 2) Width e Height: tamanho padro do grfico para algumas telas. Na maioria dos casos o front end ajusta o grfico ao tamanho corrente da tela do Browser.
3) Graph type: o tipo de grfico, aqui vamos criar um Normal mas podemos construir grficos Stacked (empilhados), Pie (Pizza) e Exploded (pizza com valores destacados para fora da rea do grfico. Nosso exemplo usa Simple. 4) Show working time: se ativo, mostra uma sombra nos horrios fora do Working time definido em Administration General Working time. 5) Show triggers: exibe uma linha pontilhada como demonstrada anteriormente no limitar do trigger. Deixe ele ativo. 6) Y axis MIN/MAX value: valores mnimo e mximo do grfico. til para definir uma escala de visualizao. No nosso caso vamos colocar apenas o valor m nimo de 0 (assim o cho de nosso grfico sempre se manter em 0) e o mximo em Calculated, pois no temos como saber onde esta o topo para cada ambiente. Em alguns casos, como em porcentagens, normalmente o m ximo um valor fixo, em outros ele pode ser o valor de um item. 7) Items: aqui podemos definir quais so os campos que desejamos incluir no grfico. Procure sempre usar o mnimo possvel de informao neste caso. Para acrescentar um Item clique em Add. A janela de novo item para o grfico se abrir como a seguir.
1) Parameter: qual key cadastrada no template este elemento representar. 2) Type: se este item Simple ou Agregated. Campos agregados agrupam vrias contagem em um nico valor. So teis para visualizao de variao com menor granularidade num dado espao de tempo. Por exemplo, se voc quiser apenas a mdia, de hora em hora, ao invs de usar o intervalo de coleta. 3) Function: qual valor deve ser mostrado se houver a exist ncia de mais de um valor por pixel no eixo x. As funes so avg (mdia, o mais comum), max (mximo), min (mnimo) ou all (todos os trs). Em variaes muito baixas, all pode no exibir nada significante.
4) Draw style: Como a linha ser desenhada. Os valores possveis so: Line (linha simples), Filled region (rea preenchida), Bold line (linha mais espessa), Dot (pontos), Dashed line (tracejado) e Gradient (rea com gradiente da cor gradativamente indo para transparente). Este grfico usa alpha blender. 5) Colour: obviamente a cor. 6) Y axis side: Se os valores deste item sero exibidos do lado esquerdo ou direito do grfico. 7) Sort order: um nmero indicando a ordem de desenho no grfico, vai de 0 a 100. Voc pode ordenar os elementos dos grficos como desejar na tela de construo do grfico depois de acrescentar todos eles. Clique em Save em ambas as telas e o grfico estar pronto para exibio em Monitoring Graphs. O boto de Preview que existe na tela de construo dos grficos no ser capaz de exibir os grficos se voc estiver acrescentando ele a um template como estamos fazendo. Ele s funciona no caso de um grfico ser criado direto em um host.
Para definir estes valores bastante simples: edite a o item de host clicando sobre ele e preencha, linha a linha, os valores do campo Label. No exemplo que vimos, vrios hosts exibem o Uptime obtido de {Host:system.uptime.last(0)} e de latncia de rede, obtido de {Host:icmppingsec.avg(60)}. Ateno especial ao segundo, pois usamos a fun o avg e no last, isso totalmente permitido. Na Figura 4.103 temos um exemplo com o host Presentation. Aps editar o valor clique em Apply.
4.9.5. Exerccios
1) Assim como o icmppingsec esta para o icmpping, vrias keys com sufixo _perf esto para os equivalentes das simple checks de portas TCP. Por exemplo, ssh_perf a medio de latncia para o servidor de conexes remotas segura. Crie os items e grficos (veja o exemplo abaixo) para os outros servi os que voc j criou anteriormente de disponibilidade. Cadastre macros para medir o limiar e finalize com os triggers dos mesmos. Em sala de aula, crie pelo menos um deles, os outros podem ser feitos em casa.
Vrios daemons simplesmente saem de funcionamento porque n o so capazes de escrever em parties de logs, e bancos de dados e pastas de usu rios sempre podem exceder as estimativas previstas. Por isso importante que verifiquemos ambas as parti es de sistema e de dados dentro de um servidor. Como exemplo iremos criar uma verificao da raiz nos Gnu/Linux. Depois estenderemos o mesmo princpio ao Windows. Outro ponto que nos servidores sempre existem vrias parties (ao menos nos bem instalados), e por isso temos que ter m ltiplos items para cobrir todos os casos e deixar margem, atravs de macros, para parties com nomes personalizados pelo administrador. Por fim, desta vez teremos que coletar vrias mtricas (ao menos trs) para criao dos grficos e triggers. Espao total, usado e livre. Existem outras mtricas como porcentagem utilizada e livre do disco (pfree e pused), alm de items baseados em inodes. Consulte o manual do Zabbix para mais detalhes. Antes de comear a criar items vamos definir um valor limite para nossos triggers como 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 criando a macro conforme abaixo.
O valor padro usado para nosso cenrio ser 80 (80% da partio cheia), todo servidor que exceder este limite dever disparar um alerta para os administradores. Vamos criar os item agora, a key vfs.fs.size[mount_point, mode], diferente das anteriores exige parmetros para funcionar. O primeiro obrigatrio e indica qual das parties devem ser analisada. O segundo opcional e diz qual parmetro deve ser coletado. Os valores possveis so: total (bytes totais da partio. o tipo padro), used (bytes utilizados), free (bytes livres),
Captulo 4 #onitoramento )oltado para di"ponibilidade - 212 pused (porcentagem utilizada) e pfree (porcentagem livre). Vamos usar apenas os tr s primeiros, comeando pelo total, conforme a seguir. O agente no verifica se o diretrio colocado no parmetro a raiz de um ponto de montagem. No caso de no ser, ele continuar obtendo o valor do espao da partio como um todo (pense nele como um df ao invs de um comando du.
1) Description: aqui temos uma novidade: uma vez que estamos usando par metros na key, podemos captur-los e inseri-los no description usando a notifica o $n, onde n o nmero do parmetro comeando por 1. Em nosso exemplo usaremos $1 para pegar o ponto de montagem da parti o. Isso alivia bastante a digitao, pois os outros items que iremos clonar no precisam ter descriptions muito diferentes. 2) Key: a chave de espao conforme explicado anteriormente. Para o total sua sintaxe final vfs.fs.size[/,total]. 3) Units: b representa valores em bytes. O Zabbix inteligente o suficiente para fazer as converses para kilo, mega, giga, tera, etc. Usando mltiplos de 1024.
Salve o item e ao invs de criar o prximo item no brao, vamos usar um recurso de clonagem de valores do Zabbix. Vrias telas permitem que usemos o recurso de clonagem. Neste caso vamos clonar o total para usado e livre, conforme o esquema na Figura 4.107.
Voc ver que os dados se repetiro. Altere apenas a key (que deve ser nica) e o description. Repita para o outro item e voc ter outras duas mtricas prontas e coletando em tempo recorde! Confira no Overview se os dados esto sendo coletados adequadamente (atentando para que eles estejam em notao abreviada, Mb, Gb, etc).
No h muitos segredos nesta tela, ao selecionar Pie em Graph Type menos campos iro aparecer no formulrio. Vamos deixar a legenda ativa. Pode-se fazer grficos em 3D se desejado, mas no h grandes vantagens neles em relao aos normais em termos de visualizao, apenas esttica. Note que vamos utilizar dois items ao mesmo tempo: espa o utilizado e livre. Foi usado vermelho para o espao utilizado por um bom motivo, as cores quentes tendem a atrair o olho humano quando em contraste com cores frias ou mais claras. Isso faz com que inconscientemente o administrador ou suporte, fixe no espa o utilizado o que o crtico neste caso.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 215 Enquanto o grfico circular indicado para mostrar o ltimo status de vrios items relacionados, proporcionalmente ele oculta o hist rico do espao ocupado. Por isso precisamos criar, tambm, um grfico simples. O procedimento similar ao anterior e resultar no grfico da Figura 4.111. Seu diferencial que vamos usar um limite superior ao invs de um limite calculado. Para indicar o topo do grfico vamos apontar para o espao total da partio obtido atravs de um item.
Crie um grfico como antes, mas atente para o detalhes em destaque abaixo.
Aps acrescentar o item de espao utilizado, no campo Y axis MAX value escolha Item e selecione o item de espao total. Isso vai limitar o topo do grfico e dar uma visualizao mais precisa do espao que est sendo utilizado em relao ao total. Se voc no o fizer e tiver por exemplo pouco espao usado o grfico ficar ajustado ao tamanho mximo atingido o que pode levar um observador desavisado a interpretar como disco cheio!
Note ainda que, como sempre, colocamos uma dependncia ao Agent Ping para evitar testes com valores inexistente que resultam em UNKNOWN. Verifique se alguma mquina excedeu o espao e acionou o trigger. Neste caso voc deve aumentar o valor da macro para aquele host somente. Isso um caso atpico no nosso cenrio ento o trataremos como uma exceo. Para testar o trigger use o seguinte comando em uma das mquinas Gnu/Linux: # dd if=/dev/zero of=/tmp/lixo bs=1k count=$(( 200 * 1024 )) Isso vai gerar um arquivo de 200 Mb no /tmp. Mude o tamanho do arquivo conforme achar necessrio para fazer o teste. Deixe ele l at o trigger alarmar e depois apague-o para liberar o espao e forar a troca de estado para OK.
4.10.3. Exerccios
1) Clone os items criados para a parti o / alterando para as parties /usr, /var, /tmp, /boot e /home (as normalmente criadas numa instala o). Replique tambm as macros, os grficos e os triggers. Deixe todas estas mtricas e gatilhos como disabled por padro! Elas dependem da instalao de Gnu/Linux. Em sala replique ao menos uma, as outras podem ser feitas em casa. 2) Crie as mesmas mtricas para o Windows, mas com as parties de C: at G:. Em sala crie ao menos uma, as outras podem ser feitas em casa.
3) Desafio: crie mtricas que checam parties personalizadas pelo administrador, usando macros para definir os pontos de montagem.
Captulo 4 #onitoramento )oltado para di"ponibilidade - 219 usurio zabbix deve estar em uma linha (assim podemos acessar m ltiplos bancos de dados). O formato das linhas deste arquivo seguem a sintaxe: hostname:porta:basededados:usurio:senha E no nosso caso vamos acessar o banco principal do sistema postgres, logo o valor final ser localhost:5432:postgres:zabbix:zabbixdb. Os seguintes comandos criam o arquivo, ajustam sua permisso e fazem o teste local. # su - zabbix $ echo "localhost:5432:postgres:zabbix:zabbixpwd" > .pgpass $ chmod 0400 .pgpass $ psql -h localhost -U zabbix postgres -c SELECT 1; 1 $ logout A permisso do arquivo .pgpass deve ser 0600 ou 0400 e o dono do arquivo deve ser o usurio zabbix. Ainda temos que criar o usurio zabbix dentro do banco com a senha zabbixpwd. # su postgres $ psql postgres postgres# CREATE ROLE zabbix LOGIN; postgres# \passwd zabbix Digite nova senha: zabbixpwd Digite-a novamente: zabbixpwd postgres# \q Agora vamos criar um arquivo para conter as configura es do script. Ele vai conter apenas uma varivel por enquanto. Mais a frente vamos colocar outros valores aqui para o conjunto de scripts do PostgreSQL. # vim /etc/zabbix/pgaccess.conf
1
HOST=localhost
Enfim chegamos ao script. Basicamente ele executa o comando psql com o SQL de testes e verifica se tudo ocorreu bem. Mas h algumas partes do script que merecem um destaque. # vim /etc/zabbix/externalscripts/pgsql_ping.sh
1
#!/bin/bash BASE="/etc/zabbix" CONF=$BASE/pgaccess.conf QUERY_PING="SELECT 1;" ERROR_LOG=/var/log/zabbix/pgsql_ping.error function showerror { echo -e "PostgreSQL ping error:\n$(cat $ERROR_LOG)" 1>&2 } if [ -r $CONF ]; then . $CONF fi PING_OK=1 PING_FAIL=0 PING=$(psql -h $HOST -c "$QUERY_PING" postgres -tA 2> $ERROR_LOG) RETURN=$? if [[ $RESULT -ne 0 ]]; then showerror exit 1 else if [[ $PING -eq 1 ]]; 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 exit 0 1) O primeiro destaque do script justamente o comando que faz o SELECT 1 e armazena seu contedo em uma varivel chamada $PING. Note que o psql est usando os parmetros -t e -A para que o comando retorne apenas um valor 1. No caso de algum erro o valor de $PING ser diferente de 1. 2) O retorno do comando verificado e no caso de erros, uma mensagem gravada na sada de erros e o script para com retorno 1. O Zabbix trata isto enviando a sa da para o zabbix_agentd.log. 3) No caso do SELECT ser bem sucedido, o valor retornado ser 1 (definido no cabealho do script). 4) Caso contrrio o script retorna 0 e grava uma mensagem no log indicando porque. Note que o comportamento, de 1 significa sucesso e 0 para falha, replica o padr o das
29
30
31
32 33
keys de disponibilidade que vimos anteriormente. Isso ajuda a manter o padr o e permite o uso do value maps que criamos. Todo script de comando externo deve retornar um, e apenas um valor! Repita isso consigo mesmo! No h como pegar valores compostos no Zabbix e trabalhar com eles individualmente depois. Cada item armazena um single content. Agora vamos criar uma nova key pgsql.ping, dentro do agente. Para isso usamos o UserParameter, dentro de um dos arquivos de configurao do agente. A sintaxe desta linha : RserParamenteUGeA,comando ar%1 ar%2 ... Co caso de nossa necessidade ficar, como a se%uir. # cat /etc/zabbix/agent.d/pgsql_checks.conf
1
UserParameter=pgsql.ping,/etc/zabbix/externalscripts/pgsql_ping.sh
Temos que acertar as permisses dos arquivos e reiniciar o agente. # chown root.zabbix /etc/zabbix/pgaccess.conf /etc/zabbix/agent.d/pgsql_checks.conf /etc/zabbix/externalscripts/pgsql_ping.sh # chmod 0640 /etc/zabbix/pgaccess.conf /etc/zabbix/agent.d/pgsql_checks.conf # chmod 0750 /etc/zabbix/externalscripts/pgsql_ping.sh # /etc/init.d/zabbix-agent restart ?, podemos faBer o teste local, o script de/e retornar o /alor 1. # su zabbix -c /etc/zabbix/externalscripts/pgsql_ping.sh 1 A partir do Zabbix server teste o acesso a nova chave. O resultado tambm deve ser 1. # zabbix_get -s database -k 'pgsql.ping' 1 Se todos os testes foram resolvidos o momento de voltar ao front end. Crie um novo template 4Linux PostgreSQL 8.4 on Linux, ele deve depender do template 4Linux S.O. Linux. Depois entre no host Database, remova o template 4Linux S.O. Linux pelo boto Unlink (conservando assim os dados coletados) e adicione o novo modelo conforme a Figura 4.114.
Com isso j poderamos criar triggers e fazer o mesmo escalonamento de gatilhos para averiguar qual tipo de erro pode acontecer.
#!/bin/bash BASE=/etc/zabbix CONF=$BASE/internet_perf.links BC=$(which bc) function showerror { echo -e "Check link error: $1" 1>&2 }
2 3
6 7
if [[ ! -x $BC ]]; then showerror "aplicativo bc no instalado" exit 1 fi if [[ ! -r $CONF ]]; then showerror "arquivo $CONF no existe ou no esta acessvel para leitura" exit 1 fi NTESTS=$(wc -l $CONF | cut -f1 -d" ") SUM_AVG=0 for destination in $(cat $CONF); do PING=$(ping -n -c 1 -w 1 -W 1 $destination 2>&1) if [[ $? -eq 0 ]]; then AVG=$(echo $PING | cut -f34 -d" " | cut -f2 -d"/") SUM_AVG=$(echo "scale=3; $AVG + $SUM_AVG;" | bc) else NTESTS=$(( $NTESTS - 1 )) showerror "ping para $destination falhou com erro: $PING" fi done if [[ $NTESTS -eq 0 ]]; then showerror "Todos os testes falharam" exit 1 fi echo "scale=3; $SUM_AVG / $NTESTS / 1000;" | bc exit 0
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) Este trecho o corpo principal do script, ele pega o arquivo de links (abaixo) e realiza um ping em cada um dos endereos l dentro. Para cada coleta bem sucedida ele soma a mdia que o comando retorna (em milissegundos). 2) No segundo trecho a partir do resultado da soma e da quantidade de testes obtida a mdia final e convertida para segundos (assim podemos usar o Unit s para formatar a sada). O arquivo de links pode conter tantas entradas o quanto quisermos, mas n o recomendvel que haja mais do que 5, que o tempo limite que o Zabbix espera por um script executar antes de desistir e retornar nulo. # vim /etc/zabbix/internet_perf.links
1
www.google.com www.uol.com.br Como fizemos anteriormente, criaremos uma nova key Internet.perf que aponta para o
# chown root.zabbix /etc/zabbix -R # chmod 0640 /etc/zabbix/internet_perf.links /etc/zabbix/agent.d/internet_perf.conf # chmod 0750 /etc/zabbix/externalscripts/internet_perf.sh J podemos fazer os testes locais e os remotos conforme mostrado no t pico anterior. Tambm j podemos criar as macros, items, triggers e gr ficos seguindo a mesma filosofia. Somente mude o seguinte: para o item e gatilho deixe-os desabilitados no template 4Linux S.O. Linux e habilite somente no host Presentation. Para concluirmos com outra novidade vamos colocar no label do link de Internet o valor mdio dos ltimos 60 segundos de coleta (Figura 4.116).
Figura &.11+: >atNncia de rede e trigger a##ociado# ao linG com a 7nternet no mapa
1) Label: coloque o valor Latncia: {Presentation:internet_perf.avg(60)}. 2) Adicione o trigger da latncia que voc acabou de criar. No esquea de salvar antes de sair do mapa. Para testar, diminua o valor da macro de limite para um valor bem baixo.
Note como o link mudou de cor (Figura 4.118) quando o host acusou alta latncia de Internet.
4.11.3. Exerccios
1) Desafio: Crie um script externo capaz de ler a temperatura dos processadores e armazen-los no Zabbix. O script deve receber um parmetro indicando de qual core deve ser coletado a temperatura (0 primeiro, 1 segundo, e assim por diante). Crie ao menos um grfico para visualizar o valor coletado dos cores.
- 228
REFERNCIAS BIBLIOGRFICAS
- 229
O;#P!< 95 %9D!. Zabbix 1.8 Network Monitoring. Packet Publishing. Abril de 2010. Eomepage oficial da documentao do 3abbix, website: http://www.zabbix.com/documentation/. Acesso em 16 de Fevereiro de 2011.
- 230
Introduo
Aqui vamos passar as dicas e mtricas que podem ser usadas para monitorar as quatro principais caractersticas de desempenho. Uso de CPU, memria, throughput de rede e I/O de disco. Este captulo utiliza o template completo do Gnu/Linux para coleta de todas as informa es.
Processamento
Esta primeira mtrica de performance que, geralmente, observada quando o sistema fica lento. Algumas consideraes devem ser feitas quando se busca monitorar o processamento para identificar gargalos: 1) 100% de processamento no quer dizer nada! 1.1) Picos de processamentos so mais corriqueiros do que imaginamos, eles acontecem frequentemente, mas so to momentneos que nem os percebemos mesmo em grficos com curtos intervalos de coleta. Sempre que procurar por eles, concentre-se apenas nos de longa dura o.
- 231
1.2)
Se voc criar gatilhos de verificao de CPU, faa-os com uma janela de tempo razovel. O aconselhado que ela seja em torno dos 15 minutos, se o processamento ficou muito alto, por tanto tempo assim, provavelmente h alguma coisa errada na sua aplicao ou seu hardware est mal dimensionado.
2) Quando coletar informaes de CPU voc pode se deparar com muitas opes, aqui vo algumas dicas sobre o que fazer para decidir o que coletar. 2.1) Antes de olhar a porcentagem da CPU, olhe para o system load (key system.cpu.load). Ela indica o enfileiramento de processos, o que pode ser bem pior do que simplesmente ter CPU alta o tempo todo. 2.2) Mantenha ao menos uma coleta geral de baixo n vel. O consumo de CPU dividido em vrios tipos, os mais relevantes so user (consumo realizado pelos processos), system (consumo realizado pelo kernel) e wait (consumo realizado por espera de I/O, geralmente de disco). Existem outros menos relevantes, portanto consulte a documentao do Zabbix sobre a key system.cpu.util para obter mais detalhes. 2.3) 2.4) Ao monitorar mltiplos cores individualmente, colete apenas o idle de cada um deles. Raramente voc precisar de coletas detalhadas por ncleo. Monitore tambm o context switch pela key system.cpu.switches para verificar o nmero de vezes que os processos nascem, dormem, acordam e morrem nos cores, alm de indicar a migrao de threads.
Mtricas de memria
O segundo ponto mais importante de se monitorar num S.O. a memria, incluindo aqui a rea de troca (swap). 1) Consumo de memria pode ser bem complicado de se monitorar se voc no prestar ateno nos tipos de memria que existem. No Gnu/Linux, por exemplo, temos a memria de processos, a de buffer e a de cache. Por padr o a key vm.memory.size no capaz de capturar a memria dos processos (que a importante). Para fazer isso voc tem que criar um item calculado que subtrai a mem ria available (e no a free) do total.
- 232
2) Monitore a memria de swap com system.swap.size para determinar o consumo, e mais importante, com system.swap.in e system.swap.out que mostram a leitura e escrita na mesma. A rea de troca diretamente ligada ao I/O de disco (abaixo).
Performance de Disco
Para bancos de dados, analise a performance de disco. O template da 4Linux faz uso de um script externo que coleta dados de baixo nvel, o padro do Zabbix ainda no capaz de coletar estes dados. 1) No se atenha a throughput de disco em bytes, eles variam tanto de um hardware para outro que difcil de estabelecer um padro. Use mtricas como nmero de operaes, tempo gasto em escrita/leitura e enfileiramento de opera es, eles so muito mais significativos. 2) Procure por pontos de incidncia de operaes irregulares, se o tempo todo seu disco fica numa mdia de operaes e de repente ele muda, avalie o que pode ter ocorrido neste perodo, mesmo que seja para menos carga (o que pode indicar delays de operao).
- 233
Introduo
Performance de servios um assunto extenso e demandaria vrios cursos a parte para poder cobrir sua toda a sua extenso. De fato, uma parte dos cursos avanados da 4Linux detalham este tipo de estudo. Aqui vamos apenas arranhar a ponta do iceberg. Os templates completos do final do curso cont m muito mais detalhes dos que os discutidos aqui.
PostgreSQL
O banco de dados do PostgreSQL possui um sistema de tabelas chamadas cat logos. Estas tabelas armazenam diversas operaes importantes. 1) No perca tempo olhando estatsticas de nvel muito baixo. Comece por dados como nmero de conexes e de operaes no banco. No aumente as conexes do banco arbitrariamente, essa uma prtica ruim!
- 234
2) Procure distinguir o comportamento de sua aplica o. Muitas operaes de escrita e pouca leitura, ou vice-versa, ou ainda ambas! Isso torna as coisas mais f ceis para dimensionar tunnings. 3) Monitore a instncia como um todo e depois desa para bancos especficos, seguido de tabelas e por ltimo ndices e sequncias. Assim voc ganha uma viso global do sistema antes de depurar qual tabela voc precisa separar, particionar, etc.
JBoss
O servidor de aplicaes JBoss tem todos aqueles MBeans que o Zapcat dissecou para ns. Vamos comentar os mais importantes. 1) Aplicaes java no usam fork. Eles sempre trabalham em threads, por isso monitorar threads (principalmente os HTTP e AJP) vo mostrar o uso da JVM para conexes. 2) O JBoss usa datasources, que possuem poolings de conex es. Monitorar as conexes destes pools tambm uma boa mtrica. Via de regra uma boa aplicao, mesmo muito ocupada, no deve usar mais do que algumas poucas dezenas de conexes. 3) Consumo de memria heap pode indicar garbage collectors fazendo muitas operaes (nunca coloque muita memria de heap para as JVMs, pois o GC pode derrubar as JVMs). Vazamentos - Leaks - de mem rias tambm podem ser detectados com este tipo de monitoramento. 4) Monitorar a rea de perm gen normalmente no necessrio, mas pode indicar quando redeploys acabam consumindo toda a memria destinada a byte codes.
Apache
O template do Apache precisa do mod_status ativado para coleta de informa es. 1) Normalmente a mtrica mais significativa o nmero de conexes e uso de processos. 2) Verificar os processos em idle pode indicar que a configura o pode ser ajustada para menos, para consumir menos recursos.