Antonio Lobato - Tinecon

Este documento contém as instruções de instalação do Rsys Tinecon, bem como suas dependências como o RubyonRails e suas bibliotecas. A última versão pode ser encontrada em www.tinecon.com.br.

A versão atual do Rsys é a 0.8 e a deste documento é a 0.1.


Table of Contents
1. Introdução ao Rsys
2. Estrutura
3. Instalação
3.1 RubyonRails
3.2 Rsys

1. Introdução ao Rsys

O Rsys é uma interface web para gerenciamento e monitoração de serviços de rede, licenciado sob GPL (open source). Inicialmente foi desenvolvido como um projeto de estudo do framework RubyonRails e Cascade Style Sheets (CSS). Teve o Squidnow integrado às suas funções e atualmente (Maio/2008) tem outros módulos em desenvolvimento, como gerenciamento das ACLs do squid e gerenciamento e monitoração do firewall Iptables/Linux.

Desde a primeira linha de código, seu desenvolvimento é feito tendo em mente o conceito de reutilização de código, nele mesmo ou em outros projetos que os considerem útil, o que é uma prática condizente com a metodologia open source.

Recomenda-se acessar o sistema Rsys através dos browsers Mozilla Firefox (e outros browsers baseados no engine Gecko) e Google Chrome. Seu suporte para o Interet Explorer 6 e 7 é restrito, podendo apresentar erros em algumas áreas do sistema.


2. Estrutura

O Rsys é escrito basicamente na linguagem Ruby sobre o framework Rails (Rubyonrails), mas possue boa parte do código feito em Perl e Javascript. O Perl é usado para as tarefas que requerem mais processamento, já que seu desempenho nesse caso é superior ao do RoR. E o Javascript é usado largamente na interface web, em integração com o Html e CSS. A biblioteca http://script.aculo.us/ também é utilizada em determinadas páginas da interface.

Em relação ao armazenamento de dados, atualmente usa-se Sqlite (http://www.sqlite.org/) para fins de autenticação e arquivos texto para outras informações. Como um exemplo deste último, o relatório de acesso apresentado pelo Rsys é obtido diretamente e on fly a partir do próprio arquivo access.log gerado pelo proxy-cache Squid, com pequenas modificações como a criação de alguns índices (dentro do próprio arquivo) e a reordenação de seu conteúdo (ordenado por usuário).

Está em desenvolvimento um novo sistema de processamento e apresentação dos registros de acesso, baseado em banco de dados SQL e orientado a sessão, ou seja, em vez de guardar as informações com foco em objetos acessados (html, gif, swf, etc...), estas são armazenadas conforme uma sessão de navegação web. A motivação para isso é a grande otimização que pode ser atingida, pois em um acesso de 10 minutos a um determinado site, a quantidade de objetos baixados pode estar em torno de dezenas ou mesmo centenas. Assim, em vez de se ter essa quantidade de registros numa tabela para posterior consulta, teria-se apenas 1 registro, com as informações detalhadas dos objetos podendo estar em outras tabelas, acessadas apenas se necessário, caso deseje-se detalhar aquela sessão.


3. Instalação


3.1 RubyonRails

Há várias formas de se instalar o framework RubyonRails em um sistema Unix. As instruções abaixo se referem (e foram testadas) à instalação no Debian Etch, com o seguinte procedimento:

  • O sistema de pacotes do Debian para a instalação inicial do Ruby.

  • Compilação do Rubygems a partir do pacote rubygems-1.1.1.tgz.

  • Rubygems para se instalar o restante: Rails e outras dependências.

As referências usadas para este processo podem ser encontradas em http://wiki.rubyonrails.org/rails/pages/RailsOnUbuntu, na sessão The recommended way e em http://wiki.rubyonrails.org/rails/pages/RailsOnUbuntuDebianTestingAndUnstable, na sessão How do I install FastCGI?.

Todos os procedimentos abaixo devem ser executados com privilégios de usuário root (logado como tal ou através do comando sudo).

Ruby:

	aptitude  install ruby rdoc irb libyaml-ruby libzlib-ruby ri libopenssl-ruby ruby1.8-dev build-essential

Rubygems:

	wget http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
	tar xzf rubygems-1.1.1.tgz 
	cd rubygems-1.1.1
	ruby setup.rb
	ln -s /usr/bin/gem1.8 /usr/bin/gem
	gem update --system
	aptitude  install libsqlite3-0 libsqlite3-dev
	gem install sqlite3-ruby

Rails:

	gem install rails -v 1.2.5 --include-dependencies
	

Apache 2 e FastCGI (mod_fcgi):
	aptitude install apache2 libapache2-mod-fcgid
	a2enmod fcgid
	a2enmod rewrite
	aptitude install libfcgi-ruby1.8
	/etc/init.d/apache2 reload

	wget http://fastcgi.com/dist/fcgi-2.4.0.tar.gz
	tar zxvf fcgi-2.4.0.tar.gz
	cd fcgi-2.4.0
	./configure
	make install
	


3.2 Rsys

Todos os procedimentos abaixo devem ser executados com privilégios de usuário root (logado como tal ou através do comando sudo).

Instalando o Rsys

	cd
        wget http://www.tinecon.com.br/programas/rsys-0.8.tgz
	mkdir /var/rails
	tar xzf rsys-0.8.tgz -C /var/rails
	chown -R www-data.www-data /var/rails/rsys
	chmod -R o-rwx /var/rails/rsys

Para agendar a indexação do log do squid, abra o arquivo /etc/logrotate.d/squid e adicione a linha test -x /usr/local/sbin/mkidx_user.pl && /usr/local/sbin/mkidx_user.pl entre prerotate e endscript. Esse trecho do arquivo deve ficar semelhante a:

	prerotate
                test -x /usr/local/sbin/mkidx_user.pl && /usr/local/sbin/mkidx_user.pl
        endscript

Agora copie o indexador para o path de executáveis:

	cp /var/rails/rsys/app/helpers/mkidx_user.pl /usr/local/sbin/

Copiando dados de amostra:

	wget http://www.tinecon.com.br/programas/sqlog.tgz
	mkdir /var/lib/rsys
	tar xzf sqlog.tgz -C /var/lib/rsys
	chown -R www-data.www-data /var/lib/rsys
	chmod -R o-rwx /var/lib/rsys

Para integrar o RoR ao Apache, usaremos o FastCGI que foi instalado acima. Faça um backup do arquivo /etc/apache2/sites-available/default e substitua seu conteúdo por:

	<Virtualhost *:80>
	  ServerName etch
	  DocumentRoot /var/rails/rsys/public/
	  <Directory /var/rails/rsys/public>
	    Options ExecCGI FollowSymLinks
	    AllowOverride all
	    Order allow,deny
	    Allow from all
	  </Directory>
	</Virtualhost>

E finalmente:

	adduser www-data proxy
	/etc/init.d/apache2 restart
  

Para acessar o sistema abra no browser a url http://ip.do.serv.idor/login/login. Há um usuário preconfigurado, com nome admin e senha admin. Recomenda-se acessar o sistema através dos browsers Mozilla Firefox (e outros browsers baseados no engine Gecko) e Google Chrome. Seu suporte para o Interet Explorer 6 e 7 é restrito, podendo apresentar erros em algumas áreas do sistema.


19/Set/2008
Tom Lobato
lobato@tinecon.com.br