Você está na página 1de 234

Solues de Monitoramento com Zabbix

Valter Douglas Lisba Jnior

www.4linux.com.br

-2

Sumrio
Captulo 1 Conhecendo o Zabbix..................................................................................................................12 1.1. Conhecendo a ferramenta................................................................................................13 1.2. Comunidades e forums....................................................................................................13 Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, 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!

2.3. )btendo os fontes do Zabbix...........................................................................................2* 2.!. Preparando o banco de dados.........................................................................................2*


2.!.1. Instala"#o................................................................................................................................2+ 2.!.2. Criando o usu,rio e o banco...................................................................................................2+ 2.!.3. Car%a inicial............................................................................................................................32.!.!. Concedendo as permiss.es necess,rias ao usu,rio...............................................................3-

2.$. Instala"#o do ser/idor Zabbix /ia c0di%o fonte..............................................................31


2.$.1. 1epend2ncias de compila"#o..................................................................................................3! 2.$.2. Compilando e instalando.........................................................................................................3$ 2.$.3. er/i"os de rede......................................................................................................................3* 2.$.!. 3r4ui/os de confi%ura"#o.......................................................................................................3* 2.$.$. 5estando sua instala"#o..........................................................................................................36 2.$.'. cripts de boot........................................................................................................................!1

2.'. Instala"#o do a%ente Zabbix /ia compila"#o..................................................................!1


2.'.1. 7xerccio8 compile e instale o a%ente nas 9M com :nu;<inux..............................................!2 2.'.2. 3cesso ao a%ente pelo ser/idor..............................................................................................!2 2.'.3. 7xerccio sobre instala"#o de a%ente em <inux.....................................................................!'

2.*. Instalando o a%ente em ambientes =indo>s..................................................................!'


2.*.1. 7xecutando o a%ente como ser/i"o........................................................................................$-

2.+. Instala"#o do a%ente Zapcat para ?@oss.........................................................................$2


2.+.1. )bten"#o do bin,rio................................................................................................................$2 2.+.2. 1eploAment.............................................................................................................................$2 2.+.3. )p".es de inicialiBa"#o do ?@oss............................................................................................$3 2.+.!. <iberando o fire>all para acesso ao Zapcat...........................................................................$$

2.6. 5estando o acesso /ia CMP...........................................................................................$$


2.6.1. Conceitos de CMP.................................................................................................................$'

-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.2. :erenciamento de usu,rios.............................................................................................**


3.2.1. Cadastrando os usu,rios do <13P no Zabbix........................................................................+1

3.3. Meios de alertas...............................................................................................................+3


3.3.1. Correio eletr&nico...................................................................................................................+! 3.3.2. Mensa%ens instant(neas.........................................................................................................+! 3.3.3. 3pontando os alertas aos usu,rios.........................................................................................+$ 3.3.!. @oas pr,ticas com Media tApes..............................................................................................+*

3.!. Dosts, host %roups e templates.......................................................................................+*


3.!.1. 5emplates para o caso de estudo............................................................................................++ 3.!.2. 9nculo entre templates..........................................................................................................63.!.3. @acGup dos templates.............................................................................................................61 3.!.!. Dosts........................................................................................................................................61 3.!.$. :erenciando os Dost :roups..................................................................................................62 3.!.'. Criando um no/o host.............................................................................................................63 3.!.*. FaBendo bacGup dos hosts......................................................................................................6$ 3.!.+. Confi%urando uma permiss#o de acesso................................................................................6$ 3.!.6. 7xerccios sobre usu,rios, hosts, %rupos e permiss.es.........................................................6*

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

3.'. 5emplates, applications e items....................................................................................11!


3.'.1. Criando um 3pplication e um Item dentro de um template................................................11$ 3.'.2. Interdepend2ncia de templates............................................................................................11+

3.*. 3ssociando os templates aos hosts................................................................................12-

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

!.3. Checando disponibilidade /ia protocolo ICMP.............................................................13+


!.3.1. Como funciona o pin% ICMP.................................................................................................13+ !.3.2. 9isualiBando o pin% ICMP no Front end...............................................................................136 !.3.3. Criando um %atilho de parada de host.................................................................................1!1 !.3.!. <idando com os e/entos........................................................................................................1!' !.3.$. Criando uma action para en/io de alerta.............................................................................1$!.3.'. 7xerccios..............................................................................................................................1$3 !.3.*. @oas pr,ticas com tri%%ers...................................................................................................1$!

!.!. Checa%em %enHrica de portas e ser/i"os......................................................................1$'


!.!.1. Conex.es 5CP e handshaGes................................................................................................1$* !.!.2. Criando um teste de ser/i"o /ia /arredura de portas.........................................................1$6 !.!.3. 7xerccio sobre checa%em de portas....................................................................................1'2

!.$. 9alida"#o de p,%inas =7@.............................................................................................1'3


!.$.1. 1isponibilidade do site..........................................................................................................1'3 !.$.2. 7xerccios..............................................................................................................................1'+

!.'. Checando disponibilidade /ia a%entes..........................................................................1'6


!.'.1. Checando se o a%ente esta operacional...............................................................................1'6 !.'.2. Criando um tri%%er com a fun"#o nodataIJ..........................................................................1*1 !.'.3. 7xerccios..............................................................................................................................1*$

!.*. 5empo onEline e Kltima inicialiBa"#o do .)..................................................................1*$


!.*.1. 5ri%%er para alerta de reinicialiBa"#o..................................................................................1+!.*.2. 7xerccios..............................................................................................................................1+1

!.+. Checando ser/i"os pelo a%ente.....................................................................................1+1


!.+.1. 9erificando os processos ati/os na mem0ria........................................................................1+1 !.+.2. Checa%em de portas e ser/i"os localmente /ia a%ente.......................................................1+$ !.+.3. 7xerccios..............................................................................................................................16!.+.!. 9erificando ser/i"os no =indo>s.........................................................................................16!.+.$. Lestabelecendo ser/i"os offline /ia Zabbix.........................................................................16+ !.+.'. 7xerccios..............................................................................................................................2-2

!.6. Medindo a MsaKdeN de sua rede.....................................................................................2-2


!.6.1. <at2ncia de rede....................................................................................................................2-2 !.6.2. Macro para o limiar da lat2ncia de rede..............................................................................2-!

-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

3nexo II Performance de ser/i"os.......................................................................................................233


Introdu"#o.......................................................................................................................................233 Post%re O<......................................................................................................................................233 ?@oss................................................................................................................................................23! 3pache.............................................................................................................................................23!

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 )/er/ie> exibindo os ser/i"os de

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

Captulo 1 Conhecendo o Zabbix - 11


Fi%ura !.+$8 3ti/ando o ser/i"o de telnet............................................................................161 Fi%ura !.+'8 Processo do telnet na mem0ria.......................................................................162 Fi%ura !.+*8 <iberando o telnet no fire>all do =indo>s I1;3J............................................16! Fi%ura !.++8 <iberando o telnet no fire>all do =indo>s I2;3J............................................16! Fi%ura !.+68 <iberando o telnet no fire>all do =indo>s I3;3J............................................16$ Fi%ura !.6-8 item para monitorar ser/i"os =indo>s...........................................................16* Fi%ura !.618 7stado do ser/i"o 5elnet no )/er/ie>............................................................16* Fi%ura !.628 3ction para parada do Fi%ura !.638 3ction para parada do Fi%ura !.6!8 3ction para parada do D I1;3J.....................................................................2-D I2;3J.....................................................................2-D I3;3J.....................................................................2-1 D.......................2-1

Fi%ura !.6$8 Comando remoto para o action de parada do ser/i"o de

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'

Captulo 1 Conhecendo o Zabbix - 12

Captulo 1 Conhecendo o Zabbix

)@?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.

Captulo 1 Conhecendo o Zabbix - 13

1.1. Conhecendo a ferramenta


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

1.2. Comunidades e forums


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

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 14

Captulo 2 Criando uma Infraestrutura de Monitoramento Parte 1, Sistema

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 15

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.

2.2. Configurando os componentes de recebimento de alertas


Por padro o Zabbix possui quatro formas de alertas embutidos dentro de seu sistema: emails, cliente jabber, SMS via modem GSM e SMS via servi o de torpedos. De todos, o ltimo no muito til aqui no Brasil, devido seguir os padres das operadoras no Canad e Estados Unidos. Dos restantes vamos ver o funcionamento do sistema de correios e de jabber dentro da sala de aula, devido a natureza do hardware, a emula o das mquinas virtuais do cenrio e custos de mensagem no abordamos o uso dentro do nosso cen rio com SMS. No entanto temos um apndice que cobre o sistema de SMS com throubleshooting e dicas de configura o. Receber mensagens por cliente de e-mail a maneira mais tradicional de todas. Para caso de estudos precisamos configurar o Evolution, cliente de e-mail padr o do Gnome. Abra o Evolution pelo menu principal do Gnome e siga os passos descritos a seguir.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 16

2.2.1. Configurando o cliente de correio eletrnico

Figura 2.1: Configurao do evolution 1/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 17

