Páginas

terça-feira, 18 de agosto de 2009

Instalação e configuração do OpenMeetings

Fala pessoal, esses dias precisei instalar um sistema de web conferencia, após pesquisar um pouco no google, achei um projeto chamado OpenMeetings

O que é:

Sistema de video conferencia free, que contém vários recursos interessantes como:

Video/Audio e Video com Audio

Ver o desktop de qualquer participante

Multi-Idiomas incluindo portugues do brasil com suporte para edição.

“Lousa” com recursos de arrastar, editar, alterar tamanho, rabiscar inserir simbolos….

Exportar o que está na “lousa”

Importa documentos:(.tga, .xcf, .wpg, .txt, .ico, .ttf, .pcd, .pcds, .ps, .psd, .tiff,.bmp, .svg, .dpx, .exr, .jpg, .jpeg, .gif, .png, .ppt, .odp, .odt, .sxw, .wpd, .doc, .rtf, .txt, .ods, .sxc, .xls, .sxi, .pdf)

Envio de convites e links direto para a sala de conferencia

Conector para LDAP

Sistema de Moderação

Backup de usuarios, salas, e pack de idiomas

Salas de conferencia publica e privada


Nesse artigo vou explicar como fazer a instalação do OpenMeetings em um sistema Debian 5.

Quando escrevi o artigo, a versão 0.8.4 é a estável e a 0.9.0 RC1 é a versão de testes. Aqui iremos testar a versão de testes, visto que o procedimento para a instalação da versão estável é o mesmo apenas baixando o arquivo correspondente.

Mãos a massa…

Pre-requisitos:
Como o sistema é recém instalado, precisamos instalar alguns pacotes
aptitude install zip unzip vim-full bzip2 build-essential linux-headers-$(uname -r)
Feito isso vamos começar com a instalação. O OpenMeetings é uma aplicação que roda sobre um servidor Tomcat + um servidor Red5 (flash streaming), e para que isso funcione, é necessário ter o java jdk instalado.

No Debian, o java não está no respositório main, sendo necessário adicionar o repositório non-free (gosto de adicionar também o contrib) no arquivo /etc/apt/source.list. Seu arquivo deve ficar mais ou menos assim
deb http://ftp.br.debian.org/debian/ lenny main contrib non-free
Repita esse procedimento para todos os outros repositorios (security e o volatile) após isso, rode o comando:
aptitude update

Passo 1 – Instalação do Java JDK
aptitude install sun-java6-jdk
Leia :p  e aceite os termos (será pedido para ser confirmado duas vezes.)


Passo 2 – MySQL

O Openmeetings usa o mysql como banco de dados para gravação das informações de usuários, salas e configurações gerais do sistema. O sistema tem suporte para vários outros sgbd’s como postgres, mssql. Para instalar use o comando:
aptitude install mysql-server

Uma tela será apresentada solicitando ao senha do usuário root do mysql, defina uma senha forte e anote, iremos usar esse usuário mais tarde.

Depois da instalação, é necessário criar um database chamado openmeetings para isso, acesse o console do mysql com o comando:
mysql -u root -p

(digite a senha do root que você definiu na hora da instalação)

Insira os comandos:
CREATE DATABASE openmeetings DEFAULT CHARACTER SET ‘utf8′;
GRANT ALL PRIVILEGES ON openmeetings.* TO ‘openmeetings’@'localhost’ IDENTIFIED BY ‘DIGITE SUA SENHA AQUI‘ WITH GRANT OPTION;

O primeiro comando cria a database chamada openmeetings e o segundo da privilégios para o usuário openmeetings usar essa base integralmente.

P.S. Onde está escrito DIGITE SUA SENHA AQUI, substitua pela senha do usuario openmeetings do mysql.


Passo 3 – OpenOffice

