README 7.68 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
SOBRE
=====

O Sistema Integrado de Monitoramento (SIMMC) é um projeto desenvolvido pelo
Centro de Computação Científica e Software Livre (C3SL) e financiado pelo
Ministério das Comunicações, que tem como objetivo monitorar três grandes
projetos: Telecentros, GESAC e Cidades Digitais.

O SIMMC pode ser separado em três grandes módulos: coleta, armazenamento e
visualização. A coleta se refere aos programas responsáveis por adquirir os
dados dos equipamentos monitorados, o armazenamento é responsável por
consolidar e manter os dados coletados pelo sistema de coleta, além de
prover formas adequadas de dispor estes dados ao sistema de visualização,
que consiste do Portal do SIMMC propriamente dito, com seus gráficos,
relatórios e mapas. Os três módulos serão descritos em mais detalhes em suas
próprias seções neste documento.

COLETA
======

O sistema de coleta é composto por programas que adquirem dados nos
equipamentos monitorados e os enviam para armazenamento no servidor central.

Cada projeto do Ministério das Comunicações é monitorado de forma distinta.
Os telecentros possuem um agente de coleta embarcado no Linux Comunicações,
sistema operacional recomendado para tal finalidade. Este agente é composto
de uma série de scripts shell e programas em C que enviam dados de tráfego
de rede e inventário para o servidor central. O datasid, como é chamado,
possui um repositório e documentação própria, acessível através do link
https://gitlab.c3sl.ufpr.br/minicom/datasid. O servidor central é equipado
com um webservice, que recebe, analisa e armazena os dados recebidos no
sistema de armazenamento. Os arquivos que compõe o webservice estão
localizados no diretório webservice.

As Cidades Digitais atualmente tem seus dados coletados através de um script
instalado no servidor da cidade, que envia os dados de tráfego de rede
sumarizados para o servidor central, que então os insere no banco de dados
através de um segundo script. Os programas envolvidos no processo, assim
como explicação mais detalhada do mesmo, estão presentes no diretório
scripts/digital_city/collect.

As conexões GESAC são monitoradas via SNMP. O script localizado no diretório
scripts/gesac/collect faz as consultas nos roteadores e envia os resultados,
agrupados a cada cinco minutos, para o sistema de armazenamento.


ARMAZENAMENTO
=============

O sistema gerenciador de banco de dados utilizado é o postgresql
(9.3 ou superior). O modelo de armazenamento foi baseado no conceito de
DataWarehouse e consiste em três estágios principais: carregamento,
consolidação e leitura.

O carregamento, também chamado de "staging area" é responsável por receber
de forma eficiente os dados advindos dos sistemas de coleta. São tabelas
simples que não possuem índices ou qualquer tipo de verificação de
integridade.

A consolidação ocorre, geralmente, uma vez ao dia. Seu objetivo é recolher
os dados da região de carregamento e movê-los para suas tabelas definitivas,
onde terão garantidas as características desejáveis a um banco de dados. São
feitas checagens de todos os tipos e os dados que não passam nesse processo
são enviados para as tabelas de dados rejeitados, onde podem ser analisados
e eventualmente corrigidos e reinseridos no sistema.

Junto com o processo de consolidação são criadas tabelas agregativas, que
agrupam os dados em um formato específico de forma a acelerar as consultas
feitas pelo portal. Tabelas agregativas são temporárias e representam um
sumário dos dados atuais presentes no banco, de acordo com as necessidades
de visualização apresentadas pelo portal.

Todo o esquema do banco de dados é apresentado nos arquivos presentes no
diretório database/doc/schema-diagrams. O arquivo database/README contém
mais instruções sobre o funcionamento do banco de dados e processo de
atualização.


VISUALIZAÇÃO
============

A visualização dos dados é feita através do portal web do SIMMC. Todos os
arquivos relacionados ao portal estão no diretório portal.

O portal foi estruturado no modelo cliente/servidor. O cliente foi
desenvolvido utilizando o AngularJS, um framework javascript desenvolvido
pelo Google permite a criação de websites do tipo "single page", que
carregam os elementos da tela sob demanda, tornando a navegação mais
fluída. O AngularJS segue, no cliente, o modelo MVC (model-view-controller)
e é incrementado com a adição de módulos. Todos estes módulos utilizados
pela parte cliente do portal são descritos no arquivo bower.json e
instalados com o comando "bower install".

Os arquivos AngularJS estão localizados no diretório portal/assets/js, com
seus nomes representando a função correspondente no portal. O estilo do site
é feito através de arquivos less, que são compilados para CSS pelo grunt, e
estão localizados em portal/assets/less (um README neste diretório explica o
processo de modificação dos arquivos).

A parte servidor do portal teve como base o nodeJS, plataforma que permite
desenvolvimento de aplicações servidor em javascript. O arquivo
portal/server.js possui o código principal da aplicação, que utiliza os
arquivos em portal/queries e portal/routes para desempenhar suas
atividades.


INSTALAÇÃO
==========

A instalação do SIMMC foi enormemente facilitada pelo script
scripts/helpers/deploy_simmc.sh. Execute este script em um ambiente
exclusivo (como uma máquina virtual) com um Debian (7 ou superior) ou Ubuntu
(12.04 ou superior) e ao final do processo o banco de dados estará instalado
e o Portal acessível pelo navegador.


ÁRVORE DE DIRETÓRIOS
====================

.
├── database
│   ├── create - Arquivos necessários para a criação do banco de dados
│   ├── doc - Arquivos de documentação do banco de dados
│   ├── functions - Funções do banco de dados
│   ├── upgrade - Arquivos de atualização do banco de dados
│   └── view - Views do banco de dados
├── portal - Arquivos relacionados ao website do SIMMC
│   ├── app
│   │   ├── fonts - Fontes utilizadas no portal
│   │   ├── img - Imagens
│   │   └── partials - Arquivos html
│   ├── assets
│   │   ├── js - Arquivos javascript (AngularJS)
│   │   └── less - Arquivos de estilo
│   ├── build - Diretório arquivos finais portal, gerado pelo grunt
│   ├── lib - Bibliotecas para o server.js
│   ├── logs - Arquivos de log do server.js
│   ├── middleware - Bibliotecas para o server.js
│   ├── queries - Consultas utilizadas pelo server.js
│   ├── reports - Arquivos com relatórios jasper
│   │   └── src
│   ├── routes - Definição de rotas para o server.js
│   └── scripts - Scripts auxiliares para o portal
144 145 146 147 148 149 150 151 152
└── scripts - Scripts auxiliares
    ├── alerts - Scripts para gerar alertas periódicos
    ├── apache2 - Configuração do apache2
    ├── database_tasks - Tarefas relacionadas ao banco de dados
    ├── digital_city - Tarefas relacionadas as cidades digitais
    ├── gesac - Tarefas relacionadas ao projeto GESAC
    ├── helpers - Scripts diversos
    ├── init.d - Configuração do serviço simmc e simmc-webservice
    └── openstreetmap - Scripts para criação de um servidor openstreetmap
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168

MAIS DOCUMENTAÇÃO
=================

Você pode encontrar documentação mais específica nos diferentes diretórios
do SIMMC, sempre nos arquivos README. Seguem os caminhos:

scripts/alerts/README
scripts/digital_city/collect/README
scripts/apache2/domains/README
portal/scripts/README
portal/assets/less/README
portal/README
database/upgrade/README
database/README