Laboratório de Redes de computadores

 

Tratamento dos dados gerados pelo Servidor de Web a partir do arquivo de logs. Configuração do Servidor Web para armazenar em um arquivo texto os logs de acesso, os dados devem estar formatados utilizando um separador.

·         Pesquisar sobre o sistema de logs no servidor web no apache

·         Instalar o Servidor Web;

·         Criar uma virtual hosts e hospedar pagina em html;

·         Criar e configurar os logs de acesso das páginas hospedadas na virtual host do Servidor Web.

·         Formatar os dados que serão armazenados no arquivo texto

 

 

 

Instalação e configuração do Servidor Web

 

Servidor web e apache

 

            Servidor Web é um programa de computador responsável por aceitar pedidos HTTP de clientes, geralmente os navegadores, e servi-los com respostas HTTP, incluindo opcionalmente dados, que geralmente são páginas web, tais como documentos HTML com objetos embutidos (imagens, etc.).

Os servidores web mais conhecidos e usados atualmente são: o Apache, também conhecido como Apache HTTP Server – servidor virtual do Linux, e o IIS (Internet Information Service) – Servidor da Microsoft.

O servidor Apache ou Servidor HTTP Apache é um dos mais bem-sucedidos servidores web livre que existe. O Apache é responsável por disponibilizar páginas e todos os recursos que podem ser acessados pelo internauta. Envio de e-mails, mensagens, compras online e diversas outras funções podem ser executadas graças a servidores como o Apache.

 

Sistema de log no Apache

 

Log de dados é uma expressão utilizada para descrever o processo de registro de eventos relevantes num sistema computacional. Esse registro pode ser utilizado para restabelecer o estado original de um sistema ou para que um administrador conheça o seu comportamento no passado. Um arquivo de log pode ser utilizado para encontrar alguns problemas de forma rápida ou até mesmo ter um feedback sobre as atividades e desempenho do seu servidor web. No Apache Web Server, o arquivo de log de acesso é instalado no diretório /logs durante a instalação do Apache e no Linux tem o nome access_log.

 

 

 

Instalar o Servidor Web

            Para instalação de um servidor web iremos utilizar o CentOS, para isso utilizaremos o terminal.

 

 

Abra o terminal e como root (utilize o comando sudo su para entrar como root), digite o comando:

 

# yum install -y httpd

 

Esse comando irá instalar o pacote (o comando -y ira confirmar a instalação automaticamente)

 

 

 

OBS: Algumas versões do Linux, o comando para instalação é:

 

# service install -y  httpd

ou

            # apt-get install -y httpd

 

Após instalado, vamos inicia-lo:

 

            # service httpd start

 

Agora vamos verificar se o apache está funcionando. Basta acessar o navegador e digitar localhost.

 

Criar um virtual host e hospedar página em HTML

 

Virtual Hosts (sites virtuais) é um recurso que permite servir mais de um site no mesmo servidor. Podem ser usadas diretivas específicas para o controle do site virtual, como nome do administrador, erros de acesso a página, controle de acesso e outros dados úteis para personalizar e gerenciar o site.

 

Primeiro vamos configurar o arquivo de host, ele se encontra na pasta /etc/hosts. No terminal digite o comando echo para adicionar o ip e o site.

No meu caso ficará

            # echo ‘127.0.0.1 gti.com.br www.gti.com.br’ >> /etc/hosts

 

Para criar, configurar ou adicionar um domínio virtual (virtual host) ao seu servidor Apache é necessário editar o arquivo httpd.conf. Este arquivo é responsável pela configuração do servidor web Apache. Todas as configurações de modificações de acesso, restrições, permissões, entre outras, que forem alteradas no servidor Apache, devem ser feitas nesse arquivo.

 

Para redirecionarmos o caminho no qual o index deve ler, precisa apenas alterar a linha do arquivo "httpd.conf" que possui o contexto "DocumentRoot". Assim dando um novo caminho para o servidor reconhecer o arquivo "index.html"

 

           

Agora vamos editar o arquivo httpd.conf

Utilizaremos o Gedit para edição do arquivo

 

           

            # yum install -y gedit    (instala o gedit)

            # gedit /etc/httpd/conf/httpd.conf  (Abre e edita o arquivo)



Por padrão a porta de acesso ao servidor vem 80, mas você pode alterar para outra de sua preferência. Procure a linha de comando NameVirtual Host *:80.

 

 

Agora vamos criar um arquivo html. O nome do arquivo onde o site vai ficar hospedado deve ter o nome de index.html, para que este possa ser reconhecido pelo servidor.

 

 

Criando o arquivo:

            # echo ‘Teste Gti’ >> /var/www/html/index.html

 

Agora vamos reiniciar o apache para que ele pegue as novas configurações

 

            # service httpd restart

 

Agora abra o navegador para testar:

http://gti.com.br

 

Criar e configurar os logs de acesso

 

Abrimos o arquivo de configuração httpd.conf novamente:

           

            # gedit /etc/httpd/httpd.conf

           

 

Dentro do Campo ifModule, faça as alterações na linha LogFormat (utilize ctrl+f para localizar), os códigos que não devem ser mostrados e acrescente os que serão visualizados, alguns desses códigos são:

 

Então é só editá-la, escolhendo as configurações da sua preferência.

 

Exemplo:


%h = É o endereço do IP

%u = É o nome do usuário.

%t = É a data e hora do acesso.

 

O acesso log é localizado na pasta

 

/var/log/httpd

 

Formatação dos dados que serão armazenados no arquivo texto

Os dados foram filtrados diretamente do arquivo de log pelo programa Java que foi desenvolvido no projeto integrador, o programa lê o arquivo e trata as informações conforme a necessidade.

Para o programa ler o arquivo é necessário usar a importação da classe BufferedReader.

import java.io.BufferedReader;

Determinar um separador de informações:

Figura 1

 

O arquivo de log possui as informações separadas por um “espaço”, sendo assim o separador para determinar a posição da busca da informação no arquivo será um espaço vazio “ ”.

 

Criar um ArrayList para armazenar as informações lidas do arquivo, é necessário a importação.

import java.util.ArrayList;

 

O construtor da classe Log ira determinar a sequência que as informações serão gravadas no ArrayList. 

Figura 2

 

Por exemplo, observando os dados da tabela 1 e figura 3:

A variável “ip” é a primeira posição do ArrayList que recebe o primeiro array lido pelo BufferedReader que é o array[0]

A variável “data” data será a segunda posição do ArrayList que recebera o segundo array lido pelo BufferedReader que é o array[3]. substring(13, 21)E assim subsequente como na tabela abaixo.

Tabela 1

 

Note que os números entre colchetes array[8] determina a posição lida no arquivo, definida pelo separador “ “ e não do ArrayList.

Sendo que o a quantidade de arrays que determinará qual posição do Arraylist será usada.

 

 

 

Figura3

 

A função “.readLine()” faz com que toda linha do arquivo seja lida.

A função “.split(SEPARADOR)” separa as informações de acordo com o separador “ ”.

O  BufferedReader usa um sistema de arrays, cada array recebe um valor “[0]”, este valor que determina a posição do separador “ ”, os caracteres na linha serão lidos do arquivo até  que o separador seja atingindo, assim que o separador é atingindo os caracteres serão gravados na  primeira posição do ArrayList, o próximo array independente da posição de leitura será gravado na segunda posição do ArrayList e assim por diante.

222.64.146.118 - - [19/Jun/2005:06:44:17 +0200] "GET /wximages/wxwidgets02-small.png HTTP/1.1" 200 12468

Exemplo: Como referência a figura 3 e a linha de log acima. O primeiro separador é a “posição 0array[0], e será gravado na primeira posição do ArrayList os caracteres: 222.64.146.118.

 A leitura continuará até atingir segundo separador “posição 1”, não tendo array determinado será ignorado e a leitura passa para o próximo separador “posição 2”, que também não possui um array determinado.

No separador subsequente “posição 3array[3]  que possui a sequência de caracteres:  [19/Jun/2005:06:44:17, porém este array possui a função “.substring(1, 12)” que fará com que os caracteres gravados na segunda posição do ArrayList seja a partir do caractere 1 até o caractere 12, sendo assim a informação na segunda posição do ArrayList será: 19/Jun/2005.

 A terceira posição do ArrayList será novamente a “posição 3” array[3] com a função “.substring(13, 21)”  os caracteres serão buscados a partir do caractere 13 até o caractere 21 a informação gravada na terceira posição do ArrayList será: 06:44:17.

O próximo separador será “posição 4array[4].replace("]", "") este array possui a função “.replace("]", "")” e como o próprio nome diz substitui o caráter “[“ por valor nenhum “” e dados gravados na quarta posição do ArrayList será: +0200.

Como não possui nenhum array determinado até a posição 8, a leitura das posições 5, 6 e 7 serão ignoradas até atingir a “posição 8” array[8], os dados gravados na quinta posição do ArrayList será: 200.

 

Desta forma a leitura é feita dados até o ultimo array determinado ou o final da linha for atingido.

Como toda a função esta dentro de um laço de repetição que é executado enquanto houver uma linha valida, desta forma é repedida toda a ação demostrada acima até que todas as linhas sejam lidas, e resultado será como mostrado na Figura 4.

 

 Figura 4