Páginas

quarta-feira, 9 de março de 2011

Aumentando o limite de File Descriptors

Fala pessoal...

Recentemente precisei aumentar o número de arquivos abertos (open files) de uma máquina Debian, porém ao editar o arquivo /etc/security/limits.conf, os valores não eram alterados, mesmo depois de reiniciar. Essa dica, funciona nas versões 5 e 6 do Debian.

Para verificar qual é o valor máximo de open files, utiliza-se o comando ulimit -a (todas as informações) ou o comando ulimit -n (somente o valor de open files). A saída do ulimit -a de um sistema padrão é assim:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
Essa opção nos mostra qual é o máximo de arquivos abertos simultaneamente.


1024 arquivos simultâneos não é suficiente?
Depende, imagine um servidor web com mais de 1024 acessos simultâneos, para cada conexão efetuada, 1 File Descriptor é alocado, e esse limite é atingido rapidamente, e a máquina começa com muitos sintomas estranhos.....

Beleza, partindo desse ponto, fica fácil, é só ir no /etc/security/limits.conf e adicionar a opção nofile dessa forma:
* soft nofile 16384
* hard nofile 32768
Onde:

* = Todos os usuários
soft = limite padrão
hard = limite máximo
16386/32768 = valores do File Descriptors

E qual o problema?
Quando o o arquivo era alterado, serviços eram iniciados com o valor padrão de File Descriptors (1024)

Solução:

o arquivo /etc/pam.d/common-account é o arquivo responsável pelas configurações de login de todos os serviços.
No final do arquivo insira:

session required pam_limits.so
 Basta um restart na máquina para que essa solução funcione.

Uma coisa que notei foi: o usuário root não entrava nas regras do limit, ficava no padrão, a solução foi adicionar o usuário root no limits.conf como no exemplo abaixo:

root soft nofile 16384
root hard nofile 32768
* soft nofile 16384
* hard nofile 32768

É isso, qualquer coisa enviem um e-mail:

terça-feira, 19 de outubro de 2010

Termômetro USB – TemperNTC

Fala pessoal….

Recentemente comprei um termômetro USB para ver até onde conseguiria chegar com ele.

Comprei esse termômetro no ebay (paguei algo em torno de R$ 15,00) mas é encontrado facilmente nesses sites de compras chineses  fica a dica.

Em um primeiro momento após pesquisar um pouco, encontrei um código na internet, mas ele tinha um problema, era escrito para o termômetro Temper que só tem um sensor de temperatura.

O TemperNTC, tem um “rabicho” (termômetro externo) com um sensor de temperatura extra, assim você consegue fazer duas medições em locais distintos.
Temper




TemperNTC




Partindo dai, iniciei minha pesquisa sobre como fazer-lo funcionar no linux, depois de algumas googladas, achei um módulo do Perl que tem suporte para ambos Temper, porém era necessário transformar a saída do módulo em alguma coisa funcional.

A saída do lsusb dele é:
Bus 003 Device 013: ID 1130:660c Tenx Technology, Inc.

Preparando para utilizar o termômetro

Para o módulo ser instalado corretamente, algumas dependências são necessárias, portanto instale:
aptitude install libusb-dev

Depois instale o CPAN e os módulos necessários
cpan -fi Bundle::CPAN
cpan -fi ExtUtils::MakeMaker
cpan -fi Inline::MakeMaker
cpan -fi Device::USB
cpan -fi Device::USB::PCSensor::HidTEMPer
Esse processo leva alguns minutos, responda todas as perguntas das instalações com as respostas padrão (tecle enter)

Feito isso, já é possível retirar alguns dados do termômetro.

Crie um arquivo com o seguinte conteúdo:
#! /usr/bin/perl

use 5.010;
use strict;
use warnings;
use Carp;
use Device::USB;
use Device::USB::PCSensor::HidTEMPer::Device;
use Device::USB::PCSensor::HidTEMPer::NTC;
use Device::USB::PCSensor::HidTEMPer::TEMPer;
use lib;
use Device::USB::PCSensor::HidTEMPer;

my $pcsensor  = Device::USB::PCSensor::HidTEMPer->new();
my @devices   = $pcsensor->list_devices();

my $interno_grande = $devices[0]->internal()->celsius();
my $externo_grande = $devices[0]->external()->celsius();

