Professional Documents
Culture Documents
NAGIOS APLICADO
Funes e configuraes voltadas
aplicabilidade
Outubro 2014
NAGIOS APLICADO Funes e configuraes voltadas aplicabilidade
O Autor
Marcio Jos Atansio atua deste o ano de 2001 com informatica nos seguimentos
de servidores, rede e computadores pessoais. Graduado no Curso Superior em
Tecnologia de Redes de Computadores pela Universidade Tuiuti do Paran-Curitiba e
Ps Graduando em Gerenciamento da Tecnologia da Informao pela FAE-Curitiba.
Especializou-se em demais reas atravs de cursos como CCNA, ITIL e Linux
como e certificao LPI-1.
Mantm o blog http://marciojose.blogspot.com aonde descreve eventos
relacionados ao dia-a-dia. Sobre o seu portfolio, o descreve na ferramenta Linkedin,
aonde pode ser visualizado por completo atravs do link
http://br.linkedin.com/in/marciojose.
Contato para cursos e consultorias atravs do email marcioatanasio <arroba>
gmail.com.
Licenciamento
Sumrio
Introduo ............................................................................................................................ 4
Conveno deste livro ......................................................................................................... 5
Funcionamento do nagios.................................................................................................... 5
Localizao dos arquivos..................................................................................................... 7
NAGIOS.CFG ................................................................................................................................. 7
CGI.CFG ....................................................................................................................................... 7
RESOURCE.CFG ............................................................................................................................ 8
COMMANDS.CFG ........................................................................................................................... 8
CONTACTS.CFG ............................................................................................................................ 8
TIMEPERIODS.CFG ........................................................................................................................ 9
TEMPLATES.CFG ........................................................................................................................... 9
GROUPS.CFG ............................................................................................................................... 9
VARIVEIS INTERNAS .................................................................................................................... 9
Instalao .......................................................................................................................... 10
Instalao nagios core ....................................................................................................... 10
Instalao plugins .............................................................................................................. 11
Primeiro acesso web ao nagios ......................................................................................... 13
Comandos dos hosts e servios ........................................................................................ 21
cones utilizados pelo nagios ............................................................................................. 22
Configurao de envio de email ........................................................................................ 22
Adicionando um novo plugin .............................................................................................. 24
Configurao de grupos de hosts e servios ..................................................................... 25
Adicionando um novo host................................................................................................. 27
WINDOWS .................................................................................................................................. 27
LINUX ......................................................................................................................................... 31
Configurao de contatos .................................................................................................. 33
Mapa do nagios ................................................................................................................. 35
Criando um plugin .............................................................................................................. 36
O que so brokers ............................................................................................................. 39
Mapa de rede com nagvis.................................................................................................. 39
Introduo
Quando se tratar se algum arquivo, seja para edio ou visualizao de algumas linhas,
ser utilizado fonte courier, 10, itlico. Todos os arquivos so editados com privilgio de
root.
# Contedo do arquivo
configuracao = configurado
Funcionamento do Nagios
O Nagios tem um core onde faz a coleta e/ou recebe as informaes providas
pelas suas checagens ou recebimento dessas e demonstra no painel de monitoramento.
Seus arquivos trabalham de forma hierrquica e por herana. Essa herana faz
com que os plugins configurados atravs dos commands, da classe dos Object Definition
Files, possam ser aproveitados pelos Resource Files e evitando retrabalho de
configurao. As mtricas continuam sendo individuais, mas podem ser adotadas de
Essa hierarquia pode ser alterada conforme a necessidade, pois podemos efetuar
configuraes diretamente no host, sobrescrevendo as configuraes herdadas de
templates.cfg.
importante conhecer o funcionamento dos plugins do Nagios. Estes programas
ou scripts, quando so executados, geram informaes no formato em que o Nagios core
nagios.cfg
Arquivo principal responsvel pelas configuraes do core. Este arquivo o que l
os demais arquivos que descrevemos. Apesar do arquivo ser auto-explicativo, bom
reforar algumas configuraes em que so alteradas com frequncia ou somente na
instalao do Nagios:
cfg_file: Ir carregar as configuraes desse arquivo quando efetuar o reload ou
start do Nagios core.
cfg_dir: Ir carregar todos os arquivos dentro do diretrio que tem extenso .cfg.
broker_module: Carrega mdulos para interagir com o Nagios core.
use_syslog: Alm de gravar os logs no arquivo nagios.log, tambm grava no
arquivo syslog. Deixe como 0.
cgi.cfg
Arquivo responsvel pelas configuraes que dizem respeito ao painel de
resource.cfg
Contm informaes, atravs de variveis de ambiente delimitadas entre $.
utilizada primordialmente pela varivel de ambiente $USER1$, utilizada pelo arquivo
commands.cfg para informar aonde est os plugins. Pode ser criado mais variveis, que
podem conter informaes como senhas e mtricas em que deseja que seja padro sem
utilizar os templates.
commands.cfg
Este arquivo que faz a ligao entre os servios configurados para o host, com os
plugins, que so programas ou scripts que fazem as checagens. Sua sintaxe bem
simples como descrevo abaixo.
define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
}
command_name: Nome do comando. Este nome o utilizado na configurao da
checagem para o host.
command_line: Linha de comando. Caminho onde se encontra o comando para
ser executado, ou seja, o plugin. Como padro, o caminho
/usr/local/nagios/libexec. Note que tem algumas variveis de ambiente entre $, a
varivel $USER1$ podemos encontrar no arquivo resource.cfg, as demais vem do
arquivo em que est configurado a checagem, sendo que $HOSTADDRESS$ o
endereo configurado no host em address e $ARGX$ o argumento aps a
configurao do check_command. usado o delimitador ! para cada campo de
argumento.
contacts.cfg
Responsvel por configurar os contatos que iro receber os alertas. Sua sintaxe
bem simples, como descrito abaixo.
define contact{
use generic-contact
contact_name <LOGIN DO CONTATO>
alias <NOME DO CONTATO>
email <EMAIL DO CONTATO>
}
A configurao dos contatos tem que ter um template relacionado, que neste caso
o generic-contact. H opes que so obrigatrias para a criao de um contato e para
que no seja necessrio recri-las em cada contato, utilizado a herana deste template.
O contact_name deve ser o login criado no arquivo passwd, que faz referncia a
autenticao para a visualizao do painel de monitoramento. Os logins que no forem
referenciados no arquivo cgi.cfg, somente visualizaram os hosts em que forem contatos.
timeperiods.cfg
Arquivo de configurao de perodos de tempo que podem ser utilizados. mais
comumente usado para desativar alertas em um certo horrio ou dia. utilizado na
configurao dos templates.
templates.cfg
Principal arquivo de configurao. Sem este arquivo, seria muito trabalhoso
configurar novos hosts e checagens, por que teramos de repetir as configuraes
obrigatrias.
Entre as configuraes, temos algumas em que usualmente so mais
customizadas para hosts:
name: Nome do template. Deve ser nico.
notifications_enabled: Habilitar notificaes. Valor padro 1.
active_checks_enabled: Usado para habilitar as checagens ativas.
passive_checks_enabled: Usado para habilitar a checagens passivas.
check_interval: Intervalo de tempo entre as checagens, quando ativa, ou para
considerar sem informao, quando passiva. Valor em minutos.
retry_interval: Tempo de intervalo para checar novamente, quando um servio
tem seu estado alterado. Valor em minutos.
max_check_attempts: Dentro do intervalo de retry_interval, depois de quantas
checagem o servio considerado com o estado detectado.
contact_groups: Grupo em que receber os alertas sobre o servio.
register: Isso que define a configurao como template e no como host
propriamente dito. Sempre 0.
groups.cfg
Este arquivo no vem padro no Nagios, e foi criado separado afim de dar uma
melhor organizao. A princpio, a configurao dos grupos de hosts e servios so
efetuadas dentro do arquivo de configurao de cada host. Como isso pode gerar um
grande trabalho, quando precisa colocar alguns hosts ou servios no mesmo grupo, teria
de procurar qual o grupo dentro dos vrios arquivos de configurao de cada host.
Deixando um arquivo separado, organiza de forma que voc sabe que quando se
trata de grupos, o arquivo e groups.cfg.
Estas so as configuraes mais alteradas durante uma customizao. H ainda
vrias outras em que pode-se ter mais detalhes na prpria documentao do Nagios, em
http://www.nagios.org/documentation.
Variveis internas
Os arquivos de configurao contm variveis de macro utilizadas internamente e
que lhe ajudam a efetuar suas prprias configuraes, plugins e comandos. A lista vasta
e muito importante que voc veja quais esto disponveis em
http://nagios.sourceforge.net/docs/3_0/macrolist.html. Reforo que isso extremamente
importante, pois quando formos efetuar nossas configuraes, vamos utilizar grande parte
delas.
Instalao
Pode ser que sua distribuio tenha um gerenciador, como o setup no CentOS,
pode ser usado no lugar dos comandos chkconfig.
Aproveitando esse tpico, descrevo dois comando extremamente ESSENCIAIS
para que voc possa resolver todos os problemas em relao a configuraes do Nagios:
# service nagios checkconfig
Este comando ir verificar se est tudo configurado de forma correta, somente isso.
Agora, se retornar um erro, podemos ir mais afundo ainda para ver qualquer arquivo e
linha est com problema na configurao com o comando:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
O comando Nagios, argumento -v de verify e apontando o arquivo principal de
configurao do Nagios. Simples assim...
Instalao plugins
Neste momento, voc ter dois novos arquivos na pasta de instalao do Nagios.
Um o nrpe, instalado na pasta /usr/local/nagios/bin que o comando para ser executado
quando um host cliente e check_nrpe, localizado na pasta /usr/local/nagios/libexec que
o comando para o servidor Nagios executar e buscar informaes em um host que
tenha o servio nrpe rodando ou outro software que comporte o protocolo.
Para garantir o funcionamento, faa o restart do servio de hospedagem, que no
nosso caso o apache e do Nagios.
# service httpd restart
# service nagios restart
Figura 3: Home
Neste tela nos mostrado ao lado esquerdo, o menu com vrios opes que
iremos descrever uma a uma. Na primeira tela principal, que no menu diz respeito
Home, podemos visualizar a verso do Nagios e um link para que avalie se h novas
verses, h tambm links para verso comercial, documentao, plugins. Peo que
explore os links, pois h informaes que podem ser teis para voc no que diz respeito
ao seu ambiente de TI. Toda a documentao em ingls, mas h ferramentas via web
que podem lhe ajudar a superar a essa barreira. Mesmo assim, pense bem que a maioria
dos melhores materiais em TI est em ingls, portanto, no ser perda de tempo investir
no aprendizado dessa lngua.
Em Documentation voc ser redirecionado documentao oficial do Nagios na
web e poder escolher visualiz-la via HTML ou efetuar o download do pdf. Reforo que
nem todo o vasto contedo e opes do Nagios sero descritas neste livro. Somente as
principais e mais utilizadas sero apresentadas, portanto, dar uma olhada na
documentao oficial no faz mal a ningum.
Figura 5: Map
Em Map voc tem, ou melhor, ter um mapa construdo atravs da configurao da
propriedade parents em cada host. Como em nossa instalao somente temos o host
localhost, no h nenhum parente. No confundir este mapa com o mapa da rede, que
iremos utilizar o Nagvis para isto, pois este mapa diz respeito a viso do Nagios em
relao aos hosts monitorados, ou seja, o caminho que ele faz para chegar cada um.
No canto superior esquerdo podemos mudar o tipo de visualizao. O tipo principal
como estrela, mas voc pode alterar no arquivo cgi.cfg, na opo
default_statusmap_layout qual o tipo que quer que seja o padro. Valores vlidos so:
0 = User-defined coordinates
1 = Depth layers
2 = Collapsed tree
3 = Balanced tree
4 = Circular
5 = Circular (Marked Up)
Figura 6: Hosts
Em Hosts voc visualiza todos os hosts presentes bem como a resposta ping das
consultas. Acima temos um resumo de todo o ambiente monitorado bem como atalhos
para outras opes de visualizao.
Figura 7: Services
Em Services, voc tem uma visualizao detalhada de cada host e estado dos
seus servios. Como temos uma instalao nova, o HTTP no root est bloqueado para
visualizao e no meu caso, como tenho a porta SSH fora do padro, aparece como
alerta. Acima o mesmo resumo de todos os hosts e servios monitorados e atalhos para
visualizao de estados e notificaes.
O Nagios tem alguns cones que auxiliam na interpretao das suas informaes.
Vamos demonstrar os que so nativos e mais significativos, uma vez que possvel
alter-los sua preferncia.
Presena de comentrio.
Notificaes desativadas.
Primeiramente, vamos configurar o envio de alertas via email. Este envio est
configurado em /usr/local/nagios/etc/objects/commands.cfg nas propriedades notify-
host-by-email e notify-service-by-email. Por padro, o comando executado atravs de
/bin/mail. Isso at que funciona se voc tem um servidor de email na sua rede e com
relay liberado. Mas vamos fazer de forma que, mesmo tendo um servidor na nuvem ou
#!/bin/bash
SMTP_SERVER="smtp.email.com:587"
SMTP_USER="conta@email.com"
SMTP_PASSWORD="senha_conta_email"
#DESTINATARIO -> 1
#ASSUNTO -> 2
#MENSAGEM -> 3
DIR="/usr/local/nagios/libexec"
perl $DIR/sendEmail.pl -f $SMTP_USER \
-s $SMTP_SERVER \
-t $1 \
-u "$2" \
-m "$3" \
-xu $SMTP_USER \
-xp $SMTP_PASSWORD >> /dev/null
Eu utilizo um script em perl para efetuar o envio dos alertas. Caso voc tenha um
servidor de email em sua rede, pode liberar o relay do IP do Nagios neste servidor. Como
a forma que descrevo aqui pode ser implantada em qualquer ambiente, tendo ou no
servidor de email prprio, mais til.
Faa o download do script perl para envio de email atravs do link
http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v156.zip e descompacte
no diretrio aonde se encontram os plugins do Nagios, ou seja, /usr/local/nagios/libexec.
Aps configurar o script com os dados necessrios, faa o teste de envio com o
seguinte comando:
# bash /usr/local/nagios/libexec/nagiosmail emaildestino@destino.com Teste
Teste
Feito o teste e funcionando vamos as alteraes que devem ser feitas no arquivo
commands.cfg. Onde podemos ver a seguinte configurao:
# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification
Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress:
$HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s
"** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
define hostgroup{
hostgroup_name linux-servers
alias Linux Servers
}
Temos que configurar para que o Nagios carregue as configuraes desse novo
arquivo. Adicione ao arquivo /usr/local/nagios/etc/nagios.cfg a seguinte linha.
cfg_file=/usr/local/nagios/etc/objects/groups.cfg
Agora, faa a checagem e se tudo estiver bem, faa o reload.
# service nagios checkconfig
# service nagios reload
Windows
Vamos efetuar o download do client atravs do link
http://www.nsclient.org/nscp/downloads. No momento da redao deste, a ltima verso
a NSCP-0.4.1.101. H vrias verses, escolha a que for mais adequada ao seu ambiente.
Incio da instalao.
Linux
Para servidores Linux, utilizamos o aplicativo NRPE, que alm de estar nos
principais repositrios, tambm podemos compil-lo. E assim o faremos.
Na instalao do servidor Nagios, ns j instalamos o NRPE, mas na opo de
modo cliente, onde ele ir consultar um host que tenha instalado o NRPE no modo
servidor. Lembrando que tambm necessrio estar instalado os plugins. Em captulos
anteriores foi descrito como proceder com isso.
Aps instalar os plugins, faa o download do NRPE atravs do endereo
http://sourceforge.net/projects/nagios/files/nrpe-2.x/. Na criao deste documento, no
NRPE est na verso 2.14.
Descompacte o pacote e proceda com a forma padro de compilao de pacotes
em ambientes Linux like.
# tar zxvf nrpe-X.X.tar.gz
# cd nrpe-X-X
# ./configure
# make
# make install
Aps, vamos colocar cada arquivo no seu devido lugar e configurar a inicializao
do daemon.
# cd nrpe-X-X
# mkdir /usr/local/nagios/etc
# mkdir /usr/local/nagios/bin
# cp sample-config/nrpe.cfg /usr/local/nagios/etc
# cp src/nrpe /usr/local/nagios/bin
# cp init-script /etc/rc.d/init.d/nrpe
# chmod +x /etc/rc.d/init.d/nrpe
# chkconfig --add nrpe
# chkconfig nrpe on
Para:
command[check_root]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% /
Voc pode configurar quando discos quiser, mas lembre-se, sempre com nomes
diferentes.
O nome que est entre colchetes ser usado pelo servidor Nagios para solicitar
uma consulta. Portanto, se mudar o nome, lembre-se de usar o mesmo nome na
configurao do host no servidor Nagios.
Inicie o servio atravs do comando:
# service nrpe start
Agora, temos que configurar o servidor Nagios para que efetue as checagens neste
host. Vamos utilizar o mesmo arquivo /usr/local/nagios/etc/objects/windows.cfg como
base.
Primeiro altere tudo o que for check_nt, para check_nrpe. Se voc lembra do
captulo de instalao do servidor Nagios, ns j criamos no arquivo commands.cfg o
comando check_nrpe.
Na descrio do host, que so as primeiras linhas, altere para o IP do servidor
Linux que tem instalado o NRPE, crie o grupo Linux conforme explicado no captulo
anterior e coloque a descrio do host. No meu caso, o nome do host, configurado nas
primeiras linhas linuxserver.
Agora, edite as checagens no host da seguinte forma:
define service{
use generic-service
host_name linuxserver
service_description Espaco no Root
check_command check_nrpe!check_root
}
Podemos fazer um teste executando a checagem direto na linha de comando da
seguinte forma:
# /usr/local/nagios/libexec/check_nrpe -H IP_DO_HOST_RECEM_INSTALADO_NRPE
# NRPE v2.14
Como pode observar, ele ir retornar a verso. Caso d falha, sinal de dois
Configurao de contatos
No que diz respeito aos contatos, eles nem sempre precisam de acesso via web.
Portanto, criar um contato em contacts.cfg no garantir que ele possa visualizar o
estado do host na interface externa. Essa permisso se d criando o login, atravs do
comando htpasswd em /usr/local/nagios/etc/htpasswd.users.
Os contatos tambm podem receber alertas de certos grupos de hosts ou mesmo
criar um grupo de contatos. Isso facilita em ambientes de grande escala, onde no
necessrio colocar o contato em cada host, somente no grupo especfico ele vai receber
os alertas e caso tenha login e senha, ir ver na interface web os hosts em que ele
responsvel.
Tambm pode-se colocar o contato em um template e atravs da herana quando
se cria um novo host, este j estar configurado com o contato. O nagiosadmin um
contato que j tem permisso de visualizao e est configurado no arquivo
/usr/local/nagios/etc/objects/contacts.cfg. Neste arquivo tambm tem os grupos de
contatos.
Primeiramente, vamos definir o conta de email, configurando a opo email nas
configuraes do contact_name nagiosadmin. Observe que ele herda vrias
configuraes de generic-contact. Sugiro que olhe as configuraes presentes, pois
algumas voc pode sobrescrever reconfigurando-as na definio do contato.
Logo abaixo tem a configurao dos grupos, veja que o nagiosadmin est
configurado no contactgroup_name chamado admins. D uma olhada no arquivo
/usr/local/nagios/etc/objects/templates na configurao do template de qualquer host.
Ver que ele faz referncia na opo contact_groups ao grupo admins configurado neste
arquivo. Mais a frente veremos como criar um arquivo com somente os grupos, deixando
a administrao bem mais fcil.
Depois dessa explicao das configuraes de contato, vamos praticar um pouco
criando um novo contato. Vamos cham-lo de suporte. Primeiro, temos que cri-lo no
arquivo contacts.cfg descrevendo as seguintes linhas:
define contact{
use generic-contact
contact_name suporte
alias Suporte de TI
email suporte@dominio.com
}
Se esta configurao est parecendo estranha, por que voc no lembrou ou no
entendeu. Portanto, retorne ao captulo Localizao dos arquivos que recordar.
Caso o comando anterior retorne erro, verificar qual arquivo e configurao est
incorreta:
# service nagios checkconfig
Criado esse novo login, vamos efetuar o teste acessando a interface web. Note que
voc pode executar qualquer comando que diz respeito ao host que em que esse login
administra.
Caso queira que ele tenha acesso full interface web do Nagios, voc deve
configurar o login no arquivo cgi.cfg em que h vrios tpicos diferentes que descrevemos
abaixo.
authorized_for_system_information - Ver informaes do estado do servio Nagios.
authorized_for_configuration_information - Ver informaes da configurao do
host e servios.
authorized_for_system_commands - Efetuar comandos de parar e reiniciar os
processos do Nagios.
authorized_for_all_services - Acesso todos os servios.
authorized_for_all_hosts - Acesso todos os hosts.
authorized_for_all_service_commands - Acesso a todos os comandos para os
servios.
authorized_for_all_host_commands - Acesso a todos os comandos para os hosts.
Dessa forma, ele ter os mesmos privilgios do login nagiosadmin. Muito cuidado
com isso, pois dessa forma, tambm ser possvel parar e reiniciar o servio do Nagios.
Mas e se voc somente quer que o login tenha acesso para visualizar os estados
dos servios e hosts? Para isso, podemos utilizar a configurao no arquivo cgi.cfg
chamada authorized_for_read_only que vem comentada por padro. Vamos colocar o
Mapa do Nagios
O Nagios tem uma opo em que voc tem um mapa. Este mapa no diz respeito
Criando um plugin
O retorno pode ser dividido em duas partes. A primeira a esquerda do pipe ( | ) diz
respeito ao que ser mostrado na interface web do Nagios. Ao lado direito, diz respeito a
informaes utilizadas internamente pelo Nagios, que so utilizadas para a gerao de
grficos e informar as mtricas utilizadas. Os campos, separados por ponto e vrgula ( ; )
dizem respeito na sequncia:
- Label: Nome do plugin. O que est sendo retornado;
- Valor e Unidade de Medida: Neste exemplo, somente estamos informando o valor total,
ento assumido um valor float ou int. Unidades de medida vlidas so %, s (segundos),
B (Bytes) ou tambm KB, MB e TB ou c (contador contnuo);
- Valor de warning;
- Valor de critical;
- Valor mnimo;
-Valor mximo.
Os valores de mnimo mximo no so necessrios caso a Unidade de Medida
seja %.
Aps criar o plugin e efetuar os testes de retorno, copie ele para o diretrio em que
est configurado nas variveis do arquivos resources.cfg, em que estamos tratando em
/usr/local/nagios/libexec. Siga os passos do captulo Adicionando um novo plugin.
O que so brokers
Como foi dito em captulos anteriores, o mapa do Nagios trs a viso dele sobre os
hosts e servios monitorados, ou seja, por onde suas solicitaes passam.
O Nagvis a ferramenta que atravs do MK Livestatus ir buscar informaes
sobre servios e hosts e demonstr-las sobre qualquer imagem que deseja. Assim, voc
pode tirar uma foto do seu datacenter ou desenhar o mapa de rede que desejar e ter
pontos verdes, amarelos e vermelhos que com o cursor sobre, tragam informaes
recebidas pelo Nagios.
Vamos iniciar efetuando o download do Nagvis atravs do link
http://www.nagvis.org/downloads. No atual momento da gerao desse artigo, a verso
a 1.7.10.
Vamos instalar algumas dependncias que podem no estar no seu sistema
operacional:
Clique em Save.
Agora todos os objetos que trazem informaes do Nagios para o Nagvis j iro vir
com o backend do MK Livestatus.
Para a criao dos mapas, voc precisa sempre lembrar que um mapa sempre tem
que ter um background.
Vamos criar um background que ser o nosso mapa de rede. Abaixo o desenho
efetuado: