quinta-feira, 5 de julho de 2012

TI : Instalando e configurando o nagios - Debian ou Ubuntu

Depois de muito pesquisar ler livros sobre o assunto resolvir fazer este pequeno tutorial sobre a instalação e configuração do nagios, não esquecendo que fontes temos demais, mas devemos filtra-las pois são várias e nem sempre quando você acrescenta um determinado comando nada roda da forma correta. Então vamos lá mãos a obras, este tutorial e simples para ser entendido se segue passos a serem, executados então faça-os corretamente. Apesar do Nagios ser complexo quando se coloca o mesmo para rodar tudo funciona da forma desejada, fiz um laboratório de teste em casa mesmo. Tudo e sem muita conversa parte logo para o que dever ser feito.


Instalação do nagios

Nagios – Debian

Começando...
Instalando as dependências
sudo apt-get -y install openssl
sudo apt-get -y install libssl-dev
sudo apt-get -y install mcrypt
sudo apt-get -y install build-essential
sudo apt-get -y install nmap
sudo apt-get -y install xinetd
sudo apt-get -y install apache2
sudo apt-get -y install libjpeg62
sudo apt-get -y install libjpeg-dev
sudo apt-get -y install libpng12-0
sudo apt-get -y install libpng12-dev
sudo apt-get -y install libgd2-xpm
sudo apt-get -y install libgd2-xpm-dev
sudo apt-get -y install fontconfig
sudo apt-get -y install sudo






Criando usuários para o Nagios

sudo useradd -m nagios
sudo groupadd nagios
sudo usermod -G nagios nagios
sudo mkdir /usr/local/nagios
sudo chown -R nagios.nagios /usr/local/nagios
sudo groupadd nagcmd
sudo usermod -G nagios nagcmd – erro aqui

Baixando o Nagios 2.9

mkdir downloads
cd downloads
wget -c http://ufpr.dl.sourceforge.net/sourceforge/nagios/nagios-2.9.tar.gz

Compilando o Nagios

tar xzvf nagios-2.9.tar.gz
cd nagios-2.9

sudo ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmurl=/nagios/ --with-nagios-user=nagios --with-nagios-grp=nagios --with-gd-lib=/usr/lib --with-gd-inc=/usr/lib




Depois instale-o com o comando:

sudo make all
sudo make install
sudo make install-init
sudo make install-commandmode
sudo make install-config

Baixando e instalando o Nagios-plugins

wget -c http://ufpr.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.9.tar.gz
tar xzvf nagios-plugins-1.4.9.tar.gz
cd nagios-plugins-1.4.9

./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios

sudo ./configure
sudo make all
sudo make install

cd /usr/local/nagios/etc
sudo mkdir original
sudo cp *.cfg-sample original

for i in *cfg-sample; do
sudo mv $i `echo $i|sed -e s/cfg-sample/cfg/`
done

Modificando as permissões da pasta do Nagios

sudo chown -R nagios.nagios /usr/local/nagios/var/rw
sudo chmod u+rwx /usr/local/nagios/var/rw
sudo chmod g+rwx /usr/local/nagios/var/rw
sudo chmod g+s /usr/local/nagios/var/rw

Testando o nagios

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Dentro de etc no nagior executar: ../Bin/nagios -v nagios.cfg

* Fale com um amigo/colega/conhecido de confiança que saiba mexer no programa. * Renomear o arquivo para seunome-seusobrenome.txt

Baixando e Instalando NRPE

wget -c http://ufpr.dl.sourceforge.net/sourceforge/nagios/nrpe-2.9.tar.gz
tar xzvf nrpe-2.9.tar.gz

Compilando o nrpe

cd nrpe-2.9
sudo ./configure
sudo make all
sudo make install-plugin
sudo make install-daemon
sudo make install-daemon-config
sudo make install-xinetd

Adicionando o usuário nagios como sudo sem senha

echo 'nagios          ALL=NOPASSWD:ALL' | sudo tee -a /etc/sudoers


Adicionando o NRPE como serviço

echo 'nrpe            5666/tcp # NRPE'| sudo tee -a /etc/services

sudo /etc/init.d/xinetd restart
sudo cp sample-config/nrpe.cfg /usr/local/nagios/etc/

Compilando os binários do NRPE para a pasta do Nagios

sudo cp src/nrpe /usr/local/nagios/bin/
sudo cp src/check_nrpe /usr/local/nagios/libexec/ 

Baixando e instalando o NSCA