my $interno = substr $interno_grande, 0, 5;
my $externo = substr $externo_grande, 0, 5;

printf "Termometro Interno: $interno C\n";
printf "Termometro Externo: $externo C\n";

Salve o arquivo, dê permissão de execução, a saída desse pequeno código é:
# ./termometro
Termometro Interno: 21.12 C
Termometro Externo: 25.02 C
Para quem comprou o Temper, é só utilizar a função internal, as funções external não devem ser utilizadas.

Legal, mas para mim isso ainda não é o suficiente. Gostaria de gerar alguns gráficos disso, é possível? SIM!

Como utilizo o Munin para fazer a geração dos gráficos da minha rede, resolvi escrever um plugin que faz a captura dos dados e coloca-los tudo em um único gráfico.


Preparando o ambiente para executar o script

1 – Instalar o munin e o sudo
aptitude install munin munin-node sudo

Com tudo instalado, já é possível ver localmente os gráficos, se você tem um web server instalado, ele estará disponível em http://seuwebserver/munin


2 – Configurar o sudo

Execute o comando:
visudo

No final do arquivo, adicione a seguinte linha:
nobody  ALL=(root) NOPASSWD:/usr/local/bin/temper_run.pl

3 – Criar os arquivos

Crie o arquivo temper em /usr/share/munin/plugins e insira o seguinte conteúdo:
#!/bin/bash

sudo /usr/local/bin/temper_run.pl $1

Crie o arquivo temper_run.pl em /usr/local/bin com o seguinte conteúdo:
#!/usr/bin/perl

# Script to monitor ambient temperature using the TemperNTC
# Writen by Victor Sartori 10/10 - victor (NoS Pa M) sartori (d o t ) eti [d o t] br
# Version 0.2.1

# Some notes:
# All values in Celsius, if you wanna use it in fahrenheit, change the conversion function to fahrenheit on line 50 and 51

use strict;
use Carp;
use Device::USB;
use Device::USB::PCSensor::HidTEMPer::Device;
use Device::USB::PCSensor::HidTEMPer::NTC;
use Device::USB::PCSensor::HidTEMPer::TEMPer;
use lib;
use Device::USB::PCSensor::HidTEMPer;

if ("$ARGV[0]" eq "autoconf") {
 printf "yes\n";
 exit 0;
}

if ("$ARGV[0]" eq "config") {
 my $LOAD_WARN="28";
 my $LOAD_CRIT="32";

 print "graph_title Temperature\n";
 print "graph_args --base 1000 -l 0\n";
 print "graph_vlabel Temperature\n";
 print "graph_scale no\n";
 print "graph_category system\n";
 print "temperE.label External temperature in Celsius\n";
 print "temperE.warning $LOAD_WARN\n";
 print "temperE.critical $LOAD_CRIT\n";
 print "temperI.label Internal temperature in Celsius\n";
 print "temperI.warning $LOAD_WARN\n";
 print "temperI.critical $LOAD_CRIT\n";
 print "graph_info Temperature.\n";
 print "temper.info Average temperature.\n";
 exit 0;
}

my $pcsensor  = Device::USB::PCSensor::HidTEMPer->new();
my @devices   = $pcsensor->list_devices();

my $internal_big = $devices[0]->internal()->celsius();
my $external_big = $devices[0]->external()->celsius();

# This is a workarround becouse the external value shows so much decimal values.
my $internal = substr $internal_big, 0, 5;
my $external = substr $external_big, 0, 5;

print "temperI.value $internal\n";
print "temperE.value $external\n";

Dê permissão de execução para os dois arquivos, reinicie o munin-node
/etc/init.d/munin-node restart
A saída do gráfico fica assim:



Alguns Problemas:
  • O termômetro ficou com o sensor interno desrregulado, ele marcava sempre 75 ou 110, resolvi colocando em uma máquina windows, instalando o software que vem junto e alterando a parte de calibração para 0, ele voltou a marcar a temperatura normalmente.
  • O plugin não rodava direto no munin-node, descobri que é necessário ter privilégios de root para acessar o dispositivo, por isso existe dois scripts e a configuração do sudo.
  • Estou escrevendo um script para o nagios também, assim que ele estiver pronto faço um novo post aqui.
  • O fonte do script do munin está em inglês, porque irei posta-lo no munin-exchange.
  • Quem for um programador perl e souber como faço isso sem o sudo, fico grato se me explicar, não tenho muita experiencia com perl.
