Automatizando o Nagios

Publicado por Reinaldo Zancoper Jr (última atualização em 22/01/2013)

[ Hits: 4.476 ]

Homepage: www.zancoper.com

Download add_nagios.sh




Nada melhor quando você tem um Nagios automatizado, pra quando você precisar criar um Host  não precisar ficar editando arquivos e acaba tendo um pouco de trabalho.

Por isso criei um script que automatiza isso tudo, você só precisa preencher os campos solicitados.

Segue o script para automatizar seu Nagios, lembrando que esse padrão só serve para o meu Nagios, então deverá ler todo o arquivo e editar da forma que funciona sua configuração.

Se tiver conhecimento de GNU/Linux e script, não terá problemas para entender este.

NOTAS:

Você precisará editar o arquivo hostgroups.cfg para o script poder entender os menus criados para preencher os campos necessários.
Você precisará incluir uma linha comentada depois da linha "alias" com o mesmo nome da variável criada dentro do script, como abaixo:

########  Grupo CPD
define hostgroup      {   
hostgroup_name      SW_A1-3Com
alias         SW_A1-3Com
######## SW_A1-3Com
members         Notebook001,Notebook002
}

Se fizer dessa forma funcionará perfeitamente.

Nessa edição do hostgroups.cfg você está simplesmente criando uma referência para o script, pode incluir o host na posição exata, lembrando que dei um exemplo de apenas um grupo, se você tiver 3 grupos, terá que criar a linha comentada nas respectivas linhas.

- Não esqueça de fazer um backup das configurações do Nagios antes de colocar a mão na massa!
- Não esqueça de dar permissão de execução ao arquivo criado, no meu caso: add_nagios.sh

Abraços!

  



Esconder código-fonte

#!/bin/bash
clear
DATA=`date`
grupo=0
switch=0
echo "###############$DATA######################################"
echo "# adicionador de maquinas no sistema Nagios por terminal #"
echo "# created by: Reinaldo Zancoper Jr                       #"
echo "#                                                        #"
echo "# http://www.zancoper.com                                #"
echo "# zancoper@zancoper.com                                #"
echo "##########################################################"

#"L1" define o local onde esta o arquivo a ser incrementado
L1="/usr/local/nagios/etc/objects/hostextinfo.cfg"
LINE="######################$DATA###############################"
LINE2="##########################################################"
LIN=" "
# LONG e o escopo da rede, ex: do IP de uma maquina 10.2.0.45, o escopo seria "10.2."
LONG="192.168."
echo "$LIN"
echo "$LIN"
echo "Digite o nome da maquina para cadastrar no Nagios"
read NOME
echo "Descricao da maquina a ser adicionada"
read ALIAS
echo "Digite o final do IP da maquina na rede, ex: 192.168.X.X"
read IP
echo "$LIN"
echo "$LIN"
#Menu de opcoes dos Grupos do Nagios
echo "Escolha o Tipo do Host
    1. windows-server
    2. linux-server
    3. generic-switch
    4. Sair "
read input
if test "$input" = 1
then
   grupo=$(echo "windows-server")
fi
if test "$input" = 2
then
   grupo=$(echo "linux-server")
fi
if test "$input" = 3
then
   grupo=$(echo "generic-switch")
fi

echo "$LIN"
echo "$LIN"
#Menu de opcoes dos Switches do Nagios
echo "Escolha de qual (Parent) o micro faz parte
    1. SW_A1-3Com
    2. SW_B1-3Com
    3. SW_C1-3Com
    4. Sair "
read input
if test "$input" = 1
then
   parents=$(echo "SW_A1-3Com")
fi
if test "$input" = 2
then
   parents=$(echo "SW_B1-3Com")
fi
if test "$input" = 3
then
   parents=$(echo "SW_C1-3Com")
fi

echo "$LIN"
echo "$LIN"
#Menu de opcoes dos Grupos do Nagios
echo "Escolha de qual Grupo o micro faz parte
    1. Switch ADM
    2. Switch CPD
    3. Switch Engenharia
    4. Sair "
read input
if test "$input" = 1
then
   switch=$(echo "Switch ADM")
fi
if test "$input" = 2
then
   switch=$(echo "Switch CPD")
fi
if test "$input" = 3
then
   switch=$(echo "Switch Engenharia")
fi

rm -rf /tmp/teste.txt
LINHAS=`cat /usr/local/nagios/etc/objects/hostgroups.cfg | wc -l`
for y in $(seq $LINHAS);
   do
      cat /usr/local/nagios/etc/objects/hostgroups.cfg | head -$y | tail -1 >> /tmp/teste.txt;
      NOVALINHA=`cat /usr/local/nagios/etc/objects/hostgroups.cfg | head -$y | tail -1`
   if [ "$NOVALINHA" == "######## $switch" ]; then
      echo "members                     $NOME" >> /tmp/teste.txt
   fi
   done
cp /tmp/teste.txt /usr/local/nagios/etc/objects/hostgroups.cfg

#echo "Defina qual o Switch esse host fara parte (Parents), ex: BBone-SW_A1-3Com"
#read PARENTS

