UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO OCTOPUS: FERRAMENTA DE CÓDIGO ABERTO PARA GERAÇÃO DE RELATÓRIOS PARA O SERVIDOR PROXY SQUID por Matheus Weber da Conceição Itajaí (SC), novembro de 2012 UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO OCTOPUS: FERRAMENTA DE CÓDIGO ABERTO PARA GERAÇÃO DE RELATÓRIOS PARA O SERVIDOR PROXY SQUID Área de Ciência da Computação por Matheus Weber da Conceição Relatório apresentado à Banca Examinadora do Trabalho Técnico-científico de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: Fabrício Bortoluzzi, M.Sc. Itajaí (SC), novembro de 2012 Aos meus pais. AGRADECIMENTOS Agradeço primeiramente aos meus pais pelo grande apoio e suporte nessa etapa da minha vida. Agradeço também aos amigos que foram feitos durante o curso possibilitando uma grande troca de conhecimento e apoio necessário, em especial aos amigos Alexandre Corsi, Elcio Arthur Cardoso, Paulo Eduardo Krieger e Marcus Simas. Agradeço também a todos os docentes que participaram da minha evolução de conhecimento, em especial ao Fabricio Bortoluzzi pelo apoio e orientação necessária no desenvolvimento deste trabalho. Obrigado. “No pain, no gain.” RESUMO CONCEIÇÃO, Matheus W. Octopus: ferramenta de código aberto para geração de relatórios para o servidor proxy Squid. Itajaí, 2012. 84. Trabalho Técnico-científico de Conclusão de Curso (Graduação em Ciência da Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2012. A partir do momento em que o acesso à Internet em uma organização se torna um recurso crítico, de alta dependência, faz-se necessário o uso de ferramentas de monitoramento por parte dos gestores para auxiliá-los nas tomadas de decisões no que tange a definição de políticas de uso da Internet a fim de evitar abusos. A otimização do uso deste recurso de comunicação e a identificação do perfil de uso do protocolo de navegação web, gera uma boa fundamentação para as decisões futuras. Para isso, é importante que a ferramenta de monitoramento seja de fácil e ágil utilização, sendo flexível na busca e na visualização das informações desejadas. Este trabalho projetou e implementou o Octopus: ferramenta de código aberto para a geração de relatórios para o servidor proxy Squid. Com este fim, foi realizado um trabalho de pesquisa para fundamentar a teoria necessária e definir as tecnologias a serem utilizadas. Em seguida, foi elaborado o projeto de engenharia de software da ferramenta, levantando requisitos necessários, diagramas de modelo de classes, diagramas de casos de uso e a estrutura do banco de dados. Em seguida, realizou-se a etapa de implementação da ferramenta com base no projeto realizado. No fim do processo de desenvolvimento, realizou-se uma validação da ferramenta com alguns arquivos de registro de acessos do Squid coletados anteriormente, atestando-se então a conformidade da ferramenta com o projeto. Palavras-chave: Gerência de Redes. Proxy. Squid. ABSTRACT When the Internet access of a company became critical, it is necessary that the company leaders consider the use of monitoring tools to help them to take the best decision in terms of Internet use policy to avoid abuse from users. Optimizing the use of that valuable communication resource and identifying the web use profile, should result in a wide background knowledge for future decisions. Then, is important to use a monitoring tool that is easy, fast and flexible in data searching and in the visualization of the information. This work have designed and developed the Octopus, an open source reports generator tool for Squid proxy server. With this aim, a literature search was first done to get all the necessary theory background, which was followed by the definition of the technology that was used in the tool specification step. Then, the software engineering project of the tool was elaborated and all the requirements, class diagrams, use case diagrams and database models were obtained. In the next stage of the work, the tool was implemented in the bases of the engineering project, followed by the validation stage, which allowed the validation of the tool with some previously collected Squid access data files, which attested the conformity of the tool with the project specifications. Keywords: Network Management. Proxy. Squid. LISTA DE FIGURAS Figura 1. Hierarquia das camadas da Gerência de Rede...........................................................18 Figura 2. Funcionamento de um servidor proxy.......................................................................19 Figura 3. Funcionamento do servidor proxy Squid em uma rede.............................................21 Figura 4. Metáfora visual para visualização dos dados de acessos do Squid...........................26 Figura 5. Captura de tela da ferramenta SARG na página inicial de relatórios........................30 Figura 6. Captura de tela da ferramenta SARG no relatório de um usuário.............................31 Figura 7. Captura de tela da ferramenta Calamaris no início do relatório................................33 Figura 8. Captura de tela da ferramenta Free-SA na tela de escolha dos períodos de tempo disponíveis ..............................................................................................................................35 Figura 9. Captura de tela da ferramenta Free-SA com os tipos de relatórios gerados..............35 Figura 10. Captura de tela da ferramenta Free-SA na página de relatório de domínios acessados de um usuário...........................................................................................................36 Figura 11. Captura de tela da ferramenta Redline Internet Access Monitor.............................38 Figura 12. Captura de tela da ferramenta Redline Internet Access Monitor com o relatório de uso diário exportado em HTML................................................................................................39 Figura 13. Captura de tela da ferramenta Firewall Analyzer na página inicial do relatório.....40 Figura 14. Captura de tela da ferramenta Firewall Analyzer na página de relatório de um usuário ..............................................................................................................................41 Figura 15. Captura de tela da ferramenta Sawmill na página inicial........................................43 Figura 16. Captura de tela da ferramenta Sawmill na tela de relatório de acessos...................44 Figura 17. Diagrama do modelo de casos de uso......................................................................49 Figura 18. Diagrama do modelo de classes do módulo coletor................................................51 Figura 19. Diagrama de modelo de classes do módulo interface de visualização....................52 Figura 20. Diagrama modelo entidade relacionamento (modelo ER).......................................53 Figura 21. Protótipo de tela do relatório bidimensional............................................................54 Figura 22. Protótipo de tela do relatório tridimensional...........................................................55 Figura 23. Classe “SquidAccessLogRequest” do módulo coletor............................................56 Figura 24. Classe "SquidLogFile" do módulo coletor (método "parse" recolhido)..................56 Figura 25. Captura de tela do formulário de autenticação do sistema......................................59 Figura 26. Captura de tela do relatório bidimensional com destaque para os parâmetros........60 Figura 27. Captura de tela do relatório bidimensional com destaque ao relatório....................61 Figura 28. Captura de tela do relatório tridimensional com destaque para os parâmetros.......62 Figura 29. Captura de tela do relatório tridimensional com destaque para o relatório tridimensional............................................................................................................................63 Figura 30. Captura de tela da listagem de usuários...................................................................64 Figura 31. Captura da tela inicial da ferramenta juntamente com a listagem de consultas salvas 65 Figura 32. Captura de tela no número total de resultados no banco de dados..........................67 Figura 33. Teste 2 - Parâmetros do relatório bidimensional.....................................................68 Figura 34. Teste 2 - Relatório bidimensional de acessos de um usuário específico.................69 Figura 35. Teste 3 - Parâmetros do relatório tridimensional.....................................................70 Figura 36. Teste 3 - Relatório dos maiores arquivos baixados.................................................71 LISTA DE QUADROS Quadro 1. Exemplo de arquivo com um registro de acesso do Squid......................................22 Quadro 2. Comparativo de ferramentas similares.....................................................................29 Quadro 3. Resultado da execução do módulo coletor...............................................................66 LISTA DE ABREVIATURAS E SIGLAS ACL DDL DML DRL ER HTML HTTP IP LDAP OLAP OSI PHP SARG SGBD SQL TCP TTC UML UNIVALI URI URL W3C Access Control List Data Definition Language Data Manipulation Language Data Representation Language Entity-relationship HyperText Markup Language HyperText Transfer Protocol Internet Protocol Lightweight Directory Access Protocol Online Analytical Processing Open Systems Interconnection PHP: Hypertext Preprocessor Squid Analysis Report Generator Sistema de Gerenciamento de Banco de Dados Structured Query Language Transmission Control Protocol Trabalho Técnico-científico de Conclusão de Curso Unified Modeling Language Universidade do Vale do Itajaí Uniform Resource Identifier Uniform Resource Locator World Wide Web Consortium SUMÁRIO 1 INTRODUÇÃO.............................................................................xii 1.1 PROBLEMATIZAÇÃO..........................................................................XIV 1.1.1 Formulação do Problema......................................................................xiv 1.1.2 Solução Proposta....................................................................................xiv 1.2 OBJETIVOS.............................................................................................XIV 1.2.1 Objetivo Geral........................................................................................xiv 1.2.2 Objetivos Específicos...............................................................................xv 1.3 METODOLOGIA......................................................................................XV 1.4 ESTRUTURA DO TRABALHO............................................................XVI 2 FUNDAMENTAÇÃO TEÓRICA...............................................17 2.1 GERÊNCIA DE REDES.............................................................................17 2.2 PROXY.........................................................................................................19 2.3 SQUID..........................................................................................................20 2.3.1 Registro das informações de acessos......................................................21 2.3.2 Fonte do registro de informações de acesso..........................................24 2.4 OLAP (ONLINE ANALYTICAL PROCESSING)..................................25 2.5 POSTGRESQL............................................................................................27 2.6 FERRAMENTAS SIMILARES.................................................................28 2.6.1 SARG........................................................................................................30 2.6.2 Calamaris.................................................................................................32 2.6.3 Free-SA.....................................................................................................34 2.6.4 Redline Internet Access Monitor...........................................................37 2.6.5 Firewall Analyzer....................................................................................40 2.6.6 Sawmill.....................................................................................................42 3 DESENVOLVIMENTO...............................................................46 3.1 MODELAGEM DO SOFTWARE.............................................................46 3.1.1 Levantamento de requisitos....................................................................47 3.1.2 Modelo de casos de uso............................................................................48 3.1.3 Modelo de classes.....................................................................................50 3.1.4 Diagrama entidade relacionamento (modelo ER)................................52 3.1.5 Protótipo de tela.......................................................................................53 3.2 IMPLEMENTAÇÃO DA FERRAMENTA..............................................55 3.2.1 Implementação do módulo coletor.........................................................56 3.2.2 Implementação do módulo de interface de visualização......................57 3.3 TESTES FINAIS DA FERRAMENTA.....................................................65 3.3.1 Teste 1: Número requisições coletadas..................................................65 3.3.2 Teste 2: Verificar os sites acessados por um endereço IP (usuário) durante um período de tempo..........................................................................67 3.3.3 Teste 3: Verificar os maiores arquivos baixados..................................69 4 CONCLUSÕES.............................................................................72 4.1 TRABALHOS FUTUROS..........................................................................73 1 INTRODUÇÃO Segundo Ricci e Mendonça (2006), cada vez mais o acesso à Internet em uma organização se torna um recurso crítico, mais acessado e evidente. Com isso, adquire-se inúmeros benefícios, como por exemplo a informação em tempo real, comunicação mundial a baixo custo, possibilidade de contatos comerciais com o mundo todo. Porém, juntamente aos benefícios, traz-se também os riscos às organizações. Riscos estes que podem variar da segurança da informação, à produtividade dos funcionários. Em uma das frentes de risco mencionadas anteriormente, o autor sugere a aplicação de uma ferramenta de auditoria de tráfego web, sendo no caso, um servidor proxy web, mais especificamente, o Squid. Podendo com isto, aplicar políticas de rede, como o bloqueio de algumas páginas, além é claro de realizar o monitoramento dos acessos. Dessa maneira podese diminuir os abusos e otimizar este recurso de comunicação. “O conceito de Proxy refere-se a um software que atua como gateway de aplicação entre o cliente e o serviço a ser acessado, interpretando as requisições e repassando-as ao servidor de destino.” (RICCI; MENDONÇA, 2006, p. 1). Wessels (2004) comenta que o Squid é um servidor proxy do tipo web de código aberto bastante popular, que também oferece funcionalidade de cache de conteúdo. Wessels (2004) ressalta alguns usos do Squid: • Economizar banda do provedor de Internet enquanto se navega na web; • Diminuir o tempo que uma página leva para carregar; • Coletar estatísticas sobre o tráfego web da rede; • Bloquear o acesso de usuários à sites inapropriados conforme a política de uso da empresa; • Garantir que apenas usuários autorizados possam navegar na Internet. Na tentativa de melhorar a visualização das informações, pode-se utilizar o conceito de OLAP (Online Analytical Processing). Segundo Thomsen (2002), OLAP define-se como sendo um sistema de informação multidimensional. O conceito é associado à noção de múltiplas dimensões hierárquicas que podem ser utilizados por todos para a obtenção de informações, como o próprio autor relata, desde em uma escala atômica (informação mais detalhada), como também em uma escala galáctica (informação menos detalhada). Ou seja, a visão das informações se dá em um mundo multidimensional e com diversos níveis. Com isso, este trabalho tem a pretensão de formalizar o desenvolvimento do Octopus: ferramenta de código aberto para a geração de relatório do servidor proxy Squid. 1.1 PROBLEMATIZAÇÃO A problematização do trabalho será discutida nas próximas duas subseções, que abordarão a formulação do problema e a solução proposta desenvolvida. 1.1.1 FORMULAÇÃO DO PROBLEMA No cenário de softwares de código-fonte aberto, há uma grande carência de ferramentas modernas voltadas à auditoria da navegação web dos usuários através de um servidor proxy Squid. Este problema se evidencia em cenários de redes menores, como uma empresa de pequeno ou médio porte, onde a necessidade de auditoria da navegação web existe, porém o orçamento disponível não é suficiente para justificar a adoção de uma ferramenta proprietário de alto custo. 1.1.2 SOLUÇÃO PROPOSTA Este TTC desenvolveu um software que tem por finalidade permitir ao gestor da rede visualizar detalhes de uso do tráfego web, podendo identificar os perfis de uso da rede por parte dos funcionários e então melhorar a fundamentação de tomadas de decisões estratégicas, como por exemplo, o fornecedor de Internet, a largura de banda contratada para a Internet, as políticas de uso da rede, bem como a detecção de mau uso da Internet por parte dos usuários. Para ser possível o fornecimento destes dados, a ferramenta tem por finalidade gerar relatórios dinâmicos contendo diversas informações de acesso à sites capturadas do servidor proxy Squid. Além disso, os relatórios contarão com diversos filtros para facilitar a visualização da informação. 1.2 OBJETIVOS Os objetivos deste Trabalho Técnico-científico de Conclusão de Curso estão separados em um objetivo geral e seis objetivos específicos. 1.2.1 OBJETIVO GERAL O objetivo geral é fundamentar e desenvolver o Octopus: sistema de análise e auditoria do servidor proxy Squid. 1.2.2 OBJETIVOS ESPECÍFICOS Os objetivos específicos são: • Fundamentar a gerência de redes em geral e o recurso de proxy em específico; • Especificar os objetos de análise e auditoria desejados para o Octopus; • Modelar o Octopus; • Desenvolver o Octopus; • Testar e aferir o funcionamento do Octopus em um conjunto de logs do Squid, comparando-o com o SARG; e • Documentar e divulgar este TTC. 1.3 METODOLOGIA Este trabalho utilizou-se de uma metodologia baseada nos seguintes itens: • Fundamentação: nesta etapa foi realizado um estudo de toda a fundamentação teórica necessária para desenvolver o trabalho, foi utilizada principalmente fontes de livros; • Especificação: nesta etapa foi levantado os requisitos dos objetos de análise e recursos desejados para a ferramenta proposta; • Modelagem: nesta etapa foi realizada toda a modelagem do projeto de engenharia de software da ferramenta proposta utilizando como metodologia de modelagem a UML (Unified Modeling Language); • Implementação: etapa onde o software de fato foi implementado, tendo como base as especificações e modelagem; • Testes: etapa que trabalha junto com a etapa de implementação, pois basicamente responde pelos testes realizados a cada parte da implementação; • Validação final: ao final da implementação do software, foi executada uma validação final do software utilizando-se diversos arquivos de registro de acessos do Squid que foram coletados; e • Texto: etapa onde documentou-se as etapas anteriores no documento do TTC e a finalização geral do texto. 1.4 ESTRUTURA DO TRABALHO Este documento está estruturado em quatro capítulos. O Capítulo 1, Introdução, apresentou uma visão geral do trabalho. No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão bibliográfica e uma análise sobre os aspectos da Gerência de Redes, além disso, será explicado o conceito de servidor Proxy. Neste capítulo também é feita uma descrição do servidor proxy Squid onde é apresentado o seu funcionamento básico e características. Além disso, o conceito de OLAP também foi explorado. Em seguida, são apresentadas as ferramentas similares à ferramenta desenvolvida. O Capítulo 3 apresenta o projeto da ferramenta desenvolvida, incluindo sua especificação e a sua modelagem UML. O capítulo também discute a implementação dos módulos da ferramenta além de no final apresentar os testes finais de conformidade da ferramenta com o que foi proposto. Concluindo, no Capítulo 4, apresentam-se a conclusão do trabalho, onde são abordados principalmente os resultados alcançados, considerações gerais e os trabalhos futuros. 17 2 FUNDAMENTAÇÃO TEÓRICA Neste capítulo, é apresentada uma revisão bibliográfica e uma análise sobre os aspectos da Gerência de Redes, tais como a sua definição e algumas das suas subdivisões. Além disso, será revisado o conceito de servidor Proxy, onde será descrito seu funcionamento. Neste capítulo também é feita uma descrição do servidor proxy Squid onde apresenta-se suas características. Em seguida, explora-se o conceito de OLAP, útil na elaboração dos relatórios da ferramenta. No final do capítulo, apresenta-se uma comparação das ferramentas similares à ferramenta projetada e implementada neste trabalho. 2.1 GERÊNCIA DE REDES Segundo McCabe (2007), A gerência de redes consiste no conjunto de ações para controlar, planejar, alocar, implantar, coordenar e monitorar recursos de uma rede. Uma gerência de rede adequada é fundamental para o sucesso de qualquer rede. Para Kurose e Keith (2006), uma rede é composta por diversos ativos complexos (hardware e software), sejam eles componentes físicos, enlaces, protocolos e outros, que interagem entre si. Todos esses componentes demandam uma organização e uma gerência para seu correto funcionamento. Até porque, como menciona McCabe (2007), hoje e no futuro, redes constituem um recurso em que sua integridade é crítica e deve ser mensurada e verificada. Segundo Lopes, Sauve e Nicolletti (2003), o objetivo da gerência de redes é monitorar e controlar os elementos da rede (sejam eles físicos ou lógicos), garantindo um certo nível de qualidade de serviço. Para o cumprimento desta tarefa, os gerentes de redes são geralmente auxiliados por um sistema de gerência de redes. Um sistema de gerência de rede pode ser definido como uma coleção de ferramentas integradas para a monitoração e controle da rede . Pode-se comparar essa questão com uma usina de geração de energia elétrica (de modo geral), onde há um sistema complexo com diversos componentes integrados entre si e que devem ser monitorados, gerenciados e controlados por um administrador em uma sala de controle, onde há mostradores, medidores e lâmpadas monitorando o estado (temperatura, pressão, vazão) de válvulas, tubulações, vasos, entre outros. Esses dispositivos permitem que o operador monitore os muitos componentes da planta e permite reagir reativamente aos alertas de problemas iminentes. (KUROSE; KEITH, 2006). 18 A sala de monitoramento e controle de uma rede, segundo Kusore e Keith (2006), é comumente chamada de NOC (Network operations center – Centro de operações de rede). É o local onde é tomado conta da parte de operações da gerência de rede, é onde é feito todo o monitoramento e controle de uma rede. McCabe (2007) separa a gerência de redes em múltiplas camadas, como demonstrado na Figura 1 e descrito abaixo: • Camada de gerência de negócio: Gerência dos aspectos de negócio de uma rede – por exemplo, gerência dos orçamentos e recursos, planejamento e políticas; • Camada de gerência de serviço: Gerência dos serviços oferecidos aos usuários – por exemplo, gerência de largura de banda, armazenamento de dados, disponibilidade de aplicações; • Camada de gerência de rede: Gerência de todos os ativos de redes em toda a rede; • Camada de gerência de ativos de rede: Gerência de uma coleção de ativos de rede similares – por exemplo, roteadores de acesso, switchs de distribuição; • Camada de gerência de dispositivo: Gerência individual de um ativo de rede – por exemplo, um único roteador, switch, hub. Figura 1. Hierarquia das camadas da Gerência de Rede Fonte: Adaptado de McCabe (2007). 19 Essa estrutura de camadas apresentadas na Figura 1, consiste na camada mais abstrata no topo da hierarquia (camada de gerência de negócio) e a mais específica (camada de gerência de dispositivo) está no final. As duas primeiras camadas (gerência de negócio e gerência de serviço), serão as principais camadas abordadas para este trabalho, já que a aplicação a ser desenvolvida neste trabalho será um proxy que visa permitir que se audite as políticas de rede determinadas (camada de gerência de negócios) para o serviço de navegação web (camada de gerência de serviço). Além disso, também permite coletar o padrão de comportamento da navegação web assim fundamentando melhor as estratégias futuras de melhoramento da rede. 2.2 PROXY Segundo Ricci e Mendonça (2006), o servidor proxy pode ser definido como um software que atua como gateway de aplicação entre o cliente e o serviço que é acessado, como exemplificado na Figura 2. Figura 2. Funcionamento de um servidor proxy Como apresentado na Figura 2, o servidor proxy intercepta as requisições do cliente enviadas ao servidor, as interpreta e então repassa as requisições ao servidor de destino responsável pelo serviço a ser acessado, realizando o mesmo procedimento com a resposta. Aprofundando-se mais no servidor proxy, Ricci e Mendonça (2006) ressaltam que o servidor proxy é capaz de analisar os pacotes de rede na camada de aplicação, ou camada 7, do modelo OSI (Open Systems Interconnection). Dessa forma é possível oferecer uma grande flexibilidade pois permite que o tráfego de dados de um serviço possa ser analisado e assim permitindo diversos tipos de ações, como por exemplo a aplicação de filtros de bloqueio, ou então o registro dos dados trafegados (para fins estatísticos e/ou de monitoramento, por exemplo). 20 O foco deste TTC é dado a um servidor proxy para o protocolo HTTP (Hypertext Transfer Protocol), ou seja, tráfego web, mais especificamente o servidor proxy Squid. 2.3 SQUID O Squid é um servidor proxy de código-fonte aberto onde seu projeto iniciou-se em 1996 e utilizou-se como base o código-fonte do software Harvest cache project (WESSELS, 2004). Wessels (2004) ressalta ainda que o Squid é um servidor proxy bastante popular e oferece também a funcionalidade de cache de conteúdo. Wessels (2004) destaca alguns dos principais usos do Squid: • Economizar banda do provedor de Internet enquanto se navega na web; • Diminuir o tempo que uma página leva para carregar; • Coletar estatísticas sobre o tráfego web da rede; • Bloquear o acesso dos usuários à páginas inapropriadas conforme a política de uso da empresa; • Garantir que apenas usuários autorizados possam navegar na Internet. O fluxo básico do tráfego da rede passando pelo Squid descrito por Wessels (2004) é exemplificado na Figura 3. 21 Figura 3. Funcionamento do servidor proxy Squid em uma rede O autor descreve o fluxo básico de intermediação do Squid nas transações web da seguinte maneira: o Squid aceita uma conexão do cliente, processa a requisição e encaminha a requisição para o servidor de destino original. Durante esse processo, segundo Wessels (2004), uma requisição pode ter suas informações salvas em um arquivo de registro de acessos, assim como a requisição pode também ser rejeitada ou até mesmo modificada antes do encaminhamento para o servidor de destino original. O servidor proxy Squid é o software foco deste TTC. A ferramenta produto deste TTC extrairá do Squid as requisições de acesso de usuários aos sites e suas informações. 2.3.1 REGISTRO DAS INFORMAÇÕES DE ACESSOS Segundo Wessels (2004), o Squid armazena as informações chaves de acesso dos usuários aos sites em um arquivo chamado “access.log”. Esse arquivo é baseado por linhas, ou seja, cada linha corresponde à uma requisição HTTP de um cliente. O autor explica que o formato padrão do arquivo de registro de acessos do Squid consiste em dez campos. A cada requisição feita por um cliente à um servidor, é armazenada no arquivo “access.log” uma linha contendo dez campos com as informações chave a respeito da conexão. 22 Pode-se ver no Quadro 1 um arquivo de exemplo com quatro requisições. Nas linhas longas, foram inseridas uma ou mais quebras de linhas de acordo com a necessidade, e o início das linhas cortadas foram recuadas. 1066037222.011 34173 166.181.33.71 TCP_MISS/200 559 GET http://coursesites.blackboard.com/service/collab/../1090/ DIRECT/216.200.107.101 application/octet-stream - Quadro 1. Exemplo de arquivo com um registro de acesso do Squid Como observado, tem-se uma linha representando cada requisição. A linha é divida em dez campos que contém os principais atributos da respectiva requisição, conforme descreve Wessels (2004), estes atributos são listados como: • timestamp; • response time; • client address; • result/status codes; • transfer size; • request method; • URI; • client identity; • peering code/peerhost; e • content type. Estes atributos são descritos por Wessels (2004) nas subseções a seguir. 23 Atributo “timestamp” Este atributo expressa a data e hora da finalização da requisição no formato timestamp, ou seja, representa o número de segundos desde o surgimento do Unix (01/01/1970 00:00:00 UTC) juntamente com os milissegundos, representado pelos três últimos números após o ponto, exemplo: “1066037222.011”. Atributo “response time” Atributo que representa o tempo total de duração, em milissegundos, de processamento de uma determinada transação HTTP. O contador é iniciado quando o Squid recebe a requisição HTTP e é congelado quando a requisição é entregada completamente. Atributo “client address” Atributo que representa o endereço IP (Internet Protocol) do cliente. Atributo “result/status codes” Este campo consiste em dois atributos divididos por uma barra (caractere “/”). O primeiro atributo determina o protocolo e o resultado da transação (exemplo: “TCP_HIT”, “TCP_MISS”). O segundo atributo corresponde ao código de resposta da requisição HTTP (exemplo, “200” para sucesso, “404” para arquivo não encontrado). Atributo “transfer size” Atributo que indica o número de bytes transferidos para o cliente. De maneira mais específica, é o valor em bytes que o Squid informa à pilha TCP/IP (Transmission Control Protocol / Internet Protocol) para o envio ao cliente. Atributo “request method” Atributo que representa o método HTTP da requisição (exemplo, “GET”, “POST”). Atributo “URI” Atributo que indica o endereço web da requisição “http://www.squid-cache.org/intro/who.html”, “http://www.univali.br”). HTTP (exemplo, 24 Atributo “client identity” Atributo que indica o nome de usuário quando o recurso de autenticação de usuários está ativado no Squid, caso contrário é utilizado um traço (caractere “-”). Atributo “peering code/peerhost” Campo que apresenta dois atributos divididos por uma barra (caractere “/”). Estes atributos só tem relevância quando o conteúdo a ser buscado não foi encontrado no cache local, então o conteúdo é buscado em outro servidor proxy irmão (caso exista), ou então diretamente do servidor de origem. Caso o conteúdo tenha sido buscado no cache local, o campo em questão apresentará seu conteúdo como “NONE/-”. O primeiro atributo indica como o servidor com o conteúdo foi buscado (exemplo, “DIRECT”, indicando que o conteúdo foi buscado diretamente do servidor de origem). Já o segundo atributo indica o endereço IP do servidor onde foi buscado o conteúdo. Atributo “content type” Atributo que representa o tipo de conteúdo que foi buscado. Esta informação é obtida pelo Squid obtendo-se o valor do atributo “Content-Type” do cabeçalho HTTP da requisição, caso este atributo do cabeçalho não seja encontrado, o Squid utilizará um hífen (caractere “-”) no campo em questão. 2.3.2 FONTE DO REGISTRO DE INFORMAÇÕES DE ACESSO Foi utilizada uma base de registros de acessos do Squid obtidos em uma instalação deste proxy na empresa onde o autor trabalha. Trata-se de uma leitura dos últimos meses de acessos à Internet contendo o uso diverso por aproximadamente cinquenta pessoas, sendo as mesmas de diversos setores da empresa, como diretoria, comercial, suporte, infraestrutura, desenvolvimento, qualidade, recursos humanos e financeiro. Os dados específicos capazes de identificar usuários de forma única foram mascarados com representações equivalentes dos mesmos, assim protegendo a privacidade dos usuários. 25 2.4 OLAP (ONLINE ANALYTICAL PROCESSING) Thomsen (2002) define OLAP como sendo um sistema de informação multidimensional. O autor associa o conceito de OLAP à noção de múltiplas dimensões hierárquicas que podem ser utilizados por todos para a obtenção de informações, desde em uma escala atômica (informação mais detalhada), como também em uma escala galáctica (informação menos detalhada). Ou seja, a visão das informações se dá em um mundo multidimensional e com diversos níveis. O autor ainda aponta que o termo OLAP possui várias abordagens já que seus elementos são manifestáveis em diversas camadas de tecnologia, que vão desde o armazenamento e acesso até camadas de linguagem. Pode-se então discutir sobre conceitos OLAP, linguagens OLAP, camadas de produto OLAP e produtos OLAP completos. Os conceitos de OLAP, ainda segundo o autor, agregam as noções de múltiplas dimensões, níveis e escalas. Nas linguagens OLAP, onde inclui-se linguagens formais como DDL (Data Definition Language), DML (Data Manipulation Language), DRL (Data Representation Language) e seus analisadores associados são utilizados para qualquer modelagem descritiva transacional ou de suporte à tomada de decisão. As camadas de produto do OLAP residem-se normalmente em cima de banco de dados relacionais, onde a partir de determinadas combinações, geram SQL (Structured Query Language) como saída. Nesta questão, o banco de dados fica responsável pelo armazenamento e o acesso aos dados. Já os produtos OLAP completos que incluem métodos de acesso e armazenamento, são otimizados para cálculos rápidos e acesso a dados, assim usando-se principalmente para modelagem descritiva de dados. Thomsen (2002) exemplifica o uso do formato de visualização de dados bidimensional como sendo útil para qualquer tipo de controle, por exemplo, horas de funcionários, custo por departamento. Neste caso, a variável de dimensão são dispostas nas colunas (horas trabalhadas, horas extras) e outra dimensão identificadora (também conhecida como chave ou localizadora) de funcionários que estarão dispostos nas linhas. Em cima disso, pode-se adicionar uma terceira dimensão, que é chamada de produto. Consequentemente, a visualização dos dados acaba se tornando um cubo. Aplicando-se esse 26 conceito à realidade proposta neste TTC em questão, pôde-se observar na Figura 4 a metáfora visual do que seriam os dados apresentados para o usuário. Figura 4. Metáfora visual para visualização dos dados de acessos do Squid Fonte: Adaptado de Thomsen (2002). Pode-se observar então na Figura 4 as três dimensões juntas formando um cubo, sendo a primeira dimensão atribuiu-se variáveis que representam alguns dos atributos do registro de acessos do Squid. Na segunda dimensão atribuiu-se os produtos, que no caso em questão está utilizando-se do atributo de endereço IP do usuário da rede. Na terceira dimensão atribuiu-se o tempo, que no caso em questão está agrupado em meses. No entanto, o autor ressalta que devido a limitação da tela do computador – a tela do computador é bidimensional – é necessário adaptar a forma de apresentar as informações na tela. Devido a esta limitação, divide-se o cubo em fatias, onde cada fatia será uma página (uma dimensão) e então dentro de cada página aparecerá mais duas dimensões com as informações de acordo com a dimensão da página. Dessa forma, o usuário que utilizará a ferramenta desenvolvida neste TTC poderá definir os atributos coletados do registro de acessos do Squid em relatórios de duas ou três dimensões. 27 2.5 POSTGRESQL Riggs e Krosing (2010) descrevem o PostgreSQL como um avançado servidor de banco de dados SQL de código-fonte aberto, disponível em uma grande gama de plataformas. Além disso, o PostgreSQL é conhecido por ser um banco de dados que apresenta alta disponibilidade, requisitando pouca manutenção e resultando em um baixo custo total de propriedade. O autor menciona ainda que o PostgreSQL possui uma grande gama de recursos avançados que foram desenvolvidos ao longo de vinte anos de desenvolvimento contínuo. O PostgreSQL foi originalmente desenvolvido pelo grupo de pesquisa em banco de dados da Universidade da Califórnia e agora é desenvolvido por um grande time de colaboradores. Muito desse colaboradores possuem trabalhos em tempo integral relacionados aos PostgreSQL, trabalhando como desenvolvedores, designers, administradores de banco de dados e instrutores. O autor destaca as principais funcionalidades: • Excelente compatibilidade com os padrões SQL (compatibilidade até o padrão SQL 2008); • Arquitetura cliente-servidor; • Arquitetura desenhada para alta concorrência; • Altamente configurável e extensível; e • Excelente escalabilidade e performance com diversos recursos de tunning. Os recursos apresentados anteriormente e também a familiaridade do autor deste TTC com a ferramenta, fizeram do PostgreSQL como sendo o banco de dados escolhido para o desenvolvimento deste TTC. 28 2.6 FERRAMENTAS SIMILARES Optou-se por utilizar como fonte principal de busca de ferramentas similares a página de sugestões de analisadores de registro de acessos do site oficial do Squid1. A partir desta página, foram escolhidas as ferramentas mais citadas em listas de discussões e fóruns. Foram escolhidas ao todo seis ferramentas, sendo três comerciais e três de código-fonte aberto, como podemos ver em seguida: • SARG; • Calamaris; • Free-SA; • Redline Internet Access Monitor; • Firewall Analyzer; e • Sawmill. Será realizada uma análise das ferramentas similares escolhidas para poder efetuar um comparativo mais preciso com a ferramenta proposta para este trabalho. Diante disso, definiuse as seguintes métricas de análise: • Interface web; • Relatórios dinâmicos; • Controle de acesso à interface; e • Aplicação de conceitos OLAP. Pode-se verificar a seguir, no Quadro 2, o resumo do comparativo, sendo que na última linha encontra-se a ferramenta desenvolvida neste TTC (chamada Octopus). Nas subseções subsequentes encontram-se as analises de cada ferramenta. 1 Endereço web: http://www.squid-cache.org/Misc/log-analysis.html 29 Quadro 2. Comparativo de ferramentas similares Nome da ferramenta Interface web Relatórios dinâmicos Controle de Conceitos OLAP acesso à interface SARG Atende Não atende completamente Não atende Análise bidimensional Calamaris Atende Não atende completamente Não atende Não atende Free-SA Atende Não atende completamente Não atende Análise bidimensional Redline Internet Access Monitor Atende parcialmente Não atende Análise bidimensional Firewall Analyzer Atende Atende completamente completamente Atende completamente Análise bidimensional Sawmill Atende Atende completamente completamente Atende completamente Análise bidimensional Octopus Atende Atende completamente completamente Atende completamente Análise tridimensional Não atende Como pode ser visto no Quadro 2, o Octopus (ferramenta desenvolvida neste TTC) visa ser uma ferramenta flexível e simples de se utilizar. Para tanto, a ferramenta foi implementada sob plataforma web, ou seja, é executada em um servidor web, fazendo com que a ferramenta possa ser utilizada usando-se de um navegador web a partir de qualquer computador na rede. Todas as ferramentas similares anteriormente apresentadas (com exceção da Redline Internet Access Monitor) são ferramentas de plataforma web. A característica de relatórios dinâmicos, se fez presente em apenas duas das ferramentas similares apresentadas, ambas comerciais. Esse característica está presente também na ferramenta Octopus. A funcionalidade de controle de acessos de usuários à ferramenta só está presente em duas ferramentas (ambas comerciais). Essa funcionalidade também está presente na ferramenta Octopus. Na questão de aplicação dos conceitos OLAP é onde a ferramenta proposta neste trabalho se diferenciou das demais. Nas ferramentas similares, foram encontrados alguns pontos que podem lembrar algum conceito OLAP, porém não de forma marcante. Porém, para o Octopus, foi realizada uma fundamentação dos conceitos de OLAP para a aplicação do mesmo na ferramenta. 30 2.6.1 SARG Segundo Gangitano (2010), SARG (Squid Analysis Report Generator), é uma ferramenta que analisa os registros de acesso de um proxy e permite que se visualize quais sites os usuários estão navegando. O SARG suporta coletar os registros de acessos do Squid (escopo deste TTC) e também do Microsoft ISA. O relatório gerado é em HTML (HyperText Markup Language) e os arquivos HTML gerados são armazenados em um local definido na configuração da ferramenta. Figura 5. Captura de tela da ferramenta SARG na página inicial de relatórios Na Figura 5 pode-se observar a tela inicial do relatório do SARG. Na primeira tela em questão, o SARG mostrará os períodos onde o SARG gerou os relatórios de acesso. No caso da captura de tela em questão, existe apenas um período gerado, e o mesmo corresponde ao intervalo de 06/06/2004 até 13/09/2004. 31 Figura 6. Captura de tela da ferramenta SARG no relatório de um usuário Na Figura 6 tem-se a tela de relatório de um usuário em específico onde é listado os domínios das páginas acessadas pelo mesmo e também alguns atributos relacionados à página acessada (por exemplo, a soma dos tamanhos das requisições). Pôde-se constatar após a análise da ferramenta utilizando como base as métricas definidas na Seção 2.6: • Interface web; ◦ Resultado: Atende completamente; ◦ Motivo: Sempre que o SARG é executado, o mesmo gera diversos arquivos do tipo HTML com os relatórios do último período não processado, e estes HTML são acessados via servidor web; • Relatórios dinâmicos; ◦ Resultado: Não atende; ◦ Motivo: O mesmo gera os relatórios de estaticamente porque o SARG é executado no servidor e então o mesmo gera arquivos HTML estáticos com os relatórios já processados; 32 • Controle de acesso à interface; ◦ Resultado: Não atende; ◦ Motivo: A ferramenta não possui qualquer tipo de funcionalidade nativa de controle de acesso para visualização dos relatórios; • Aplicação de conceitos OLAP; ◦ Resultado: Análise bidimensional; ◦ Motivo: A ferramenta apresenta um conceito bidimensional básico. 2.6.2 CALAMARIS Segundo Beermann (2007), o Calamaris é uma ferramenta escrita em Perl, que gera um relatório a partir da análise do arquivo de registros de acessos de usuários em diversos servidores proxy, que são eles: • Squid (escopo deste TTC); • NetCache; • Inktomi Traffic Server; • Oops! proxy server; • Novell Internet Caching System; • Compaq Tasksmar; e • Netscape/iplanet Web Proxy Server. Segundo ainda o autor, o Calamaris oferece a possibilidade de geração do relatório tanto em formato de texto puro como também em formato HTML. A ferramenta é chamada e então realiza uma análise do arquivo de registro de acessos do Squid gerando um relatório do período de acessos que consta no arquivo. 33 Figura 7. Captura de tela da ferramenta Calamaris no início do relatório A Figura 7 refere-se ao início do relatório onde encontra-se um sumário das estatísticas geradas pela ferramenta. As estatísticas apresentadas no relatório são estáticas, sendo que foram geradas quando o HTML foi gerado. Além disso pode-se notar que as estatísticas apresentadas são focadas principalmente ao administrador do servidor proxy, pois apresentam métricas mais técnicas acerca do perfil de tráfego de dados. Após a análise da ferramenta utilizando como base as métricas definidas na Seção 2.6, pôde-se constatar: • Interface web; ◦ Resultado: Atende completamente; 34 ◦ Motivo: A ferramenta possui a opção de geração de relatórios em formato HTML, onde os mesmos são colocados em um servidor web para o acesso externo; • Relatórios dinâmicos; ◦ Resultado: Não atende; ◦ Motivo: O relatório, em formato HTML, é gerado apenas quando a ferramenta é executada, onde é gerado um relatório estático dos dados processados; • Controle de acesso à interface; ◦ Resultado: Não atende; ◦ Motivo: A ferramenta não possui qualquer tipo de funcionalidade nativa de controle de acesso para visualização dos relatórios; • Aplicação de conceitos OLAP; ◦ Resultado: Não atende; ◦ Motivo: A ferramenta gera relatórios que não apresentam conceitos OLAP. 2.6.3 FREE-SA Segundo Free-SA (2012), o Free-SA é uma ferramenta para análise de registro de acessos do Squid bastante similar ao SARG. Entre suas principais diferenças em relação ao SARG é sua maior performance, maior variedade de relatórios e um maior suporte aos padrões HTML da W3C (World Wide Web Consortium) nos relatórios gerados no formato HTML. 35 Figura 8. Captura de tela da ferramenta Free-SA na tela de escolha dos períodos de tempo disponíveis A Figura 8 demonstra a tela inicial da ferramenta com os períodos de tempo que tiveram seus relatórios gerados. Como pode-se perceber, essa ferramenta funciona de forma similar ao SARG no que tange aos relatórios serem gerados de forma estática. Figura 9. Captura de tela da ferramenta FreeSA com os tipos de relatórios gerados A Figura 9 demonstra a tela após a seleção de um período de relatórios apresentado na Figura 8. Nesta tela, pode-se observar os tipos de relatórios que foram gerados pela ferramenta dentro do período de tempo gerado e selecionado anteriormente. Pode-se confirmar o número maior de tipos de relatórios em relação ao SARG. 36 Figura 10. Captura de tela da ferramenta Free-SA na página de relatório de domínios acessados de um usuário Na Figura 10 apresenta-se um relatório gerado com a listagem de domínios acessados por um usuário específico e mais alguns atributos relacionados. Após a análise da ferramenta utilizando como base as métricas definidas na Seção 2.6, pôde-se constatar: • Interface web; ◦ Resultado: Atende completamente; ◦ Motivo: A ferramenta gera seus relatórios em formato HTML, onde os mesmos são colocados em um servidor web para o acesso externo; • Relatórios dinâmicos; ◦ Resultado: Não atende; 37 ◦ Motivo: O relatório, em formato HTML, é gerado apenas quando a ferramenta é executada, onde são gerados os relatórios estático de acordo com o período não processado; • Controle de acesso à interface; ◦ Resultado: Não atende; ◦ Motivo: A ferramenta não possui qualquer tipo de funcionalidade nativa de controle de acesso para visualização dos relatórios; • Aplicação de conceitos OLAP; ◦ Resultado: Análise bidimensional; ◦ Motivo: A ferramente apresenta estatísticas fixas que não exploram os conceitos multidimensionais, apenas bidimensionais. 2.6.4 REDLINE INTERNET ACCESS MONITOR Segundo Redline (2012), o Redline Internet Access Monitor é uma ferramenta comercial para monitorar a eficiência do uso da banda de Internet por parte dos funcionários de uma empresa. A ferramenta permite a visualização de quais usuários estão utilizando mais a Internet, o que cada usuário está acessando além também de observar quanto tempo que o usuário gasta na navegação. Além disso a ferramenta suporta diversos servidores proxy, dentre eles o Squid, foco deste TTC. Na Figura 11 tem-se uma visão geral de uma das telas de relatórios da ferramenta, mais especificamente, a tela de relatórios de acesso a sites dos usuários. 38 Figura 11. Captura de tela da ferramenta Redline Internet Access Monitor Como pôde-se notar na Figura 11, a ferramenta funciona sob plataforma desktop, ou seja, é um aplicativo que possui um executável e o mesmo é aberto no próprio computador do usuário onde deseja-se visualizar os acessos. Apesar disso, a ferramenta possui uma opção de exportar um determinado relatório para o formato HTML, pode-se ver o resultado na Figura 12. 39 Figura 12. Captura de tela da ferramenta Redline Internet Access Monitor com o relatório de uso diário exportado em HTML Pode-se notar, na Figura 12, que o relatório exportado em HTML é simples é referente a um relatório específico com atributos específicos que foram definidos dentro dos software. Após a análise da ferramenta utilizando como base as métricas definidas na Seção 2.6, pôde-se constatar: • Interface web; ◦ Resultado: Atende parcialmente; ◦ Motivo: A ferramenta é executada em plataforma desktop, o que acaba fazendo necessário a instalação do mesmo em cada computador onde se acessará os relatórios dos acessos do Squid; • Relatórios dinâmicos; ◦ Resultado: Atende completamente; ◦ Motivo: A ferramenta dispõem de diversas opções para a geração dos relatórios utilizando-se diversos atributos e filtros; • Controle de acesso à interface; 40 ◦ Resultado: Não atende; ◦ Motivo: A ferramenta não possui qualquer tipo de funcionalidade nativa de controle de acesso para visualização dos relatórios; • Aplicação de conceitos OLAP; ◦ Resultado: Análise bidimensional; ◦ Motivo: A ferramenta apresenta levemente relatórios com conceito bidimensional. 2.6.5 FIREWALL ANALYZER Segundo ManageEngine (2012), o Firewall Analyzer é uma ferramenta de gerência de rede para análise de logs de dispositivos de segurança de redes. A ferramenta é útil para analisar os logs dos firewalls da rede, possibilitando assim a detecção de falhas de segurança como tráfego de vírus, ataques, entre outros. Além disso, também é possível analisar outros itens, como o uso da banda de rede, possibilitando identificar o perfil de uso do tráfego da rede, além também de monitorar a navegação web de usuários da rede. Na Figura 13 tem-se a tela inicial da ferramenta na página inicial de relatórios do Squid. Figura 13. Captura de tela da ferramenta Firewall Analyzer na página inicial do relatório 41 A captura de tela da Figura 13, apresenta no centro alguns gráficos básico de utilização do Squid. Além disso, também é apresentado no menu localizado na parte esquerda e no topo da tela outras opções para visualização dos demais relatórios. É fornecido também opções para a geração de relatórios personalizando, disponibilizando filtros e restrição de períodos. A ferramenta também permite a geração de um relatório de acesso geral de um usuário, como apresentado na Figura 14. Figura 14. Captura de tela da ferramenta Firewall Analyzer na página de relatório de um usuário Na Figura 14 pode-se observar a página de relatório de acesso da máquina de um usuário da rede. Pode-se perceber também que o relatório em questão faz um apanhado das principais estatísticas refentes ao dados de navegação do usuário. No menu da esquerda, é oferecido outras opções de relatório com informações mais específicas acerca de cada tipo de estatística. 42 Após a análise da ferramenta utilizando como base as métricas definidas na Seção 2.6, pôde-se constatar: • Interface web; ◦ Resultado: Atende completamente; ◦ Motivo: A ferramenta é executada em um servidor web, permitindo assim que a mesma possa ser acessada de qualquer máquina com navegador web; • Relatórios dinâmicos; ◦ Resultado: Atende completamente; ◦ Motivo: A ferramenta dispõem de diversas opções para a geração dos relatórios utilizando diversos atributos e filtros; • Controle de acesso à interface; ◦ Resultado: Atende completamente; ◦ Motivo: A ferramenta dispõe da possibilidade de criação de usuários no sistema para controle de acesso aos relatórios; • Aplicação de conceitos OLAP; ◦ Resultado: Análise bidimensional; ◦ Motivo: A ferramenta apresenta alguns conceitos de OLAP, principalmente no que diz respeito ao conceito bidimensional. 2.6.6 SAWMILL Segundo Sawmill (2012), o Sawmill é uma ferramenta para análise de logs que roda nas principais plataformas. O mesmo suporta o processamento de diversos tipos de dados, dentre eles o arquivo de registro de acessos do Squid. Pode-se observar na Figura 15 a tela inicial da ferramenta. 43 Figura 15. Captura de tela da ferramenta Sawmill na página inicial Na tela inicial da ferramenta, Figura 15, observa-se que o Sawmill é uma ferramenta que dispõe de interface web, ou seja, o mesmo é executado em plataforma web, sendo executado em um servidor web. Dessa maneira, pode-se acessar a ferramenta de qualquer máquina da rede. Ainda na Figura 15, tem-se algumas estatísticas gerais e então é apresentado no menu da esquerda diversos relatórios que são gerados em tempo real. Por exemplo, o relatório de URLs acessadas pode ser visualizado na Figura 16. 44 Figura 16. Captura de tela da ferramenta Sawmill na tela de relatório de acessos Na Figura 16 podemos observar o relatório com a listagem de acessos com alguns atributos, como por exemplo, o endereço IP do cliente, usuário do cliente e o tipo do conteúdo acessado. Para o aprimoramento da visualização das informações do relatório, pode-se utilizar também as opções de filtros de atributos e de períodos de tempo disponíveis no menu superior. Após a análise da ferramenta utilizando como base as métricas definidas na Seção 2.6, pôde-se constatar: • Interface web; ◦ Resultado: Atende completamente; ◦ Motivo: A ferramenta é executada em um servidor web, permitindo assim que a mesma possa ser acessada de qualquer máquina com um navegador web; • Relatórios dinâmicos; ◦ Resultado: Atende completamente; 45 ◦ Motivo: A ferramenta dispõem de diversas opções para a geração dos relatórios permitindo a personalização dos mesmos com filtros de períodos de tempo e atributos; • Controle de acesso à interface; ◦ Resultado: Atende completamente; ◦ Motivo: A ferramenta dispõe da possibilidade de criação de usuários no sistema para controle de acesso aos relatórios; • Aplicação de conceitos OLAP; ◦ Resultado: Análise bidimensional; ◦ Motivo: A ferramenta apresenta alguns conceitos de OLAP aplicados, como relatórios bidimensionais. 46 3 DESENVOLVIMENTO Neste capítulo são documentados o projeto do software desenvolvido bem como sua implementação e validação. Primeiramente será apresentada a modelagem do software, com utilização da UML, onde será apresentado diversos itens como o levantamento de requisitos, modelos de classes, modelos de casos de uso e modelo do banco de dados. Segundo Pedrycz e Peters (2001), nesta etapa é feita a descrição das principais funcionalidades de um software, bem como seu fluxo, comportamento e atributos. Basicamente é fornecido a estrutura básica para o desenvolvimento de um software. Após a etapa de modelagem, será apresentada a etapa do trabalho que contempla a implementação da ferramenta, que por sua vez é composta por dois módulos cuja implementação é demonstrada na Seção 3.2. Subsequentemente será apresentado o processo de validação da ferramenta com a finalidade de atestar o atendimento aos objetivos deste trabalho. 3.1 MODELAGEM DO SOFTWARE O software foi divido basicamente em dois módulos. O módulo coletor, que faz a leitura dos dados gerados pelo servidor proxy Squid e os salva em um banco de dados, e o módulo interface de visualização, que fornecerá a interface para geração de relatórios. Serão apresentados os seguintes artefatos: • Levantamento de requisitos; ◦ Um diagrama de regras de negócio; ◦ Um diagrama de requisitos funcionais; ◦ Um diagrama de requisitos não funcionais; • Dois diagramas de modelo de classes; • Um diagrama de modelo de casos de uso; • Um diagrama entidade relacionamento – conhecido também como modelo ER (Entity-relationship) – do banco de dados; e • Dois protótipos de tela. 47 3.1.1 LEVANTAMENTO DE REQUISITOS O levantamento de requisitos do projeto será constituído pelos requisitos funcionais, requisitos não funcionais e as regras de negócio. Os mesmos serão listados nas subseções não numeradas a seguir. Requisitos funcionais Baseando-se nas funcionalidades esperadas, foi identificado os seguintes requisitos funcionais: • RF01: O usuário poderá se autenticar no sistema; • RF02: O administrador poderá criar, editar e excluir outros usuários; • RF03: O usuário do sistema poderá acessar o relatório tridimensional; • RF04: O usuário do sistema poderá acessar o relatório bidimensional; • RF05: O relatório tridimensional deverá permitir a escolha de um período de tempo, atributos visíveis, ordenação, filtros de atributos e a definição do atributo da terceira dimensão; • RF06: O relatório bidimensional deverá permitira escolha de um período de tempo, atributos visíveis, ordenação e filtros de atributos; • RF07: O administrador poderá definir se outro usuário é administrador ou não; e • RF08: O usuário poderá alterar sua senha. Requisitos não funcionais Foram definidos os seguintes requisitos não funcionais: • RNF01: A senha dos usuários do sistema deve ser armazenada de forma criptografada em hash MD5 no banco de dados; • RNF02: Somente usuários autenticados podem acessar o sistema; • RNF03: Qualquer página do sistema deverá ser carregada em no máximo 5 segundos em condições normais de rede, com o servidor de relatório e banco de 48 dados com um hardware de no mínimo um processador Intel Core 2 Duo 2,13Ghz, com 3 GB de memória e disco de armazenamento padrão SATAII e o banco de dados contendo 1 milhão de registros de acessos; • RNF04: A interface de visualização de relatórios deverá funcionar nos navegadores Mozilla Firefox 12, Google Chrome 18 e Microsoft Internet Explorer 8; • RNF05: O módulo coletor será implementado utilizando-se a linguagem de programação Python; • RNF06: O módulo de interface de visualização será desenvolvido na linguagem PHP utilizando-se o framework Symfony; e • RNF07: O SGBD (Sistema de Gerenciamento de Banco de Dados) usado será o PostgreSQL. Regras de negócio Foram identificadas as seguintes regras de negócio no sistema: • RN01: Somente os usuários autorizados a monitorar os dados de navegação podem acessar o sistema; e • RN02: O servidor proxy utilizado é o Squid. 3.1.2 MODELO DE CASOS DE USO Os casos de uso são úteis para modelar as funcionalidades que os usuários utilizarão no sistema, ou seja, é possível ter uma visão geral dos recursos que serão oferecidos pelo software proposto. (PENDER, 2004). É apresentado a seguir, na Figura 17, o diagrama dos casos de uso descrevendo os recursos da ferramenta proposta neste trabalho. A visão detalhada de cada caso de uso é apresentada no APÊNDICE A.. 49 Figura 17. Diagrama do modelo de casos de uso Na Figura 17 observa-se seis casos de uso referentes ao projeto do módulo de interface de visualização. Tem-se dois perfis específicos de usuários, o “Gestor” e o “Administrador”. O perfil “Gestor” refere-se aos gestores da determinada empresa que teriam acesso ao painel de visualização de relatórios. Já o perfil “Administrador” refere-se ao administrador da ferramenta que terá a tarefa de gerir os usuários autorizados a visualizarem os relatórios. Cada um dos dois perfis possui seu ator com mesmo nome. Além disso, existe outro ator que representa os dois atores especializados citados anteriormente, utilizado para os casos de uso que podem ser realizados tanto pelo ator “Gestor” e o ator “Administrador”. A gestão de usuários conta com quatro casos de uso (UC01.01 ao UC01.04). O primeiro caso de uso, identificado como UC01.01, refere-se ao processo de autenticação do sistema (obrigatório para poder acessar qualquer parte da ferramenta). O segundo caso de uso é identificado como UC01.02 e diz respeito ao processo de alteração de senha do usuário atualmente autenticado. O terceiro caso de uso é identificado como UC01.03 e diz respeito ao processo de criação, edição e exclusão de usuários, que é executado apenas pelo perfil “Administrador”. O quarto caso de uso é identificado como UC01.04 e diz respeito ao 50 processo de definição, por parte do perfil “Administrador”, se um usuário fará parte do perfil “Administrador” ou não. A geração de relatórios conta com dois casos de uso (UC01.05 e UC01.06). O primeiro caso de uso, identificado como UC01.05, diz respeito à geração de relatório bidimensionais, juntamente com suas opções de filtragem e ordenação. O segundo caso de uso é identificado como UC01.06 e diz respeito à geração de relatórios tridimensionais, juntamente com a aplicação de alguns conceitos OLAP, seleção de pivôs e outras opções de filtragem e ordenação. 3.1.3 MODELO DE CLASSES Na seção em questão, foi apresentado um diagrama de classes de domínio para o módulo coletor, Figura 18, e outro diagrama de classes de domínio para o módulo interface de visualização, Figura 19. As classes descritas nos diagramas apresentam sua identificação, principais atributos e principais métodos. A visão detalhada dos modelos de classes dos diagramas está no APÊNDICE B.. 51 Módulo coletor Figura 18. Diagrama do modelo de classes do módulo coletor A Figura 18 apresenta o diagrama o diagrama de modelo de classes do módulo coletor. Nela pode-se observar a presença de duas classes, sendo que a primeira chama-se “SquidLogFile” que representa o arquivo com os registros de acessos do Squid, sendo que a mesma possui um atributo com a localização do arquivo dentro do sistema de arquivos local além de um método principal utilizado para iniciar o processamento do arquivo. Já segunda classe, chama-se “SquidAccessLogRequest”, que representa cada registro do arquivo de registros de acessos do Squid, sendo que seus atributos estão fundamentados na Subseção 2.3.1. 52 Módulo interface de visualização Figura 19. Diagrama de modelo de classes do módulo interface de visualização A Figura 19 apresenta o diagrama de modelo de classes do módulo interface de visualização. Pode-se observar a presença de duas classes. A primeira classe chama-se “User” e representa o cadastro de usuários autorizados a acessar a ferramenta Octopus, juntamente com alguns atributos como o nome completo, senha, e-mail e se possui direitos administrativos. Já a segunda classe, representa cada registro de acesso do Squid que está armazenado no banco de dados, seus atributos estão fundamentados na Subseção 2.3.1. 3.1.4 DIAGRAMA ENTIDADE RELACIONAMENTO (MODELO ER) O software utiliza o SGBD PostgreSQL para armazenar todo os registros de acessos (alimentado pelo módulo coletor e acessado/visualizado pelo módulo interface de visualização). Além disso, será armazenado também o cadastro de usuários que podem acessar o módulo interface de visualização para a geração de relatórios, como pode ser visto no diagrama na Figura 20. 53 Figura 20. Diagrama modelo entidade relacionamento (modelo ER) No diagrama em questão, na Figura 20, é mostrado o modelo ER do banco de dados. O banco de dados será composto por duas tabelas, sendo a primeira chamada “user”, responsável por armazenar o cadastro de usuários que terão acesso autorizado para utilizar a ferramenta. Esta tabela armazenará as informações de nome completo, senha, e-mail e se o usuário possui direitos administrativos na ferramenta. Já a tabela “squid_access_log_request”, ficará responsável por armazenar cada requisição que o Squid registrar em seu arquivo de registros de acessos utilizando os atributos disponíveis pelo mesmo, fundamentados na Subseção 2.3.1. No APÊNDICE C. é apresentado a visão detalhada do modelo. 3.1.5 PROTÓTIPO DE TELA Para melhorar o entendimento sobre os relatórios da ferramenta Octopus, optou-se por elaborar dois protótipos de tela demonstrados na Figura 21 e Figura 22. Os protótipos foram desenhados utilizando a ferramenta Balsamiq Mockups. 54 Figura 21. Protótipo de tela do relatório bidimensional Na Figura 21 podemos visualizar um relatório bidimensional onde tem-se na parte superior um filtro de período de tempo, seleção de campo visíveis e uma tabela com as informações de acesso de acordo com a configuração selecionada pelo usuário. 55 Figura 22. Protótipo de tela do relatório tridimensional Na Figura 22 tem-se o protótipo de tela do relatório tridimensional, onde pode-se observar na parte superior, o filtro de período de tempo por data e hora, além também da seleção de campos visíveis que permite o usuário escolher a quantidade de atributos que deseja visualizar. Já na parte central do relatório, observa-se a tabela com as informações de acesso, onde junto com a tabela, na parte superior, tem-se as abas que referem-se ao atributo de usuário autenticado do Squid. Dessa maneira, as abas funcionam como as fatias do cubo de informações presentes na tela, sendo assim, tem-se a terceira dimensão. 3.2 IMPLEMENTAÇÃO DA FERRAMENTA A implementação da ferramenta proposta foi divida em duas partes, ou ainda, em dois módulos: (i) Implementação do módulo coletor, responsável pela coleta das informações brutas do servidor proxy Squid onde serão salvar em um banco de dados; (ii) Implementação do módulo de interface de visualização, responsável pela interface de geração de relatórios. 56 3.2.1 IMPLEMENTAÇÃO DO MÓDULO COLETOR O módulo coletor foi desenvolvido na linguagem de programação Python. Utilizou-se duas classes principais conforme especificado na subseção 3.1.3. Figura 23. Classe “SquidAccessLogRequest” do módulo coletor A Figura 23 demonstra a classe “SquidAccessLogRequest”, onde pode-se observar os seus atributos. Cada atributo da classe em questão se refere ao seu respectivo campo contido em um linha do arquivo de registro de acessos do Squid – que por sua vez, representa uma requisição de um usuário da rede. Figura 24. Classe "SquidLogFile" do módulo coletor (método "parse" recolhido) 57 Na Figura 24, pode-se observar a classe “SquidLogFile”, que representa o arquivo de registro de acessos do Squid. Na classe em questão, tem-se um construtor que definirá a localização do arquivo de registro de acessos do Squid ao se realizar o instanciamento do objeto. Além disso, tem-se o método “clean”que realiza a limpeza do arquivo de registro de acessos do Squid. Tem-se também o método “parse”, onde será realizado o processamento do arquivo de registro de acessos do Squid. O método “parse” realiza primeiramente a leitura do arquivo de registro de acessos do Squid, sendo que após o término, é realizada a limpeza do arquivo. Logo após essa etapa, é realizada então um laço que percorre todos os acessos registrados no arquivo criando os objetos correspondentes a todos os registros, juntamente com suas informações recolhidas de cada campo do arquivo de registro de acessos do Squid. Após todo esse processo, ao final da execução do módulo em questão, os objetos serão persistidos em banco de dados. 3.2.2 IMPLEMENTAÇÃO DO MÓDULO DE INTERFACE DE VISUALIZAÇÃO O módulo de interface de visualização foi desenvolvido utilizando-se a linguagem de programação web PHP, juntamente com o framework Symfony versão 2.2. Além disso, utilizou-se um framework de interfaces HTML chamado Twitter Bootstrap. Com o mesmo, foi possível criar e manipular a interface das páginas de maneira fácil e com alguns estilos pré definidos. Para a melhor organização da implementação, foram criados três bundles (ou pacotes): • OctopusFrontendBundle: Pacote que contém a entidade referente aos registros de acessos do Squid (camada de modelo), bem como as camadas de controle e de visão de toda a ferramenta, com exceção da seção de autenticação de usuários da ferramenta; • OctopusSecurityBundle: Pacote que conterá a camada de controle e de visão referente a seção de autenticação de usuários da ferramenta; e • OctopusUserBundle: Pacote que conterá a camada de modelo de usuário, ou seja, conterá a entidade que representa um usuário na ferramenta. 58 Entidades Na camada de modelo da implementação, conforme a especificação elaborada na Seção 3.1, foram criadas duas classes, juntamente com as suas respectivas anotações referentes ao seu mapeamento para persistência no banco de dados. A primeira classe, é a “SquidAccessLogRequest”, criada dentro do pacote “OctopusFrontendBundle”. A classe em questão conterá as informações que constituirão cada registro de acesso ao Squid. A segunda classe de modelo criada, é a classe “User”, criada dentro do pacote “OctopusUserBundle”, que representa o usuário que irá utilizar a ferramenta para a visualização dos relatórios. A classe em questão, conterá as informações que constituirá a entidade de representação de um usuário da ferramenta. Autenticação O Symfony tornou a implementação da autenticação uma tarefa simples de executar. Foi necessário editar o arquivo “app/config/security.yml” e definir algumas configurações: • Algoritmo de criptografia de senha: MD5; • Entidade de usuário: “Octopus\UserBundle\Entity\User”; • Credenciais de autorização; ◦ “ROLE_USER”: Credencial de usuário normal; ◦ “ROLE_ADMIN”: Credencial de administrador; • Área segura: Definiu-se que o sistema inteiro necessitará de autenticação (com exceção da página de autenticação), sendo que ao acessar as páginas protegidas sem possuir a credencial necessária ou sem estar autenticado, a página será redirecionada para o formulário de autenticação. 59 Figura 25. Captura de tela do formulário de autenticação do sistema A Figura 25 demonstra a tela de autenticação do sistema com os campos de e-mail e “Password” (senha), onde após inseridas as informações corretas de e-mail e senha, o acesso à ferramenta será concedido. Relatório bidimensional A tela de relatórios bidimensionais gera um relatório em uma tabela onde os dados são mostrados em duas dimensões. A tela é demonstrada na Figura 26 e na Figura 27. 60 Figura 26. Captura de tela do relatório bidimensional com destaque para os parâmetros A Figura 26 demonstra a tela do relatório bidimensional com os parâmetros para configuração do relatório. Da esquerda para a direita, observa-se primeiramente a seleção do intervalo de data e hora para o relatório, “Date & Time range”. Após o mesmo, tem-se a seleção das colunas a serem exibidas no relatório, subsequentemente observa-se o “Column filter” que permite filtrar uma determinada coluna por um determinado padrão de texto ou números a ser informado no campo “Filter text”. Por último, o “Order by” permite selecionar o campo a ser utilizado para ordenação e sua orientação, ascendente “ASC” ou descendente “DESC”. Além disso, há o botão “Save current query” que fornece a possibilidade de salvar a consulta em questão para um fácil acesso posterior. A tabela com o relatório se encontra mais abaixo na página, onde há o título “Result”, como observa-se na Figura 27. 61 Figura 27. Captura de tela do relatório bidimensional com destaque ao relatório Na Figura 27 observa-se o relatório bidimensional que localiza-se na mesma da Figura 26, porém abaixo no título “Result” citado anteriormente. Pode-se observar que ao lado do título “Result” existe alguns dados referentes à quantidade dos dados que estão sendo visualizados na página atual e o total encontrado. Mais abaixo observa-se as informações sobre o número da página de resultados atuais acompanhado do total de páginas de resultado. Ao lado direito e esquerdo tem-se os botões “Previous page” (para ir à página anterior) e “Next page” (para ir à próxima página). Mais abaixo se observa o relatório de fato, gerado de acordo com os parâmetros de configuração demonstrados na Figura 26. Já a lógica de criação do relatório localiza-se na ação “twoDimensional” dentro da classe controle “ReportController” no pacote “OctopusFrontendBundle”. 62 Relatório tridimensional A tela de relatórios tridimensionais gera um relatório utilizando-se de uma estrutura tabular, porém utilizando dois pivôs na parte da esquerda que representarão duas das três dimensões, sendo que a terceira dimensão, as das medidas, ficará na parte da direita. Na implementação da tela em questão, a camada da visão foi implementada no arquivo “threeDimensional.html.twig”. A tela é demonstrada na Figura 28 e na Figura 29. Figura 28. Captura de tela do relatório tridimensional com destaque para os parâmetros Na Figura 28 observa-se a parte superior da tela de relatórios tridimensionais. Na parte da tela em questão, pode-se selecionar o intervalo de data e hora referente à fatia do cubo que se deseja visualizar. Ao lado, tem-se a seleção de medidas a serem visualizadas na parte da direita no relatório demonstrado na Figura 29. A direita tem-se outro parâmetro para seleção, que é a dos pivôs, onde seleciona-se os campos que serão utilizados como dimensões e estarão localizados na parte esquerda do relatório demonstrado na Figura 29. Juntamente com 63 os parâmetros de seleção de pivôs, estão os respectivos parâmetros de ordenação “ASC” (ascendente) e “DESC” (descendente). Além disso, há o botão “Save current query” que fornece a possibilidade de salvar a consulta em questão para um fácil acesso posterior. Figura 29. Captura de tela do relatório tridimensional com destaque para o relatório tridimensional Observa-se na Figura 29 a parte inferior da tela de relatório tridimensionais, localização de fato do relatório. Semelhantemente ao relatório bidimensional, no topo apresenta-se algumas informações referentes aos resultados exibidos além de informar o número da página atual e o total de páginas juntamente com os botões de navegação entre as páginas de resultados. Pode-se ainda destacar, na Figura 29, a metáfora das três dimensões que são representadas. Como mencionado anteriormente, tem-se na direita as “Measures” (medidas, ou métricas) que representam uma dimensão. Já na esquerda, tem-se os dois pivôs que representam mais duas dimensões. Pode-se notar também que é possível clicar sobre os valores apresentados nas duas colunas de pivôs, fazendo com que seja apresentado uma fatia de resultados de acordo com o valor clicado. Já a lógica de criação do relatório localiza-se na ação “threeDimensional” dentro da classe controle “ReportController” no pacote “OctopusFrontendBundle”. 64 Gerenciamento de usuários A ferramenta permite que um usuário troque sua senha, permite que um administrador crie um novo usuário, permite que o administrador visualize as contas existentes além de permitir que o administrador edite e exclua outro usuário. Figura 30. Captura de tela da listagem de usuários Observa-se na Figura 30 a tela administrativa de listagem de usuários, onde na parte superior, é fornecido um botão para realizar a criação de novos usuários para a ferramenta. Na listagem de usuários, observa-se os diversos dados que compõem um usuário da ferramenta, sendo que na coluna da direita, é apresentado duas ações para cada usuário, “Edit” (editar um usuário) e “Remove” (remover um usuário). Consultas salvas Como citado anteriormente, o usuário da ferramenta poderá salvar as consultas ao relatório bidimensional e ao relatório tridimensional para facilitação do acesso posterior. As consultas salvas, estarão disponíveis na página inicial da aplicação como demonstrado na Figura 31. 65 Figura 31. Captura da tela inicial da ferramenta juntamente com a listagem de consultas salvas Na Figura 31, pode-se observar a tela inicial da ferramenta, sendo que na parte inferior da tela, encontra-se a listagem das consultas salvas, juntamente com uma opção de remover as mesmas. 3.3 TESTES FINAIS DA FERRAMENTA A fim de validar o funcionamento da ferramenta, foram realizados alguns testes finais no mesmo. Para cada teste, serão definidos os seus parâmetros seguidos pela descrição da execução do teste juntamente com a aferição do resultado esperado. 3.3.1 TESTE 1: NÚMERO REQUISIÇÕES COLETADAS Para o teste em questão, foram definidos os seguintes parâmetros: • Base de dados: Arquivo de registro de acessos do Squid com cindo mil linhas de acessos variados; 66 • Descrição do teste: Realizar a importação de um arquivo de registros de acessos utilizando o módulo coletor e então aferir o número total de registros importados através de uma pesquisa sem filtros na interface de visualização de relatórios; e • Resultado esperado: Relatório com resultado total de cinco mil registros. Executou-se o módulo coletor, o mesmo leu o arquivo e converteu para o banco de dados todos os registros sem apresentar nenhum erro, como demonstrado no Quadro 3. :: Starting @ 2012-11-01 18:05:40.858041 :: Connecting do database... Opening access log file... Found 5000 Squid access requests. Parsing log file... Saving to database... Closing database connection... :: Finished @ 2012-11-01 18:06:40.611274 :: No Quadro 3, observa-se a saída do comando de execução do módulo coletor. Nota-se que o tempo total de sua execução foi de cerca de um minuto. Com a importação realizada, pôde-se observar no módulo de interface de visualização os dados populados correspondendo com os dados contidos no arquivo de registro de acessos do Squid. Em ambos os relatórios (bidimensional e tridimensional) ao se utilizar um abrangente filtro de data (com intenção de englobar todos os registros que foram lidos do arquivo de registro de acessos do Squid) o número total de resultados encontrados pode-se observar na Figura 32. 67 Figura 32. Captura de tela no número total de resultados no banco de dados Na Figura 32 pode-se visualizar a comprovação do sucesso deste teste, pois ao lado do título “Result” tem-se as estatísticas de resultados informando que o total de resultados é cinco mil, coincidindo com o resultado esperado deste teste. 3.3.2 TESTE 2: VERIFICAR OS SITES ACESSADOS POR UM ENDEREÇO IP (USUÁRIO) DURANTE UM PERÍODO DE TEMPO Para o teste em questão, utilizou-se uma base de dados com um dia inteiro de utilização do servidor proxy na empresa em que o autor trabalha. Para o teste em questão, foram definidos os seguintes parâmetros: • Base de dados: Utilização do servidor proxy na empresa que o autor trabalha no dia cinco de setembro de dois mil e doze; • Descrição do teste: Acessar o relatório bidimensional e realizar um filtro pelo endereço IP “192.168.1.199” no período de tempo entre as 8h e 17h48min do dia cinco de setembro de dois mil e doze; e • Resultado esperado: 250 páginas de resultados e 24.906 registros encontrados. 68 O teste foi executado acessando-se a opção “Two dimensional report” (relatório bidimensional) juntamente com a definição de alguns parâmetros como demonstrado na Figura 33. Figura 33. Teste 2 - Parâmetros do relatório bidimensional Na Figura 33, pode-se observar a definição do intervalo de data e hora a serem buscados, colunas a serem visualizadas, o filtro ao endereço IP do usuário e a ordenação das requisições. Ao pressionar o botão “Apply filter”, será gerado o relatório apresentado na Figura 34. 69 Figura 34. Teste 2 - Relatório bidimensional de acessos de um usuário específico Na Figura 34 pode-se observar o relatório de fato gerado a partir dos parâmetros definidos. Pode-se observar que foi encontrado um total de 24.906 registros organizados em 250 páginas, o que coincide com o resultado esperado para o teste. 3.3.3 TESTE 3: VERIFICAR OS MAIORES ARQUIVOS BAIXADOS Para o teste em questão, foram definidos os seguintes parâmetros: • Base de dados: Acessos do dia cinco de setembro de dois mil e doze; • Descrição do teste: O teste consiste em constatar quais foram as maiores requisições efetuadas (seja download direto, vídeos sob-demanda, entre outros); e • Resultado esperado: requisição realizada as 13h06min52s com tamanho 470.268.237 bytes e proveniente do endereço IP 192.168.1.199. 70 O teste foi executado acessando-se a opção a opção “Three dimensional report” (relatório tridimensional) juntamente com a definição de alguns parâmetros como demonstrado na Figura 35. Figura 35. Teste 3 - Parâmetros do relatório tridimensional Na Figura 35 pode-se observar primeira a escolha da fatia do cubo correspondente a data de pesquisa, que foi definida para o dia cinco de setembro do ano de dois mil e doze e dentro do intervalo de horário de trabalho (das 8h até 17h 48min). Foram selecionadas três medidas, data e hora, endereço acessado e o tipo de conteúdo. Nenhum filtro de texto foi aplicado. Além disso, foram selecionados dois pivôs. O primeiro pivô, é refere-se ao tamanho da requisição e terá ordenação descendente, ou seja, do maior para o menor. O segundo pivô, refere-se ao endereço IP do usuário que acessou o endereço e utilizará ordenação ascendente, ou seja, do menor para o maior. Após clicar em “Generate report”, será gerado o relatório apresentado na Erro: Origem da referência não encontrada. 71 Figura 36. Teste 3 - Relatório dos maiores arquivos baixados Na Erro: Origem da referência não encontrada pode-se observar o relatório gerado. No primeiro pivô da esquerda observa-se a coluna referente ao tamanho da requisição, já o segundo pivô, corresponde ao endereço IP do usuário da requisição. Na primeira linha de resultado, pode-se observar a requisição de maior tamanho, que possui o tamanho de 470.268.237 bytes (ou aproximadamente 450 Megabytes). Na requisição em questão, pode-se observar que o mesmo trata-se de um vídeo visto no site YouTube que foi visualizado pelo usuário de IP “192.168.1.199”.. 72 4 CONCLUSÕES Este trabalho consistiu em projetar e implementar uma ferramenta de código aberto para a geração de relatórios para o servidor proxy Squid com aplicabilidade de alguns conceitos de OLAP. A motivação do projeto se deu principalmente ao fato da dificuldade em encontrar ferramentas de código aberto que forneçam interfaces intuitivas com altas curvas de aprendizagem por parte dos usuários comuns, interfaces com flexibilidade na busca de informações específicas, seja qual for o período de tempo escolhido, relatórios que permitam controlar as informações a serem visualizadas conforme a necessidade,. quantidade de informações exibidas além também de um controle de acesso de usuário à interface de visualização das informações. Foi elaborada a fundamentação teórica dos conceitos referentes a este trabalho, além também de estudar o conceito de OLAP que serviu como base principalmente para a funcionalidade de geração de relatório tridimensional desenvolvida neste trabalho. Terminada esta etapa, elaborou-se o projeto de engenharia de software com todos os requisitos levantados, onde gerou-se requisitos funcionais, requisitos não funcionais e regras de negócio, além também da confecção dos modelos de casos de uso, modelos de classe, modelo de banco de dados e protótipos de tela de baixa fidelidade das telas de relatórios bidimensionais e tridimensionais. Com isso, foi possível guiar a implementação da ferramenta. A etapa de implementação da ferramenta transcorreu sem maiores imprevistos. O framework Symfony se mostrou uma ferramenta útil para o desenvolvimento de aplicações do perfil da ferramenta Octopus. A implementação da ferramenta se deu de forma organizada devida a forma do Symfony trabalhar com as divisões de camadas. Após o final da implementação, os testes finais ocorreram sem problemas e atestaram o cumprimento dos objetivos propostos. Com a utilização da ferramenta Octopus, espera-se resolver a maioria dos problemas que serviram de motivação para a elaboração deste trabalho. Pôde-se observar a melhoria na interface e nas possibilidades de geração de relatórios, não ficando mais presos a modelos estáticos como os da ferramenta SARG. Isto permite que se chegue de uma maneira muito mais rápida e precisa à informação. 73 A ferramenta Octopus se transformará em um projeto público, onde contará com seu código-fonte disponível na Internet e presente em um serviço de desenvolvimento colaborativo, permitindo alavancar a evolução e a utilização da ferramenta. 4.1 TRABALHOS FUTUROS Durante todo o projeto de desenvolvimento da ferramenta Octopus, foram identificadas diversas funcionalidades que por estarem fora do escopo deste projeto, as mesmas não foram incluídas, porém são funcionalidades interessantes para a evolução da ferramenta tornando-a uma ferramenta mais completa e madura para ser adotada. A fim de tornar a ferramenta mais completa no que tange à integração com o Squid, mostra-se interessante a exibição de um módulo na ferramenta que explore as métricas de funcionamento e estatísticas do servidor Squid. Ou seja, seriam informações de cunho mais técnico, podendo-se assim visualizar informações de consumo de processamento, memória, entrada e saída, configuração, requisições por segundo, eficiência do cache, entre outros. Outro recurso interessante principalmente em meios corporativos, é a integração do sistema de autenticação de usuários com o serviço de diretórios LDAP (Lightweight Directory Access Protocol), permitindo assim o acesso da ferramenta a base de dados centralizada de usuários de uma determinada empresa, facilitando o gerenciamento de usuários. 74 REFERÊNCIAS BEERMANN, Cord. Calamaris. 2007. Disponível: <http://cord.de/tools/squid/calamaris/>. Acesso em 4 jul. 2012. FREE-SA. Free-SA: Description. 2012. Disponível: <http://sourceforge.net/projects/freesa/>. Acesso em 4 jul. 2012. GANGITANO, Luigi. SARG. 2010. Disponível: <http://sarg.sourceforge.net/sarg.1.html>. Acesso em 4 jul. 2012. KUROSE, James F.; ROSS, Keith W. Redes de computadores e a Internet: Uma abordagem top-down. 3 ed. São Paulo: Pearson Addison Wesley, 2006. LOPES, Raquel V.; SAUVÉ, Jacques P.; NICOLLETTI, Pedro S. Melhores Práticas para Gerência de Redes de Computadores. Rio de Janeiro: Editora Campus, 2003. MANAGEENGINE. Firewall Analyzer: Firewall Log Analysis Software. 2012. Disponível: <http://www.manageengine.com/products/firewall/>. Acesso em 4 jul. 2012. MCCABE, James D. Network Analysis, Architecture, and Design. 3 ed. Burlington: Morgan Kaufmann Publishers, 2007. PEDRYCZ, Witold; PETERS, James F. Engenharia de software: teoria e prática. Rio de Janeiro: Elsevier, 2001. PENDER, Tom. UML, a bíblia. Rio de Janeiro: Elsevier, 2004. REDLINE. Redline Software: Internet Access Monitor. 2012. Disponível: <http://www.redline-software.com/eng/products/iam/>. Acesso em 4 jul. 2012. RICCI, Bruno; MENDONÇA, Nelson. Squid – Solução Definitiva. Rio de Janeiro: Ciência Moderna, 2006. RIGGS, Simon; KROSING, Hannu. PostgreSQL 9 Administration Cookbook. Birmingham: Packt Publishing, 2010. SAWMILL. Sawmill: Features. 2012. Disponível: <http://www.sawmill.net/features.html>. Acesso em 4 jul. 2012. THOMSEN, Erik. OLAP Solutions: building multidimensional information systems. New York: John Wiley & Sons, 2002. WESSELS, Duane. Squid: The Definitive Guide. Sebastopol: O'Reilly, 2004. 75 GLOSSÁRIO Código aberto É um termo que refere-se também ao software livre. Basicamente define o termo de liberdade de um software, onde respeita-se as quatro liberdades definidas pela Free Software Foundation. Framework Abstração que une códigos comuns provendo uma funcionalidade genérica. Hash Sequencia de bits gerados através de um algoritmo de dispersão. Essa sequencia busca identificar um arquivo ou informação de forma única. MD5 Algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc. É muito utilizado para verificação de integridade e também para proteção de informações de autenticação. PHP Linguagem interpretada projetada para aplicações web. PostgreSQL Sistema de gerenciador de banco de dados objeto relacional de código-fonte aberto. Python Linguagem de programação interpretada, imperativa e orientada a objetos. 76 APÊNDICE A. DETALHAMENTO DOS MODELOS DE CASOS DE USO A.1 UC01.01 – REALIZAR LOGIN Permite que o usuário tenha acesso ao sistema, através do fornecimento do e-mail e da senha. Requisitos • RF01: O usuário poderá se autenticar no sistema; • RN01: Somente os usuários autorizados a monitorar os dados de navegação podem acessar o sistema. Condições • Pré-condição: O usuário não deverá estar autenticado no sistema; • Pós-condição: O usuário estará autenticado no sistema. A.2 UC01.02 – ALTERAR SENHA Permite ao usuário alterar sua senha através do fornecimento da senha nova. Requisitos • RF08: O usuário poderá alterar sua senha; • RNF01: A senha dos usuários do sistema deve ser armazenada de forma criptografada em hash MD5 no banco de dados. Condições • Pré-condição: O usuário deverá estar autenticado no sistema; • Pós-condição: O usuário terá uma nova senha para se autenticar no sistema. 77 A.3 UC01.03 – CRIAR, EDITAR E EXCLUIR USUÁRIO Permite ao administrador criar, editar informações ou excluir um usuário do sistema. Requisitos • RF02: O administrador poderá criar, editar e excluir outros usuários. Condições • Pré-condição: O administrador deverá estar autenticado no sistema; • Pós-condição: As alterações na base de usuários serão aplicadas. A.4 UC01.04 – DEFINIR OUTRO USUÁRIO COMO ADMINISTRADOR OU NÃO Permite ao administrador definir se outro usuário será administrador ou não. Requisitos • RF07: O administrador poderá definir se outro usuário é administrador ou não. Condições • Pré-condição: O administrador deverá estar autenticado no sistema; • Pós-condição: O usuário será administrador ou não. A.5 UC01.05 – GERAR RELATÓRIO BIDIMENSIONAL Permite ao usuário gerar relatórios bidimensionais podendo-se personalizar a escolha de um período de tempo, atributos visíveis, ordenação e filtros de atributos. Requisitos • RF04: O usuário do sistema poderá acessar o relatório bidimensional; 78 • RF06: O relatório bidimensional deverá permitira escolha de um período de tempo, atributos visíveis, ordenação e filtros de atributos. Condições • Pré-condição: O usuário deverá estar autenticado no sistema; • Pós-condição: Gerado o relatório bidimensional. A.6 UC01.06 – GERAR RELATÓRIO TRIDIMENSIONAL Permite ao usuário gerar um relatório tridimensional podendo-se personalizar o período de tempo, atributos visíveis, ordenação, filtros de atributos e a definição do atributo da terceira dimensão. Requisitos • RF03: O usuário do sistema poderá acessar o relatório tridimensional; • RF05: O relatório tridimensional deverá permitir a escolha de um período de tempo, atributos visíveis, ordenação, filtros de atributos e a definição do atributo da terceira dimensão. Condições • Pré-condição: O usuário deverá estar autenticado no sistema; • Pós-condição: Gerado o relatório tridimensional. 79 APÊNDICE B. DETALHAMENTO DOS MODELOS DE CLASSES A seguir será apresentado as classes, e sua descrição, do módulo coletor e do módulo interface de visualização. B.1. Classes do módulo coletor • SquidLogFile: Classe que representa os arquivos com as informações de acesso do servidor proxy Squid; • SquidAccessLogRequest: Classe que representa cada registro (linha) no arquivo de informações de acesso do servidor proxy Squid, ou seja, cada acesso feito pelos usuários será representado por um objeto da classe. B.2. Classes do módulo interface de visualização • User: Classe que representa os usuários que acessam o sistema de relatórios; • SquidAccessLogRequest: Classe que representa cada registro de acesso no servidor proxy Squid, registros esses que estão localizados no banco de dados. Ou seja, cada objeto da classe, representa um acesso. 80 APÊNDICE C. DETALHAMENTO DO MODELO ENTIDADE RELACIONAMENTO (MODELO ER) C.1. Tabela “user” Tabela para o armazenamento do cadastro de usuários que acessam o módulo interface de visualização. Atributos: • id; ◦ Tipo: INT; ◦ Descrição: código do usuário; • given_name; ◦ Tipo: VARCHAR(255); ◦ Descrição: primeiro nome; • surname; ◦ Tipo: VARCHAR(255); ◦ Descrição: sobrenome; • password; ◦ Tipo: CHAR(32); ◦ Descrição: senha do usuário criptografada com hash MD5; • is_admin; ◦ Tipo: BOOLEAN; ◦ Descrição: define se o usuário é administrador ou não; • e-mail; ◦ Tipo: VARCHAR(255); ◦ Descrição: endereço de e-mail. 81 C.2. Tabela “squid_access_log_request” Tabela para o armazenamento dos dados de acesso coletados pelo módulo coletor. Atributos: • id; ◦ Tipo: INT; ◦ Descrição: código identificador do registro de acesso; • timestamp; ◦ Tipo: timestamp; ◦ Descrição: Data e hora do acesso; • response_time; ◦ Tipo: INT; ◦ Descrição: tempo de duração da requisição; • client_adress; ◦ Tipo: VARCHAR(255); ◦ Descrição: endereço IP do cliente que está acessando algum site; • result; ◦ Tipo: VARCHAR(50); ◦ Descrição: resultado do cache (se veio do cache local ou do destino original); • status_code; ◦ Tipo: INT; ◦ Descrição: Código HTTP de retorno; • size; 82 ◦ Tipo: INT; ◦ Descrição: tamanho da requisição pedida; • request_method; ◦ Tipo: VARCHAR(10); ◦ Descrição: método HTTP usado; • uri; ◦ Tipo: TEXT; ◦ Descrição: o endereço web acessado; • user; ◦ Tipo: VARCHAR(255); ◦ Descrição: Nome de usuário, para o caso de a autenticação estiver ativada no Squid; • peering_code; ◦ Tipo: VARCHAR(100); ◦ Descrição: código informando como o servidor com o conteúdo foi alcançado; • peering_host; ◦ Tipo: VARCHAR(50); ◦ Descrição: IP do servidor que forneceu o conteúdo; • content_type; ◦ Tipo: VARCHAR(255); ◦ Descrição: content-type da resposta.