Monitoração com Nagios
          Cristiano Casado
Requisitos de sistema


    Monitorar recursos do sistema: cpu, memória, I/O, partição de disco, rede

    Em diversas plataformas: Linux, Solaris, Windows, HPUX, …

    Monitorar objetos BD: threads, client connected, queries/seg, innoDB stats, …

    Em diversas plataformas: MySQL, Oracle, MS SQL Server

    Monitorar serviços: http, dns, smtp, ftp, …

    Monitorar aplicações: threads, connection pool, heap size, garbage collector, ...

    Monitorar equipamentos de rede: routers, firewalls, storages, caches, slb, ...

    Escalável e redundante

    Integração com ferramentas externas

    Representação gráfica da rede

    Planejamento de excessões
Requisitos de sistema


    Resolução pró-ativa e execução de scripts remotos

    Hierarquia de objetos

    Interface web para administração

    Notificações por email, instant message, sms, ...

    Solução open-source e customizável para nossa necessidade
Solução Escolhida
Nagios é um sistema open-source bastante popular para monitoração de rede,
servidores e serviços.

Originalmente criado com o nome NetSaint, foi escrito e é mantido por Ethan
Galstad e por vários desenvolvedores.

Foi lançado como beta release em Outubro de 2002.
A versão stable é a 3.1.1 de 22 Junho de 2009.

Site oficial
http://www.nagios.org
Screenshots
Screenshots
Screenshots
Estrutura básica

                   Host = hostname, description, address, parents, command, check attempts
                           retry interval, check interval, contact, contactgroup, …

                   Hostgroup = name, description, members, …

                   Service = name, description, host, hostgroup, command, check attempts
                             retry interval, check interval, contact, contactgroup, …

                   Servicegroup = name, description, members, …

                   Command = command, command line
Integração com ferramentas externas
Passive Checks

Nagios permite a forma passiva de monitoração onde a iniciativa de verificação do serviço e o
envio dos resultados para o Nagios é realizada por uma aplicação externa.
Integração com ferramentas externas
Passive Checks
#!/bin/sh
echocmd="/bin/echo"
CFG="/etc/nagios/send_nsca.cfg"
NSCA="/usr/sbin/send_nsca"
NSCA_SERVER="10.20.2.15"

cmdline="$1;$2;$3;$4"

$echocmd $cmdline | $NSCA -H $NSCA_SERVER -d ";" -c $CFG

2. Execução do script:
# ./submit_check_result_nsca host SSH 2 "SSH error"
1 data packet(s) sent to host successfully.

3. Evento recebido e processado pelo Nagios:
# tail /var/log/nagios/nagios.log
[1239656419] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;host;SSH;2;SSH error
[1239656424] PASSIVE SERVICE CHECK: host;SSH;2;SSH error
[1239656424] SERVICE ALERT: host;SSH;CRITICAL;SOFT;1;SSH error
Integração com ferramentas externas
External Commands

Nagios fornece 157 comandos para execução de funções internas.


CHANGE_SVC_CHECK_COMMAND;<hostname>;<service_description>;<check_command>
SCHEDULE_HOST_DOWNTIME;<host_name>;<start_time>;<end_time>;<fixed>;<duration>;<author>;<comment>
SCHEDULE_SVC_DOWNTIME;<host_name>;<service_desription><start_time>;<end_time>;<fixed>;<duration>;<author>;<comment>
ENABLE_HOSTGROUP_HOST_CHECKS;<hostgroup_name>



#!/bin/sh

now=`date +%s`
commandfile='/usr/local/nagios/var/rw/nagios.cmd'

/bin/printf "[%lu] ENABLE_HOSTGROUP_HOST_CHECKS;hostgroup1n" $now > $commandfile
Integração com ferramentas externas

Nagios Event Broker (NEB)
Hierarquia de objetos
Nagios é capaz de determinar quando um host
monitorado está em status down ou unreachable
utilizando “parent host”.

define host {
host_name Nagios
}

define host {
host_name Switch1
parents Nagios
}

      define host {
host_name Web
parents Switch1
      }
Representação gráfica da rede

NagVis é um addon que permite a visualização de dados do Nagios e de qualquer
representação gráfica da estrutura IT e da rede.
É um projeto open-source utilizado amplamente pela comunidade do Nagios e possui como
features:

Representação dos hosts e services;
Exibição dos atributos de um host ou services assim como seu status atual;
Possibilidade de exibição somente dos problemas atuais;
Customização de diagramas;
Interface web de configuração.
Representação gráfica da rede
Representação gráfica da rede
Administração
# host.cfg
define host {
use           generic-host
host_name                  remotehost
address             192.168.1.50
hostgroups          allhosts
}

# command.cfg
define command {
name       check_http
command_name     check_http
command_line     $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}

# service.cfg
define service {
use           generic-service
host_name           remotehost
service_description HTTP
check_command       check_http
}
Administração
NagiosQL é uma ferramenta de administração web para o Nagios. A aplicação
remove a complexidade do admin manter diversos arquivos .cfg na definição
dos objetos de monitoração.


    webserver + PHP + MySQL

    criar, deletar, modificar e copiar os objetos de monitoração

    importação no MySQL a partir do .cfg

    auto backup dos arquivos de configuração

    check de consistência

    verificação de sintaxe

    executa comandos no Nagios: reload, check_config

    várias opções de linguagem

    fácil instalação
Administração
Arquitetura
Dúvidas e Documentação

Contato:
   Cristiano Casado
   ccasado@corp.globo.com

Nagios:      www.nagios.org
Nagvis:      www.nagvis.org
NagiosQL:    www.nagiosql.org
Centreon:    www.centreon.com
Wiki:        wiki.nagios.org