echo "$LIN" >> "$L1"
echo "$LINE" >> "$L1"
echo "$LINE2" >> "$L1"
echo "$LINE2" >> "$L1"
echo "define hostextinfo{" >> "$L1"
echo "  host_name                $NOME" >> "$L1"
echo "  icon_image               microsoft-windows.png" >> "$L1"
echo "  icon_image_alt          $NOME" >> "$L1"
echo "  vrml_image              microsoft-windows.png" >> "$L1"
echo "  statusmap_image         microsoft-windows.png" >> "$L1"
echo "  2d_coords               100,250" >> "$L1"
echo "  3d_coords               100.0,50.0,75.0" >> "$L1"
echo "}" >> "$L1"

# Aqui estamos criando o arquivo com o nome do host
touch /usr/local/nagios/etc/objects/windows/$NOME.cfg

#"L2" define a configuracao padrao do conteudo do arquivo criado anteriormente
L2="/usr/local/nagios/etc/objects/windows/$NOME.cfg"
echo "$LIN"
echo "$LIN"
echo "$LIN"

echo "confirma os dados a seguir: $NOME, $ALIAS, $LONG$IP, $grupo, $switch, $parents ao Nagios? (<enter> confirma, ctrl+c pra cancelar/sair)"
read "enter"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE" >> "$L2"
echo "$LINE2" >> "$L2"
echo "define host{" >> "$L2"
echo "  use                      $grupo" >> "$L2"
echo "  host_name               $NOME" >> "$L2"
echo "  alias                    $ALIAS" >> "$L2"
echo "  address                  $LONG$IP" >> "$L2"
echo "  parents                  $parents" >> "$L2"
echo "  notifications_enabled"    1 >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Define a service to "ping" na placa de rede"
echo "define service{" >> "$L2"
echo "  use               local-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    Ping $LONG$IP" >> "$L2"
echo "  check_command            check_ping!100.0,20%!500.0,60%" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica o tempo ligado"
echo "define service{" >> "$L2"
echo "  use                      generic-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    Tempo-LigadoPing $LONG$IP" >> "$L2"
echo "  check_command            check_ping!100.0,20%!500.0,60%" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a versao do NsClient++"
echo "define service{" >> "$L2"
echo "  use                      generic-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    versao-NSClient++" >> "$L2"
echo "  check_command            check_nt!CLIENTVERSION -H $LONG$IP" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a utilizacao da CPU"
echo "define service{" >> "$L2"
echo "  use                      generic-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    Utilizacao-de-CPU" >> "$L2"
echo "  check_command            check_nt!CPULOAD!-l 5,80,90 -H $LONG$IP" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a memoria utilizada"
echo "define service{" >> "$L2"
echo "  use                      generic-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    Memoria" >> "$L2"
echo "  check_command            check_nt!MEMUSE!-w 90 -c 92 -H $LONG$IP" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica executavel do Anti-Virus Trend"
echo "define service{" >> "$L2"
echo "  use                      generic-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    Verifica-Anti-Virus-Trend" >> "$L2"
echo "  check_command            check_nt!PROCSTATE!-d SHOWALL -l tmlisten.exe -H $LONG$IP" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a verifica a unidade C"
echo "define service{" >> "$L2"
echo "  use                      generic-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    Particao-C" >> "$L2"
echo "  check_command            check_nt!USEDDISKSPACE!-l c -w 90 -c 95 -H $LONG$IP" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica executavel do Licenciamento do Terminal Sercer"
echo "define service{" >> "$L2"
echo "  use                      generic-service" >> "$L2"
echo "  host_name                $NOME" >> "$L2"
echo "  service_description    Verifica-Servidor-de-Licencas-do-TS" >> "$L2"
echo "  check_command            check_nt!PROCSTATE!-d SHOWALL -l lserver.exe -H $LONG$IP" >> "$L2"
echo "  notifications_enabled    1" >> "$L2"
echo "}" >> "$L2"

echo "$LINE2"
echo "Inicializando o servicos do Nagios"
echo "$LINE2"
/etc/init.d/nagios reload
echo "$LINE2"
echo "Nagios reiniciado"
echo "$LINE2"
echo "Agora sera necessario incluir o host criado dentro do arquivo hostgroups.cfg manualmente... depois reinicia o Nagios."
echo "$LINE2"
echo "Caso ocorra algum problema, nao se preocupe, execute o comando para verificar os servicos do Nagios."
echo "$LINE2"
echo "(Aperte <enter> para adicionar outra maquina e Ctrl+c pra cancelar/sair)"
read "enter"
##sh add-to-nagios.sh


Scripts recomendados

Firewall básico

zsh: Sattolo's Random Cyclic Permutation

Pra quem não usa WhatsUp e Nagios mas tem um *inx.

Facilitando algumas tarefas no CentOS 7

Backup completo e automatizado da base de dados do ZODB


  

Comentários
[1] Comentário enviado por schrodinger em 22/09/2014 - 11:41h

Não meu não deu certo!!!! Apareceu isso:
bash: ./add_nagios.sh: /bin/bash^M: bad interpreter: Arquivo ou diretório não encontrado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts