Mostrar mensagens com a etiqueta Nagios. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Nagios. Mostrar todas as mensagens

quarta-feira, 26 de outubro de 2011

Script para instalação do OCS + GLPI [+NAGIOS]

 

#!/bin/bash
# Qualquer comando que falhe, faz um stop ao script
#set -e

# Trata variáveis não definidas como erros
#set -u


instalar(){
yum -y clean all
yum -y check-update
yum -y update
yum -y install wget
echo "**** wget instalado ****"
echo "**** A descarregar repositorios ****"
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm http://rpms.famillecollet.com/enterprise/remi-release-5.rpm http://rpms.famillecollet.com/RPM-GPG-KEY-remi
#wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
#wget http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm --import RPM-GPG-KEY-remi
echo "**** A instalar Apache+Mysql+PHP+OCSIventory+GLPI ****"
yum -y install mysql system-config-network* system-config-securitylevel* ocsi* glpi glpi* glpi-* phpMyAdmin ntsys man
#Dar permissão a todos os utilizadores da rede 192.168.1.0 Se a sua rede for outra deve alterar a linha seguinte
sed -i "s/allow from ::1/allow from 192.168.1.0\/24/" /etc/httpd/conf.d/phpMyAdmin.conf


service mysqld restart
chkconfig mysqld on
service httpd restart
chkconfig httpd on

#Desactivar o SELINUX e a firewall do CentOS
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
chkconfig iptables off
chkconfig ip6tables off
sed -i 's/--disabled/--enabled/g' /etc/sysconfig/system-config-securitylevel


/etc/rc.d/init.d/network restart
service httpd reload


read -p "Introduza a password para a conta do user root do Mysql: " proot
mysqladmin -u root password $proot
echo "Agora entre no browser e corra http://192.168.1.66/ocsreports/install.php"
echo "Depois de instalar o ocs corra de novo este script escolha a configurão da BD para o GLPI"
echo "Só depois deve correr o site http://192.168.1.66/glpi"



}
reiniciar()
{
echo "Para nao reiniciar o computador pressione Ctrl+c, "
echo "porem e recomendavel reinicar."
echo "Para reniciar tecle Enter."
read
echo -n "O computador sera reiniciado em 10 segundos para aplicar as configuracoes realizadas "
for i in `seq 10`
do
clear
echo "+++++++++++++++++++++++++++++++++++++++"
echo""
echo " $i"
echo""
echo "+++++++++++++++++++++++++++++++++++++++"

`sleep 1`
done
`reboot`
}
rede()
{
hostname=" "
echo -n "Digite o hostname > "
read hostname
`echo NETWORKING=yes > /etc/sysconfig/network`
`echo NETWORKING_IPV6=yes >> /etc/sysconfig/network`
`echo HOSTNAME=$hostname >> /etc/sysconfig/network`
`echo '# Do not remove the following line, or various programs' > /etc/hosts`
`echo '# that require network functionality will fail.' >> /etc/hosts`
`echo '127.0.0.1 localhost.localdomain localhost '$hostname'' >> /etc/hosts`
hostname -v $hostname

echo -n "Deseja escolher IP fixo ? [s/n] > "
read opcao
if [ "$opcao" = "s" ]; then
ip=" "
echo -n "Digite o IP [ xxx.xxx.xxx.xxx ] > "
read ip
echo -n "Digite a mascara [ xxx.xxx.xxx.xxx ] > "
read mask
echo -n "Difite o default gateway [ xxx.xxx.xxx.xxx ] > "
read gw
echo -n "Digite o Ip do DNS Server [ xxx.xxx.xxx.xxx ] > "
read ipdns
`echo nameserver $ipdns >> /etc/resolv.conf`
`echo '#Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]' > /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo DEVICE=eth0 >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo BOOTPROTO=none >> /etc/sysconfig/network-scripts/ifcfg-eth0`
var=`ifconfig | head -1 | sed 's/ /#/g' | cut -d# -f11`
`echo HWADDR=$var >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo IPV6_AUTOCONF=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo TYPE=Ethernet >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo NETMASK=$mask >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo IPADDR=$ip >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo GATEWAY=$gw >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo "O usuario $USER configurou o IP $ip $datevar logado na console $SSH_TTY de $IP;" >> /var/log/script_inicializacao.log`
elif [ "$opcao" = "n" ]; then
echo "Ip atribuito por DHCP"
`echo '#Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]' > /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo DEVICE=eth0 >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo BOOTPROTO=dhcp >> /etc/sysconfig/network-scripts/ifcfg-eth0`
var=`ifconfig | head -1 | sed 's/ /#/g' | cut -d# -f11`
`echo HWADDR=$var >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo IPV6INIT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo IPV6_AUTOCONF=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo TYPE=Ethernet >> /etc/sysconfig/network-scripts/ifcfg-eth0`
`echo "O usuario $USER atribuiu IP via DHCP em $datevar logado na console $SSH_TTY de $IP;" >> /var/log/script_inicializacao.log`
fi
#instalar a firewal
install -o root -g root -m 755 firewall /etc/rc.d/init.d
chkconfig --add firewall
service firewall start
chkconfig firewall on

echo -n "Deseja configurar Data? [s/n] > "
read opcao
if [ "$opcao" = "s" ]; then
echo -n "Digite a hora/data no formato [ mm/dd/aaaa hh:mm ] > "
read data
echo " `date -s "$data"` "
datevar=`date`
fi

echo -n "Deseja Reiniciar? [s/n] > "
read opcao

if [ "$opcao" = "s" ]; then
reiniciar
else
/etc/rc.d/init.d/network restart
fi
}
info()
{
clear
vi readme_ConfigurarOCSeGLPI
}
sqlGLPI()
{

echo -n "Já instalou o ocsIventory? [s/n] > "
read opcao
if [ "$opcao" = "n" ]; then
echo "Então entre no browser e corra http://192.168.1.66/ocsreports/install.php"
echo "Depois de instalar o ocs corra de novo este script e reponda que já instalou o ocs"
#mysql --user root -p < ocs.sql
elif [ "$opcao" = "s" ]; then
#read -p "Introduza a password que escolheu para o user OCS: " ocsp
#Password do user ocs: ocssecret
ocsp=ocssecret
texto=`cat /etc/httpd/conf.d/ocsinventory-server.conf | grep 'PerlSetVar OCS_DB_PWD'`
sed -i "s/$texto/PerlSetVar OCS_DB_PWD "$ocsp"/g" /etc/httpd/conf.d/ocsinventory-server.conf
sed -i "s/\"PSWD_BASE\"\]=\"ocs\";/\"PSWD_BASE\"\]=\""$ocsp"\";/g" /etc/ocsinventory/ocsinventory-reports/dbconfig.inc.php

texto=`cat /etc/php.ini | grep "memory_limit"`
texto2=`echo $texto | sed -e "s/[0-9][0-9][mM]/64M/g"`
sed -i "s/$texto/$texto2/g" /etc/php.ini

texto=`cat /etc/php.ini | grep "post_max_size"`
texto2=`echo $texto | sed -e "s/[0-9][mM]/8M/g"`
sed -i "s/$texto/$texto2/g" /etc/php.ini

texto=`cat /etc/php.ini | grep "upload_max_filesize"`
texto2=`echo $texto | sed -e "s/[0-9][mM]/8M/g"`
sed -i "s/$texto/$texto2/g" /etc/php.ini

echo "Introduza a password do user root, definida para o Mysql:"
mysql -uroot -p < glpi.sql
echo " Foram criadas ou alteradas as seguintes contas com para as seguintes passwords "
echo " user:ocs, pass:ocssecret"
echo " user:glpi, pass:glpisecret"
echo " user:synchro, pass:syncsecret"
echo ""
echo " Agora entre no browser e corra http://192.168.1.66/glpi"
fi
}
registar()
{
echo " Vamos registar esta máquina no ocs"
ocsinventory-agent --debug --server=localhost

}
nagios()
{
echo "***** A iniciar a instalação do Nagio: " `date`
echo "***** A instalar os pré-requisitos"
yum -y install httpd
yum -y install gcc
yum -y install glibc glibc-common
yum -y install gd gd-devel

echo "***** A definir o Ambiente"
#Criação do usuário:
useradd -m nagios
echo "PASSWORD" |passwd --stdin nagios

#Agora é preciso criar um grupo que chamaremos de "nagcmd" para permitir que comandos externos sejam passados pela interface web.
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache


echo "***** A Instalar o Nagios"
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-re*.rpm
yum clean all
yum update
yum install nagios nagios-plugin

##make install-webconf

echo "***** A definir a autenticação web"
htpasswd -nb nagiosadmin PASSWORD > /etc/nagios/htpasswd.users
service httpd restart

echo "***** A verificar e corrigir SELINUX"
chcon -R -t httpd_sys_content_t /usr/share/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/share/nagios/share/

echo "***** A Arrancar o Nagios"
chkconfig --add nagios
chkconfig nagios on
service nagios start

echo "*****Concluido: " `date`





}

