Instalação automática do Nagios

Publicado por Carlos Eduardo Fraga Ribeiro (última atualização em 30/08/2009)

[ Hits: 13.769 ]

Homepage: http://www.eftech.com.br

Download instalar_nagios.sh




Este script instala, de forma automática, o Nagios com vários add-ons como: NagiosQL, NagVis, NDOUtils.

  



Esconder código-fonte

#!/bin/bash

#######################################
#
# Arquivo: instalar_nagios.sh 
#
# Definição: Script para instalar o sistema de monitoramento de redes "Nagios" 
#
# Requisitos: Instalação básica do CentOS 5.2
#
# Versão: 1.0 - 16/08/2009 - Este programa em shell
# Versão: 1.1 - 16/08/2009 - Verifica se o download do nagios já existe
# Versão: 2.0 - 16/08/2009 - Incluir o NagiosQL
# Versão: 3.0 - 16/08/2009 - Incluir o NDOutils
# Versão: 4.0 - 16/08/2009 - Incluir o NagVis
# Versão: 5.0 - 27/08/2009 - Revisão desde código par ficar mais legivel
#
# Autor: Eduardo Fraga eduardo@eftech.com.br
# 
# Licença: GPL v2
#
#######################################
#
# Debug: 
# set -xv
#
# Configurações: 
#
# PROXY=http://<usuario>:<senha>:<host>:<porta>
PROXY=

# USUÁRIO
USUARIO=nagios

# GRUPO
GRUPO=nagios

# SENHA
PASSWORD=123456

# 

#
#
#
#######################################
#
#
#
# Verificar se o sistema operacional é CentOS
VERSAO=`cat /etc/redhat-release | cut -d" " -f1`
if [ ! "$VERSAO" == "CentOS" ]; then
  echo "Sistema operacional diferente... Saindo!"
  exit 1
fi

# Defini o proxy
if [ "$PROXY" == "" ]; then
  echo "Sem proxy!"
else
  echo "Com proxy!"
  export http_proxy=$PROXY
  export ftp_proxy=$PROXY
fi


# Create a directory for storing the downloads.
if [ ! -d ~/downloads ]; then
  mkdir ~/downloads
  cd ~/downloads
fi

# Atualizar o Yum (atualizador do CentOS)
yum -y install yum

# Instalar o pacotel EPEL (Extra Packages for Enterprise Linux)
if [ -f epel-release-5-3.noarch.rpm ]; then
  echo "O arquivo epel-release-5-3.noarch.rpm já exite"
else
  wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
fi


# Instalar os prerequisitos do nagios
yum -y install httpd php gcc glibc glibc-common gd gd-devel net-snmp \
net-snmp-utils net-snmp-perl net-snmp-libs per-Net-SNMP

# Criar conta de usuario nagios
useradd -m -p $PASSWORD $USUARIO

# Criar grupo nagcmd para permitir que comandos externos possam ser executados
groupadd $GRUPO
usermod -a -G $GRUPO $USUARIO
usermod -a -G $GRUPO apache


# Download do codigo fonte tar.gz (http://www.nagios.org/download/) 
if [ -f nagios-3.2.0.tar.gz ]; then
  echo "O arquivo nagios-3.2.0.tar.gz já exite"
else
  wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
fi

if [ -f nagios-plugins-1.4.13.tar.gz ]; then
  echo "O arquivo nagios-plugins-1.4.13.tar.gz já existe"
else
  wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
fi

# Extract the Nagios source code tarball.
cd ~/downloads
tar xzf nagios-3.2.0.tar.gz
cd nagios-3.2.0

# Run the Nagios configure script, passing the name of the group you
# created earlier like so:
./configure --with-command-group=$GRUPO

# Compile the Nagios source code.
make all

# Install binaries, init script, sample config files and set permissions on
# the external command directory.
make install
make install-init
make install-config
make install-commandmode

# Editar o arquivo contacts.cfg
# vi /usr/local/nagios/etc/objects/contacts.cfg

# Install the Nagios web config file in the Apache conf.d directory
make install-webconf

# Create a nagiosadmin account for logging into the Nagios web interface.
# Remember the password you assign to this account - you'll need it later.
htpasswd -cmb /usr/local/nagios/etc/htpasswd.users nagiosadmin $PASSWORD

# Extract the Nagios plugins source code tarball.
cd ~/downloads
tar xzf nagios-plugins*.tar.gz
cd nagios-plugins*

# Compile and install the plugins.
./configure --with-nagios-user=$USUARIO --with-nagios-group=$GRUPO
make
make install

# Add Nagios to the list of system services and have it automatically start when the system boots.
chkconfig --add nagios
chkconfig nagios on
chkconfig httpd on

# Verify the sample Nagios configuration files.
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

# If there are no errors, start Nagios.
service nagios start
service httpd start

# See if SELinux is in Enforcing mode.
#getenforce

# Put SELinux into Permissive mode.
#setenforce 0

# To make this change permanent, you'll have to modify the settings in 
# /etc/selinux/config and reboot.

# Instead of disabling SELinux or setting it to permissive mode, you can use
# the following command to run the CGIs under SELinux enforcing/targeted mode:
#chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
#chcon -R -t httpd_sys_content_t /usr/local/nagios/share/


# NagiosQL

# Instalar dependencias
yum -y install php php-pear mysql-server php-gettext php-mysql


# Configurar o proxy no pear
# fazer no futuro
  
pear install HTML_Template_IT


# Configurar o servidor mysql (se necessario)
chkconfig mysqld on
service mysqld start
mysqladmin -u root password "'"$PASSWORD"'"


# Baixar o codigo fonte
cd ~/downloads
if [ -f nagiosql303.tar.gz ]; then
  echo "arquivo nagiosql303.tar.gz ja existe"
else
  wget http://downloads.sourceforge.net/project/nagiosql/nagiosql/NagiosQL%203.0.3/nagiosql303.tar.gz
fi

# Instalar o NagiosQL
cp nagiosql303.tar.gz /var/www/html/
cd /var/www/html/
tar -xvf nagiosql303.tar.gz
mv nagiosql3 nagiosql
touch /var/www/html/nagiosql/install/ENABLE_INSTALLER
chown -R apache:apache /var/www/html/nagiosql

# Criar a estrutura de diretorios para nagiosQL
#/etc/nagiosql/                  -> Common configuration files
#      "            /hosts         -> Host configuration files
#   "            /services         -> Service configuration files
#   "            /backup/         -> Backups of the common configuration files
#   "           "      /hosts      -> Backups of the host configuration files
#   "           "      /services   -> Backups of the service configuration files
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/ 

# criar link simbolico de /usr/local/nagios para /etc/nagios
ln -sf /usr/local/nagios/etc /etc/nagios


cp /etc/nagios/nagios.cfg /etc/nagios/nagios2.cfg
sed s/cfg_file/#cfg_file/g /etc/nagios/nagios2.cfg > /etc/nagios/nagios.cfg

echo "cfg_file=/etc/nagiosql/contacttemplates.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/contactgroups.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/contacts.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/timeperiods.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/commands.cfg" >> /etc/nagios/nagios.cfg

echo "cfg_file=/etc/nagiosql/hostgroups.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/servicegroups.cfg" >> /etc/nagios/nagios.cfg

echo "cfg_dir=/etc/nagiosql/hosts" >> /etc/nagios/nagios.cfg
echo "cfg_dir=/etc/nagiosql/services" >> /etc/nagios/nagios.cfg

echo "cfg_file=/etc/nagiosql/hosttemplates.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/servicetemplates.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/servicedependencies.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/serviceescalations.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/hostdependencies.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/hostescalations.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/hostextinfo.cfg" >> /etc/nagios/nagios.cfg
echo "cfg_file=/etc/nagiosql/serviceextinfo.cfg" >> /etc/nagios/nagios.cfg

chmod -R 777 /usr/local/nagios/

mkdir /var/nagios
ln -sf /usr/local/nagios/var/nagios.lock /var/nagios/nagios.lock


# NDOutil

# Instalar requisitos
yum -y install mysql-devel


# Baixar requisitos
cd ~/downloads/

if [ ! -f ndoutils-1.4b8.tar.gz ]; then
  wget http://prdownloads.sourceforge.net/sourceforge/nagios/ndoutils-1.4b8.tar.gz
fi 

tar zxf ndoutils-1.4b8.tar.gz
cd ndoutils-1.4b8

# Instalar
./configure

make

cd src/
cp ndomod-3x.o /usr/local/nagios/bin/
cp ndo2db-3x /usr/local/nagios/bin/
cp log2ndo /usr/local/nagios/bin/
cp file2sock /usr/local/nagios/bin/

cd ../db/
echo 'create database nagios;' | mysql -u root -p$PASSWORD
./installdb -u root -p $PASSWORD -h 127.0.0.1 -d nagios

cd ../config/
cp ndomod.cfg /usr/local/nagios/etc/ndomod.cfg

sed -e s/db_user=ndouser/db_user=root/ -e s/db_pass=ndopassword/db_pass=123456/ \
ndo2db.cfg > /usr/local/nagios/etc/ndo2db.cfg

#cat nagios.cfg >> /usr/local/nagios/etc/nagios.cfg
echo 'broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg' >> /usr/local/nagios/etc/nagios.cfg
cat misccomands.cfg >> /usr/local/nagios/etc/objects/commands.cfg

/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
ln -sf /usr/local/nagios/bin/ndo2db-3x /usr/local/nagios/bin/ndo2db

service nagios restart
service httpd restart

#
# NagVis 
#
# Requisitos
yum -y install php-xml php-gd php-mysql install php-mbstring install perl install perl-JSON-XS graphviz*


cd ~/downloads/

# Baixar o NagVis
if [ -f nagvis-1.4.2.tar.gz ]; then
  echo "O arquivo nagvis-1.4.2.tar.gz ja existe"
else
  wget http://downloads.sourceforge.net/project/nagvis/NagVis%201.4%20%28stable%29/NagVis-1.4.2/nagvis-1.4.2.tar.gz
fi

tar -xvf nagvis-1.4.2.tar.gz -C /usr/local/nagios/share/

cd /usr/local/nagios/share/

mv nagvis-1.4.2 nagvis

chown -R $USUARIO.$GRUPO nagvis

cd nagvis

cp install.sh install2.sh

sed s/NEED_GV_VERSION=2.14/NEED_GV_VERSION=2.12/ install2.sh > install.sh

./install.sh

cp etc/nagvis.ini.php etc/nagvis2.ini.php
sed -e 's/;dbpass=""/dbpass="123456"/' etc/nagvis2.ini.php > etc/nagvis.ini.php


service httpd restart
service nagios restart

Scripts recomendados

Criação de usuario / gerando senha automatica

Obter ip a partir de um NO-IP ou DYNDNS e atualizar o endereço do MUNIN MESTRE em um nó linux.

rc.firewall

Configuração de failover de links de internet

Script de alteração do sources.list


  

Comentários
[1] Comentário enviado por buttow em 05/11/2009 - 16:30h

Cara muito bom teu script, mas tem alguns errinhos, por exemplo o cat misccomands.cfg, falta um "m" no misccommad.cfg, e na instalaçao do NDOUtil o arquivo ndo2db.cfg nao existe ele seria o ndo2db.cfg.sample, são algum detalhes, mas esta muito bom, quem sabe poderiamos adicionar uma explicaçao de como utilizar o nagiosql depois por exemplo, e o nagvis, estou a disposiçao para colaborar.

Abraço,

Rodrigo Buttow

[2] Comentário enviado por gil_t em 18/11/2009 - 10:12h

teria como enviar o script cm as correções, obrigado

[3] Comentário enviado por stewe em 10/05/2013 - 10:04h

ha como adapta-lo para o CentOS?

[4] Comentário enviado por andresalto em 20/09/2013 - 23:16h

Parabéns pelo script.
estou tentando instalar, mas aprresenta alguns erros que não consigo identificar. Poderia me ajudar?
segue o erro.

Package graphviz-php-2.12-8.el5.centos.i386 already installed and latest version
Package graphviz-perl-2.12-8.el5.centos.i386 already installed and latest version
Nothing to do
--2013-09-20 22:46:32-- http://downloads.sourceforge.net/project/nagvis/NagVis%201.4%20%28stable%29/NagVis-1.4.2/nagvis-1.4....
Resolvendo downloads.sourceforge.net... 216.34.181.59
A conectar downloads.sourceforge.net|216.34.181.59|:80... conectado!
HTTP requisição enviada, aguardando resposta... 404 Not Found
2013-09-20 22:46:33 ERRO 404: Not Found.

tar: nagvis-1.4.2.tar.gz: Não é possível open: Arquivo ou diretório não encontrado
tar: Erro não é recuperável: saindo agora
mv: impossível fazer stat em `nagvis-1.4.2': Arquivo ou diretório não encontrado
chown: impossível acessar `nagvis': Arquivo ou diretório não encontrado
./instalar_nagios.sh: line 346: cd: nagvis: Arquivo ou diretório não encontrado
cp: impossível fazer stat em `etc/nagvis.ini.php': Arquivo ou diretório não encontrado
./instalar_nagios.sh: line 355: etc/nagvis.ini.php: Arquivo ou diretório não encontrado
Parando o httpd: [ OK ]
Iniciando httpd: [ OK ]
Running configuration check... CONFIG ERROR! Restart aborted. Check your Nagios configuration.


obrigado.
André


Contribuir com comentário