Licenciado sob Creative Commons
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.
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.
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.
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 |
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.