i=10
while((i!=0));
do
echo "******************************************************************************"
echo " Selecione o que pretende fazer?"
echo " 0 - Mais informacao"
echo " 1 - Configurar a rede (No final será pedido para reiniciar a maquina)"
echo " 2 - Downlaod do Mysql, Apache, OCSInventory e GLPI e instalacao"
echo " 3 - Preparar a base de dados para o GLPI (so depois de instalar o OCSi"
echo " 4 - Registar a primeira maquina"
echo " 5 - Instalar o nagios"
echo " 9 - Reboot"
echo "******************************************************************************"
echo -n " Escolha a opcao? > "
read i
case $i in
1) rede;;
2) instalar ;;
3) sqlGLPI ;;
0) info ;;
4) registar ;;
5) nagios ;;
9) reiniciar ;;
esac
done

quinta-feira, 4 de março de 2010

Monitorando redes e servidores com Nagios

Um dos melhores programas de monitoramento de hosts e serviços open source é o Nagios, essa incrível e, a princípio, complicada ferramenta. Existe muita documentação sobre o Nagios, porém poucas reúnem todo o processo, desde a instalação, configuração e testes. Por isso, depois de enfrentar dificuldades, resolvi publicar minhas descobertas.

Por: Ricardo Gavioli

Fonte: http://www.vivaolinux.com.br/artigo/Monitorando-redes-e-servidores-com-Nagios/

 

Apresentação e motivação

Muitos administradores e estudantes ouvem falar (bem) sobre o Nagios. Porém, as corretas instalações e configurações nem sempre são alcançadas, devido ao grande número de funções e serviços que o Nagios oferece. 

Depois de apanhar muito durante a instalação e, principalmente, na configuração dessa ferramenta, resolvi fazer um apanhado de todos os meus passos para chegar até um sistema de monitoramento e notificações otimizado e bem configurado. 

Preparação do ambiente

Este artigo foi estruturado utilizando:
  • Pentium 4 3.0 GHz
  • 512MB RAM
  • HD 40GB
  • Linux Debian Etch
  • Nagios 2.9
  • Apache2
Antes de iniciarmos os trabalhos com o Nagios, primeiro devemos realizar a preparação do ambiente, para que não tenhamos problemas futuros nem necessidades de recompilação. 

O Nagios é uma ferramenta para uso totalmente via Web. Por isso é importante que seu Apache esteja instalado e funcionando, assim como seu MTA (para envio das notificações). 

Para o correto funcionamento do Nagios, é importante que os seguintes pacotes estejam instalados:
  • openssl (para monitoramento de hosts remotos)
  • libssl-dev (para compilação do NRPE, explicado adiante)
  • mcrypt (criptografia de envio dos dados remotos)
  • build-essential (para compilação dos pacotes)
  • nmap (para testes das portas)
  • xinetd (para iniciar o serviço NRPE)
  • apache2 (óbvio)
  • gd (para geração dos mapas de status)
  • libjpeg e libpng (criação das imagens dos mapas)
No Debian: 

# apt-get install openssl libssl-dev mcrypt build-essential nmap xinetd apache2 libjpeg62 libjpeg-dev libpng12-0 libpng12-dev libgd2-xpm libgd2-xpm-dev fontconfig 

Pacotes Nagios

Utilizaremos nessa instalação três pacotes fornecidos no site www.nagios.org/download:
  • nagios-2.9
  • nagios-plugins-1.4.9
  • nrpe-2.8.1
Abaixo os links para download desses pacotes. Se esses links estiverem quebrados, acesse o site www.nagios.org/download e baixe a última versão destes. 

Nagios: Nagios Plugins: NRPE: Antes de começar, precisamos também criar o usuário e os diretórios que serão utilizados. 

Adicionar usuário nagios: 

# adduser nagios 

Criar o diretório de instalação: 

# mkdir /usr/local/nagios 

Acertar a permissão no diretório: 

# chown -R nagios. /usr/local/nagios 

Criar o grupo de acesso via Web: 

# groupadd nagcmd 

Definir os usuários do Apache e Nagios como integrantes desse grupo: 

# usermod -G nagcmd www-data (verifique se esse é o seu usuário do Apache2)
# usermod -G nagcmd nagios 

 

Mãos à obra

 
No diretório onde você baixou os pacotes (aconselho /root/nagios), descompacte o Nagios: 

# tar zxvf nagios-2.9.tar.gz
# cd nagios-2.9
 

Finalmente, vamos começar!!! 

Primeiro, criaremos o Makefile para instalação. Um simples "./configure" já resolve todos os problemas... mas, caso você queira alterar alguma opção, segue as opções padrão mais utilizadas: 

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

Ao final, será exibido um resumo das opções selecionadas acima. 

Agora, compilamos o Nagios: 

# make all 

Se não ocorrer nenhum erro, seguimos agora com a instalação propriamente dita. 

# make install 

Este comando criará todas as subpastas necessárias e instalará o programa principal. 

Em seguida podemos instalar os scripts de inicialização de serviço (em /etc/init.d). 

# make install-init 

Crie também os arquivos de configuração padrão de exemplo (serão muito úteis): 

# make install-config 

E por fim, para realizar algumas configurações via web e hosts remotos, acionamos o modo de comando remoto: 

# make install-commandmode 

Pronto!!! Nosso Nagios já está instalado e pronto para ser configurado. 

Mas primeiro, vamos aos plugins... 

 

Instalação dos plugins e NRPE

Plugins são os scripts que o Nagios executa (também podem ser executados manualmente) para verificar o status de um host ou serviço. Existem vários plugins neste pacote, e podemos ainda criar plugins personalizados... mas essa é uma outra história. 

Os plugins ficam, por padrão, dentro de /usr/local/nagios/libexec. 

Primeiro, descompacte o arquivo baixado: 

# tar zxvf nagios-plugins-1.4.9.tar.gz 

Agora, vamos criar o Makefile: 

# cd nagios-plugins-1.4.9
# ./configure
# make all
# make install
 

Pronto, os plugins já estão instalados e prontos para serem acessados. 

O único problema dos plugins é que a maioria deles são para uso local no servidor, para monitoramento de uso de disco, partições, usuários logados, processos, cpu, memória, etc. 

Para realizar o monitoramento desses recursos em hosts remotos (outras máquinas linux ou Unix), utilizamos o NRPE (Nagios Remote Plugin Executor). 

Para isto, não é preciso instalar o Nagios nos hosts remotos, apenas os plugins e o NRPE. 

Para instalar o NRPE, primeiro descompacte o arquivo: 

# tar zxvf nrpe-2.8.1.tar.gz 

Vamos ao Makefile: 

# ./configure 

À compilação: 

# make all 

À instalação do plugin "check_nrpe" dentro de libexec: 

# make install-plugin 

O daemon do serviço: 

# make install-daemon 

O arquivo de configuração padrão: 

# make install-daemon-config 

E a criação do serviço dentro do xinetd: 

# make install-xinetd 

Pronto. Plugin e daemon instalados, arquivo de configuração e serviço xinetd criados. 

Vamos agora apontar o número da porta no arquivo /etc/services. 

# vi /etc/services 

Insira a linha: 

nrpe 5666/tcp # NRPE

Salve e saia. Reinicie o serviço XINETD. 

# /etc/init.d/xinetd restart 

Pronto, o NRPE já está, ou deveria estar rodando. 

Para testar, utilize: 

# nmap localhost -p 5666 

Se retornar o status 5666/tcp open, o NRPE está rodando. Se o status estiver como closed, verifique a configuração do serviço nrpe no xinetd está como disable = no. 

Nos clientes

Para fazer a instalação nos hosts remotos, altere também o serviço no xinetd, para permitir a conexão do Nagios Server ao NRPE: 

# vi /etc/xinetd.d/nrpe 

Altere a linha: 

only from = 127.0.0.1 

para 

only from = 127.0.0.1 <ip_nagios_server>

Salve e saia. Reinicie o serviço XINETD. 

# /etc/init.d/xinetd restart 

Para permitir que o servidor Nagios execute os plugins remotamente no cliente, o arquivo /usr/local/nagios/etc/nrpe.cfg nos clientes deve estar correto, e com todos os comandos a serem executados já definidos. 

Por exemplo: 

Se a linha de comando local do plugin "check_swap" é: 

# /usr/local/nagios/libexec/check_swap -w 20% -c 10% 

Então, a definição do comando no NRPE.CFG deverá ser: 

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

E no servidor, esse comando deverá ser definido em services.cfg como: 

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

No servidor, a verificação deste serviço, dentro de services.cfg será: 

define service{
use local-service
host_name proxy
service_description SWAP
check_command check_nrpe!check_swap
contact_groups <nome_do_grupo>
}

Vamos agora à parte mais demorada, as configurações do Nagios... 

# /usr/local/nagios/libexec/check_http -h 

No caso do plugin check_http, a opção "-H" define o IP do HTTP server a ser testado: 

# /usr/local/nagios/libexec/check_http -H <ip_httpserver> 

Com esta linha de comando, a definição do comando dentro de commands.cfg, será: 

define command{
command_name check_http
command_line check_http -H $HOSTADDRESS$
}

Na linha acima, a variável $HOSTADDRESS$ será informada pelo Nagios no momento da verificação desse serviço. 

O arquivo commands.cfg original já possui muitos comandos predefinidos, por isso não daremos tanta atenção a este arquivo agora. 

services.cfg

Definição dos serviços de monitoramento. Utilizando a definição do comando check_http em commands.cfg, podemos ativar o monitoramento de um servidor http, utilizando a seguinte configuração, dentro de services.cfg: 

Primeiro, definimos um template (padrão), afim de diminuir o número de linhas nesse arquivo, podendo aplicar esse template aos serviços desejados. 

define service{
name local-service
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
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 1
contact_groups <nome_do_grupo>
notification_options w,u,c,r
notification_interval 60
notification_period 24x7
register 0
}

Agora, definimos o serviço HTTP a monitorar: 

define service{
use local-service # (nome do template)
host_name site
service_description Servidor HTTP
check_command check_http!<ip_http_server>
contact_groups <Grupo de Contato>
}

Repare que na linha "check_command", deverá ser colocado o nome do serviço plugin "check_http", seguido de (!) exclamação e o IP do servidor, que será o valor da variável $HOSTADDRESS$ declarada no arquivo commands.cfg. 

Adicione também no arquivo commands.cfg, a definição do plugin NRPE: 

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

contacts.cfg

Definição dos contatos para envio de notificações e alertas. 

define contact{
contact_name <login>
alias <Nome_Completo>
service_notification_period <Periodos definidos em TIMEPERIODS.CFG>
host_notification_period <Periodos definidos em TIMEPERIODS.CFG>
service_notification_options w,u,c,r #( w=warning / u=unknown / c=critical / r=recoveries / n=none)
host_notification_options d,u,r #( d=down / u=notify / r=recoveries / n=none )
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email email@seudominio.com.br
}

contactgroups.cfg

Definição dos grupos de contatos, facilitando a configuração para envio de notificações e alertas. 

define contactgroup{
contactgroup_name <grupo>
alias <nome do grupo>
members <Logins definidos no arquivo contacts.cfg>
}

hosts.cfg

Configuração dos hosts que serão monitorados. 

Pode ser definido um host padrão (template) e utilizado para todos os hosts, diminuindo muito o número de linhas no arquivo hosts.cfg. 

define host{
name generic-host
event_handler_enabled 1
flap_detection_enabled 1
max_check_attempts 5
notification_interval 20
notification_options d,u,r
notification_period 24x7
notifications_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0 # não deve ser registrado, pois não é um host, apenas um template
}

define host{
use generic-host # nome do template criado acima
address <ip_servidor>
alias <Nome do Servidor>
check_command <comando pre-definido em services.cfg>
host_name <Host_Name_do_servidor>
}

hostgroups.cfg

Definição dos grupos de hosts. 

define hostgroup{
hostgroup_name <nome_do_grupo>
alias <Descrição do Grupo>
contact_groups <grupos_que_fazem_parte>
members <hosts_que_fazem_parte>
}

timeperiods.cfg

Declaração dos horários para monitoramento. 

define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}


define timeperiod{
timeperiod_name workhours
alias "Normal" Working Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}


define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}
 

Iniciando pela primeira vez

Antes de iniciar o Nagios pela primeira vez, crie o diretório para envio de comandos internos do Nagios. 

# mkdir /usr/local/nagios/var/rw 

E defina suas permissões: 

# chown nagios. /usr/local/nagios/var/rw 

Verifique as configurações do Nagios, utilizando: 

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 

Se existirem erros de configuração, ele informará em quais linhas e arquivos estão os problemas a serem corrigidos. Tente corrigir todos estes erros, pois é possível que o Nagios não inicie devido a problemas de configurações. 

Depois de tudo acertado, basta iniciar o daemon do Nagios. 

# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg 

Ele pode também ser iniciado via serviço: 

# /etc/init.d/nagios restart 

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 

Para criar novos usuários: 

# htpasswd /usr/local/nagios/etc/htpasswd.users <usuario> 

O arquivo /usr/local/nagios/etc/cgi.cfg contém as configurações de acesso e visualização via Web-CGI. 

Descomente as linhas de autorização, e defina os usuários que podem acessar as funções. 

authorized_for_system_information=nagiosadmin, usuario
authorized_for_configuration_information=nagiosadmin, usuario
authorized_for_system_commands= nagiosadmin, usuario
authorized_for_all_services=nagiosadmin, usuario
authorized_for_all_hosts=nagiosadmin, usuario
authorized_for_all_service_commands=nagiosadmin, usuario
authorized_for_all_host_commands=nagiosadmin, usuario

Reinicie o Nagios e tente acessar novamente as páginas do sistema. 

# /etc/init.d/nagios restart 

http://<ip_do_servidor>/nagios 

Coloque o usuários nagiosadmin, e a senha definida. 

Pronto, você está acessando as páginas de monitoramento do Nagios!!! 

 

Onde está a dificuldade?

O Nagios é uma poderosíssima ferramenta para monitoramento de hosts e serviços. 

Suporta envio de alertas e notificações por e-mail, permite visualização em tempo real do status dos hosts e serviços e os problemas apresentados, possui um excelente sistema de logs, históricos, gráficos de disponibilidade, mapas da rede em 2D e 3D (desde que configurado corretamente). 

Muitos administradores apanham muito para acertar sua configuração. 

Porém, o grande mistério do Nagios não está em seus arquivos de configuração, e sim em seus conceitos. 

A separação das configurações em diversos arquivos ajuda muito na visualização e alteração das configurações, mesmo que seja possível declarar todos os comandos, serviços, hosts e períodos dentro de um único arquivo (como pode ser visto no arquivo "localhost.cfg", criado por padrão). 

Depois que a lógica do Nagios é compreendida (criação de templates, grupos,etc.), sua configuração passa a ser muito simples. 

A única parte realmente demorada do trabalho, é a criação dos hosts... Como essa criação é feita de forma praticamente manual, host a host, serviço a serviço, acaba gerando uma certa frustração no administrador, principalmente se você está acostumado com o maravilhoso "apt-get" do Debian, onde qualquer coisa instalada já está funcionando sem grandes configurações. 

Mas como todos sabemos, o mundo Linux não é criado de forma rápida ou simples (pra isso existe o Windows...). Tudo dá trabalho e exige massa cinzenta. 

E pode ter certeza... o resultado final compensa as horas (ou dias) gastos. 

Conclusão

