Menu Principal

quinta-feira, 15 de setembro de 2011

Nagios - Instalação

Fonte: http://wiki.sj.cefetsc.edu.br/wiki/index.php/GER-2010-1

Instalação

  1. Instalar alguns softwares necessários pelo Nagios:
    sudo apt-get install -y gcc libpng12-dev libjpeg62-dev
    wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/gd-2.0.35.tar.bz2
    tar xjf gd-2.0.35.tar.bz2
    cd gd-2.0.35
    ./configure
    make 
    make install
  2. Fazer o seguinte download:
    wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/nagios-3.2.1.tar.gz
    wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/nagios-plugins-master-1.4.14-119-gcf2bc.tar.gz
  3. Descompacte nagios-3.2.1.tar.gz:
    tar xzf nagios-3.2.1.tar.gz
  4. Compile e instale o Nagios:
    cd nagios-3.2.1
    groupadd nagios
    useradd -g nagios -c Nagios -d /var/lib/nagios -m nagios
    ./configure --with-httpd-conf=/etc/apache2/conf.d --with-temp-dir=/var/lib/nagios --with-nagios-user=nagios --with-nagios-group=nagios
    make all
    make install
    make install-init
    make install-commandmode
    make install-config
    make install-webconf
  5. Agora instale o nagios-plugins:
    cd ..
    tar xzf nagios-plugins-master-1.4.14-119-gcf2bc.tar.gz
    cd nagios-plugins-1.4.14-119-gcf2bc
    ./configure --with-nagios-user=nagios --with-nagios-group=nagios
    make
    make install
  6. O Nagios foi instalado dentro de /usr/local/nagios. Dentro de /usr/local/nagios/etc há vários arquivos de configuração, iniciando com nagios.cfg. Esse arquivo contém a configuração global, e a informação de que outros arquivos devem ser incluídos. As configurações específicas ficam em arquivos dentro de /usr/local/nagios/etc/objects. Cada elemento monitorado é definido por um objeto, havendo basicamente hosts (equipamentos) e services (serviços que residem nos equipamentos). Por exemplo, o arquivo localhost.cfg ali existente inicia assim:
    # Define a host for the local machine
     
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               localhost
            alias                   localhost
            address                 127.0.0.1
            }
     
    # Define an optional hostgroup for Linux machines
     
    define hostgroup{
            hostgroup_name  linux-servers ; The name of the hostgroup
            alias           Linux Servers ; Long name of the group
            members         localhost     ; Comma separated list of hosts that belong to this group
            }
     
    # Define a service to "ping" the local machine
     
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       localhost
            service_description             PING
            check_command                   check_ping!100.0,20%!500.0,60%
            }
     
     
    # Define a service to check the disk space of the root partition
    # on the local machine.  Warning if < 20% free, critical if
    # < 10% free space on partition.
     
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       localhost
            service_description             Root Partition
            check_command                   check_local_disk!20%!10%!/
            }
  7. Inicie o nagios:
    service nagios start
  8. Crie um usuário para acesso ao Nagios (usuário somente para autenticação básica no Apache):
    htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  9. Inclua no Apache a configuração da interface web do Nagios. Adicione esta linha a /etc/apache2/sites-enabled/000-default:
    Include conf.d/nagios.conf
  10. Reinicie o Apache:
    service apache2 restart
  11. Acesse a interface web do Nagios pela URL http://192.168.2.X/nagios. Após autenticar o usuário nagioasdmin deve aparecer a seguinte tela:

    Nagios1.png

Exemplos de configurações

A configuração do Nagios fica no diretório /usr/local/nagios/etc. Todos os arquivos mencionados abaixo se referem a esse diretório, salvo se for indicado o contrário. O arquivo de configuração principal se chama nagios.cfg, que contém opções globais e inclusões de outros arquivos com configurações específicas. Em particular, arquivos que tratam de objetos monitorados e informacões relacionadas (hosts, serviços, comandos e templates). ficam dentro do subdiretório objects.

Definições de hosts

Para configurar o Nagios, devem-se primeiro criar definições de hosts (equipamentos monitorados). Esas definições ficam em algum arquivo dentro do subdiretório objects, o qual deve estar incluído em nagios.cfg (veja o exemplo contido em localhost.cfg). Cada host definido é automaticamente monitorado com PING, de forma a verificar se está no ar. Um host é declarado como a seguir:
define host{
        use                     linux-server            ; Nome do template de host a ser usado
                                                        ; Este host irá herdar toas a variáveis que estão definidas
                                                        ; no template linux-server (ou que foram herdadas por ele).
        host_name               gateway                 ; nome do host na rede
        alias                   Gateway do Lab.         ; Descrição do host
        address                 192.168.2.1
 parents   localhost               ; qual o próximo host em direção ao Nagios
        }