Figura 2.2: Configurao do evolution 2/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 18

Figura 2.): Configurao do evolution )/1!"

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 19

Figura 2.&: Configurao do evolution &/1!"

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 20

Figura 2.*: Configurao do evolution */1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 21

Figura 2.': Configurao do evolution '/1!"

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 22

Figura 2.+: Configurao do evolution +/1!"

1) Nome: Por final, configure um nome para esta conta. Isto usado apenas para exibio no Evolution.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 23

Figura 2.(: Configurao do evolution (/1!"

Esta apenas uma tela de finalizao, clique em Aplicar.

Figura 2.,: Configurao do evolution ,/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 24

Figura 2.1!: Configurao do evolution 1!/1!"

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.

2.2.2. Mensagens instantneas


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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 25

Figura 2.11: /ela de boa# vinda# do .idgin

Na tela de boas vindas clique em Adicionar.

Figura 2.12: Configurando uma conta -abber no .idgin

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 26

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.

Figura 2.1): 0efinindo o u#o de criptografia

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 27

2.3. Obtendo os fontes do Zabbix


Antes de comear a trabalhar com as diversas partes bsicas da instalao, precisamos baixar o cdigo fonte do Zabbix. Voc sempre pode faz-lo atravs da URL http://www.zabbix.com/download.php, mas o comando abaixo j vai colocar o pacote de fontes no local apropriado dentro da mquina virtual zabbixsrv. # cd /usr/src # wget http://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest %20Stable/1.8.4/zabbix-1.8.4.tar.gz # tar xf zabbix-1.8.4.tar.gz Voc tambm pode escolher outros mirrors e trocar o endereo acima se desejar.

2.4. Preparando o banco de dados


O Zabbix no utiliza recursos como o RRDTools para armazenar dados, ele faz uso apenas de um SGBD ou de um banco de dados mais simpl rio (como o sqlite) para armazenar configuraes, hosts, templates, histrico, etc. Por isso precisamos selecionar um dos bancos nativos ou usar ODBC (este ltimo no recomendado). No caso deste curso elegemos o PostgreSQL, um SGBD livre e de alta performance capaz de manipular uma grande quantidade de dados. Apesar da maioria das instalaes de Zabbix estar em MySQL recomendamos fortemente que seja usado o PostgreSQL pois sua robustez se mostrou mais adequada aos tipos de dados que o Zabbix manipula. Embora no parea a princpio, o banco de dados do Zabbix de extrema valia para a empresa, pois ele contm todo o histrico de funcionamento de sua infraestrutura e atrav s dele podemos coletar SLAs e informaes de capacity plan. recomendado tambm que seu banco de dados possua um plano de backups regular via PITR Point in Time Recovery.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 28

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

# yum install postgresql84-server

2.4.2. Criando o usurio e o banco


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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 29

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.

2.4.3. Carga inicial


Agora vamos fazer a carga inicial do banco carregando os esquemas, os dados mais bsicos. # su - postgres $ cd /usr/src/zabbix-1.8.4/create/schema $ cat postgresql.sql | psql zabbixdb $ cd ../data $ cat data.sql | psql zabbixdb No faa a carga do arquivos de imagens, iremos abordar como colocar figuras personalizadas e de melhor definio mais a frente, neste captulo.

2.4.4. Concedendo as permisses necessrias ao usurio


Agora o momento de conceder as permisses de acesso nas tabelas. O usurio Zabbix precisa de permisses de SELECT, INSERT, UPDATE e DELETE apenas. Com a sequ ncia de comandos abaixo voc conseguir ativar todas as permisses necessrias. Embora este processo seja mais complicado do que fazer deixar o usu rio zabbix como dono do banco ele muito mais seguro e deve ser utilizado assim em produ o

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

|| tablename || ' TO zabbix ;' FROM pg_tables;


5

postgres=# \o postgres=# \i /tmp/grantzabbix.sql postgres=# \q

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

2.5. Instalao do servidor Zabbix via cdigo fonte


Em alguns casos a distribuio Gnu/Linux que voc escolher pode possuir em seu repositrio uma verso satisfatria do Zabbix disponvel. Se for este o caso, timo! Simplesmente instale o pacote e comece a configurar. No entanto isso nem sempre verdade e pode ser necessrio uma verso mais recente (devido a recursos novos, etc.) na sua soluo de monitoramento. Para suprir esta necessidade preciso compilar o Zabbix a partir de seu cdigo fonte. Esta sesso toda dedicada ao processo de criar os binrios, cobrindo quais dependncias devem ser instaladas e como escolher os recursos a serem compilados. Via de regra se algum tipo de recurso no se mostrar necessrio a princpio no o ative, isso gera binrios mais leves (com menos cdigo embutido) e alivia o consumo de mem ria em servidores

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>ithEiodbc EE>ithEunixodbc EE>ithEnetEsnmp EE>ithEucdEsnmp EE>ithEssh2

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.

Tabela 1: Opes de compilao do Zabbix

2.5.1. Dependncias de compilao.


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

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!

2.5.2. Compilando e instalando


Agora que o configure chegou ao ponto final e todas as depend ncias foram resolvidas hora de executar a compilao com o comando make. Na verdade o make no um compilador, ele apenas chama os comandos necess rios para construir os binrio atravs de um arquivo Makefile que foi gerado pelo configure. Execute conforme abaixo, os comandos. No final o comando ln ir criar um link simblico para /opt/zabbix. Isso uma boa prtica para ajudar a trocar as verses do Zabbix durante uma migrao, apontando o link para a pasta com os novos bin rios, enquanto mantemos os anteriores para o caso de um downgrade emergencial. Voc pode substituir o -j2 por outro nmero para acelerar a sua compilao se voc tiver mltiplos cores. Uma regra geral 2xCores+1. # make -j2 # make install # ln -svf /opt/zabbix-1.8.4 /opt/zabbix # tree /opt/zabbix O comando tree vai mostrar a hierarquia de diret rios e arquivos abaixo do caminho da instalao. A tabela abaixo tem o descritivo de cada um deles. Binrio BabbixS%et Funcionalidade Rtilit,rio para realiBar consultas nos a%entes /ia linha de comando. Muito Ktil e n0s o utiliBaremos extensamente durante o curso.

BabbixSsender

Rtilit,rio para en/io de MtrapsN para o ser/idor do Zabbix. V necess,rio criar um

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

2.5.3. Servios de rede


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

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.

2.5.4. Arquivos de configurao


Os arquivos de configurao do Zabbix acompanham os seus fontes, mas a 4Linux preparou um conjunto de arquivos para uso em produ o com uma organizao melhorada. Ao invs de simplesmente colocar todas as configura es em um nico arquivo, os parmetros foram distribudos em grupos lgicos separados em vrios arquivos e diretrios. O Zabbix por padro procura pelos seus arquivos em /etc/zabbix, a partir dos arquivos principais (zabbix_server.conf e zabbix_agentd.conf) outros arquivos foram chamados e inseridos na configurao. A tabela abaixo demonstra como ficaram organizados os diret rios e seu contedo.

Diretrio ou arquivo ;etc;Babbix;a%ent.d

Descrio 1iret0rio para confi%ura".es extras do

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

;etc;Babbix;ser/er.d;database.conf ;etc;Babbix;ser/er.d;lo%s.conf ;etc;Babbix;ser/er.d;net>orG.conf ;etc;Babbix;ser/er.d;process.conf

;etc;Babbix;ser/er.d;proxA.conf ;etc;Babbix;BabbixSa%entd.conf ;etc;Babbix;BabbixSser/er.conf Tabela 3: r!uivos e diret"rios de con#igurao

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

# . /etc/profile # zabbix_get --help # zabbix_agentd --help

2.5.5. Testando sua instalao


Utilize o manual do zabbix_agentd para descobrir como listar as m tricas suportadas pelo ambiente e como testar um delas individualmente. Depois inicie o agente, veja o conte do do arquivo de logs e use os comandos ps e netstat para ver quais os processos que ele iniciou e em quais portas eles se vincularam. Depois do trmino com o agente vamos configurar o servidor conforme os passos a seguir e realizar o mesmo procedimento de inicializao e pesquisa que no agente.

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 41

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

2.5.6. Scripts de boot


No CD temos alguns scripts de boot prontos para uso no Debian, copie os arquivos boot/debian/server-bootscripts.tar.bz2 e boot/debian/agent-bootscripts.tar.bz2 para o /tmp e descompacte-os na raiz. # cd / # tar xvf /tmp/server-bootscripts.tar.bz2 # tar xvf /tmp/agent-bootscripts.tar.bz2 Teste a instalao dos scripts. # /etc/init.d/zabbix-server start # /etc/init.d/zabbix-agent start Por fim, coloque os scripts no boot da mquina virtual. # update-rc.d zabbix-agent defaults # update-rc.d zabbix-server defaults

2.6. Instalao do agente Zabbix via compilao


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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 42

2.6.1. Exerccio: compile e instale o agente nas VM com Gnu/Linux


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

2.6.2. Acesso ao agente pelo servidor


Agora que o agente esta instalado e rodando preciso realizar algumas configuraes bsicas para que ele permita o acesso vindo do servidor. Primeiro vamos verificar se suas configuraes de porta e rede esto de acordo, usando o comando netstat para listar as portas que ele esta escutando. # netstat -lntp | grep zabbix tcp 0 0 127.0.0.1:10050 0.0.0.0:* OUA 592/zabbix_agentd A sada do comando mostra que o daemon esta apenas vinculado ao endere o localhost da mquina, vamos modificar seu arquivo de configura o e reinici-lo. Identifique qual o IP local da mquina que pertence a DMZ (rede 172.27.0.0/24) e substitua 127.0.0.1 por ele dentro do arquivo /etc/zabbix/agent.d/networks.conf no parmetro ListenIP. # vim /etc/zabbix/agent.d/network.conf
1

# 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

o qual esta designado a enviar dados conforme a tabela de oteamento.


11

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 43


12

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 44

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

# # Checagens ativas so teis quando o Firewall no permite que o servidor de monitoramento

alcance o agente via rede ou quando se utiliza um sistema de 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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 46

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.

2.6.3. Exerccio sobre instalao de agente em Linux


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

2.7. Instalando o agente em ambientes Windows


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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 47

Figura 2.1&: 5aixando o agente do 3abbix no 6indow#

Primeiro 2.14.

preciso

baixar

os

executveis

pelo

endereo

http://www.zabbix.com/downloads.php, localize o link de binrios para Windows como na Figura

Clique no link de download e escolha um local para colocar o arquivo compactado, no exemplo da apostila ele foi colocado em C:\Downloads. Abra a pasta em que o arquivo foi salvo e descompacte o arquivo. Dentro dele voc encontrar outras duas pastas para arquiteturas de 32 e 64 bits. No nosso caso iremos usar os de 32 bits.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 48

Figura 2.1*: 7n#talando o# execut8vei# no 6indow#

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.

Figura 2.1': 0iret1rio de configurao do 3abbix no 6indow#

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 49

Figura 2.1+: Configurando o agente no 6indow#

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 50

Figura 2.1(: 0e#blo9ueando o agente no 6indow#

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

2.7.1. Executando o agente como servio


Instalar o agente do Zabbix como servio muito simples. No prompt de comando onde voc o testou pressione CTRL+C para cancelar a execu o do programa (demora alguns segundos). Quando o prompt retornar digite: zabbix_agentd.exe -c c:\Zabbix\conf\zabbix_agentd.conf --install Duas mensagens iro aparecer indicando a instalao do agente como Service e Event Source. Para conferir se o agente esta mesmo no ar abra o Painel de Controle Ferramentas Administrativas Servios e procure pelo servio chamado Zabbix Agent.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 51

Figura 2.1,: : agente do 3abbix #endo executado como #ervio autom8tico.

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 52

2.8. Instalao do agente Zapcat para !oss


O Zabbix possui alguns agentes programados por terceiros al m do nativo que acompanha os fontes padro. Um destes agentes o Zapcat, que capaz de monitorar atravs de um deploy, servidores JBoss e Tomcat. No nosso cenrio temos um servidor JBoss na mquina virtual Application que ser monitorado pelo Zapcat. O resto desta sesso dedicado instalao e configurao deste agente. O Zapcat na verdade um JMX Bridge, ele capaz de coletar os MBeans JMX do servidor e exp-lo para o Zabbix via Zabbix API. Diferente do agente, ele escuta na porta 10051 (mas isso configurvel) e requer que outro host a parte seja criado dentro da interface do Zabbix (veremos isso mais adiante).

2.8.1. Obteno do binrio


Siga o procedimento abaixo para obter o bin rio do zapcat. Voc ir baix-lo do Source Forge. # cd /var/tmp # wget http://ufpr.dl.sourceforge.net/project/zapcat/zapcat/zapcat-1.2/zapcat-1.2.zip # unzip zapcat-1.2.zip # cd zapcat-1.2 # ls bin build.xml COPYING lib openfire README samples src templates webapp zapcat1.2.jar zapcat-1.2.war zapcat-openfire-1.2.jar Note que o zapcat vem na forma de um .war (aplica o web java) e .jar (applicativo java). Vamos nos ater apenas ao modo web.

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 53

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

2.8.3. Opes de inicializao do JBoss


O JBoss precisa de trs opes para permitir que o Zapcat possa ler todos os seus MBeans ( O Tomcat s precisa da primeira). Edite o arquivo de configura es do JBoss e e acrescente ao final dele o seguinte contedo. # vim /opt/jboss/bin/run.conf
1

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver" JAVA_OPTS="$JAVA_OPTS

-Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImp l"
4

JAVA_OPTS="$JAVA_OPTS -Dorg.kjkoster.zapcat.zabbix.port=10052

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 54


5

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

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

Figura 2.2!: /ela de entrada do 3apcat

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 55

2.8.4. Liberando o firewall para acesso ao Zapcat


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

2.9. Testando o acesso via SNMP


Uma das mquinas virtuais representa um ativo de rede, um switch para ser mais exato. Nele nenhum agente pode ser instalado e vamos usar o SNMP para realizar o monitoramento. Para testar se o acesso ao SNMP esta OK, instale as ferramentas de snmp no Debian. # aptitude install snmp snmp-mibs-downloader Libere o acesso a todas as MIBs do seu sistema. # vim /etc/snmp/snmp.conf
1

# # 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/

2.9.1. Conceitos de SNMP


O SNMP um protocolo de monitoramento bem difundido, principalmente entre equipamentos de rede. A grande maioria do hardware embarcado para rede suporta algum tipo de verso do mesmo. A mais comum a verso 2, mas a verso 1 (considerada obsoleta) e a verso 3 (a mais segura) tem uma incidncia regular. Se voc tiver que optar por uma delas, sempre tente escolher a mais recente possvel. Apesar de adicionar uma certa complexidade, a vers o 3 ajuda em muito na segurana pois trabalha com ACLs por autentica o e criptografia. No curso veremos a verso 2 que mais comum de se encontrar nos equipamentos (opo -v2c no comando usado anteriormente), mas a diferena de trabalho entre elas bem pequena (praticamente alguns campos a mais na verso 3). Todas as trs verses trabalham com MIBS, arquivos texto com defini es de como coletar as OIDS, as strings de acesso das mtricas. Uma OID pode ser representada por um texto como DISMAN-EVENT-MIB::sysUpTimeInstance ou por uma representao numrica como .

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.

2.10. Instalando o servidor Zabbix via pacote


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

O CentOS no tem pacotes no seu repositrio.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 58

2.11. Preparando o servidor web


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

2.11.1. Instalao do Apache e PHP5


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

2.11.2. Configurao do Virtual Host


Para criar uma configurao de host virtual no Apache para o Zabbix, vamos primeiro criar um diretrio e copiar o contedo da pasta front ends do seu diretrio de fontes. # mkdir -p /var/lib/zabbix/frontend # cd /usr/src/zabbix-1.8.4/frontends/php/ # cp * /var/lib/zabbix/frontend/ -a Para assegurar que o apache tenha acesso apenas de leitura a pasta e seus arquivos execute o procedimento abaixo. # cd /var/lib/zabbix/ # find frontend -type d -exec chmod 0750 {} \; # find frontend -type f -exec chmod 0640 {} \; # chown root.www-data frontend -R # chmod 0770 frontend/conf

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 59

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 60


24 25

</VirtualHost>

1) DocumentRoot precisa apontar para o diretrio onde instalamos o front end. 2) Em ErrorLog, vamos direcionar os logs de erros para um arquivo 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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 61