O OpenOffice (completo, writer, math….) é usado para fazer as conversões de documentos, e o imagemagick é usado para converter imagens. É necessário o pacote openoffice.org-headless para que você não precise de uma interface gráfica para executar a suite do openoffice.
aptitude install openoffice.org-headless openoffice.org-writer openoffice.org-calc openoffice.org-impress openoffice.org-draw openoffice.org-math imagemagick
Depois de completar a instalação do OpenOffice, é necessário criar um script de inicialização para o servidor do openoffice (como disse antes, esse serviço irá converter os arquivos para um formato conhecido pelo openmeetings)

Crie um arquivo no seguinte local:
vim /etc/init.d/openoffice
e insira o conteúdo:
#!/bin/bash

# openoffice.org headless server script

#
# chkconfig: 2345 80 30

# description: headless openoffice server script
# processname: openoffice
#
# Author: Vic Vijayakumar
# Modified by Federico Ch. Tomasczik
#
OOo_HOME=/usr/bin
SOFFICE_PATH=$OOo_HOME/soffice
PIDFILE=/var/run/openoffice-server.pid
set -e
 case "$1" in
   start)
    if [ -f $PIDFILE ]; then
     echo "OpenOffice headless server has already started."
     sleep 5
     exit
   fi
 echo "Starting OpenOffice headless server"
 $SOFFICE_PATH -headless -nologo -nofirststartwizard -accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1
 touch $PIDFILE
 ;;
   stop)
    if [ -f $PIDFILE ]; then
     echo "Stopping OpenOffice headless server."
     killall -9 soffice && killall -9 soffice.bin
     rm -f $PIDFILE
     exit
    fi
 echo "Openoffice headless server is not running."
 exit
 ;;
 *)
 echo "Usage: $0 {start|stop}"
 exit 1
esac
exit 0

troque sua permissão
chmod 0755 /etc/init.d/openoffice
e insira na inicialização:
update-rc.d openoffice defaults
inicie o serviço
/etc/init.d/openoffice start
esse serviço roda na porta tcp 8100, após iniciar o serviço verifique se ele está rodando com o comando:
netstat -putan |grep soffice.bin
sua saída é:
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 14458/soffice.bin

Passo 4 – SWFTools


O SWFTools é um utilitário para manipulação de arquivos SWF (Adobe Flash). O SWFTools não está disponível na versão stable do debian, o que vamos fazer é baixar da versão unstable, mas antes precisamos resolver suas dependencias.
aptitude install gs-gpl libart-2.0-2 libt1-5 libungif4g


após instalar as dependências, baixe o swftools
wget http://ftp.br.debian.org/debian/pool/main/s/swftools/swftools_0.8.1-2.1_i386.deb

depois instale:
dpkg -i swftools_0.8.1-2.1_i386.deb


Passo 5 – Red5

O Red5 é um servidor que serve para entregar o audio e video para a aplicação propriamente dita, para fazer isso ele utiliza o protocolo RMTP
No site do openmeetings, você pode escolher por baixar somente o red5 ou openmeetings ou tudo junto, vamos baixar o que tem tudo junto.
wget http://openmeetings.googlecode.com/files/red5-openmeetings-0.9rc1-r2185.zip

descompacte:
unzip red5-openmeetings-0.9rc1-r2185.zip

copie o diretório descompactado para /usr/lib
cp -a red5-openmeetings-0.9rc1-r2185 /usr/lib/red5