Todos os nomes de arquivos de configuração citados neste artigo são sugeridos pela documentação do Nagios. 

Porém, servem apenas como orientação. Nada te impede de criar um arquivo chamado FINANCEIRO.CFG e configurar os hosts e serviços do setor Financeiro de sua empresa nesse arquivo. 

O importante é que os arquivos utilizados estejam declarados dentro do arquivo de configuração NAGIOS.CFG, através da linha: 

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

Para maiores informações, links, documentação, downloads, fórum... Boa sorte!!! 

Ricardo Gavioli 

quinta-feira, 14 de janeiro de 2010

Nagios + NSClient++ + NagiosQL + NDOUtils no CentOS 5.3

Introdução:

Este material foi preparado para as minhas aulas de gerência de redes, mas resolvi compartilhar, pois pode ser útil para alguém.

Basicamente peguei vários tutoriais da internet (ver referências) e adaptei para minhas necessidades e realidade da distribuição escolhida.

Neste tutorial abordarei a instalação e configuração dos seguintes itens:

  • Nagios - Software de gerência de redes.
  • NagiosQL - Interface Web para administração das configurações do Nagios, armazena as configurações em uma base de dados.
  • NDOUtils - Addon que permite armazenar os as informações colhidas pelo Nagios em uma base de dados.
Sobre o Nagios:
Nagios é uma popular aplicação de monitoração de rede de código aberto distribuída sob a licença 
GPL. Ele pode monitorar tanto hosts quanto serviços, alertando-o quando ocorrerem problemas e também quando os problemas forem resolvidos.

O Nagios foi originalmente criado sob o nome de Netsaint, foi escrito e é atualmente mantido por Ethan Galstad, junto com um exército de desenvolvedores que ativamente mantém plugins oficiais e não-oficiais.

Nagios primeiramente foi escrito para o sistema operacional Linux, mas pode rodar em outros Unixes também.

Características:
  • Monitora serviços de rede (SMTP, POP3, HTTP, NNTP, ICMP, SNMP)
  • Monitora recursos de computadores ou equipamentos de rede (carga do processador, uso de disco, logs do sistema) na maioria dos sistemas operacionais com suporte a rede, mesmo o Microsoft Windows com o uso de plugins.
  • Monitoração remota suportada através de túneis criptografados SSH ou SSL.
  • Desenvolvimento simples de plugins que permite aos usuários facilmente criar seus próprios modos de monitoração dependendo de suas necessidades, usando a ferramenta de desenvolvimento da sua escolha (Bash, C, Perl, Python, PHP, C#, etc.)
  • Checagem dos serviços paralelizadas, ou seja, se você tiver muitos ítens monitorados não há risco de alguns deles não serem checados por falta de tempo.
  • Capacidade de definir a rede hierarquicamente definindo equipamentos "pai", permitindo distinção dos equipamentos que estão indisponíveis daqueles que estão inalcançáveis.
  • Capacidade de notificar quando um serviço ou equipamento apresenta problemas e quando o problema é resolvido (via email, pager, SMS, ou qualquer outro meio definido pelo usuário por plugin).
  • Capacidade de definir tratadores de eventos que executam tarefas em situações pré-determinadas ou para a resolução pró-ativas de problemas.
  • Rotação automática de log.
  • Suporte para implementação de monitoração redundante.
  • Excelente interface web para visualização do atual status da rede, notificações, histórico de problemas, arquivos de log, etc…
  • Versão atual, estável: 3.2.0
Instalação:
Primeiro vamos instalar os pré-requisitos do Nagios. Os pré-requisitos são:
  • Apache
  • GD Development Libraries
  • GCC compiler and development libraries
# yum install httpd gd gd-devel gcc

Depois de instalados os pré-requisitos criaremos um usuário e grupo para o Nagios conforme abaixo.

Criação do usuário:
# adduser nagios
# passwd nagios

Obs.: Após executar o comando "passwd nagios", crie uma senha para o usuário nagios.

Agora é preciso criar um grupo que chamaremos de "nagcmd" para permitir que comandos externos sejam passados pela interface web.
# groupadd nagcmd
# usermod -G nagcmd nagios

Download, Descompactação e Instalação do Nagios e dos Plugins:
# cd /install/
# mkdir nagios
# cd nagios/
Fazer o download do Nagios e dos plugins (
www.nagios.org/download) para o diretório acima:
# wget
http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
# wgethttp://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz

Descompactar os arquivos:
# tar xzvf nagios-3.2.0.tar.gz

Entrar no diretório do Nagios:
# cd nagios-3.2.0

Rodar o script de configuração do Nagios (Para ver as opções: #./configure --help):
#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-htmurl=/nagios --with-cgiurl=/nagios/cgi-bin --with-command-group=nagcmd --with-gd-lib=/usr/lib --with-gd-inc=/usr/include

Compilar o Nagios:
# make all (Compila os fontes)
# make install (Instala o programa principal, as CGIs e os arquivos HTML)
# make install-init (Instala o script de inicialização em /etc/rc.d/init.d)
# make install-config (Instala arquivos de configuração de exemplo [*SAMPLE*] em /usr/local/nagios/etc)
# make install-commandmode (Instala e configura permissões para o diretório que conterá o arquivo de comandos externos)

Descompactar os arquivos:
# cd /install/nagios/
# tar xzvf nagios-plugins-1.4.14.tar.gz

Entrar no diretório dos Plugins do Nagios:
# cd nagios-plugins-1.4.14

Rodar o script de configuração dos plugins (Para ver as opções: #./configure --help):
#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios

Compilar os plugins:
# make
# make install

Instalar o Imagepack:
Obtemos o source do imagepack atravéz do link:
# wget http://prdownloads.sourceforge.net/nagios/imagepak-base.tar.gz

Descompactar os arquivos:
# tar xzvf imagepak-base.tar.gz

Entrar no diretório do Imagepack:
# cd /base/

Copiar os arquivos para a pasta padrão de ícones do Nagios:
# cp * /usr/local/nagios/share/images/logos/

Configuração da Interface Web – Apache:
Por padrão o Nagios não possui controle de usuários, por isso vamos criar uma autenticação simples através do apache.

Editar o arquivo httpd.conf e inserir as linhas abaixo.
# vi /etc/httpd/conf/httpd.conf

###############################################################################
# HTML (http://localhost/nagios) AND CGI APACHE AUTHENTICATION
###############################################################################
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
AllowOverride AuthConfig
Options ExecCGI
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
</Directory>

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

Criando usuário e senha para autenticar na interface web: 
# htpasswd -c /usr/local/nagios/etc/htpasswd.users usuario1

Reiniciando o Apache:
# service httpd restart

Após isso, já deve ser possível visualizar a interface web do Nagios a partir do endereço 
http://localhost/nagios no navegador. Entretanto, as CGIs não fornecerão informação alguma (ainda é necessário configurar corretamente o Nagios).

Verificando se há erros nas configurações do Nagios:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Iniciando o Nagios:
# service nagios start

Iniciando nagios automáticamente:
# chkconfig --add nagios
# ntsysv
Verifique que a opção nagiso já está marcada:


Arquivos de configuração do Nagios:
# cd /usr/local/nagios/etc/
# ls -las *.cfg

nagios.cfg: Arquivo de configuração principal do Nagios, responsável por iniciar os serviços de monitoramento, é neste arquivo que fazemos referência aos demais arquivos de configuração (.cfg).
cgi.cfg: Arquivo de configuração dos programas CGIs localizados na pasta sbin.
resource.cfg: Macros definidas pelos usuários.

# cd /usr/local/nagios/etc/objects/
# ls -las *.cfg

commands.cfg: Definição dos comandos que podem ser executados pelo Nagios.
contacts.cfg: Contatos que deverão ser notificados caso ocorra algum problema, definição de grupos de contatos.
timeperiods.cfg: Informações sobre o período de monitoramento, podem ser definidos vários períodos de monitoramento diferentes.
templates.cfg: Definição dos modelos e exemplos de diversos tipos de configuração como hosts, serviços, contatos, etc.

Nagios.cfg:
# vi /usr/local/nagios/etc/nagios.cfg
Verifique se a seguinte linha está descomentada:
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

Localhost.cfg:
# vi /usr/local/nagios/etc/objects/localhost.cfg
Adicionar as linhas referente as imagens:
# Localhost
define hostextinfo{
host_name localhost
icon_image linux40.png
icon_image_alt Localhost
vrml_image linux40.png
gd2_image linux40.gd2
register 1
}

Adicionar/Alterar as linhas referente a serviços:
# Serviço de checagem do espaço em disco na partição root da máquina local.
# Warning se <> 20 usuários, Critical se > 50 usuários.
define service{
use local-service ; Name of service template to use
host_name localhost
service_description Current Users
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_local_users!20!50
}

# Serviço de checagem do número de processos correntemente rodando na máquina local.
# Warning se > 250 processos, Critical se > 400 processos.
define service{
use local-service ; Name of service template to use
host_name localhost
service_description Total Processes
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_local_procs!250!400
}

# Serviço de checagem da carga na máquina local.
define service{
use local-service ; Name of service template to use
host_name localhost
service_description Current Load
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}

# Serviço de "ping" da máquina local
define service{
use local-service ; Name of service template to use
host_name localhost
service_description PING
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_ping!100.0,20%!500.0,60%
}

Cgi.cfg:
# vi /usr/local/nagios/etc/cgi.cfg
Realizar as alterações (e descomentar, se for o caso):
use_authentication=1
authorized_for_system_information=usuario1
authorized_for_configuration_information=usuario1
authorized_for_system commands=usuario1
authorized_for_all_services=usuario1
authorized_for_all_hosts=usuario1
authorized_for_all_service_commands=usuario1
authorized_for_all_host_commands=usuario1

Timeperiods.cfg:
# vi /usr/local/nagios/etc/objects/timeperiods.cfg
Verificar as opções existentes e criar novos agendamentos se houver necessidade (esquemas de plantão por exemplo).

Commands.cfg:
# vi /usr/local/nagios/etc/objects/commands.cfg
Verificar as opções existentes e criar novos comandos se houver necessidade.

Contacts.cfg:
Realizar as alterações:
# vi /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name usuario1
alias Usuario 1
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email email@localhost.localdomain # Endereco de e-mail do usuario1.
}

define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin, usuario1
}

Observação:
service_notification_options:
w,u,c,r ( w=warning / u=unknown / c=critical / r=recoveries / n=none)
host_notification_options:
d,u,r ( d=down / u=notify / r=recoveries / n=none )

Verificando se há erros nas configurações do Nagios:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Reiniciando o Nagios:
# service nagios restart

Agora o Nagios já esta funcionando e monitorando o host local, os mesmos procedimentos podem ser utilizados para monitorar outros hosts com SO GNU/Linux, o próximo passo será a instalação do agente em um host com SO MS-Windows e a configuração necessária para o Nagios monitorar este host.

Utilizando Nagios NSClient++ para Monitorar Servidores Windows Remotos:

Introdução:
Como utilizar o Nagios para monitorar minhas estações e servidores com SO MS-Windows?
Utilizando o addon NSClient++ para executar o Nagios plugins no host e retornar as informações para o Nagios.

Instalação:
Faça o download da última versão do arquivo 
NSClient++.
Dê um dulo clique no arquivo NSClient++.msi, surge a tela inicial, clique em Next


Tela da licença, marque a opção "I accept the terms int the License Agreement" e clique em Next


Escolha o local de instalação e as opções de instalação e clique emNext


Escolha "Use the new configuration file" e clique em Next


Coloque o IP do servidor de Nagios e a Senha para este host, marque todas as opções exceto a opção "Enable NSCA Client"*, clique em Next


* NSCA - Nagios Service Check Acceptor é um puglin para receber dados dos clientes no modo passivo, ou seja, você acessa a máquina do cliente e faz ela enviar as informações para seu servidor Nagios, que já estará aguardando para receber as informações.

Isto é muito útil quando precisamos monitorar vários servidores e não podemos mexer no firewall de nenhum deles, pois o NSCA envia as informações dos servidores sem a necessidade de liberação de portas no firewall.

Na última tela desmarque a opção "Start Service" e clique em finish


Clique em Iniciar // Executar // services.msc e clique em OK


Localize o serviço "NSClient++" e dê um duplo clique para abrir as propriedades do serviço.


Na guia "Log On" marque a opção "Allow service to interact with desktop", clique em OK e inicie o serviço.


Habilitar o suporte a hosts MS-Windows:
# vi /usr/local/nagios/etc/nagios.cfg
Descomentar a linha abaixo:
cfg_file=/usr/local/nagios/etc/objects/windows.cfg

Configurar a senha de acesso ao NSClient++:
# vi /usr/local/nagios/etc/objects/commands.cfg
Altere a entrada do comando check_nt para incluir o argumento de senha “-s”. Altere “yourpassword” para a senha que você configurou durante a instalação do NSClient++:

define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s yourpassword -v $ARG1$ $ARG2$
}

Editar o template do Windows:
# vi /usr/local/nagios/etc/objects/windows.cfg
define host{
use windows-server ; Inherit default values from a Windows server template (make sure you keep this line!)
host_name mywinserver
alias Windows Server
address 192.168.1.100
}

define service{
use generic-service
host_name mywinserver
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}

Verificando se há erros nas configurações do Nagios:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Reiniciando o Nagios:
# service nagios restart

Instalando e configurando o NagiosQL:
Introdução:
O NagiosQL é uma interface web onde através dela é possível configurar o Nagios sem a necessidade de acessarmos configurações via linha de comando. Através de formulários é possível criar hosts, services e groups para monitoramento e notificação. Ótima ferramenta para ser integrada no nosso kit do Nagios.

Download, Descompactação e Instalação do Nagios e dos Plugins:
# cd /install
# mkdir nagiosql
# cd nagiosql

Fazer o download do Nagios para o diretório acima:
# wget
http://sourceforge.net/projects/nagiosql/files/nagiosql/NagiosQL%203.0.3/nagiosql303.tar.gz/download

Descompactar os arquivos:
# tar xzvf nagiosql303.tar.gz

Mover o diretório para o diretório padrão do apache:
# mv nagiosql3 nagiosQL
# mv nagiosQL/ /var/www/html/

Criar o arquivo que permite o início da instalação (ENABLE_INSTALLER):
# touch /var/www/html/nagiosQL/install/ENABLE_INSTALLER

Alterar as permissões do diretório:
# chown -R apache:apache /var/www/html/nagiosQL/config/

Suprir as dependências:
# yum install php-pear
# wget 
http://download.pear.php.net/package/HTML_Template_IT-1.2.1.tgz
# pear install HTML_Template_IT-1.2.1.tgz

Iniciar o Apache e o MySQL:
# service httpd restart
# service mysqld start

Instalando o NagiosQL:
Aponte o navegador para http://IP/nagiosQL/
Tela Inicial, escolha o idioma e clique em “Start New Installation


Tela de checagem de pré-requisitos, você pode ver os detalhes clicando em “+”, clique em Next:


Tela de configuração da Base de Dados, lembre-se de colocar uma senha para a base e também para o usuário Admin, clique em Next:


Resumo da instalação, clique em Finish:


O NagiosQL não inicia enquanto o arquivo “ENABLE_INSTALLER” não for removido


Remova o arquivo “ENABLE INSTALLER”:
# rm -rf /var/www/html/nagiosQL/install/ENABLE_INSTALLER

Atualize a tela (F5), o login então é disponibilizado:


Configurações Pós Instalação:
Criar os diretórios:
# mkdir -p /etc/nagiosql/{hosts,services,backup/{hosts,services}}

Alterar as permissões:
# chgrp apache /usr/local/nagios/
# chgrp apache /usr/local/nagios/etc/nagios.cfg
# chgrp apache /usr/local/nagios/etc/cgi.cfg
# chmod 775 /usr/local/nagios/
# chmod 664 /usr/local/nagios/etc/nagios.cfg
# chmod 664 /usr/local/nagios/etc/cgi.cfg
# chmod 6755 /etc/nagiosql/
# chown apache.nagios /etc/nagiosql/
# chmod 6755 /etc/nagiosql/hosts/
# chown apache.nagios /etc/nagiosql/hosts/
# chmod 6755 /etc/nagiosql/services/
# chown apache.nagios /etc/nagiosql/services/
# chmod 6755 /etc/nagiosql/backup/
# chown apache.nagios /etc/nagiosql/backup/
# chmod 6755 /etc/nagiosql/backup/hosts/
# chown apache.nagios /etc/nagiosql/backup/hosts/
# chmod 6755 /etc/nagiosql/backup/services/
# chown apache.nagios /etc/nagiosql/backup/services/

Finalizando:
Por padrão o NagiosQL busca a informações do Nagios em /etc/nagios, porém esse não é o diretório onde se encontram os arquivos de configuração do Nagios. Para corrigir isso deve-se criar um link simbólico de /usr/local/nagios/etc para /etc/nagios:
# ln -s /usr/local/nagios/etc /etc/nagios

Criar o diretório de importação:
# mkdir /etc/nagios/import

Realizar a importação dos arquivos para o NagiosQL:
Faça o login na interface do NagiosQL:


Clique em Tools // Data Import:


Selecione os arquivos segurando o CTRL, clique em Import:


Se tudo ocorreu bem, você recebe mensagens em verde com as informações:


Clique em Tools // Nagios Control e clique nos botões “Do It” das opções “Write monitoring data” e “Write additional data”:


Depois de realizados os procedimentos na interface gráfica, precisamos finalizar as configurações nos arquivos de configuração:
# vi /usr/local/nagios/etc/nagios.cfg

Em OBJECT CONFIGURATION FILE(S) comente os "cfg_file" e "cfg_dir" e insira o seguinte bloco de comandos:
cfg_file=/etc/nagiosql/contacttemplates.cfg
cfg_file=/etc/nagiosql/contactgroups.cfg
cfg_file=/etc/nagiosql/contacts.cfg
cfg_file=/etc/nagiosql/timeperiods.cfg
cfg_file=/etc/nagiosql/commands.cfg
cfg_file=/etc/nagiosql/hosttemplates.cfg

cfg_file=/etc/nagiosql/hostgroups.cfg
cfg_file=/etc/nagiosql/servicegroups.cfg
cfg_file=/etc/nagiosql/servicetemplates.cfg