2.11.3. Configurando o front end

Figura 2.21: Configurao do front end 1/1!"

A primeira tela apenas uma mensagem de boas vindas. Clique em Next para comear.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 62

Figura 2.22: Configurao do front end 2/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 63

Figura 2.2): Configurao do front end )/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 64

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.

maxSexecutionStime maxSinputStime memorASlimit postSmaxSsiBe uploadSmaxSfilesiBe

Depois de alterar e salvar o arquivo, reinicie o apache. # /etc/init.d/apache2 reload Ento clique no boto Retry. A tela que ser recarregada ir ser similar a abaixo.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 65

Figura 2.2&: Configurao do front end &/1!"

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 66

Figura 2.2*: Configurao do front end */1!"

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.

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 67

Figura 2.2': Configurao do front end '/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 68

Figura 2.2+: Configurao do front end +/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 69

Figura 2.2(: Configurao do front end (/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 70

Figura 2.2,: Configurao do front end ,/1!"

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

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 71

Agora pressione Next para ir para a prxima tela.

Figura 2.)!: Configurao do front end 1!/1!"

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

Figura 2.)1: /ela inicial do 3abbix ap1# o primeiro login

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 72

2.12. Exerccios de reviso


1) possvel colocar o agente do Zabbix para ser executado no Windows como servi o? Como? ________________________________________________________________________ ________________________________________________________________________ 2) Quais os possveis backends de bancos de dados que o servidor do Zabbix suporta? ________________________________________________________________________ ________________________________________________________________________ 3) possvel instalar a Interface do front end em qualquer servidor que suporte PHP? ________________________________________________________________________ ________________________________________________________________________ 4) Com o snmpwalk podemos listar vrias partes ou mesmo todas as mtricas SNMP. Qual o comando voc usaria para pegar apenas uma mtrica? ________________________________________________________________________ ________________________________________________________________________ 5) Realize uma breve pesquisa na Internet e relacione todos os agentes de Zabbix que voc encontrar. ________________________________________________________________________ ________________________________________________________________________ 6) Com o zabbix_get, colete via terminal de console o valor das chaves abaixo dos hosts win2003 e application: 6.1) 6.2) 6.3) agent.version: system.cpu.num: vm.memory.size: _________________________________________ _________________________________________ _________________________________________

Captulo 2 Criando uma n!rae"trutura de #onitoramento $ %arte 1& 'i"tema - 73

7) (Desafio) Se voc tentar usar o zabbix_get para coletar dados do Zapcat ver que ele vai falhar retornando um valor no suportado. Voc consegue descobrir como, via linha de comando poderamos coletar os valores deste agente? Se sim crie um pequeno script para fazer a coleta passando para ele host, porta e chave. ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 74

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

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 75

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

3.1.1. Organizao do front end


OK, voc colocou no ar toda a infraestrutura da solu o de monitoramento, agora um web site com alguns menus esta diante de voc. E agora? Bom, o primeiro passo entender como os menus do Zabbix trabalham e aprender a encontrar as opes que voc deseja trabalhar. Esta interface extremamente poderosa e ao mesmo tempo simples de se operar. No incio provvel que haja uma certa confuso na distribuio das janelas e funes, mas acredite, ela foi desenvolvida para ser fcil de usar aps aprender os entremeios dos menus. Aproveite e passeie com o mouse nos menus. Note que n o necessrio clicar em nenhum dos menus superiores, somente a passagem do ponteiro j exibir as opes dos submenus. Nestes sim necessrio clicar para abrir a tela desejada! Na Tabela abaixo h uma descrio superficial do que cada item de menu faz. "enu Monitoring Dashboard Overview Web Latest data Funo Menu para acesso ao monitoramento, depois que o Zabbix estiver completamente configurado este o menu mais acessado de todos. Tela de centralizao das informaes de monitoramento. Permite a visualizao global ou por grupos das mtricas monitoradas e dos alarmes. Visualizao do monitoramento dos servios de web (no confundir com monitoramento do servidor web). Mostra os ltimos dados (e quando eles foram coletados) do monitoramento de um host.

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

Events Graphs Screens Maps Discovery IT Services

Inventory Hosts Status do Zabbix Avaliability Report Report

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.

Configuration Host groups Templates Hosts Maintenance Web Actions

Screens Slides Maps

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.

3.2. Gerenciamento de usurios


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

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 78

Figura ).1: ;erenciamento de u#u8rio# do 3abbix

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 79

Figura ).2: <ditando o =dmin

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 80

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.

Figura ).): Configurando a autenticao >0=.

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 81

3.2.1. Cadastrando os usurios do LDAP no Zabbix


Apesar do Zabbix estar apontando para o LDAP e o Admin estar funcionando preciso mapear quais usurios da rvore de diretrios para dentro do front end. Se voc no o fizer, no ser capaz de logar com um determinado usurio. No cenrio que estamos usando temos alguns usurios descritos na Tabela que devem ser adicionados e alguns novos grupos de usurios que iro organizar alguns deles. #surio sAsadmin >inadmin Ta/aen% dba Descrio 3dministrador sistemas RCIY $rupos de Cet>orG 3dministrators, RCIY 3dministrators, =eb 3dministrators =indo>s

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.

Figura ).&: ?ovo ;rupo -5o## =dmini#trator#

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 82

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.

Figura ).*: ?ovo u#u8rio @$#admin

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 83

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.

3.3. Meios de alertas


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

Figura ).': Aedia /$pe#

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.

3.3.1. Correio eletrnico


Agora edite o item de e-mail, a tela da Figura 3.7 ser exibida. Preencha os campos conforme a mesma. Description um campo descritivo apenas e no tem efeitos na configurao a no ser identificar este Media type na interface; SMTP Server aponta para o nome/IP do servidor de e-mails (porta TCP/25); SMTP helo usado na mensagem inicial trocada entre Zabbix e servidores, aconselhvel colocar o domnio da prpria empresa; SMTP e-mail o endereo de remetente que o Zabbix usar para enviar a mensagem.

Figura ).+: Configurando o 3abbix para enviar e2mail#

Clique em Save quando terminar.

3.3.2. Mensagens instantneas


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

Figura ).(: Configurando o 3abbix para enviar men#agen# in#tantBnea#

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 85

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.

3.3.3. Apontando os alertas aos usurios


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

Figura ).,: Aedia /$pe# de um u#u8rio #em apontamento#

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

Figura ).1!: =dicionando o Aedia /$pe <mail a um u#u8rio

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.

Figura ).11: =dicionando um media t$pe -abber a um u#u8rio

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

Figura ).12: Aedia /$pe# de um u#u8rio ap1# o cada#tro

Salve e repita para todos os usurios agora.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 87

3.3.4. Boas prticas com Media types


H algumas recomendaes a serem feitas quando se trabalha com alertas de sistemas monitorados. 1) Mantenha mais de um meio de alerta para sistemas cr ticos. Isso pode ser feito mantendo vrios servios de mesmo tipo (dois servidores de e-mail, dois modems SMS, etc.) ou melhor, fazendo com que ele seja enviado por v rias mdias (SMS, Jabber e e-mail, todos aos mesmo tempo). 2) Escolha os Media Types de maneira lgica. No adianta enviar alertas via Jabber se os tcnicos raramente esto on-line do sistema de mensagens instant neas. Tambm no adianta enviar um e-mail de desastre as trs da madrugada quando ningum esta olhando e-mails. 3) Procure deixar alertas que precisam de resposta imediata em meios que alcan am o usurio com facilidade. SMS mais clssico, mas o autor j implementou um que se vinculava ao asterisk e fazia uma ligao descrevendo o problema (como uma URA ativa). 4) Planeje! Faa escalas entre os funcionrios, evite dar alta prioridade a alertas triviais e cuidado com os falsos positivos, eles podem gerar o problema do lobo. O problema do lobo aquela histria do menino pastor que gritava LOBO! LOBO! na vila onde morava e todos iam correr ao seu socorro, para descobrir que era apenas uma brincadeira. Aps vrios episdios, os aldees comearam a ignorar os apelos falsos do garoto, e justo neste dia um lobo apareceu de verdade. Receber alertas seguidos vai treinar o nosso c rebro a ignor-los se eles se comprovarem falsos positivos. Veremos ao longo do curso como diminuir os falsos positivos.

3.4. Hosts, host groups e templates


Nesta sesso iremos abordar os conceitos mais fundamentais de monitoramento do Zabbix: hosts, host groups e templates.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 88

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.

3.4.1. Templates para o caso de estudo


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

Figura ).1): @elecionando todo# o# template# prC cada#trado#

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

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 89

Figura ).1&: <xcluindo o# template# #elecionado#

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.

Figura ).1*: Criando um novo template

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

Figura ).1': Cada#trando um novo template

1) No campo Name ser colocado o nome do novo template. Que ser 4Linux ICMP base. Este template conter as mtricas mais bsicas de testes por ICMP.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 90

2) No campo Groups, quadro In Groups o grupo Templates deve ficar selecionado. Note que os grupos para hosts so misturados com os grupos de templates. Voc pode criar um novo grupo usando o campo New group sem a necessidade de faz-lo na tela de grupos de hosts.

3.4.2. Vnculo entre templates


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

Figura ).1+: Dinculando um template a outro

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

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 91

3.4.3. Backup dos templates


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

Figura ).1(: <xportando um template

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 92

Figura ).1,: >a$out do# ho#t# a #erem monitorado#

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

3.4.5. Gerenciando os Host Groups


Um Host group tem duas funes dentro do Zabbix: a primeira e mais bvia manter os hosts organizados de tal forma que seja mais f cil localizar ou exibir um grupo de servidores com servios correlacionados. A segunda o sistema de permissionamento de acesso aos hosts que ser trabalhado ao longo do curso. Para exemplificar a criao dos hosts vamos criar apenas um deles, que conter os equipamentos de rede. Clique no menu Configuration Host Groups, e clique no boto Create Group conforme a Figura .

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 93

Figura ).2!: Como criar um novo grupo de ho#t#

A seguinte tela ir surgir.

Figura ).21: ?ovo ho#t group

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

3.4.6. Criando um novo host


Agora que geramos um host group, vamos criar os hosts, acesse Configuration Hosts, algo similar a Figura 3.22 ir aparecer. Como dito anteriormente a lista de hosts j possui o prprio servidor do Zabbix pr-cadastrado.

Figura ).22: Eo#t prC2cada#trado no front end na tela de Eo#t#

Para criar um novo host para o host Presentation da infraestrutura clique no bot o Create Host (Figura 3.23).