O uso de templates simplifica a definição de hosts, pois evita a repetição de muitas opções comuns (veja como seria a definição completa de um host). Os templates estão no arquivo templates.cfg.
A opção parents tem grande importância para possibilitar que o Nagios faça a distinção entre hosts ou serviços falhos ou inalcançáveis. O primeiro caso trata de serviços cujos testes programados falharam, e o segundo caso são aqueles que não podem ser testados, porque dependem de um host intermediário (um gateway) que falhou. Assim pode-se evitar a emissão de alertas para todos os serviços, concentrando-os na causa raiz do problema.

Definições de serviços

Em cada host devem ser criadas definições de serviços a serem monitorados. Cada serviço possui um comando de verificação específico, para que o teste seja mais fidedigno. Duas definições de serviços são mostradas abaixo (para IMAP e DNS):
define service{
        use                             local-service         ; Nome do template de serviço a ser usado
        host_name                       localhost             ; Host onde reside o serviço
        service_description             IMAP
        check_command                   check_imap            ; Comando para verificar o serviço
        notifications_enabled           0                     ; Notificações desabilitadas
        }
 
define service{
        use                             local-service
        host_name                       localhost
        service_description             DNS
        check_command                   check_dns
        notifications_enabled           0
        }
Assim como no caso de hosts, usam-se templates para evitar a repetição de opções de uso comum (ver definição completa de um serviço).

Definições de comandos