Dúvidas, sugestões, enviem um e-mail para: 

quarta-feira, 13 de outubro de 2010

Instalando o Debian via pendrive

Fala pessoal…..

Esses dias fui fazer um setup em um server e estava sem mídias (mentira, eu quebrei um cd-rw que funcionava, sem querer :p ). Qual a solução mais simples?

Utilizar uma instalação via internet, o NETINST do Debian.

Após uma olhada rápida no site do Debian achei a solução, rápida e simples!
O que você irá precisar?
  • Um pendrive >= a 256 mb
  • Uma máquina linux
  • Imagem iso do Debian netinst

Passo 1

Você irá precisar da imagem de boot do sistema, o debian fornece isso aqui:
Para sistemas i386 (32 bits) ou amd64 (64bits)
Os arquivos tem em média 20 mb


Passo 2

Download da imagem iso do netinst
Sistemas i386 (32 bits) ou amd64 (64bits)
Os arquivos tem 150 mb e 130 mb (valores arredondados)


Passo 3


ATENÇÃO TODOS OS SEUS DADOS DO PENDRIVE SERÃO DELETADOS APÓS ESSES COMANDOS!! ATENÇÃO!!

Descompacte a imagem no pendrive

Para isso, descubra onde o seu pendrive foi detectado, duas formas de se fazer isso:
fdisk -l
dmesg

Eu prefiro usar o fdisk -l, é mais simples de se identificar o dispositivo (localize-o pelo tamanho)

Nesse exemplo, irei usar o dispositivo em /dev/sdc, tenha certeza que é o dispositivo correto, caso contrário vc irá apagar informações de outros dispositivos, e isso não é legal

Execute o comando:
zcat boot.img.gz > /dev/sdc

Feito isso, monte o pendrive e copie o iso do netinst para o pendrive
mount /dev/sdc /mnt
cp netinst.iso /mnt
umount /dev/sdc

Feito isso é só dar boot na máquina e setar a opção de boot para o usb.
Qualquer dúvida/sugestão ou qualquer outra coisa, enviem um e-mail para:

sexta-feira, 17 de setembro de 2010

Samba + Debian 5 + Windows 7 + PDC

Fala pessoal…

Começamos o processo de migração para o Windows 7 aqui na empresa, irei descrever os passos que utilizei para conseguir fazer o samba suportar essa nova versão do Windows.

Meu ambiente:
Servidor atual: Debian 4.0 com samba rodando em PDC, autenticando vários usuários (sim, eu sei, essa versão está muito velha :p)
Servidor Novo: Debian 5.0.5


Fase 1: Levantamento de dados do servidor antigo

Além dos dados, é necessário migrar os usuários e os grupos
Edite o arquivo /etc/passwd e copie todos os usuários que tem ID maior que 1000 (terceira coluna)
Você pode fazer da seguinte forma:
grep 1[0-9][0-9][0-9][0-9] /etc/passwd
Edite o arquivo /etc/shadow e copie todos os usuários que estavam no passwd que vc retirou
Edite o arquivo /etc/group e copie os grupos que vc criou, os demais podem ser ignorados
Copiar o arquivo /etc/samba/smbpasswd (se existir)
É claro que vc vai transportar isso para o novo servidor… nem sei pq disse isso :p

Outra coisa super importante, é obter o SID do domínio que está rodando na máquina antiga, sem ele, ninguem irá conseguir logar no domínio sem que você retire todas as estações do domínio antigo e os re-insira, definitivamente isso não é uma boa opção.
net getlocalsid > localsid
net getdomainsid > domainsid
Dica: Sempre que for instalar um novo PDC, gere esses SID e grave em um arquivo e faça backup, no caso de uma falha, o restore da máquina é rápido.


Fase 2: Instalação do Samba

Para poder autenticar máquinas com o Windows 7, a versão do samba necessária é a 3.3 ou superior. Como no Debian, a versão dos repositórios é a 3.2, iremos instalar a versão do projeto Debian Backports.
Edite o seu /etc/apt/sources.list e insira a seguinte linha:
deb http://backports.debian.org/debian-backports lenny-backports main
depois
aptitude update
 aptitude -t lenny-backports install samba

Feito, samba instalado!


Fase 3: Configuração do Samba

