Automatizando o Nagios

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

[ Hits: 4.302 ]

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

Salvaguardando configurações

Diferença entre datas

Dê utilidade aquelas teclas que não servem pra nada do seu teclado

Script de Backup para FITA DAT usando "tar"

Script para criação de pacote rpm.


  

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