Os comandos de verificação de serviço são programas especializados, e que são fornecidos pelo pacote nagios-plugins (que foi instalado junto com o Nagios). A lista de plugins segue abaixo:
Plugin Descrição
check_apt This plugin checks for software updates on systems that use package management systems based on the apt-get(8) command found in Debian GNU/Linux
check_breeze This plugin reports the signal strength of a Breezecom wireless equipment
check_by_ssh Esse pug-in usa SSH para executar comandos no servidor remoto
check_clamd This plugin tests CLAMD connections with the specified host (or unix socket).
check_cluster Plugin servidor/serviço de cluster para nagios 2
check_dhcp Esse plug-in testa a disponibilidade dos servidores DHCP na rede.
check_dig Este plug-in testa o serviço de DNS no computador especificado usando dig
check_disk Este plug-in verifica a quantidade de espaço utilizado no sistema de arquivos montado e gera um alerta caso o espaço livre seja menos que um dos valores limites
check_disk_smb Perl Check SMB Disk plugin for Nagios
check_dns Esse complemento utiliza o programa nslookup para obter o endereço IP do host/domínio consultado. Um servidor DNS opcional pode ser especificado. Se um servidor DNS não é especificado, o(s) servidor(es) padrão(es) no arquivo /ect/resolv.conf serão utilizados.
check_dummy Este plugin irá simplesmente retornar ao estado correspondente para o valor numérico do <estado> do argumento com texto opcional
check_file_age testa o tamanho de um arquivo, ou há quanto tempo ele existe (sua idade).
check_flexlm Check available flexlm license managers
check_ftp This plugin tests FTP connections with the specified host (or unix socket).
check_hpjd Esse plug-in testa o ESTADO de uma impressora HP com um cartão JetDirect. Net-snmp deve estar instalado no computador com o plug-in.
check_http Esse plug-in testa o serviço HTTP no servidor especificado. Pode testar servidores normais (http) e seguros (https), seguir redirecionamentos, pesquisar por strings e expressões regulares, verifica tempo de conexões, e reporta sobre tempo de expiração de certificados.
check_icmp Testa um host com PING.
check_ide_smart This plugin checks a local hard drive with the (Linux specific) SMART interface.
check_ifoperstatus Checks the operational status of a particular network interface on the target host.
check_ifstatus Checks the operational status of a particular network interface on the target host.
check_imap This plugin tests IMAP connections with the specified host (or unix socket).
check_ircd Perl Check IRCD plugin for Nagios
check_load Este plug-in testa a média de carga do sistema atual.
check_log Log file pattern detector plugin for Nagios.
check_mailq Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail).
check_mrtg Este plug-in irá verificar tanto o valor médio ou máximo de um das duas variáveis gravadas em um arquivo de log MRTG.
check_mrtgtraf Este plug-in irá verificar a entrada/saída das taxas de transferência de um roteador, switch, etc registrado em um log do MRTG. Se a entrada do novo registro é mais velha que <expire_minutes>, um estado AVISO é retornado. Se tanto as taxas de entrada ou de saída excederem o limite <icl> ou <ocl> (em Bytes/seg), resulta em um estado CRÍTICO. Se qualquer uma das taxas de ultrapassar o limite <iwl> ou <owl> (em Bytes/seg), resulta em um estado AVISO.
check_nagios This plugin checks the status of the Nagios process on the local machine The plugin will check to make sure the Nagios status log is no older than the number of minutes specified by the expires option. It also checks the process table for a process matching the command argument.
check_nntp This plugin tests NNTP connections with the specified host (or unix socket).
check_nt This plugin collects data from the NSClient service running on a Windows NT/2000/XP/2003 server.
check_ntp This plugin checks the selected ntp server
check_ntp_peer This plugin checks the selected ntp server
check_ntp_time This plugin checks the clock offset with the ntp server
check_nwstat This plugin attempts to contact the MRTGEXT NLM running on a Novell server to gather the requested system information.
check_oracle Check Oracle Database status.
check_overcr This plugin attempts to contact the Over-CR collector daemon running on the remote UNIX server in order to gather the requested system information.
check_ping Use ping to check connection statistics for a remote host.
check_pop This plugin tests POP connections with the specified host (or unix socket).
check_procs Checks all processes and generates WARNING or CRITICAL states if the specified metric is outside the required threshold ranges. The metric defaults to number of processes. Search filters can be applied to limit the processes to check.
check_real This plugin tests the REAL service on the specified host.
check_rpc Check if a rpc service is registered and running using rpcinfo -H host -C rpc_command
check_sensors This plugin checks hardware status using the lm_sensors package.
check_smtp This plugin will attempt to open an SMTP connection with the host.
check_snmp Check status of remote machines and obtain system information via SNMP
check_ssh Try to connect to an SSH server at specified server and port
check_swap Check swap space on local machine.
check_tcp This plugin tests TCP connections with the specified host (or unix socket).
check_time This plugin will check the time on the specified host.
check_udp This plugin tests UDP connections with the specified host (or unix socket).
check_ups This plugin tests the UPS service on the specified host. Network UPS Tools from www.networkupstools.org must be running for this plugin to work.
check_users This plugin checks the number of users currently logged in on the local system and generates an error if the number exceeds the thresholds specified.
check_wave Checks the strength of received signal in a wireless interface.


Cada plugin possui seus argumentos de linha de comando, que são usados para passar parâmetros de execução. A explicação detalhada pode ser obtida executando-se o programa do plugin e passando a opção -h:
msobral@ger:~$ cd /usr/local/nagios/libexec
msobral@ger:/usr/local/nagios/libexec$ ./check_dns -h
 
check_dns v1.4.14 (nagios-plugins 1.4.14)
Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>
Copyright (c) 2000-2008 Nagios Plugin Development Team
 <nagiosplug-devel@lists.sourceforge.net>
 
Esse complemento utiliza o programa nslookup para obter o endereço IP do host/domínio consultado.
Um servidor DNS opcional pode ser especificado.
Se um servidor DNS não é especificado, o(s) servidor(es) padrão(es) no arquivo /ect/resolv.conf serão utilizados.
 
Uso:check_dns -H host [-s server] [-a expected-address] [-A] [-t timeout] [-w warn] [-c crit]
 
Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
Project-Id-Version: nagios-plugins
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
POT-Creation-Date: 2009-06-17 13:03+0100
PO-Revision-Date: 2009-10-21 20:41+0000
Last-Translator: André Gondim <andregondim@ubuntu.com>
Language-Team: Brazilian Portuguese <pt_BR@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n > 1;
X-Launchpad-Export-Date: 2009-10-22 21:23+0000
X-Generator: Launchpad (build Unknown)
 -H, --hostname=HOST
    O nome ou endereço que você deseja consultar
 -s, --server=HOST
    Servidor DNS opcional que você que utilizar para fazer consultas
 -a, --expected-address=IP-ADDRESS|HOST
    ENDEREÇO-IP opcional que você espera  o servidor DNS retornar. SERVIDOR deve acabar com
    um ponto (.). Essa opção pode ser repetida várias vezes (Retorna OK se qualquer
    corresponde ao valor). Se vários endereços são retornados de uma vez, você tem que combinar
    a cadeia completa de endereços separados por vírgulas (ordenados alfabeticamente)
 -A, --expect-authority
    Opcionalmente a espera pelo servidor DNS deve ser autorizada para a pesquisa
 -w, --warning=seconds
    Retorna um aviso se o tempo decorrido exceder o valor. Padrão off
 -c, --critical=seconds
    Retorno crítico se o tempo decorrido exceder o valor. Padrão off
 -t, --timeout=INTEGER
    Seconds before connection times out (default: 10)
 