A minha configuração antiga, quando aplicada ao samba 3.4, apresentava alguns erros quando era executado a verificação da configuração utilizando o testparam. Dando uma pesquisada no site do samba, encontrei uma configuração básica, que fucnionou corretamente para mim. Veja:
[global]
 workgroup = DOMÍNIO #aqui você especifica o nome do domínio
 netbios name = MÁQUINA # esse é o nome da máquina
 passdb backend = smbpasswd #formato de armazenamento da senha, pode-se especificar como tdbsam
 printcap name = cups
 add user script = /usr/sbin/useradd -m %u
 delete user script = /usr/sbin/userdel -r %u
 add group script = /usr/sbin/groupadd %g
 delete group script = /usr/sbin/groupdel %g
 add user to group script = /usr/sbin/groupmod -A %u %g
 delete user from group script = /usr/sbin/groupmod -R %u %g
 add machine script = /usr/sbin/addmachine %u #ATENÇÃO NESSA PARTE, abaixo irei explicar do que se trata.
 unix password sync = yes
 passwd program = /usr/bin/passwd %u
 passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
logon script = todos.bat
 unix charset = iso-8859-1 # Setei essa opção, pois o meu samba é muito antigo (veio de várias distro antes)
    #e os caracteres estao todos em iso
 display charset = cp850 # mesma coisa, para manter a compatibilidade de acentos.
 log file = /var/log/samba/log.%m
logon path =
 logon drive =
 logon home =
 domain logons = Yes
 os level = 35
 preferred master = Yes
 domain master = Yes
 idmap uid = 15000-20000
 idmap gid = 15000-20000
 printing = cups
 client NTLMv2 auth = Yes
[netlogon]
 comment = Network Logon Service
 path = /home/netlogon
 guest ok = yes
 writable = no
 write list = @domadmin
 browseable = no

Onde pedi atenção, a explicação para aquele script addmachine é a seguinte: O Windows 7, espera nome de máquinas em maiúsculo, então foi necessário essa “gambiarra” para que eu não me deparasse com erros de “Falha na relação de confiança com o domínio” e outros erros estranhos, como esse no log: netlogon_creds_server_check failed

Crie o seguinte arquivo /usr/sbin/addmachine
#!/bin/bash
ID_GRUPO_MAQUINAS=1086
 NOME_MAIUSCULO=$(echo $1|tr [a-z] [A-Z])
 /usr/sbin/useradd -s /bin/false -g $ID_GRUPO_MAQUINAS -d /var/lib/nobody $NOME_MAIUSCULO

Feito isso, dê permissão de execução:
chmod +x /usr/sbin/addmachine

Observação: na váriavel ID_GRUPO_MAQUINAS, deve ser setado o id do grupo que irá armazenar todas as máquinas cadastradas, iremos criar esse grupo mais para frente. 1086, é o meu número id do grupo referente. Você precisa setar o com o SEU ID, veremos isso mais a frente.

Agora é hora de setar o SID do domínio. Se o seu samba é uma instalação nova, ignore esses passos.
/etc/init.d/samba restart
net setlocalsid$(cut -d: -f2 /ARQUIVO/COM/O/LOCALSID) #ou você pode copiar e colar, assim é mais simples e rápido :p)
 net setdomainsid$(cut -d: -f2 /ARQUIVO/COM/O/DOMAINSID)
/etc/init.d/samba restart

Feito! seu samba está com o id do domínio antigo. Máquinas XP já podem fazer o logon sem maiores problemas.


Fase 4: Criação e Mapeamento de grupos
Para o Windows 7 funcionar bem junto com o samba, é necessário um mapeamento dos grupos unix com o samba. Ele espera o um grupo com um RID específico, alguns grupos são mandatórios não precisa ninguém fazendo parte deles.

Segue uma lista dos grupos, em destaque os mandatórios

Well-Known Entity RID Type Essential
Domain Administrator 500 User No
Domain Guest 501 User No
Domain KRBTGT 502 User No
Domain Admins 512 Group Yes
Domain Users 513 Group Yes
Domain Guests 514 Group Yes
Domain Computers 515 Group No
Domain Controllers 516 Group No
Domain Certificate Admins 517 Group No
Domain Schema Admins 518 Group No
Domain Enterprise Admins 519 Group No
Domain Policy Admins 520 Group No
Builtin Admins 544 Alias No
Builtin users 545 Alias No
Builtin Guests 546 Alias No
Builtin Power Users 547 Alias No
Builtin Account Operators 548 Alias No
Builtin System Operators 549 Alias No
Builtin Print Operators 550 Alias No
Builtin Backup Operators 551 Alias No
Builtin Replicator 552 Alias No
Builtin RAS Servers 553 Alias No

