Automatizando o Nagios
Publicado por Reinaldo Zancoper Jr (última atualização em 22/01/2013)
[ Hits: 4.826 ]
Homepage: www.zancoper.com
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!
#!/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
Tornando seu Ubuntu uma distro para testes de intrusão
Digitalizar em batch e remover páginas em branco
Script de alteração do sources.list
Auto-installer ISP Config 3 - FC 11
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