Monitoração com Nagios

  • 1.
    Monitoração com Nagios Cristiano Casado
  • 2.
    Requisitos de sistema  Monitorar recursos do sistema: cpu, memória, I/O, partição de disco, rede  Em diversas plataformas: Linux, Solaris, Windows, HPUX, …  Monitorar objetos BD: threads, client connected, queries/seg, innoDB stats, …  Em diversas plataformas: MySQL, Oracle, MS SQL Server  Monitorar serviços: http, dns, smtp, ftp, …  Monitorar aplicações: threads, connection pool, heap size, garbage collector, ...  Monitorar equipamentos de rede: routers, firewalls, storages, caches, slb, ...  Escalável e redundante  Integração com ferramentas externas  Representação gráfica da rede  Planejamento de excessões
  • 3.
    Requisitos de sistema  Resolução pró-ativa e execução de scripts remotos  Hierarquia de objetos  Interface web para administração  Notificações por email, instant message, sms, ...  Solução open-source e customizável para nossa necessidade
  • 4.
    Solução Escolhida Nagios éum sistema open-source bastante popular para monitoração de rede, servidores e serviços. Originalmente criado com o nome NetSaint, foi escrito e é mantido por Ethan Galstad e por vários desenvolvedores. Foi lançado como beta release em Outubro de 2002. A versão stable é a 3.1.1 de 22 Junho de 2009. Site oficial http://www.nagios.org
  • 5.
  • 6.
  • 7.
  • 8.
    Estrutura básica Host = hostname, description, address, parents, command, check attempts retry interval, check interval, contact, contactgroup, … Hostgroup = name, description, members, … Service = name, description, host, hostgroup, command, check attempts retry interval, check interval, contact, contactgroup, … Servicegroup = name, description, members, … Command = command, command line
  • 9.
    Integração com ferramentasexternas Passive Checks Nagios permite a forma passiva de monitoração onde a iniciativa de verificação do serviço e o envio dos resultados para o Nagios é realizada por uma aplicação externa.
  • 10.
    Integração com ferramentasexternas Passive Checks #!/bin/sh echocmd="/bin/echo" CFG="/etc/nagios/send_nsca.cfg" NSCA="/usr/sbin/send_nsca" NSCA_SERVER="10.20.2.15" cmdline="$1;$2;$3;$4" $echocmd $cmdline | $NSCA -H $NSCA_SERVER -d ";" -c $CFG 2. Execução do script: # ./submit_check_result_nsca host SSH 2 "SSH error" 1 data packet(s) sent to host successfully. 3. Evento recebido e processado pelo Nagios: # tail /var/log/nagios/nagios.log [1239656419] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;host;SSH;2;SSH error [1239656424] PASSIVE SERVICE CHECK: host;SSH;2;SSH error [1239656424] SERVICE ALERT: host;SSH;CRITICAL;SOFT;1;SSH error
  • 11.
    Integração com ferramentasexternas External Commands Nagios fornece 157 comandos para execução de funções internas. CHANGE_SVC_CHECK_COMMAND;<hostname>;<service_description>;<check_command> SCHEDULE_HOST_DOWNTIME;<host_name>;<start_time>;<end_time>;<fixed>;<duration>;<author>;<comment> SCHEDULE_SVC_DOWNTIME;<host_name>;<service_desription><start_time>;<end_time>;<fixed>;<duration>;<author>;<comment> ENABLE_HOSTGROUP_HOST_CHECKS;<hostgroup_name> #!/bin/sh now=`date +%s` commandfile='/usr/local/nagios/var/rw/nagios.cmd' /bin/printf "[%lu] ENABLE_HOSTGROUP_HOST_CHECKS;hostgroup1n" $now > $commandfile
  • 12.
    Integração com ferramentasexternas Nagios Event Broker (NEB)
  • 13.
    Hierarquia de objetos Nagiosé capaz de determinar quando um host monitorado está em status down ou unreachable utilizando “parent host”. define host { host_name Nagios } define host { host_name Switch1 parents Nagios } define host { host_name Web parents Switch1 }
  • 14.
    Representação gráfica darede NagVis é um addon que permite a visualização de dados do Nagios e de qualquer representação gráfica da estrutura IT e da rede. É um projeto open-source utilizado amplamente pela comunidade do Nagios e possui como features: Representação dos hosts e services; Exibição dos atributos de um host ou services assim como seu status atual; Possibilidade de exibição somente dos problemas atuais; Customização de diagramas; Interface web de configuração.
  • 15.
  • 16.
  • 17.
    Administração # host.cfg define host{ use generic-host host_name remotehost address 192.168.1.50 hostgroups allhosts } # command.cfg define command { name check_http command_name check_http command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$ } # service.cfg define service { use generic-service host_name remotehost service_description HTTP check_command check_http }
  • 18.
    Administração NagiosQL é umaferramenta de administração web para o Nagios. A aplicação remove a complexidade do admin manter diversos arquivos .cfg na definição dos objetos de monitoração.  webserver + PHP + MySQL  criar, deletar, modificar e copiar os objetos de monitoração  importação no MySQL a partir do .cfg  auto backup dos arquivos de configuração  check de consistência  verificação de sintaxe  executa comandos no Nagios: reload, check_config  várias opções de linguagem  fácil instalação
  • 19.
  • 20.
  • 21.
    Dúvidas e Documentação Contato: Cristiano Casado ccasado@corp.globo.com Nagios: www.nagios.org Nagvis: www.nagvis.org NagiosQL: www.nagiosql.org Centreon: www.centreon.com Wiki: wiki.nagios.org