wget -c http://ufpr.dl.sourceforge.net/sourceforge/nagios/nsca-2.7.2.tar.gz

Compilando o NSCA
tar xzvf nsca-2.7.2

cd nsca-2.7.2
sudo ./configure
sudo make
sudo make install

Baixando um Skin para o Nagios

wget -c http://packzaitan.googlecode.com/files/nagios_skyns.tar.gz 
tar xzvf nagios_skyns.tar.gz
sudo mv /usr/local/nagios/share /usr/local/nagios/share.old
sudo mv share /usr/local/nagios/
sudo mkdir /usr/local/nagios/etc/services
sudo mkdir /usr/local/nagios/etc/hosts
sudo mkdir /usr/local/nagios/etc/backup
sudo mkdir /usr/local/nagios/etc/backup/hosts
sudo mkdir /usr/local/nagios/etc/backup/services
sudo chown -R nagios.nagios /usr/local/nagios/*

Configurando o Apache2

echo 'ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin/
<Directory "/usr/local/nagios/sbin/">
   AllowOverride AuthConfig
   Options ExecCGI
   Order allow,deny
   Allow from all
</Directory>
Alias /nagios /usr/local/nagios/share/
<Directory "/usr/local/nagios/share">
   Options None
   #AllowOverride AuthConfig
   #Order allow,deny
   #Allow from all
   #AuthName "Nagios Access"
   #AuthType Basic
   #AuthUserFile /usr/local/nagios/etc/htpasswd.users
   #require valid-user
</Directory>' > nagios

sudo cp nagios /etc/apache2/sites-enabled/

Modificando as configurações do cgi do Nagios

sudo sed -i 's/^use_authentication=.*/use_authentication=0/' /usr/local/nagios/etc/cgi.cfg

Adicionando o Nagios para ser executado durante o Boot

sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Finalizando a Instalação e restartando o Apache2 e o Nagios

sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nagios restart

Arquivos de configuração do nagios

Todos estes arquivos estão dentro de etc do nagios. Procedimentos:
cgi.cfg– Não altere;
checkcommands.cfg – criar este;
commands.cfg* – Altera este ver linhas a serem descomentadas e acrecestadas;
contactgroups.cfg* – criar este e acrescentar as linhas necessárias;
contacts.cfg *- criar este e acrescentar as linhas necessárias;
hostgroups.cfg* - criar este e acrescentar as linhas necessárias;
hosts.cfg *- criar este e acrescentar as linhas necessárias;
localhost.cfg – arquivo padrão da máquina de monitoramento, já estando pré-configurado;
nagios.cfg *– arquivo principal do nagios , acrescentar linhas necessárias e descomentar algumas;
nrpe.cfg – arquivo do agente remoto do nagios;
resource.cfg – arquivo padrão de instalação deixar como esta;
services.cfg *– arquivo necessário criar e adicionar os comandos.

*Arquivos alterados e criados.












Configuração dos arquivos

commands.cfg

###### comandos novos
################################################################################
## 'check_nrpe'