Send email to nagios-users@lists.sourceforge.net if you have questions
regarding use of this software. To submit patches or suggest improvements,
send email to nagiosplug-devel@lists.sourceforge.net
msobral@ger:/usr/local/nagios/libexec$
Nem todos os plugins acima são adicionados automaticamente à configuração do Nagios na instalação. O arquivo commands.cfg contém os comandos preconfigurados. Assim, caso seja necessário adicionar um plugin que ainda não esteja ali (ex: check_dns), deve-se criar uma definição de comando:
define command{
        command_name    check_dns
        command_line    $USER1$/check_dns -H www.google.com.br -s $HOSTADDRESS$
        }
O importante acima é a definição de como o plugin deve ser executado, incluindo os parâmetros que devem ser passados. Alguns parâmetros são predefinidos pelo Nagios, estando disponíveis em macros:
  • $HOSTADDRESS$: o endereço do host onde reside o serviço a ser testado.
  • $ARG1$: o primeiro argumento incluído na definição de serviço.
  • $ARG2$: o segundo argumento incluído na definição de serviço.
  • $ARGn$: o n-ésimo argumento incluído na definição de serviço.
Para exemplificar como passar parâmetros para os plugins, veja o caso de um teste do tipo PING:
define service{
 host_name  linuxbox
 service_description PING
 check_command check_ping!200.0,80%!400.0,40%
 }
O comando check_ping deve ser chamado com dois argumentos (separados por !): 200.0,80% e 200.0,80%. A definição do comando check_ping, por sua vez, os utiliza da seguinte forma:
define command{
 command_name    check_ping
 command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
 }

Ativando as novas configurações

Sempre que modificar a configuração o Nagios deve ser reiniciado:
sudo service nagios restart
Caso ocorra um erro, e o nagios não inicie, significa que existe um ou mais erros nos arquivos de configuração. Para encontrá-los execute o nagios com a opção -v, que faz uma verificação desses arquivos:
$ cd /usr/local/nagios
$ bin/nagios -v etc/nagios.cfg
Total Warnings: 3
Total Errors:   0
 
Things look okay - No serious problems were detected during the pre-flight check

Atividades

  1. Instale o Nagios na mesma máquina virtual onde está o Cacti.
  2. Crie uma configuração inicial para monitorar os serviços em seu servidor (SMTP, HTTP, IMAP, DNS) e o gateway da rede (192.168.2.1), e o servidor web do IFSC onde fica a Wiki (wiki.sj.ifsc.edu.br).
  3. Crie uma dependência entre o gateway e o servidor Wiki: para chegar à wiki é necessário que o gateway esteja ativo.
  4. Veja o que o Nagios reporta quando o gateway fica fora do ar (o professor irá simular isso).
  5. Estenda a configuração do Nagios para monitorar a conectividade da rede do IFSC. Quer dizer, ele deve monitorar a conectividade com a Internet e quando ela ficar fora do ar deve indicar se o problema está no IFSC ou se é externo.
  6. Configure o envio de alertas para a queda do serviço de email ou web. Esses alertas devem ser enviados por email para o administrador da rede (ou por SMS).
  7. Crie um monitoramento de serviço para monitorar a quantidade de conexões TCP estabelecidas no seu servidor. Dica: esa informação pode ser obtidfa facilmente com SNMP, como visto na aula sobre o Cacti.
    • Crie outro monitoramento de serviço para a quantidade de conexões estabelecidas com o servidor web (port TCP 80).
  8. Integre o Cacti ao Nagios, de forma que se associem os gráficos gerados pelo Cacti aos equipamentos monitorados pelo Nagios.

Nenhum comentário:

Postar um comentário