Instalação automática do Nagios

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

[ Hits: 13.251 ]

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

Linkswitch

Firewall para Compartilhamento de Conexão 3G

Pidshell - Alternativa ao pidof, escrito em shell

Atualização do FreeBSD

Gerenciamento de espaço em disco


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts