segunda-feira, 30 de novembro de 2009

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
# usermod -G nagcmd apache

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-*.tar.gz
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-*.tar.gz
Obs.: Onde "*" corresponde a versão do nagios.

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

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

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-*.tar.gz

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

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

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 em Next


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*/nagiosql*.tar.gz/download

Descompactar os arquivos:
# tar xzvf nagiosql*.tar.gz

Mover o diretório para o diretório padrão do apache:
# mv nagiosql 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
# pear install HTML_Template_IT

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/
# chown apache.nagios /usr/local/nagios/bin/*
# chown apache.nagios /usr/local/nagios/etc/resource.cfg
# chown apache.nagios -R /usr/local/nagios/var/spool/checkresults/
# chown apache.nagios /usr/local/nagios/var/rw/nagios.cmd

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”:


Clique em Administration// Domains e clique no botão “Modify” (Botão de Ferramentas):
Confira o caminho das opções abaixo:

Nagios command file /usr/local/nagios/var/rw/nagios.cmd
Nagios binary file /usr/local/nagios/bin/nagios
Nagios process file /usr/local/nagios/var/nagios.lock
Clique em Save

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-*/ndoutils-*.tar.gz/download

Descompactar os arquivos:
# tar zxfv ndoutils-*.tar.gz

Entrar no diretório do ndoutils:
# cd ndoutils-*

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

16 comentários:

Devaneios de um Zé Ninguém disse...

André, seu blog foi um grande achado para mim, esta última postagem está me ajudando muito, é o documento mas objetivo e bem explicado que encontrei sobre o Nagios, e ainda em bom português. Bom, gostaria de saber de você qual seria a melhor ferramenta para monitorar em torno de 50 hosts, com vários serviços como VPN pptp(número de conexões e latencia de ping, status do serviço), OpenVPN (a mesma coisa), regras de Iptables, entre vários outros serviços, e ainda monitorar com base em um mapa. Qual seria a melhor escolha: Nagios ou Zabbix? O que vc tem a falar sobre o Centreon com Nagios?

Desde já agradeço,

Douglas disse...

André, eu configurei o Nagios + NagiosQl e está funcionando, mas eu não estou conseguindo fazer o nagios enviar as notificações de alertas por e-mail.

E outra dúvida, como eu faço para monitorar servidores linux, pois eu adicionei um host de um server linux,e o mesmo me mostra as informações do servidor localhost.

Fico no aguardo.

Alan Silva_ disse...

Muito bom o post, muito util mesmo...mais uma vez parabéns por esse blog maravilho que ajuda muita gente.
Tenha um otimo 2010 e continue assim compartilhando seu conhecimento.

abraço!

Maycon C. Leite disse...

André, apenas uma dúvida, vc esta utilizando o NagiosQL para centralizar as confs e o NDO para centralizar os alertas e relatocios de capacity?

André Déo disse...

Zé Ninguém depois que conheci o Zabbix as outras ferramentas ficaram no passado....

Nunca usei Zabbix com Centreon

André Déo disse...

Douglas há muito tempo não mexo mais com Nagios, esse material é apenas uma introdução... Teria que ver com calma o lance do alertas...

Quanto ao servidor Linux, vc colocou o IP dele certinho???

André Déo disse...

Alan,

Valew mesmo!!!

André Déo disse...

Maycon,

Isso mesmo... Uso o NDO para armazenar as informações de monitoramento!

André Déo disse...

Pessoal desculpem a demora nas respostas...

Déo

Gabriel Ladislau disse...

Pessoal preciso de ajuda coloquei o nagios com o nagiosQL so não sei como adicionar serviços de verificação para as maquinas

recepcao901 UP No matching services

todas as maquinas que adicionei estão assim eu segui esse tutorial alguem pode me ajudar !!!

Leandro Ferreira disse...

Andre, primeiramente lhe parabenizo pelo excelente tutorial este que você postou. Estou com um probleminha. Fiz tudo da forma que indicou, crio host normalmente no nagiosql mas este mesmo host criado não aparece no nagios. O que fiz de errado? Tem alguma dica? Se possível me responda pelo e-mail leandro@guiadopc.info. Obrigado

Cris Rosa disse...

André, uma ajuda pleaseee...
Preciso alterar o endereço de e-mail que o nagios encaminha o status dos serviços dos servidores, mais eu não sei onde que altera isso. Poderia me ajudar por favor??? meu e-mail crisrosa25@gmail.com
Obrigada,

André Déo disse...

Cris,

Arquivo Contacts.cfg

Déo

Rodrigo Dias disse...

Excelente post Déo sobre Nagios, estou utilizando para realizar um trabalho da pós graduação. Tenho uma dúvida, para monitorar hosts linux é necessário instalar o addon NPRE para que os comandos de checarem de serviço funcione. Correto?

nOsSiLé disse...

Olá Déo, tudo certo? ótimo post, eu já havia feito todos os procedimentos, conferi com os seus e está tudo certo. Porém me gerou uma dúvida, e na sua explicação não diz sobre esse detalhe. Veja se consegue me ajudar, Instalei o Nagios com NDOUtils para armazenar tudo em BD. Instalei o NagiosQL para criar hosts e cia para o nagios, até então tudo certo. O problema é o seguinte, ao criar um host no NagiosQL a informação é armazenada no BD do nagiosQL e gera um arquivo de texto no diretório /hosts do nagios. E como o Nagios está em BD, esse novo host NÃO APARECE no Nagios, como se eu tivesse que unificar o BD do nagios e NagiosQL!? Estou com essa dúvida. Obrigado. Att. Élisson Costa

André Déo disse...

Rodrigo e nOsSiLé como eu disse no post, eu uso isso para dar uma visão de Nagios aos alunos, mas minha ferramenta do dia-a-dia é Zabbix. Não sei responder detalhes de erros...

Abraços,