após copiar, altere as permissões dos scripts do red5
chmod +x /usr/lib/red5/*.sh

como primeiro teste, vamos executar o red5 para ver se ele serve páginas normalmente:
cd /usr/lib/red5/
./red5

Muita informação vai aparecer na tela.

Se você executar isso de fora do diretório /usr/lib/red5 não irá funcionar!

Abra o browser e acesse o site: http://ip:5080

Uma tela como essa será exibida

pare o servidor com a sequencia de teclas control + c

Para que o servidor do red5 inicialize junto com o sistema, vamos colocar um script de incialização. Copie:
 
#! /bin/sh
#
# red5 red5 initscript
#
# Author: Simon Eisenmann .
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Red5 flash streaming server"
NAME=red5
RED5_HOME=/usr/lib/red5
DAEMON=$RED5_HOME/$NAME.sh
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
# Read config file if it is present.
if [ -r /etc/default/$NAME ]
then
 . /etc/default/$NAME
fi
#
# Function that starts the daemon/service.
#
d_start() {
 start-stop-daemon --start -c nobody --pidfile $PIDFILE --chdir $RED5_HOME --background --make-pidfile --exec $DAEMON
}
#
# Function that stops the daemon/service.
#
d_stop() {
 start-stop-daemon --stop --quiet --pidfile $PIDFILE --name java
 rm -f $PIDFILE
}
case "$1" in
 start)
 echo -n "Starting $DESC: $NAME"
 d_start
 echo "."
 ;;
 stop)
 echo -n "Stopping $DESC: $NAME"
 d_stop
 echo "."
 ;;

 restart|force-reload)
 echo -n "Restarting $DESC: $NAME"
 d_stop
 sleep 1
 d_start
 echo "."
 ;;

 *)
 echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
 exit 1
 ;;

esac
exit 0
exit 0


Igual ao serviço do openoffice, dê permissão de execução para o arquivo /etc/init.d/red5
chomd +x /etc/init.d/red5

Inserir na inicialização:
update-rc.d red5 defaults

inicie o serviço:
/etc/init.d/red5 start

verifique se ele esta rodando:
# netstat -putan |grep 5080

saída do comando
tcp6 0 0 :::5080 :::* LISTEN 15329/java

Tudo está ok até aqui…

É legal remover algumas coisas que não serão usadas pelo servidor do red5 como os exemplos que ele manda junto, para isso devemos remover os diretórios:
rm -rf /usr/lib/red5/webapps/installer
rm -rf /usr/lib/red5/webapps/root/*


Passo 6 – Configurando e instalando o OpenMeetings

Primeiro, vamos configurar a conexão com o banco de dados. Vá até o diretório:
cd /usr/lib/red5/webapps/openmeetings/conf

copie o arquivo de exemplo mysql_hibernate.cfg.xml para hibernate.cfg.xml
cp mysql_hibernate.cfg.xml hibernate.cfg.xml

edite o arquivo hibernate.cfg.xml
vim hibernate.cfg.xml

onde você ver (começo do arquivo) :
<!– User / Password –>
<property name=”connection.username”>root</property>
<property name=”connection.password”></property>
Altere para:
<!– User / Password –>
<property name=”connection.username”>openmeetings</property>
<property name=”connection.password”>SENHA DEFINIDA NA HORA DA CRIAÇÃO DO USUARIO NO MYSQL PASSO 2</property>

reinicie o red5
/etc/init.d/red5 restart

Dê permissão de execução para arquivos .sh no diretório: /usr/lib/red5/webapps/openmeetings/jod
chmod +x /usr/lib/red5/webapps/openmeetings/jod/*.sh

Mais permissões para serem alteradas:
chown nobody /usr/lib/red5 -R

Como o serviço do red5 roda sobre o usuario nobody, ele precisa ser dono de alguns arquivos para funcionar direito.

feito isso, vamos rodar a instalação do Openmeetings, abra no browser: http://ip:5080/openmeetings/install

Na tela de instalação, preencha os campos de username, userpass e email, esses campos são do usuario “admin” do openmeetings;

No campo organisations, preencha com o nome da empresa, ou algum nome que irá identificar os primeiros usuários, isso pode ser alterado depois, mas não pode ser deixado em branco;

Nas perguntas de sim / não, deixe todas como não, pois elas perguntam se vocÊ quer liberar o auto registro, enviar emails para novos usuarios e verificação do e-mail dos usuarios recem registrados;

Nas opcoes de mail, preencha com os dados so seu serviço de e-mail;
Idioma, como estamos no Brasil, selecione português :p

Defualt font, coloque uma que vc goste… isso é perfumaria;

A parte de converters, Crypt Type, Authentication Type , Screen Viewer, deixe tudo como está;

Ao final, clique em INSTALL

Aqui comigo demorou um pouco essa etapa (estou usando uma vm com 256 de ram :p)

Quando terminar, você será levado para uma tela como essa:




Faça o login com o usuário que vc cadastrou na hora da instalação e aproveite!!!!

Qualquer dúvida escrevam…..

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

segunda-feira, 27 de abril de 2009

Configurando o Nagios

Fala pessoal…desculpe pela demora nesse outro post…
Esse post é uma extensão da instalação do nagios.
Aqui vou descrever como configurar hosts, serviços, contatos, templates….
Como funciona?
A configuração é dividida em partes (e em arquivos) sendo elas:
  • nagios.cfg
  • commands.cfg
  • contacts.cfg
  • templates.cfg
  • timeperiods.cfg
Listei aqui os arquivos principais, que serão utilizados nas configurações.
nagios.cfg = é o arquivo base do nagios;

commands.cfg = contém todas as definições de comandos / parâmetros necessários para as checagens;

contacts.cfg = aqui é definido os contatos e os grupos de contatos para notificações

templates.cfg = nesse arquivo, é definido as opções genéricas para todos os objetos a serem monitorados. Por exemplo você pode criar um template para monitorar impressoras, nesse template você define que o tipo de notificação será somente nos casos de Down. Lembre-se, a opção register deve sempre estar setada como 0.

timeperiods.cfg = define os dias e horas que os serviços serão monitorados. Você pode definir que um serviço seja monitorado dàs 8:00 até às 18:00. Eventos fora desse período não serão alertados.
Sendo assim, é necessário saber o seguinte para efetuar a configuração:
Todo host, tem que ter um template para ele, por padrão usamos o template genérico de hosts, ele atende em 90% dos casos.
Todo serviço tem que ter um host associado a ele, que por sua vez também tem que ter um template genérico para ele.
Todo comando  deve ser especificado no arquivo commands.cfg (é como se fosse o template do comando), lá já existem alguns comandos prontos para uso.
Uma boa organização desses arquivos é super importante na hora de encontrar alguma opção para ajustes ou até mesmo a remoção de um host do monitoramento.
Eu costumo separar os arquivos de hardwares (switches, access points etc…),  hosts e serviços separados por sistema operacional.
Vamos comecar a criar os arquivos necessários:
Dentro de /etc/nagios/objects crie um diretório chamado monitoradas
mkdir /etc/nagios/objects/monitoradas
Dentro de monitoradas crie alguns arquivos chamados servidores-linux.cfg e servidores-windows.cfg e também servicos-linux.cfg e servicos-windows.cfg e o arquivo contendo os administradores contato-admin e time-admins
cd /etc/nagios/objects/monitoradas
touch servidores-linux.cfg servidores-windows.cfg servicos-linux.cfg servicos-windows.cfg contato-admin.cfg time-admins.cfg
Vamos começar com os servidores-linux.cfg, vamos começar a definir o primeiro host (fora o localhost) a ser monitorado.
define host{
use                    linux-server
host_name              server.domain.com
alias                  server
address                172.16.1.123
}
Explicando as linhas:

define host =diretiva que indica que estamos definindo um host na configuração

use = este campo representa o template, ele importa as variáveis que foram definidas no template (mais abaixo irei detalhar como funciona o template)

host_name = nome completo da maquina exemplo: server.domain.com ou o seu endereço IP.

alias = nome para exibição: server

address = endereço IP ou nome, eu recomendo o uso de endereços IP, se o serviço de DNS falhar por algum motivo o monitoramento de outros recursos não é prejudicado.
Uma outra coisa bastante interessante para se manter a ordem, é a criação de grupos de hosts. Isso é interessante na hora de visualizar máquinas por exemplo: servidores da filial 1.
Para criar os grupos veja o modelo abaixo:
define hostgroup{
hostgroup_name      filial1
alias               Filial 1 – SPO
members             server, server1, server2
}
Explicando as linhas:

define hostgroup = indica que estamos criando um novo grupo de hosts

alias = nome para a exibição

members = todas as máquinas participantes do grupo. Deve-se ficar atento: As máquinas que serão listadas aqui, devem ser separadas por “,” (virgula), o nome usado pode ser o do alias e o mais importante os hosts devem estar declarados.
Esse procedimento deve ser repetido para todos os HOSTS que você deseja monitorar e lembre-se criar arquivos distintos para equipamentos, isso ajuda muito na localização. Isso vale também para a criação dos grupos de hosts…


Configurando Serviços

O Nagios monitora tanto hosts como serviços. Por exemplo, você tem um servidor web e por algum motivo o serviço de http cai, mais a máquina fica online, um alerta é gerado, e uma ação por parte do sysadmin é tomada.
Os monitores de serviços são scripts criados em diversas linguagens, que retornam os valores para o nagios e esse por sua vez trata os valores como estados que são eles:
  • OK
  • WARNING
  • UNKNOWN
  • CRITICAL
OK = Serviço sadio, sem problemas.

Warning = O serviço entrou estado de alerta (este valor é personalizável)

Unknown = Estado desconhecido, ou o plugin ainda não foi executado ou ele está devolvendo um valor que o nagios não espera

Critical = Estado crítico, o serviço está com problemas / indisponível
Existem duas formas de se monitorar um host. A forma ativa e a passiva.
A forma ativa é a mais comum, e funciona da seguinte maneira:
O nagios executa o plugin correspondente (o plugin se conecta diretamente na porta ou executa o comando)  e ele retorna um dos 4 valores.
Já a forma passiva é usada para enviar alertas para o servidor de nagios. Nesse caso iremos configurar hosts do tipo Ativo, verificações passivas ficam para um próximo artigo :p
Edite o arquivo /etc/nagios/monitoradas/servicos-linux.cfg
define service{
use                         local-service
host_name                   server
service_description         SSH
check_command               check_ssh
notifications_enabled       1
}
Explicando as linhas:

use = Template do serviço.

host_name = Nome do host que hospeda o serviço.

service_description = Descrição do serviço

check_command = É o nome do plugin que irá checar o serviço. Os comandos de checagem são definidos no arquivo commands.cfg (visto mais adiante)

notifications_enabled = Notifica o administrador em caso de erros? 0 para não e 1 para sim
Essas linhas são as configurações mais básicas no help online do nagios você pode encontrar todas as possíveis opções.


Comandos de verificação

Como disse anteriormente, o nagios funciona com scripts que faz a verificação de hosts / serviços. Agora vamos entender como funciona a definição de comandos e onde os scripts são localizados.
Na instalação do nagios, todos os scripts ficam no diretório /usr/lib/nagios/plugins . O arquivo commands.cfg é responsável por parametrizar os comandos de chegagem, sendo assim quando na opção check_command é definido check_ping por exemplo, o nagios busca as informações (path, arguimentos requeridos etc…) sobre o plugin. Nesse arquivo você pode definir um script que você escreveu ou personalizar os parametros de um script já existente.
Veja o exemplo do comando check_ssh ( esse exemplo foi retirado do arquivo /etc/nagios/commands.cfg)
define command{
command_name    check_ssh
command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}
Note que todas as linhas são auto explicativas e bem parecidas com as anteriores, o que vale dizer é: $USER1$ é = ao path dos scripts, $ARG1$ = ao primeiro argumento passado ao script, esse número de argumentos é “infinito” e por ultimo $HOSTADDRESS$ = é o endereço da máquina, ele pega esse valor da definição do host.
  • Vale lembrar que antes de definir um serviço você deve dar uma olhada no commands.cfg e no diretório /usr/lib/nagios/plugins para ver quais scripts estão disponíveis para o uso.
Grupos de Serviços
Assim como hosts, serviços podem ser agrupados para uma melhor organização e visualização posterior na interface gráfica.
Para definir:
define servicegroup{
servicegroup_name       SSHservices
alias                   Servidores SSH
members                 server1, server2, server3
}
As regras são as mesmas para a definição de grupo de hosts….


Contatos

Os contatos no nagios são as pessoas que serão notificadas quando um evento ocorrer com um host / serviço monitorado. É através dessa opção que o pessoal te acorda de madrugada :p
Como funciona:  Quando uma checagem de serviço ou host falha, retorna, da algum erro desconhecido, o nagios imediatamente verifica qual é o tipo de erro e procura quem ele deve chamar (enviar um e-mail por exemplo).
Essas configurações são armazenadas no arquivos contacts.cfg. É importante você usar o conceito de grupos nesse caso (em todos os outros também) mas nesse caso é um pouco diferente, imagine se um sysadmin que trabalha com você se desliga da empresa, e você definiu somente os nomes para serem notificados, essa terefa seria um pouco complicada quando um novo adminstrador entra na empresa… Usando grupos você altera somente em um lugar…  
define contact{
contact_name             admin1
use                      generic-contact
alias                    Admin 1
email                    admin@no-spam.com
}
Novamente, tudo muito parecido com as definições anteriores…
Definição do grupo
define contactgroup{
contactgroup_name       admins
alias                   SysAdmins
members                 admin1
}
Também nada de novidade…. :p lembre -se, no grupo, os membros são definidos pelo campo contact_name


Templates

Templates, o que é? eu falei tanto sobre o tal dos templates, confesso, quando começei a mexer com o nagios sempre tive essa dúvida. Vou tentar explicar o que é…
Os templates contém todas as configurações padrão de todos os objetos monitoráveis do nagios. Por exemplo, você pode definir quais os tipos de notificação que um administrador irá receber
Veja o exemplo do caso dos administradores…
# Generic contact definition template – This is NOT a real contact, just a template!
define contact{
name                                                                      generic-contact         ; O nome desse template de contato
service_notification_period                       24×7                    ; Notificações de serviços serão enviados a qualquer hora
host_notification_period                             24×7                    ; Notificações de serviços serão enviados a qualquer hora
service_notification_options                     w,u,c,r,f,s           ; Envia qualquer tipo de notificação para serviços
host_notification_options                           d,u,r,f,s               ; Envia qualquer tipo de notificação para serviços
service_notification_commands              notify-service-by-email ;envia a notificação por e-mail de serviços
host_notification_commands                    notify-host-by-email    ; envia a notificação por email de hosts
register                                                                 0                       ; Esta é somente a definição de um template 0 para não ser considerada como um contato.
}
Vale comentar o seguinte:

service_notification_options = Opções:

w = Warning (aviso)
u = Unreacheable (inalcançavel)
c = Critical (critico)
r = Refused (recusado)
f = Flapping (Oscilando entre disponível / indisponível)
s = Scheduled (Agendada)

host_notification_options = Opções

d = Down (“caiu” / inoperante)
u = Unreacheable (inalcançavel)
r = Refused (Recusado)
f = Flapping (oscilando entre disponível / indisponível)
s = Scheduled (Agendado)
Considerações Finais

1 – Vale a pena dar uma olhada em todos os arquivos antes, o nagios já vem com a configuração do localhost pronta, com isso já da pra ter uma base do que e como fazer.
2 – A documentação online do nagios é excelente vale a pena verificar.
3 – Pessoal, acho que é isso, se não ficou alguma coisa clara, se você não entendeu, envie um e-mail

segunda-feira, 16 de março de 2009

Nagios – howto de instalação

Monitorar é preciso!!! mas quando o número de equipamentos a serem monitorados aumenta essa tarefa se torna cada vez mais complicada.
Para descomplicar essa tarefa o Nagios faz isso muito bem e obrigado. :p
Vou descrever aqui os passos para a instalação de um servidor nagios mais seus plugins. As configurações de NRPE e NSClient fica para outro post, esse já está extenso demais 
Para demonstrar aqui, usei um Debian 5 recém instalado.
Mãos a obra!!  …


Fase 1: Preparação do Ambiente

Instalando dependências:
apt-get install apache2 build-essential libgd2-xpm-dev
Após instalar as dependências do nagios, vamos criar o usuário e o grupo que irá executar o serviço.
useradd -r nagios
A opção -r do useradd cria um usuário do tipo sistema com o seu respectivo grupo.


Fase 2: Download do Nagios e Plugins

Para saber das ultimas versões, visite: http://www.nagios.org/download, quando escrevi esse artigo, a versão estável é: 3.0.6 e dos plugins 1.4.13.
Para baixar:
wget http://ufpr.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz
wget http://ufpr.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz


Fase 3: Instalação do Nagios e configuração básica

É necessário descompactar os fontes. Nesse primeiro momento vamos descompactar somente o nagios.
tar xzf nagios-3.0.6.tar.gz
cd nagios-3.0.6
Agora vamos iniciar a compilação…
./configure \
--with-init-dir=/etc/init.d \
--with-cgiurl=/nagios/cgi-bin \
--with-htmurl=/nagios \
--with-lockfile=/var/run/nagios.pid \
--with-nagios-user=nagios \
--with-nagios-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 \
--with-gd-lib=/usr/lib \
--with-gd-inc=/usr/include \
--with-template-objects \
--with-template-extinfo
make all
make install
make install-init
make install-config
make install-commandmode
Os comandos:
./configure e parametros = prepara o ambiente para a compilação com dados do sistema (eu passei os parâmetros para que a instalação ficasse como uma instalação via apt)
make all = compila todos os arquivos fonte do nagios
make install = copia os arquivos compilados para os destinos corretos
make install-init = cria os scripts de inicialização estão localizados em /etc/init.d
make install-config = instala os arquivos de exemplo das configurações
make install-commandmode = configura as permissões para o diretório de comandos externos.
Para os mais apressados, ainda não está na hora de inicializar o nagios!!!
Edite o arquivo /etc/nagios/objects/contacts.cfg e procure pelo campo “email” e coloque seu e-mail (coloque um email do gmail, ele aceita e-mails vindo de dominios/ip inválidos)


Fase 4: Instalando a interface web

Ainda no diretório onde descompactamos e compilamos o nagios, rode o comando:
make install-webconf
Esse comando irá copiar os arquivos referente a configuração do apache.
Um outro passo importante é a criação de usuários no nagios. Agora iremos criar o usuário nagiosadmin, ele é o administrador da interface web, com ele conseguimos desativar verificações, adicionar comentários, verificar gráficos etc… .
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
/etc/init.d/apache2 restart
Digite uma senha e não a esqueça!! :p e em seguida reinicie o apache
Pronto!, o nagios está instalado, mas ainda não acabou, agora vem a compilação / instalação dos plugins


Fase 5: Compilação e instalação dos plugins

Os plugins são responsáveis pela verificação dos hosts / serviços propriamente dita sem eles no nagios não tem valia alguma. Eles são scripts ou programas quando executados com os parâmetros corretos, retornam valores esperado pelo nagios. Os valores são:
  • OK —exit code 0—o serviço está funcionando ok.
  • WARNING —exit code 1—o serviço está em warning.
  • CRITICAL —exit code 2—o serviço está critico.
  • UNKNOWN —exit code 3—estado desconhecido.
Chega de explicações…. vamos compilar os plugins
Como você já fez o download, é só descompactar os plugins:
tar xzf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
Compilando e instalando
./configure \
--prefix=/usr \
--exec-prefix=/usr/sbin \
--libexecdir=/usr/lib/nagios/plugins \
--sysconfdir=/etc/nagios \
--datadir=/usr/share/nagios \
--with-cgiurl=/nagios/cgi-bin \
--with-nagios-user=nagios \
--with-nagios-group=nagios
make
make install
Pronto, plugins instalados!


Fase 6: Inicialização com o sistema

Crie um link para o diretório/etc/rcS.d
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Fase 7: Testes e Inicialização do serviço

Verifique se tudo está ok, o comando abaixo irá verificar o arquivo base, se nenhum erro acontecer, é sinal que o nagios pode ser iniciado sem problemas
nagios -v /etc/nagios/nagios.cfg
O final da saída desse comando deve ser assim:
Total Warnings: 0
Total Errors:   0
Things look okay – No serious problems were detected during the pre-flight check
nagios:~#
Se erros e warnings estiverem zerados, pode iniciar o nagios com o comando:
/etc/init.d/nagios start
Após o inicio do serviço, você já pode ir até o seu navegador e acessar a interface web do nagios no seguinte endereço:
http://ip.do.nagios/nagios
use o usuário: nagiosadmin e a senha que você definiu (eu disse para você nao esquecer :p)
Nesse momento a máquina irá monitorar seus serviços locais…

quinta-feira, 12 de março de 2009

Atualizando Regras de filtragem do SpamAssassin

Não tem nada de mais desagradável do que receber SPAM em sua caixa de e-mails. Agora para o sysadmin essa tarefa é mais complicada, mesmo fazendo checagem de reverso, inserindo RBL’s, alguns spams ainda conseguem sobreviver a esses testes e chegar na caixa do usuário.
Pesquisando um pouco sobre o assunto essa semana, descobri que o SpamAssassin tem um utilitário de atualização o sa-update
Meu ambiente: Debian 4 com o spamassassin 3.2.3 (volatile)
Mãos na massa!!!


Passo 1:

Para atualizar usando as regras de filtragem padrão do spamassassin é necessário:
wget http://spamassassin.apache.org/updates/GPG.KEY
gpg –import GPG.KEY
sa-update –import GPG.KEY
Passo 2:

Com a chave importada, rode o comando:
sa-update -D
Isso dispara a atualização padrão do SA. A opção -D habilita o modo verbose da ferramenta, sem ele não é exibido nada na saída padrão.
Para melhorar a taxa de detecção de spam, eu utilizo também os filtros do OpenProtect’s (http://saupdates.openprotect.com/).
No site do OpenProtect’s tem instruções de como usar a ferramenta do sa-update para baixar os filtros. Vou descrever com base no site como atualizar um SA 3.2 usando os filtros do OpenProtect’s
Pré-requisito: ter o gnupg instalado. Se você usa uma distribuição debian-like use o comando: dpkg -l gnupg

Passo 1 – Importe a seguinte chave publica :
gpg –keyserver pgp.mit.edu –recv-keys BDE9DC10
Passo 2 – Exporte a chave baixada para um arquivo:
gpg –armor -o pub.gpg –export BDE9DC10
Passo 3 – Importe a chave no sa-update
sa-update –import pub.gpg
Passo 4 – Baixe os filtros
sa-update –allowplugins –gpgkey D1C035168C1EBC08464946DA258CDB3ABDE9DC10 –channel saupdates.openprotect.com
P.S. O comando acima é tudo em uma só linha e não se esqueça de reiniciar o SA.

Pronto, seu SA está atualizado e pronto para detectar muito mais spam!
Não adianta nada se as regras não forem atualizadas sempre, adicione no crontab o passo 4 o comando:
sa-update –allowplugins –gpgkey D1C035168C1EBC08464946DA258CDB3ABDE9DC10 –channel saupdates.openprotect.com && /etc/init.d/spamassassin restart
Essa linha funciona porque o sa-update retorna o status 0 se tudo foi baixado e atualizado corretamente.
Se vc quiser tratar as saídas de erro do sa-update ai vai:
1 – conjunto de regras já atualizado
2 – existe uma atualização, mas aconteceu um problema para baixa-las
4 – erro
Mais informações: man sa-update