define command{
command_name check_nrpe
command_line /usr/local/nagios/libeexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

###############################################################################
###############################################################################
## check nsclient
define command{
command_name check_nt_disk
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 1248 -v USEDDISKSPACE -l $ARG2$ -c $ARG3$
}

define command{
command_name check_cpuload
command_line  $USER/check_nt -H $HOSTADDRESS -p 1248 -v CPULOAD -l $ARG1$
}

define command{
command_name check_nt_uptime
command_line  $USER1$/check_nt -H $HOSTADDRESS -p 1248 -v UPTIME
}

define command{
command_name check_nt_clientversion
command_line  $USER1$/check_nt -H $HOSTADDRESS -p 1248 -v CLIENTVERSION
}

define command{
command_name  check_nt_process
command_line  $USER1$/check_nt -H $HOSTADDRESS$ -p 1248 -v PROCSTATE -l $ARG1$
}

define command{

command_name check_nt_service
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 1248 -v SERVICESTATE -d SHOWALL -l $ARG1$
}

define command{

command_name  check_nt_memuse
command_line  $USER1$/check_nt -H $HOSTADDRESS$ -p 1248 -v MEMUSE -w $ARG$ -c $ARG2$

}


###############################################################
# notificao por e-mail
###############################################################

define command{
command_name host-notificacao-por-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}

define command{
command_name notificacao-por-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}


contactgroups.cfg

define contactgroup {
contactgroup_name    suporte
alias                Grupo Suporte
members                     anderson     
}


 contacts.cfg
define contact {
   contact_name                   anderson
   alias                          anderson oliveira
   service_notification_period    24x7
   host_notification_period       24x7
   service_notification_options   w,u,c,r
   host_notification_options      d,u,r
   service_notification_commands  notificacao-por-email
   host_notification_commands     host-notificacao-por-email
   email                          aosamp25@hotmail.com
}





hostgroups.cfg

define hostgroup {
        hostgroup_name     servidores
        alias               Servidores windows e linux
        contact_groups      suporte
        members             suporte
}


hosts.cfg


define host{
        name                            host-padrao
        notifications_enabled           1
        event_handler_enabled           1
        flap_detection_enabled          1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        register                        0
}


nagios.cfg


Nele veja as linhas adicionadas e outras descomentadas

#cfg_dir=/usr/local/nagios/etc/windows



cfg_file=/usr/local/nagios/etc/commands.cfg

cfg_file=/usr/local/nagios/etc/localhost.cfg

cfg_file=/usr/local/nagios/etc/checkcommands.cfg
cfg_file=/usr/local/nagios/etc/contactgroups.cfg
cfg_file=/usr/local/nagios/etc/contacts.cfg
#cfg_file=/usr/local/nagios/etc/dependencies.cfg
#cfg_file=/usr/local/nagios/etc/escalations.cfg
#cfg_file=/usr/local/nagios/etc/hostgroups.cfg
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.cfg
#cfg_file=/usr/local/nagios/etc/timeperiods.cfg

cfg_file=/usr/local/nagios/etc/objects/windows.cfg







services.cfg


# Template de Servico
define service{
   name                            service-padrao
   active_checks_enabled           1
   passive_checks_enabled          1
   parallelize_check               1
   obsess_over_service             1
   check_freshness                 0
   notifications_enabled           1
   event_handler_enabled           1
   flap_detection_enabled          1
   process_perf_data               1
   retain_status_information       1
   retain_nonstatus_information    1
   register                        0
}



Outros arquivos

                Neste caso estava monitorando uma máquina com Windows a modo de teste estão foram criados algumas pastas e arquivos .cfg para a mesma. Segue os procedimentos:


# mkdir /usr/local/nagios/etc/objects


Dentro de cada um criar os respectivos arquivos .cfg:


# touch /usr/local/nagios/etc/objects/windows.cfg


Obs: Instale e configure corretamente o nsclient na máquina com Windows.



Configuração de cada arquivo windows.cfg



define host{
        use                     host-padrao
        host_name               host-hppc
        alias                   casa
        address                 192.168.1.101
        check_command           check-host-alive
        max_check_attempts      10
        notification_interval   120
        notification_period     24x7
        notification_options    d,u,r
       contact_groups          suporte
        }

#####################################################
###disk C########
define service{
use service-padrao
host_name host-hppc
service_description Disco C
is_volatile          0
check_period         24x7
max_check_attempts   4
normal_check_interval       5
retry_check_interval 1
contact_groups              suporte
notification_options w,u,c,r
notification_interval       960
notification_period  24x7
check_command        check_nt_disk!C!85%!90%
}     

########################################################
## MEMUSE
define service{
use service-padrao
host_name            host-hppc
service_description  memuse
is_volatile          0
check_period         24x7
max_check_attempts   4
normal_check_interval       1
retry_check_interval 1
contact_groups              suporte
notification_options w,u,c,r
notification_interval       960
notification_period  24x7
check_command        check_nt_memuse!80!90
}



Para finalizar teste o nagios, executando o comando dentro de etc do mesmo ../Bin/nagios –v nagios.cfg.

Reiniciar o serviço do nagios: #/etc/init.d/nagios stop e depois # #/etc/init.d/nagios start

Depois basta acessar pelo o navegador: ip do servidor/nagios


Fontes
http://www.vivaolinux.com.br/artigo/Monitoracao-de-Hosts-e-Servicos-com-o-NAGIOS/
http://under-linux.org/wiki/Tutoriais/Monitoramento/nagios-install
Costa Felipe. ambiente de rede monitorado com Nagios e Cacti . Editora moderna. 2008 

Caso queria ajudar nosso projeto... Fique à vontade !!!


EBOOKS

Translate | Tradutor

Deseja anunciar aqui. Fale comigo !!!

Nome

E-mail *

Mensagem *

Tecnologia do Blogger.

Arquivo