cfg_dir=/etc/nagiosql/hosts
cfg_dir=/etc/nagiosql/services

Verifique a configuração do Nagios:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Agora você pode configurar e controlar suas alterações via interface Web, sem a necessidade de ficar editando comandos e com a vantagem de que todas as configurações estão armazenadas em uma base de dados.

Instalando NDOutils (MySQL Connector) em ambiente CentOs 5.3:
Introdução:
NDOUtils é um addon que permite armazenar dados do Nagios (informações sobre o estado atual, histórico do estado, a histórico de notificação, etc) em um banco de dados MySQL. Este addon é composto por um módulo de corretor de eventos e um daemon.

Pré-Requisitos:
  • GCC-C++
  • MySQL
  • MySQL-Devel
  • MySQL-Server

Criar a base de dados:
# mysql -u root
(no password)

mysql>create database nagios;
Query OK, 1 row affected (0.00 sec)

mysql>show databases;
+-----------+
| Database |
+-----------+
| database |
| mysql |
| nagios |
| test |
+----------+
4 rows in set (0.01 sec)

Criar o usuário e senha para que possa ter os seguintes privilégios na base de dados: "SELECT, INSERT, UPDATE, DELETE":
mysql> GRANT ALL ON nagios.* TO nagios@localhost IDENTIFIED BY "nagios";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

Download, Descompactação e Instalação do NDOUtils:
# cd /install/nagios/
# mkdir ndoutils
# cd ndoutils

Fazer o download do NDOUtils:
# wget 
http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download

Descompactar os arquivos:
# tar zxfv ndoutils-1.4b9.tar.gz

Entrar no diretório do ndoutils:
# cd ndoutils-1.4b9

Compilar o NDOUtils:
# ./configure
# make

Ndomod
Existem duas versões diferentes do módulo NDOMOD que são compilados, assim certifique-se de utilizar o módulo que corresponde à versão do Nagios que você está executando, e ajustar as instruções indicadas abaixo para o nome da versão que você está usando.

ndomod-2x.o módulo NDOMOD = para Nagios 2.x
ndomod-3x.o = módulo NDOMOD para Nagios 3.x (instável)

No nosso exemplo usamos a versão 3.x
# cd /install/nagios/ndoutils-1.4b9/src/

Copie o módulo NDOMOD para sua instalação do Nagios:
# cp ndomod-3x.o /usr/local/nagios/bin/ndomod.o

Ndo2db
Existem duas versões diferentes do daemon NDO2DB que são compilados, assim certifique-se de usar o daemon que corresponde à versão do Nagios que você está executando, e ajustar as instruções indicadas abaixo para o nome do servidor que você está usando.

ndo2db-2x.o daemon NDO2DB = para Nagios 2.x
ndo2db-3x.o = daemon NDO2DB para Nagios 3.x (instável)

Copie o daemon NDO2DB para sua instalação do Nagios:
# cp ndo2db-3x /usr/local/nagios/bin/ndo2db

Criação de banco de dados NDO:
# cd ../db/
# ./installdb -u nagios -p nagios -h localhost -d nagios
Obs: -u = usuário; -p = senha; -h = nome do computador; -d = MySQL DB

Alterações dos arquivos CFG:
ndo2db.cfg
# cd ../config
# cp ndo2db.cfg-sample /etc/nagios/ndo2db.cfg
# chown nagios:nagios /etc/nagios/ndo2db.cfg
# cd /etc/nagios/

# vi ndo2db.cfg

# SOCKET TYPE
socket_type=unix
. . .
# SOCKET NAME
socket_name=/var/run/nagios/ndo.sock
. . .
# DATABASE USERNAME/PASSWORD
db_user=nagios
db_pass=nagios

Verifique se existe o diretório /var/run/nagios. Se não existir, crie-o:
# mkdir /var/run/nagios

E tenha certeza de que o NDO tem permissão de acessar este diretório para criar o socket:
# chown -R nagios:nagios /var/run/nagios

ndomod.cfg
# cd /install/nagios/ndoutils-1.4b9/config/
# cp ndomod.cfg-sample /etc/nagios/ndomod.cfg
# chown nagios:nagios /etc/nagios/ndomod.cfg

Adicionar linhas semelhante as abaixo no arquivo de configuração principal do Nagios (geralmente /usr/local/nagios/etc/nagios.cfg):
# vi /etc/nagios/nagios.cfg
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
event_broker_options=-1

Esta diretiva fará com que o daemon do Nagios passe a enviar dados para o módulo NDOMOD. Sem essa opção, o NDOMOD não vai obter qualquer informação.

Finalmente certifique-se que o parâmetro de saída ndomod.cfg está configurado:
# vi /etc/nagios/ndomod.cfg
output=/var/run/nagios/ndo.sock

É muito importante que o parâmetro output tenha exatamente o mesmo valor do parâmetro socket_name do arquivo ndo2db.cfg. Se não, você receberá esta mensagem ao iniciar o daemon nagios.
[1192222122] ndomod: Error writing to data sink! Some output may get lost...

Iniciando o NDO2DB daemon:
# /usr/local/nagios/bin/ndo2db -c /etc/nagios/ndo2db.cfg

Verificando a execução do processo:
# ps -ef | grep ndo2db
nagios 24003 23088 0 14:24 ? 00:00:01 /usr/local/nagios/bin/ndo2db -c /etc/nagios/ndo2db.cfg
root 24597 23526 0 14:55 pts/2 00:00:00 grep ndo2db

Verifique a configuração do Nagios:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Reiniciando o Nagios:
# service nagios restart

Verificando o funcionamento:
# tail /usr/local/nagios/var/nagios.log
[1258993445] ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
[1258993445] ndomod: Successfully connected to data sink. 0 queued items to flush.
[1258993445] Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.

Se não estiver funcionando aparecerá algo como: 
[1258993322] ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
[1258993322] ndomod: Could not open data sink! I'll keep trying, but some output may get lost...

Referências:

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=8861
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7963
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10122
http://www.nagioswiki.com/wiki/index.php/Nagios_and_NagiosQL_on_CentOS_4.x
http://www.nagioswiki.com/wiki/index.php/NDOutils_on_CentOS
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5357