Figura ).2): 5oto para criar um ho#t

E preencha os dados conforme a figura a seguir.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 94

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 95

Crie todos os hosts do cenrio conforme indicado na Figura 3.24.

Figura ).2&: /odo# o# ho#t# do cen8rio cada#trado#

10)

3.4.7. Fazendo backup dos hosts


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

3.4.8. Configurando uma permisso de acesso


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

Figura ).2*: Concedendo permi##Fe# de ace##o 1/&"

1)

Selecione User groups se j no estiver nesta opo.

2) Clique no nome do grupo Unix administrators.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 96

Figura ).2': Concedendo permi##Fe# de ace##o 2/&"

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.

Figura ).2+: Concedendo permi##Fe# de ace##o )/&"

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 97

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

Figura ).2(: Concedendo permi##Fe# de ace##o &/&"

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

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

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.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 98

#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

read onlA read onlA readE >rite

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.

3.5.1. Importando imagens para o mapa


Antes de criar um mapa preciso definir as figurar que faro parte de seu desenho. Anteriormente ns pulamos o dump das figuras padro do Zabbix, isso foi proposital pois iremos inserir figuras de melhor qualidade dentro do front end. O conjunto de figuras que utilizaremos esta dentro do f rum do Zabbix atravs do link http://www.zabbix.com/wiki/_media/contrib/zabbix_icons_set_generic.zip. Acesse-o e baixe o arquivo para uma pasta em se computador (no necessrio envi-las mquina destinada ao servidor, todo o procedimento de insero ser feito pelo front end). Depois descompacte o arquivo para ter acesso s imagens.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 99

Acesse o menu Administration General, e escolha na caixa de opes a esquerda. A opo Images.

Figura ).2,: /ela inicial da# imagen#

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.

Figura ).)!: 7mportando uma nova imagem

1) Nome da imagem a ser inserido, este nome precisa ser nico. No primeiro caso coloque o valor Server On. 2) Podemos enviar cones (Icons) ou fundo de telas (Background) ao front end. cones so usados nos elementos como hosts, triggers e imagens 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

2cone !+S%Snet>orGSon.pn% !+S%Ssr/Sto>erSdisable.pn% !+S%Ssr/Sto>erSoff.pn% !+S%Ssr/Sto>erSunGno>n.pn% !+S%Ss>itchSdisable.pn% !+S%Ss>itchSoff.pn% !+S%Ss>itchSon.pn% !+S%Ss>itchSunGno>n.pn%

Com isso todas as imagens necessrias para o primeiro estgio do mapa foram criadas.

3.5.2. Criando um mapa


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

Figura ).)1: 7magem do primeiro mapa a #er criado

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.

Figura ).)2: Aapa# prC2cada#trado#

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.

Figura ).)): ?ovo mapa

1) O campo Name indica o nome do novo mapa, no caso desta prtica dirigida coloque Infraestrutura Curso 468. 2) A largura em pixels do mapa, 600 um bom tamanho para o nosso caso. 3) A altura do mapa, 500 um bom tamanho para o nosso curso. 4) No campo Background Image podemos escolher uma figura de fundo para este mapa. Vamos deixar o mapa sem figura de fundo.

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

3.5.3. Adicionando um elemento


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

Figura ).)&: 5arra de ferramenta# para edio de mapa#

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.

Figura ).)*: Criando um novo elemento

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

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 104

Figura ).)': .o#icionando um novo elemento com o mou#e

Verses anteriores do Zabbix no eram capazes de usar Drag & Drop. Tudo tinha que ser feito com coordenadas manuais.

3.5.4. Editando um elemento do mapa


Uma vez que o cone esteja posicionado, possvel editar os seus atributos conforme os passos descritos a seguir. Um elemento na tela pode ser de v rios tipos, ele pode por exemplo representar uma imagem esttica, um host ou um gatilho. Quando o cone representa um elemento dinmico ele vai reagir a mudanas dos estados de qualquer um dos triggers associados visualmente. Como j foi dito antes isso extremamente importante para acompanhamentos visuais, especialmente se for utilizado tel es ou monitores numa sala de acompanhamento de incidentes.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 105

Figura ).)+: <ditando um elemento na tela

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

3.5.5. Salvando o mapa


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

Figura ).)(: 5oto @ave do mapa.

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

Figura ).),: 0ialogo de #alvar mapa

3.5.6. Adicionando os outros elementos


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

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 107

Figura ).&!: :utro# elemento# gr8fico# a #erem adicionado#

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

Figura ).&1: <ditando o elemento 9ue repre#enta o ho#t .re#entation

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.

Figura ).&2: 0etalhe# do ho#t #witch dentro do mapa

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

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 110

Figura ).&): Eo#t# acre#centado# no mapa

3.5.7. Criando e editando links


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

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 111

3.5.8. Prtica Dirigida

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

Figura ).&*: <ditando a# propriedade# do novo linG

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

Figura ).&': >inG entre o ho#t .re#entation e o @witch

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

3.5.9. Exerccios sobre Mapas

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

Figura ).&+: Aapa final

3.6. Templates, applications e items


1entro dos tempZates temos di/ersos elementos usados para realiBar a coleta e an,lise das mHtricas. Considere um modelo como o cora"#o de seu %erenciamento de monitoramento. 3 Fi%ura 3.!+ mostra 4uais s#o estes elementos. 3cesse 3onfiguration [ 4emplates para che%ar esta tela.

Figura ).&(: /emplate# e #eu# elemento#

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.

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


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

Figura ).&,: Criando um application 1/&"

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

Figura ).*!: Criando um application 2/&"

A tela de New application surgir conforme abaixo.

Figura ).*1: Criando um application )/&"

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

Figura ).*2: Criando um application &/&"

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

Figura ).*): Criando #eu primeiro item 1/)"

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

Figura ).*&: Criando #eu primeiro item 2/)"

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.

Figura ).**: Criando #eu primeiro item )/)"

O resultado final mostrado na Figura 3.55.

3.6.2. Interdependncia de templates


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

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.

Figura ).*': Campo para a##ociao de template#

Clique no boto Add para abrir a tela de templates.

Figura ).*+: /ela para e#colha de template#

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

Figura ).*(: /emplate a##ociado

A Figura 3.58 mostra como a tela ficar. Ela indica que o novo template vinculado ao 4Linux ICMP. Finalmente salve o template.

Figura ).*,: /emplate a##ociado na li#ta de 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

Figura ).'!: 7nter2relao do# template# ba#e

3.7. Associando os templates aos hosts


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

Figura ).'1: =##ociando o template do -5o## ao ho#t -5o## =@ 1/'"

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

Figura ).'2: =##ociando o template do -5o## ao ho#t -5o## =@ 2/'"

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.

Figura ).'&: =##ociando o template do -5o## ao ho#t -5o## =@ &/'"

Voc ver o nome dos templates escolhidos aparecerem neste quadro, conforme a Figura 3.64 demonstra.

Figura ).'*: =##ociando template# a ho#t# */11"

Para finalizar clique em Save.


Figura ).'': =##ociando o template do -5o## ao ho#t -5o## =@ '/'"

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

Figura ).'(: =##ociando um template a mHltiplo# ho#t# #imultaneamente 1/&"

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

Figura ).',: =##ociando um template a mHltiplo# ho#t# #imultaneamente 2/&"

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

Figura ).+!: =##ociando um template a mHltiplo# ho#t# #imultaneamente )/&"

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

Figura ).+1: =##ociando um template a mHltiplo# ho#t# #imultaneamente &/&"

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

Figura ).+2: /odo# o# template# a##ociado# ao# ho#t# do cen8rio

5odos os hosts selecionados est# a%ora associados ao mesmo template.

3.8. Ativando um host


Criamos os templates e hosts, demos permiss.es e montamos um mapa, mas nada esta sendo monitorado ainda. Isso H por4ue temos 4ue habilitar todos os hosts. LealiBar esta tarefa H muito simples.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 124

Figura ).+): Eo#t pre#entation no monitorado

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

Figura ).+&: 0ialogo de confirmao de ativao

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

Figura ).+*: Eo#t pre#entation monitorado

A coluna onde clicamos inicialmente agora deve estar com o link Monitored em verde. Aproveite e ative todos os hosts. Ao invs de ativar um por um. Use o recurso de ativao de todos os hosts simultaneamente ativando Enable selected na caixa de opes abaixo da lista de hosts.

3.8.1. Throubleshooting para itens com problemas


5ecnicamente, com os templates, a instala"#o e a ati/a"#o em ordem, a esta altura o Zabbix estar, coletando dados. Mas se formos atH "onitoring [ Overvie) /eremos 4ue nada aparece. Isso aconteceu por4ue, deliberadamente, um componente da instala"#o foi omitido8 H o item 4ue o criamos dentro do template M &>inux I 7CA.4. ) obTeti/o deste t0pico H Tustamente ensinar a /oc2 como lidar com itens com problemas dentro do Zabbix. empre 4ue suspeitar 4ue uma mHtrica n#o esta funcionando de/idamente, o lu%ar correto para descobrir o 4ue pode estar acontecendo, est, dentro dos itens do host. 9, atH 3onfiguration [ osts e cli4ue sobre um dos nomes dos hosts.

