Páginas

sexta-feira, 22 de maio de 2009

Nagios – Monitorando máquinas windows

Fala pessoal…

Continuando com os posts sobre nagios, hoje vou explicar (ou tentar ) como se configura o NSClient.

O NSClient é um cliente de monitoramento remoto (assim como o nrpe) para máquinas windows. Com ele é possível monitorar uso de cpu, memória, uso de discos, processos…

Sua instalação é super simples (eu achei que seria um pouco mais cabulosa hehe)

Mãos na massa….

Meu Ambiente:

Windows 2003 server std rc2, com os updates em dia.

Instalando / Configurando



Dica 1: baixe de acordo com a sua arquitetura do SO, ele tem suporte para sistemas de 64 bits.

Dica 2:  Baixe a versão em zip, assim temos mais controle de onde os arquivos são colocados.

Após ter baixado, descompacte o arquivo no C:\ no diretório NSClient++

Depois disso, edite o arquivo c:\NSClient++\NSC.ini

Nesse arquivo, na seção [modules], descomente ( o comantário nele é o ; ) todas MENOS:CheckWMI.dll, RemoteConfiguration.dll e LuaScript.dll

O segundo passo é definir uma senha de acesso ao nsclient, para isso na seção [Settings], defina a senha com a seguinte linha:
password=SUASENHA
Após definir a senha, na mesma seção, defina quem pode acessar o nsclient. A opção allowed_hosts deve ser usada, insira o ip do servidor do nagios separado por “,” (sem espaço entre a virgula e o endereço ip/mascara em bits). exemplo:
allowed_hosts=127.0.0.1/32,172.16.54.10/32
Outro ponto importante é definir a porta que o nsclient irá escutar… na seção [NSClient], remova o comentário da diretiva port ficando:
port=12489
Dica: essa é a porta padrão (tcp), sinta-se a vontade a muda-la, mais não se esqueça de alterar o parametro -p do comando check_nt no arquivo commands.cfg do nagios.

Com o arquivo NSC.ini configurado, agora já podemos instalar o serviço. Para isso é necessário utilizar o prompt de comando
cd \NSClient++
nsclient++ /install
O serviço foi instalado, uma mensagem é exibida informando que está ok. Para ter certeza, verifique mesmo se o serviço está na lista de serviços a ser executados na inicialização, vá até o menu executar e digite:
services.msc /s
E procure pelo serviço NSClientpp, se ele apareceu por lá, está ok!

Porém o serviço não está iniciado. Existe duas formas de se fazer isso, pelo prompt de comando, no diretório NSClient++ com o comando:
cd \NSClient++
nsclient++ /start
Ou pelo Gerenciador de Serviços que abrimos a pouco, se clicar com o botão direito em seguida na opção Iniciar.

Um processo chamado NSClient++ fica executando e consome +- 10 mb de memória.

Pronto! o agente está instalado na máquina windows… vamos aos testes no servidor do nagios


Testando e Monitorando os serviços

1º Na máquina com o nagios, teste se o plugin check_nt consegue se conectar no windows e obter alguma informação.
check_nt -H 192.168.0.70 -p 12489 -s senha -v CLIENTVERSION
RESPOSTA: NSClient++ 0.3.5.2 2008-09-24
Opções:

-H = HOST, nome ou ip
-p = Porta (definida no arquivo NSC.INI)
-s = Senha (definida no arquivo NSC.ini)
-v = Variavel (o que pode ser checado)

Após conseguir a resposta, vamos setar a senha no template do comando check_nt para que ele consiga obter as respostas…

Com isso em mãos vamos configurar o comando do nagios.
Edite o arquivo /etc/nagios/objects/commands.cfg e procure pela linha
define command{
 command_name check_nt
 command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
 }
E a altere para:
define command{
 command_name check_nt
 command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s SENHA DEFINIDA NO NSC.INI -v $ARG1$ $ARG2$
 }
Dica: lembre-se o argumento -p é a porta e o -s é a senha, essa senha foi definida no arquivo NSC.ini na máquina windows.

Feito isso é so declarar a checagem de servicos.

Segue alguns exemplos (os que eu mais uso)


Carga da CPU
define service{
 use   generic-service
 host_name  windows-server
 service_description Carga da CPU
 check_command  check_nt!CPULOAD!-l 5,80,90
 }

Uso de memória
define service{
 use   generic-service
 host_name  windows-server
 service_description Uso da memoria
 check_command  check_nt!MEMUSE!-w 80 -c 90
 }

Uso do disco
define service{
 use   generic-service
 host_name   winserver
 service_description C:\ Uso do disco
 check_command  check_nt!USEDDISKSPACE!-l c -w 80 -c 90
 }
Dica: Note que a opção -l c representa a unidade C:, se existir uma unidade E: o comando ficaria -l e
Basicamente é isso, se ficou alguma dúvida envie um e-mail para:

quinta-feira, 21 de maio de 2009

Monitoramento remoto com NRPE

Fala pessoal… vou descrever como se instala e configura o NRPE (Nagios Remote Plugin Executor). Com ele é possível coletar informações locais de máquinas linux como uso de disco, load average de processadores e qualquer outro tipo de informação (desde que você tenha o plugin para isso)…
Ambiente instalado: Debian Lenny com o sistema básico.


Preparação do Ambiente


É necessário ter o xinetd instalado e as bibliotecas do libssl e o meta pacote build-essential.


Instalando

Antes de instalar vamos instalar as dependências:
Instalar as dependências:
aptitude install xinetd libssl-dev build-essential openssl
O primeiro passo na instalação do nrpe é instalar os plugins.
tar xvzf nagios-plugins-1.4.13.tar.gz -C /usr/local/src
cd /usr/local/src/nagios-plugins-1.4.13
./configure \
 --prefix=/usr \
 --exec-prefix=/usr/sbin \
 --libexecdir=/usr/lib/nagios/plugins \
 --sysconfdir=/etc/nagios \
 --datadir=/usr/share/nagios \
 --with-cgiurl=/nagios/cgi-bin
Quando terminar…
make
make install
P.S. os comandos devem ser executados como root
Depois de instalar os plugins ( o processo é rápido ) é hora de compilar / instalar o nrpe.
Como o nrpe é um daemon, ele necessita de um usuário para ser executado, executa-lo como root não é uma boa ideia. Crie um usuário chamado nrpe:
adduser -r nagios

Processo de compilação / instalação
tar xvzf nrpe-2.12.tar.gz -C /usr/local/src
cd /usr/local/src/nrpe-2.12
./configure \
 --with-init-dir=/etc/init.d \
 --with-nrpe-user=nagios \
 --with-nrpe-group=nagios \
 --prefix=/usr \
 --exec-prefix=/usr/sbin \
 --bindir=/usr/sbin \
 --sbindir=/usr/lib/nagios/cgi \
 --libexecdir=/usr/lib/nagios/plugins \
 --datadir=/usr/share/nagios \
 --sysconfdir=/etc/nagios \
 --localstatedir=/var/log/nagios \
 --enable-command-args
make all
 make install-plugin
 make install-daemon
 make install-daemon-config
 make install-xinetd
Quando a instalação terminar, adicione a seguinte linha no arquivo /etc/services
nrpe     5666/tcp     nrpe    # NRPE
Após adicionar a linha, “restarte” o xinetd
/etc/init.d/xinetd restart
e teste….
/usr/lib/nagios/plugins/check_nrpe -H localhost
A saída do comando deve ser essa:
NRPE v2.12
Para que o nrpe aceite as conexões vindas do seu servidor de monitoramento, é necessário alterar o arquivo /etc/xinetd.d/nrpe
Troque:
only_from       = 127.0.0.1
para
only_from       = 127.0.0.1 IP.DO.NAGIOS.SERVER
No nagios server, rode o comando:
/usr/lib/nagios/plugins/check_nrpe -H IP.A.SER.MONITORADO
e a resposta deve ser:
NRPE v2.12
Pronto!, o nagios consegue dar comandos remotos nessa máquina.


Configurando serviços remotos


O arquivo de configuração do NRPE, fica em /etc/nagios/nrpe.conf.
É nesse arquivo onde setamos os comandos que serão aceitos pelo plugin check_nrpe.

A definição de serviços pode ser feita de duas formas:

“Hardcoded”, isto é os parametros dos plugins são fixos;

“User-supplied arguments”, é o envio de parametros para o host remoto. Eu acho isso um pouco perigoso, e até na documentação do nagios diz que essa opção expõe a máquina a um risco de segurança. Para ativa-lo você tem que definiar a diretiva dont_blame_nrpe para 1

Eu prefiro usar o hardcoded, eu prefiro nao arriscar 


Declarando o serviço a ser monitorado

Na máquina  a ser monitorada, edite o arquivo
/etc/nagios/nrpe.cfg
Próximo ao fim do arquivo, existe uma parte chamada COMMAND DEFINITIONS esse é o local correto para se inserir seus comandos “hardocoded”.
A sintaxe dos comandos a serem executados é a seguinte:
command[<nome_do_comando>]= <caminho_mais_parametros_do_pluguin>
Dica 1: para descobrir os parametros dos plugins, execute o plugin diretamente na linha de comando, e ele vai mostrar como é o uso do plugin.
Dica 2: Não pode haver espaços no nome do comando.
Dica 3: Use nomes mnemônicos no nome do comando, é através dele que o nagios irá “pegar” o resultado do plugin.

Exemplos:
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
Não se esqueça de verificar o diretório de plugins, lá tem vários para verificação de serviços locais .


Monitorando o serviço remoto

No nagios server, você irá precisar declarar o serviço remoto a ser monitorado.
Para facilitar sua vida, o nagios já manda o template do comando pronto (check_nrpe), você só precisa declarar o host e depois o serviço.
Vamos supor que tenho um host já declarado chamado teste1, a definição da verificação da verificação do uso de cpu ficaria da seguinte forma:
define service{
use                            local-service
host_name                      teste1
service_description            Carga no servidor
check_command                  check_nrpe!check_load
notifications_enabled          1
}
Tudo aqui é igual na definição de um serviço local, com exeção da linha check_command.

O check command utiliza o plugin check_nrpe que passa o parametro check_load ( acima definimos no nrpe.cfg o nome do comando check_load )

Feito isso é só correr para o abraço.
Pessoal, qualquer dúvida mail-me