O grupo “Domain Computers” não está marcado como mandatório, porém iremos cria-lo para armazenar todos os computadores que serão cadastrados no domínio.

Criando os grupos necessários:

Vamos adotar o prefixo “dom” nos grupos relacionados a administração do domínio.
groupadd domadmins
groupadd domusers
groupadd domguests
groupadd domcomputers

Com os grupos criados, vamos associa-los ao samba:
net groupmap add ntgroup="Domain Admins" unixgroup=domadmins rid=512 type=d
net groupmap add ntgroup="Domain Users" unixgroup=domusers rid=513 type=d
net groupmap add ntgroup="Domain Guests" unixgroup=domusers rid=514 type=d
net groupmap add ntgroup="Domain Computeres" unixgroup=domusers rid=515 type=d

O type=d, significa que o grupo está sendo associado a um domínio, existe também a opção de adicionar a um grupo local.

Você pode e deve fazer isso para todos os seus grupos, quando a aba de permissão foi selecionada no windows, os nomes de grupos que forem mapeados por aqui aparecerão de forma correta lá.

Para que todas as configurações fiquem corretas, e os usuário quando criados sejam adicionados automaticamente aos respectivos grupos, faça o seguinte: edite o arquivo adduser.conf

No final do arquivo, você encontrará as opções EXTRA_GROUPS E ADD_EXTRA_GROUPS, descomente e insira os seguinte:
EXTRA_GROUPS="domusers"
ADD_EXTRA_GROUPS=1

Isso fará com que todo usuário adicionado, seja adicionado no grupo domusers.
Outra coisa necessária a se fazer, é editar o script addmachine, que está em /usr/sbin. No script, existe uma váriavel chamada ID_GRUPO_MAQUINAS, essa váriavel é mandatória! Para obter o id do grupo domcomputers, use o comando:
getent group domcomputers|cut -d: -f3

Insira o valor retornado na váriavel.

Feito!, seu samba está pronto para receber máquinas Windows 7!


Fase 5: Adicionando usuários no sistema


Primeiramente, o usuário root, tem permissão para criar o usuário de computador em seu servidor, porém ele não está adicionado em seu sistema (info para quem está começando do zero) para isso é necessário adiciona-lo ao samba. Rode o seguinte comando:
 smbpasswd -a root

Digite sua senha

Para alterar a senha do root ou de qualquer outro usuário, use o comando:
 smbpasswd root

Fase 6: Adicionando máquinas Windows 7 no domínio

É necessário primeiramente, adicionar algumas chaves no registro. Clique aqui e baixe a alteração do registro.

Se quiser fazer as alterações na mão:
 HKey Local Machine\System\CurrentControlSet\Services\LanmanWorkstation\Parameters

Adicionar os valores:
DWORD  DomainCompatibilityMode = 1
DWORD  DNSNameResolutionRequired = 0
REINICIE O COMPUTADOR! FAZER LOGOFF NÃO RESOLVE! É NECESSÁRIO O REINICIO TOTAL DO SISTEMA!!!

Com as chaves do registro definidas, é necessário nas configurações de IP da máquina que o servidor de WINS seja setado para o SEU SERVIDOR SAMBA

Configure o seu servidor de DHCP para fornecer esse endereço para os seus clientes.

1º como disse, verifique as configurações do wins



2º Vá até as propriedades do sistema (atalho no teclado, tecla do windows + pause) ou clicar com o botão direito no Meu computador e ir em propriedades



3º Clique em “Change Settings” (não sei como isso está escrito em português)



4º Selecione Domain, e insira o nome do domínio definido na opção Workgroup do samba



Será solicitado uma senha, insira a senha de root que você cadastrou e aguarde. Uma tela de erro como essa irá aparecer:



Pressione ok, e reinicie. Quando entrar, selecione a opção de “Switch User” e loge-se com um usuário do domínio.

Não irei colocar imagens aqui de como inserir máquinas windows xp, faça uma busca rápida no google que irá encontrar muita coisa a respeito.
Dúvidas, sugestões correções, por favor entre em contato por e-mail

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