Captulo 3 Criando uma n!rae"trutura de #onitoramento - %arte 2& (ront end - 125

Figura ).+': 7tem no #uportado

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.

Figura ).++: 7tem #uportado e ativo

Captulo 4 #onitoramento )oltado para di"ponibilidade - 128

Captulo 4 Monitoramento voltado para disponibilidade

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 129

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.

4.2. Checagens manual via front end


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 130

Figura &.1: Aenu de Ferramenta# ace##ado pelo mapa

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

Figura &.2: @aJda de um comando ping

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 131

Figura &.): @aJda de um comando 9ue falhou do traceroute

Apesar do comando ter retornado uma sada, ela extremamente inadequada, pois sabemos que os hosts do cenrio esto a 1 ou dois hops (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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 132

4.2.1. Adequando o script de traceroute


O servidor do Zabbix, assim como seu agente, s o executado em forma de daemon e por questes de segurana eles so executados com permisses do usurio 6zabbix (e grupos ao qual esta conta pertena). Este usurio no deve ter permisses de superusurio (conforme sua criao nos captulos anteriores) e sendo assim, somos obrigados a checar se os comandos que colocaremos no front end podem ser executados pelo daemon. Primeiro vamos testar como root o funcionamento do comando. No caso do traceroute a opo para realizar traamento de rotas via ICMP o -I. # traceroute -I win2003 traceroute to win2003 (172.28.0.10), 30 hops max, 60 byte packets 1 gateway.curso468.4linux.com.br (172.27.0.1) 0.954 ms 0.820 ms 0.724 ms 2 172.28.0.10 (172.28.0.10) 1.158 ms 1.066 ms 1.054 ms Perfeito! Via ICMP o traceroute consegue chegar at o destino e mostrar as rotas. Agora vamos tentar como usurio Zabbix. # su zabbix $ traceroute -I win2003 The specified type of tracerouting is allowed for superuser only $ logout # Voc no pensou que seria to fcil, pensou? Como verificado, o usurio no tem permisso de executar o traceroute com ICMP. Isso aconteceu porque somente o usu rio root tem direitos de criar pacotes da camada de rede arbitrariamente. Programas como ping, fping, entre outros tem permisso SUID ativa para garantir que usurios convencionais sejam capazes de executar estes programas. Evite usar SUID para dar permisses de execues aos usurios normais! Isso pode causar falhas de segurana.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 133

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

# Allow members of group sudo to execute any command

Captulo 4 #onitoramento )oltado para di"ponibilidade - 134


20

# (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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 135

Figura &.&: @aJda do traceroute ade9uando a nova nece##idade

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

4.2.2. Criando novos comandos para o menu


Quando as coisas comeam a dar errado e os alertas chegam, voc pode necessitar que usurios de primeiro nvel sem conhecimento profundo de Unix ou Windows, e consequentemente sem acesso aos consoles do servidor, precisem realizar testes. Logo, existir o casos em que seu ambiente demande de vrios scripts a serem executado a partir do servidor via front end. Um exemplo muito comum o de testes de portas de servios TCP. Para exemplificar este caso, vamos criar um script que chama um comand nmap para testar a porta 22/TCP (SSH) dos servidores Gnu/Linux em nosso cen rio. Volte para Administration Scripts.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 136

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 137

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.

Figura &.+: ?ova entrada de menu com o #cript criado

A Figura 4.7 demonstra como o popup ser mostrado. Clique sobre o novo scipt SSH para execut-lo.

Figura &.(: Ke#ultado do comando ativado no ho#t

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 138

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.

4.3. Checando disponibilidade via protocolo ICMP


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

4.3.1. Como funciona o ping ICMP


O ICMP - Internet Control Message Protocol um protocolo da camada de rede do modelo TCP/IP responsvel por trocar mensagens de controle entre os hosts (por exemplo, falhas de rotas).

Captulo 4 #onitoramento )oltado para di"ponibilidade - 139

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

Figura &.,: 0iagrama de comportamento do echo 7CA.

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.

4.3.2. Visualizando o ping ICMP no Front end


Podemos visualizar o resultado dentro da tela de Overview do front end. Acesse Monitoring Overview para exibi-la.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 140

Figura &.1!: Eo#t# ativo# com ping 7CA. em funcionamento

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.

Figura &.11: Lm value map# de e#tado de #ervio#

Agora conforme a Figura 4.11 indica, clique sobre o nome do Value Map chamado Service State para edit-lo. Vamos transformar seus valores Up e Down em Ok e Falha.

Figura &.12: <ditando o value map para no##a nece##idade

1) Name: Aqui definido o nome do novo conjunto de valores, vamos mud -lo para Estado.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 141

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.

Figura &.1): Dalue map editado e pronto para u#o

Note que o Value Map foi alterado. Agora vamos associar o Ping ICMP ao novo Estado. V at Configuration templates, clique sobre o valor items do 4Linux ICMP e depois sobre o nome do item ICMP Ping.

Figura &.1&: @elecionando um value map no trigger

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

Figura &.1*: Dalue# map# no overview

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

4.3.3. Criando um gatilho de parada de host


Embora j saibamos qual host esta OK, ainda no pedimos ao servidor para nos alertar via e-mail/Jabber a parada de um deles. Vamos primeiro testar o que o front end j nos mostra e depois iremos criar nosso primeiro trigger que vai avisar quando algo de errado acontecer com

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

Figura &.1': .au#ando o ho#t 0ataba#e

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

Figura &.1+: Eo#t databa#e parado no overview

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 143

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.

Figura &.1(: Criando um trigger para a parada do ho#t 1/,"

Edite os triggers do template conforme mostrado na Figura 4.18 .

Figura &.1,: Criando um trigger para a parada do ho#t 2/,"

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

Figura &.2!: Criando um trigger para a parada do ho#t )/,"

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.

Figura &.21: Criando um trigger para a parada do ho#t &/,"

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.

Figura &.22: Criando um trigger para a parada do ho#t */,"

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.

Figura &.2): Criando um trigger para a parada do ho#t '/,"

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 145

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

Figura &.2&: Criando um trigger para a parada do ho#t +/,"

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

Figura &.2*: Criando um trigger para a parada do ho#t (/,"

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 146

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.

Figura &.2': Criando um trigger para a parada do ho#t ,/,"

O gatilho deve estar sendo exibido na lista de triggers.

4.3.4. Lidando com os eventos


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

Figura &.2+: 7ndicao de problema# no 0a#hboard

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 147

Figura &.2(: :verview com indicao do# item# com alerta

Figura &.2,: :verview com vi#ualizao do# trigger# ativo#

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 148

Figura &.)!: Aapa indicando o ho#t 0ataba#e como down

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

Figura &.)1: /ela de <vent#M indicando a 9ueda e o retorno do# ho#t#

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 149

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.

Figura &.)2: /ela de acGnowledgement

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

Figura &.)): =cGnowledge confirmao" aplicado

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 150

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

4.3.5. Criando uma action para envio de alerta


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

Figura &.)&: Criando uma action para enviar o alerta 1/,"

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

Figura &.)*: Criando uma action para enviar o alerta 2/,"

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.

Figura &.)': Criando uma action para enviar o alerta )/,"

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

Figura &.)+: Criando uma action para enviar o alerta &/,"

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.

Figura &.)(: Criando uma action para enviar o alerta */,"

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 152

Figura &.),: Criando uma action para enviar o alerta '/,"

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.

Figura &.&!: Criando uma action para enviar o alerta +/,"

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.

Figura &.&1: Criando uma action para enviar o alerta (/,"

Aps isso clique em Save no quadro principal.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 153

Figura &.&2: Criando uma action para enviar o alerta ,/,"

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.

Figura &.&): Aen#agen# de alerta recebida# no <volution

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? ________________________________________________________________________ ________________________________________________________________________

Captulo 4 #onitoramento )oltado para di"ponibilidade - 154

Figura &.&&: Keiniciando o ho#t 0ataba#e

4.3.7. Boas prticas com triggers


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 155

Figura &.&*: >1gica de um gatilho com tempo de #egurana

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 156

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.

4.4. Checagem genrica de portas e servios


Como dito anteriormente ICMP requests podem ser barrados por Firewalls. Se este for o seu caso, ento voc no pode depender deles para medir a sua disponibilidade e deve recorrer a outros mtodos. Neste tpico veremos um muito comum, a checagem de portas TCP.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 157

4.4.1. Conexes TCP e handshakes


Como se d a verificao remota de um servio rodando em um soquete TCP? Vamos fazer uma pequena prtica para a verificao do mesmo, e entender o famoso Three wy handshake do protocolo TCP. Primeiro ative no host Application o seguinte comando: # tshark -ni eth0 host 172.27.0.10 and port 8080 Running as user "root" and group "root". This could be dangerous. Capturing on eth0 O tshark o comando de linhas de console do Wireshark, e muito mais poderoso que o tcpdump. No caso do comando acima pedimos que ele capture todo o trafego da interface eth0 que vier do Zabbix server e usar a porta 8080. Agora no servidor do Zabbix de nosso cen rio, use o comando nmap para varrer a porta 8080 do host Application. # nmap -sT -P0 -p 8080 172.27.0.20 Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-09 17:08 BRST Interesting ports on application.curso468.4linux.com.br (172.27.0.20): PORT STATE SERVICE 8080/tcp open http-proxy Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds Note que usamos o parmetro -sT para forar o nmap a usar o handshake completo em vez do SYN scan1 padro. Volte ao Application para ver o resultado no tshark. # tshark -ni eth0 host 172.27.0.10 and port 8080 Running as user "root" and group "root". This could be dangerous.

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 159

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

4.4.2. Criando um teste de servio via varredura de portas


Com estes dados disponveis vamos criar uma situao onde haver trs casos de portas: aberta, fechada e filtrada por firewall. No existe uma maneira confivel de se checar servios que usam "UDP sem apelar para a camada de apresentao do modelo TCP/IP. Primeiro pare o servio de SSH no Database. # /etc/init.d/ssh stop Depois remova a regras de permisso de acesso de SSH da Application.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 160

# 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).

Captulo 4 #onitoramento )oltado para di"ponibilidade - 161

Figura &.&': @imple checG para o @@E

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 162

Figura &.&+: :verview exibindo o# #ervio# de @@E

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.

4.4.3. Exerccio sobre checagem de portas


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

Captulo 4 #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

3pache IproxAJ ?@oss I3plicati/oJ 3pache I3plicati/oJ Post%re O< )pen<13P

+--6;5CP I3?PJ 3pplication

Tabela -: .ervios do cenrio do curso Servio no monitorvel: ___________________________________________________ ________________________________________________________________________

4.5. Validao de pginas WEB


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

4.5.1. Disponibilidade do site.


O Zabbix denomina um teste de um site como um scenario (cen rio), e dentro deste cenrio h vrios elementos chamados de steps (passos) que correspondem a uma requisi o, ou seja, a uma URL. O principal uso deste tipo de teste verificar se a URL esta respondendo adequadamente, podemos, por exemplo, verificar se o HTML cont m uma determinada string ou se o cdigo de retorno corresponde a um sucesso, que normalmente 200 OK. Mas estas checagens tem outros itens embutidos nela. O servidor calcula automaticamente a lat ncia de rede e a velocidade de download dos dados na URL e j gera grficos destas estatsticas. Um

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:

Figura &.&(: Criando um cen8rio para di#ponibilidade 6eb 1/'"

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

Figura &.&,: Criando um cen8rio para di#ponibilidade 6eb 2/'"

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 165

Figura &.*!: Criando um cen8rio para di#ponibilidade 6eb )/'"

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 166

Figura &.*1: Criando um cen8rio para di#ponibilidade 6eb &/'"

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 167

Figura &.*2: Criando um cen8rio para di#ponibilidade 6eb */'"

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.

Figura &.*): Criando um cen8rio para di#ponibilidade 6eb '/'"

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

Figura &.*&: Di#ualizando a checagem 6eb

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

Figura &.**: 0etalhe# do monitoramento 6eb

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 168

Figura &.*': ;r8fico de velocidade de download para o cen8rio 6eb

Figura &.*+: ;r8fico de tempo de re#po#ta para o cen8rio 6eb

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 169

4.6. Checando disponibilidade via agentes


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

4.6.1. Checando se o agente esta operacional


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 170

Figura &.*(: ?ovo item para monitorar o agente

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

Figura &.*,: 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).

Captulo 4 #onitoramento )oltado para di"ponibilidade - 171

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.

4.6.2. Criando um trigger com a funo nodata()


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 172

Figura &.'1: Criando um trigger para o agent.ping 1/*"

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

Figura &.'2: Criando um trigger para o agent.ping 2/*"

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 173

Figura &.'): Criando um trigger para o agent.ping )/*"

Adicione a expresso ao trigger.

Figura &.'&: Criando um trigger para o agent.ping &/*"

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.

Figura &.'*: Criando um trigger para o agent.ping */*"

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

Figura &.'': /rigger para o agent ping criado e ativo

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.

Figura &.'+: /rigger de agente ativado

Note que h setas nos detalhes dos Triggers para o servidor. Uma seta para cima significa que o trigger j caiu e voltou ao estado de OK. Uma seta para baixo significa que seu estado atual PROBLEM. Retorne o agente ao estado normal, atribua um acknowledgement e vamos a outro teste. Desta vez derrubaremos dois hosts, pausando ambos e verificando se eles 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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 175

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

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

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

4.7. Tempo on-line e ltima inicializao do S.O.


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 176

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.

Figura &.',: 7tem para tempo de uptime

1) Description: coloque a descrio, conforme a figura. 2) Key: como usamos no comando zabbix_get, a chave system.uptime vai coletar o tempo de funcionamento do host. 3) Units: este campo permite que faamos algumas personalizaes no tratamento da sada do item no Overview e grficos. Embora similar ao Values maps ele mais 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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 178

Figura &.+!: Lptime via 3apcat

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.

Figura &.+1: Lptime via @?A.

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.

4.7.1. Trigger para alerta de reinicializao


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

Figura &.+): Lm trigger para a reinicializao de um ho#t

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 181

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

4.8. Checando servios pelo agente


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

4.8.1. Verificando os processos ativos na memria


O Zabbix tem uma key chamada proc.num que pode ser usada para verificar o nmero de processos na memria. Se usada sem nenhum parmetro ela faz uma contagem de todos os processos sem discriminao, para exemplificar o uso dele vamos verificar se o processo do SSH esta na memria das mquinas Gnu/Linux. A sintaxe da chave a seguinte (todos os parmetros so opcionais): proc.num[<name>,<user>,<state>,<cmdline>] Onde, name: o nome do processo. Se voc estiver checando processos numa mquina Windows, certifique-se que o processo dele contm a extenso .exe (ou similar) no final do nome. user: qual o usurio que esta executando um determinado processo ou conjunto de processos. O padro verificar de todos os processos.

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 183

Figura &.+&: 7tem para verificao de nHmero de proce##o#

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

Figura &.+*: :verview refletindo o nHmero de proce##o#

No Overview, j podemos rastrear o funcionamento da contagem de processos. Note

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.

Figura &.+': /rigger para 9ueda do daemon

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 185 trigger.

Figura &.++: /e#te de 9ueda do ##hd

Tambm olhe no Overview como o trigger ficou exibido.

Figura &.+(: Keflexo da 9ueda do daemon @@E no overview

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

4.8.2. Checagem de portas e servios localmente via agente


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 186

Figura &.+,: 7tem para verificao da porta local

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 187

Figura &.(!: Fluxograma da dependNncia entre trigger# para an8li#e de #ervio#

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 189

Figura &.(1: /rigger para verificao da porta local

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

Figura &.(2: /rigger para verificao de porta remota

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.

4.8.4. Verificando servios no Windows


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

Figura &.(): @ervio telnet do 6indow#

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 191

Figura &.(&: Eabilitando o #ervio de telnet do 6indow#

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

Figura &.(*: =tivando o #ervio de telnet

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 192

Figura &.(': .roce##o do telnet na mem1ria

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 193

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 194

Figura &.(+: >iberando o telnet no firewall do 6indow# 1/)"

Clique em Adicionar Porta... e preencha a janela que aparecer conforme indicado a seguir.

Figura &.((: >iberando o telnet no firewall do 6indow# 2/)"

Captulo 4 #onitoramento )oltado para di"ponibilidade - 195

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.

Figura &.(,: >iberando o telnet no firewall do 6indow# )/)"

Por fim, clique em OK novamente. Para averiguar se tudo esta correto faa um teste a partir do console do host Zabbix server.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 196

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 197

Figura &.,!: item para monitorar #ervio# 6indow#

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.

Figura &.,1: <#tado do #ervio /elnet no :verview

Captulo 4 #onitoramento )oltado para di"ponibilidade - 198

Verifique que no Overview o servio esta aparecendo e funcionando.

4.8.5. Restabelecendo servios offline via Zabbix


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

/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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 199


11

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 200

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

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.

Figura &.,2: =ction para parada do @@E 1/)"

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

Figura &.,): =ction para parada do @@E 2/)"

Nas condies, importante notar que h trs delas. Uma indica que o status do trigger deve ser PROBLEM.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 201

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.

Figura &.,&: =ction para parada do @@E )/)"

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

Figura &.,*: Comando remoto para o action de parada do #ervio de @@E

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.

4.9. Medindo a sade de sua rede


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

4.9.1. Latncia de rede


O primeiro ponto que vamos analisar so as causas de indisponibilidade por excesso de trafego na rede. Note que medir a banda pode ajudar a identificar gargalos de rede, mas a m trica mais indicada para medir lentido a latncia de rede, que pode estar baixa mesmo quando n o h trafego! Como sempre vamos comear com a criao do item dentro do template 4Linux ICMP.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 203

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

Figura &.,': 7tem para latNncia de rede

Neste item, atente para o campo Units que contm o valor s (segundos). Ele ir formatar o valor recebido pelo item para uma forma 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).

Captulo 4 #onitoramento )oltado para di"ponibilidade - 204

4.9.2. Macro para o limiar da latncia de rede


Um ponto muito importante definir o que uma latncia ruim. Isso muito varivel de um ambiente para outro, se voc estiver medindo a latncia em uma rede local ento, provvel que uma latncia acima de 10 milissegundos seja alta. No caso de medir a lat ncia de um equipamento com link via satlite, podemos encontrar latncias de alguns segundos como padro dependendo da tecnologia. Para deixar nossos templates flexveis o suficiente para se adequarem a quaisquer ambientes podemos usar um recurso muito interessante do Zabbix chamado macros de usurios. Existem trs tipos de escopo de macro: global (definido em Administration General) que vale para todos os templates e hosts; macros de templates, cujo alcance vale para todos os hosts associados a um dado template e macros de host, que vale s para aquele host. Se voc redefinir (como vamos fazer) uma macro num ambiente mais restrito, o que ir valer ser este ltimo. O Zabbix tem vrias macros internas e j tivemos contato com algumas quando criamos nossos triggers. {HOSTNAME}, que a mais comum, armazena o nome do host definido dentro do front end. Quando definirmos uma macro de usurio importante que em sua sintaxe um sinal de cifro ($) seja colocado antes do nome e dentro das chaves. Por exemplo, vamos definir uma macro para lat ncia de rede com o nome LATENCIA, logo sua sintaxe ser {$LATENCIA}. Evite o uso de outros caracteres no nome da macro exceto por underline (_). Tambm no comece o nome da macro por nmeros. uma boa prtica manter os nomes em caixa alta. No caso de nosso cenrio iremos definir um padro de 0.01 segundos (10 milissegundos) para nossa macro, ela vai ser uma macro de template, mais especificamente o template 4Linux ICMP. Abra as configuraes do mesmo clicando no nome dele em Configuration Templates. No canto direito do quadro principal voc vai achar a rea de definio de macros.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 205

Figura &.,+: Aacro para latNncia de rede

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

Figura &.,(: /rigger para latNncia de rede u#ando a macro

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.

4.9.3. Nosso primeiro grfico


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 206

Figura &.,,: ;r8fico para medir a latNncia de rede

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

Figura &.1!!: Criando um gr8fico de latNncia de rede

1) Name: nome do grfico. A partir da verso 1.8.4 do Zabbix possvel usar macros aqui. 2) Width e Height: tamanho padro do grfico para algumas telas. Na maioria dos casos o front end ajusta o grfico ao tamanho corrente da tela do Browser.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 207

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.

Figura &.1!1: =dicionando mCtrica# ao gr8fico

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 208

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.

4.9.4. Personalizando o mapa para exibio de informaes


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 209

Figura &.1!2: Aapa com label# per#onalizada# exibindo dado#

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.

Figura &.1!): <xemplo de label# com valore# de mCtrica#

Captulo 4 #onitoramento )oltado para di"ponibilidade - 210

No esquea de salvar o mapa constantemente no boto Save.

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.

Figura &.1!&: <xemplo de gr8fico de latNncia de #ervio# para exercJcio#

4.10. Espao disponvel em disco


A latncia de rede pode medir o nvel de resposta final das aplicaes disponibilizadas via TCP. Mas um item extremamente crtico, pois pode causar paradas de servi os abruptamente, o espao disponvel em disco.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 211

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.

Figura &.1!*: Aacro para limite de e#pao em di#co utilizado

O valor padro usado para nosso cenrio ser 80 (80% da partio cheia), todo servidor que exceder este limite dever disparar um alerta para os administradores. Vamos criar os item agora, a key vfs.fs.size[mount_point, mode], diferente das anteriores exige parmetros para funcionar. O primeiro obrigatrio e indica qual das parties devem ser analisada. O segundo opcional 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.

Figura &.1!': .rimeiro item de e#pao em di#co

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 213

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.

Figura &.1!+: 7tem# a #erem clonado# para e#pao em di#co

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

Figura &.1!(: 5oto para clonar item#

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

4.10.1. Grficos para espao em disco


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 214

Figura &.1!,: ;r8fico de pizza para exibio de e#pao livre e ocupado

Para gerar um grfico como esse siga os passos a seguir.

Figura &.11!: Criando um gr8fico de pizza

No h muitos segredos nesta tela, ao selecionar Pie em Graph Type menos campos iro aparecer no formulrio. Vamos deixar a legenda ativa. 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.

Figura &.111: ;r8fico de hi#t1rico de e#pao em di#co

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

Figura &.112: Criando o gr8fico de hi#t1rico de u#o de di#co

Captulo 4 #onitoramento )oltado para di"ponibilidade - 216

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

4.10.2. Gatilhos para alertas de espao em disco


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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 217

Figura &.11): /rigger para c8lculo de e#pao em di#co

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.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 218

3) Desafio: crie mtricas que checam parties personalizadas pelo administrador, usando macros para definir os pontos de montagem.

4.11. Scripts externos


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

4.11.1. Checando a disponibilidade do PostgreSQL


O Zabbix no tem suporte a todos os protocolos TCP da face da Terra. De fato isso seria um feito impressionante para um aplicativo de monitoramento. O protocolo do PostgreSQl esta entre os no suportados, e embora tenhamos utilizado keys como tcp e tcp_perf para medir sua disponibilidade podem ocorrer situaes onde o banco aceite conexes mas no responda nada, ou o faa muito lentamente. Nestes casos iremos criar uma extenso do agente apta a realizar uma nica consulta (SELECT 1) e verificar se ele retornou o valor correto. Esta extens o vai chamar um script criado em bash que aciona localmente o servidor, faz a consulta e determina o resultado. Prepare os conhecimentos de shell script, respire fundo e vamos come ar acessando o host Database. O primeiro passo permitir que o usurio zabbix se conecte ao banco sem a necessidade de senhas. Isso necessrio porque o comando ser executado automaticamente sem a interveno manual de um administrador. Como vamos usar o psql, cliente padro via console do PostgreSQL, podemos usar um artifcio interessante com o arquivo .pgpass. Este arquivo deve ficar dentro do diretrio home do zabbix e deve conter uma string com os parmetros de acesso. Cada permisso de acesso do

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 220

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 221


28

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 222

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.

Figura &.11&: /rocando o template do ho#t databa#e para o .o#tgre@R>

Verifique se no Overview os dados esto sendo recebidos.

Captulo 4 #onitoramento )oltado para di"ponibilidade - 223

Figura &.11*: 0i#ponibilidade do .o#tgre@R> ativa no databa#e

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

4.11.2. Medindo a disponibilidade de um link Internet


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

#!/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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 224


10 11

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

Captulo 4 #onitoramento )oltado para di"ponibilidade - 225

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

nosso script. # vim /etc/zabbix/agent.d/internet_perf.conf


1

UserParameter=internet.perf,/etc/zabbix/externalscripts/internet_perf.sh Finalmente acerte as permisses dos arquivos.

# chown root.zabbix /etc/zabbix -R # chmod 0640 /etc/zabbix/internet_perf.links /etc/zabbix/agent.d/internet_perf.conf # chmod 0750 /etc/zabbix/externalscripts/internet_perf.sh J podemos fazer os testes locais e os remotos conforme mostrado no 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).

Captulo 4 #onitoramento )oltado para di"ponibilidade - 226

Figura &.11': >atNncia #endo exibida no label do linG

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

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.

Figura &.11(: >inG no mapa identificando #tatu# do trigger

Captulo 4 #onitoramento )oltado para di"ponibilidade - 227

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

Anexo I Performance do Sistema Operacional

Introduo
Aqui vamos passar as dicas e mtricas que podem ser usadas para monitorar as quatro principais caractersticas de desempenho. Uso de CPU, memria, throughput de rede e I/O de disco. Este captulo utiliza o template completo do 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).

Throughput e banda de rede


Banda pode ser um item importante se voc no tem um link suficientemente grande para comportar suas necessidades, mas o throughput o que realmente deve ser observado. 1) Grande largura de banda com baixo throughput e alta lat ncia de rede indicam, problemas de rede (provavelmente fsicos). A key net.if.in e net.if.out so as indicadas para isso. 2) Lembre-se que o Zabbix, o sistema operacional e seus aplicativos medem o consumo de rede em bytes e no em bits. No entanto todos os equipamentos de rede e links de Internet so comprados pelo segundo. Prefira exibir mesmo assim os dados em bytes. Se voc realmente tiver que exibir em bits ter que criar um campo calculado que l e multiplica o valor do item em bytes. 3) Cuidado ao estipular valores de topo dos grficos de banda para redes internas. Enquanto nos links de Internet isso uma prtica recomendvel, para consumos de servidores em redes de 100 ou 1000 Mbps os valores v o ficar to prximos do eixo x que a impresso ser de trfego zero.

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

Anexo II Performance de servios

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.

Você também pode gostar