Commit 95e8362da1f66e714ed434e065e9690bc7a80e5e

Authored by Starlone Passos
1 parent 06531db0

Indicador 28 - Enviando quantidade de erro por semana

rn/MdEstatisticasAgendamentoRN.php
1 1 <?
2   -require_once dirname(__FILE__).'/../../../SEI.php';
  2 +require_once dirname(__FILE__) . '/../../../SEI.php';
3 3  
  4 +class MdEstatisticasAgendamentoRN extends InfraRN
  5 +{
4 6  
5   -class MdEstatisticasAgendamentoRN extends InfraRN {
  7 + protected function inicializarObjInfraIBanco() {
  8 + return BancoSEI::getInstance();
  9 + }
6 10  
7   - protected function inicializarObjInfraIBanco(){
8   - return BancoSEI::getInstance();
9   - }
  11 + public function coletarIndicadores() {
  12 + InfraDebug::getInstance()->setBolLigado(true);
  13 + InfraDebug::getInstance()->setBolDebugInfra(false);
  14 + InfraDebug::getInstance()->setBolEcho(false);
  15 + InfraDebug::getInstance()->limpar();
10 16  
11   - public function coletarIndicadores() {
  17 + try {
  18 + $coletor = new MdEstatisticasColetarRN();
  19 + $indicadores = $coletor->coletarIndicadores();
  20 + InfraDebug::getInstance()->gravar('JSON: ' . json_encode($indicadores), InfraLog::$INFORMACAO);
12 21  
13   - InfraDebug::getInstance()->setBolLigado(true);
14   - InfraDebug::getInstance()->setBolDebugInfra(false);
15   - InfraDebug::getInstance()->setBolEcho(false);
16   - InfraDebug::getInstance()->limpar();
  22 + $enviar = new MdEstatisticasEnviarRN();
17 23  
18   - try {
19   - $coletor = new MdEstatisticasColetarRN();
20   - $indicadores = $coletor->coletarIndicadores();
21   - InfraDebug::getInstance()->gravar('JSON: ' . json_encode($indicadores), InfraLog::$INFORMACAO);
  24 + $saida = $enviar->enviarIndicadores($indicadores);
  25 + InfraDebug::getInstance()->gravar('Retorno: ' . json_encode($saida), InfraLog::$INFORMACAO);
22 26  
23   - $enviar = new MdEstatisticasEnviarRN();
  27 + $id = $saida['id'];
24 28  
25   - $saida = $enviar->enviarIndicadores($indicadores);
26   - InfraDebug::getInstance()->gravar('Retorno: ' . json_encode($saida), InfraLog::$INFORMACAO);
  29 + if ($id) {
  30 + $data = $enviar->obterUltimoAcesso();
  31 + InfraDebug::getInstance()->gravar('Data: ' . $data, InfraLog::$INFORMACAO);
27 32  
28   - $id = $saida['id'];
  33 + $acessos = $coletor->obterAcessosUsuarios($data);
  34 + $enviar->enviarAcessos($acessos, $id);
29 35  
30   - $data = $enviar->obterUltimoAcesso();
31   - InfraDebug::getInstance()->gravar('Data: ' . $data, InfraLog::$INFORMACAO);
  36 + $velocidades = $coletor->obterVelocidadePorCidade();
  37 + $enviar->enviarVelocidades($velocidades, $id);
32 38  
33   - $acessos = $coletor->obterAcessosUsuarios($data);
34   - $enviar->enviarAcessos($acessos, $id);
35   -
36   - $velocidades = $coletor->obterVelocidadePorCidade();
37   - $enviar->enviarVelocidades($velocidades, $id);
38   -
39   - $sistemasOperacionaisUsuarios = $coletor->obterSistemasOperacionaisUsuarios();
40   - $enviar->enviarSistemasUsuarios($sistemasOperacionaisUsuarios, $id);
41   -
42   - $navegadores = $coletor->obterNavegadores();
43   - $enviar->enviarNavegadores($navegadores, $id);
  39 + $sistemasOperacionaisUsuarios = $coletor->obterSistemasOperacionaisUsuarios();
  40 + $enviar->enviarSistemasUsuarios($sistemasOperacionaisUsuarios, $id);
44 41  
45   - LogSEI::getInstance()->gravar(InfraDebug::getInstance()->getStrDebug(),InfraLog::$INFORMACAO);
  42 + $navegadores = $coletor->obterNavegadores();
  43 + $enviar->enviarNavegadores($navegadores, $id);
46 44  
47   - } catch(Exception $e) {
48   - InfraDebug::getInstance()->setBolLigado(false);
49   - InfraDebug::getInstance()->setBolDebugInfra(false);
50   - InfraDebug::getInstance()->setBolEcho(false);
51   - throw new InfraException('Erro processando estatísticas do sistema.',$e);
52   - }
53   - }
  45 + $logs = $coletor->obterQuantidadeLogErro();
  46 + $enviar->enviarLogsErro($logs, $id);
  47 + }
54 48  
  49 + LogSEI::getInstance()->gravar(InfraDebug::getInstance()->getStrDebug(), InfraLog::$INFORMACAO);
  50 + } catch (Exception $e) {
  51 + InfraDebug::getInstance()->setBolLigado(false);
  52 + InfraDebug::getInstance()->setBolDebugInfra(false);
  53 + InfraDebug::getInstance()->setBolEcho(false);
  54 + throw new InfraException('Erro processando estatísticas do sistema.', $e);
  55 + }
  56 + }
55 57 }
56 58 ?>
... ...
rn/MdEstatisticasColetarRN.php
1 1 <?
2   -require_once dirname(__FILE__).'/../../../SEI.php';
3   -
4   -
5   -class MdEstatisticasColetarRN extends InfraRN {
6   -
7   - public function __construct(){
8   - parent::__construct();
9   - }
10   -
11   - protected function inicializarObjInfraIBanco(){
12   - return BancoSEI::getInstance();
13   - }
14   -
15   - public function coletarIndicadores() {
16   -
17   - try {
18   -
19   - $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
20   - $orgaoSigla = $objConfiguracaoSEI->getValor('MdEstatisticas','sigla', false, '');
21   -
22   - $ind = array();
23   -
24   - $ind['dataColeta'] = $this->obterDataColeta();
25   - $ind['orgaoSigla'] = $orgaoSigla;
26   - $ind['seiVersao'] = $this->obterVersaoSEI();
27   - $ind['phpVersao'] = $this->obterVersaoPHP();
28   - $ind['memcachedVersao'] = $this->obterVersaoMemcached();
29   - $ind['solrVersao'] = $this->obterVersaoSolr();
30   - $ind['protocolo'] = $this->obterProtocolo();
31   - $ind['quantidadeUnidades'] = $this->obterQuantidadeUnidades();
32   - $ind['quantidadeProcedimentos'] = $this->obterQuantidadeProcessosAdministrativos();
33   - $ind['quantidadeUsuarios'] = $this->obterQuantidadeUsuarios();
34   - $ind['quantidadeDocumentosInternos'] = $this->obterQuantidadeDocumentosInternos();
35   - $ind['quantidadeDocumentosExternos'] = $this->obterQuantidadeDocumentosExternos();
36   - $ind['quantidadeMemoria'] = $this->obterUsoMemoria();
37   - $ind['porcentagemCPU'] = $this->obterUsoCPU();
38   - $ind['espacoDiscoUsado'] = $this->obterEspacoDisco();
39   - $ind['estrategiaCessao'] = $this->obterEstrategiaCessao();
40   - $ind['tamanhoDatabase'] = $this->obterTamanhoDataBase();
41   - $ind['bancoSei'] = $this->obterTipoSGBD();
42   - $ind['bancoVersao'] = $this->obterBancoVersao();
43   - $ind['servidorAplicacao'] = $this->obterServidorAplicacao();
44   - $ind['sistemaOperacional'] = $this->obterSistemaOperacional();
45   - $ind['sistemaOperacionalDetalhado'] = $this->obterSistemaOperacionalDetalhado();
46   - $ind['tamanhoFilesystem'] = $this->obterTamanhoFileSystem();
47   - $ind['tabelasTamanhos'] = $this->obterTamanhoTabelas();
48   - $ind['modulos'] = $this->obterPlugins();
49   - $ind['extensoes'] = $this->obterQuantidadeDocumentosExternosPorExtensao();
50   - $ind['anexosTamanhos'] = $this->obterTamanhoDocumentosExternos();
51   -
52   - InfraDebug::getInstance()->gravar('Ind: ' . json_encode($ind), InfraLog::$INFORMACAO);
53   -
54   - return $ind;
55   -
56   - } catch(Exception $e) {
57   - InfraDebug::getInstance()->setBolLigado(false);
58   - InfraDebug::getInstance()->setBolDebugInfra(false);
59   - InfraDebug::getInstance()->setBolEcho(false);
60   - throw new InfraException('Erro processando estatísticas do sistema.',$e);
61   - }
62   - }
63   -
64   - private function obterVersaoSEI(){
65   - InfraDebug::getInstance()->gravar('SEI01 - Versão SEI: ' . SEI_VERSAO, InfraLog::$INFORMACAO);
66   - return SEI_VERSAO;
67   - }
68   -
69   - private function obterVersaoPHP(){
70   - InfraDebug::getInstance()->gravar('SEI21 - Versão PHP: ' . phpversion(), InfraLog::$INFORMACAO);
71   - return phpversion();
72   - }
73   -
74   - private function getDirectorySize($path){
75   - $bytestotal = 0;
76   - $path = realpath($path);
77   - if($path!==false){
78   - foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
79   - $bytestotal += $object->getSize();
80   - }
81   - }
82   - return $bytestotal;
83   - }
84   -
85   - private function obterTamanhoFileSystem(){
86   - $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
87   - if ($objConfiguracaoSEI->isSetValor('SEI', 'RepositorioArquivos')){
88   - $diretorio = $objConfiguracaoSEI->getValor('SEI','RepositorioArquivos');
89   - $tamanho = $this->getDirectorySize($diretorio);
90   -
91   - InfraDebug::getInstance()->gravar('SEI02 - Diretorio: ' . $diretorio, InfraLog::$INFORMACAO);
92   - InfraDebug::getInstance()->gravar('SEI02 - Tamanho File System: ' . $tamanho, InfraLog::$INFORMACAO);
93   - }
94   - return $tamanho;
95   - }
96   -
97   - private function obterPlugins(){
98   - global $SEI_MODULOS;
99   - $lista = array();
100   - foreach($SEI_MODULOS as $strModulo => $seiModulo){
101   - $result = array(
102   - 'nome' => $strModulo,
103   - 'versao' => $seiModulo->getVersao()
104   - );
105   - array_push($lista, $result);
106   - }
107   -
108   - InfraDebug::getInstance()->gravar('SEI03 - Plugins: ' . json_encode($lista), InfraLog::$INFORMACAO);
109   - return $lista;
110   - }
111   -
112   - private function obterQuantidadeUnidades(){
113   -
114   - $objUnidadeRN = new UnidadeRN();
115   - $numQuantidadeUnidades = $objUnidadeRN->contarRN0128(new UnidadeDTO());
116   -
117   - InfraDebug::getInstance()->gravar('SEI11 - Quantidade Unidades: ' . $numQuantidadeUnidades, InfraLog::$INFORMACAO);
118   - return $numQuantidadeUnidades;
119   - }
120   -
121   - private function obterTamanhoTotalDocumentosExternos(){
122   -
123   - $query = "select sum(tamanho) as tamanho from anexo where sin_ativo = 'S'";
124   - $rs = BancoSEI::getInstance()->consultarSql($query);
125   - $tamanho = (count($rs) && isset($rs[0]['tamanho'])) ? $rs[0]['tamanho'] : 0;
126   -
127   - InfraDebug::getInstance()->gravar('SEI12 - Tamanho Documentos Externos: ' . $tamanho, InfraLog::$INFORMACAO);
128   - return $tamanho;
129   - }
130   -
131   - private function obterQuantidadeUsuarios(){
132   -
133   - $query = "SELECT COUNT(*) as quantidade FROM usuario WHERE sin_ativo = 'S'";
134   - $rs = BancoSEI::getInstance()->consultarSql($query);
135   - $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
136   -
137   - InfraDebug::getInstance()->gravar('SEI09 - Quantidade de usuários: ' . $quantidade, InfraLog::$INFORMACAO);
138   - return $quantidade;
139   - }
140   -
141   - private function obterProtocolo(){
142   - $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
143   - if ($objConfiguracaoSEI->isSetValor('SessaoSEI', 'https')){
144   - $temHTTPS = $objConfiguracaoSEI->getValor('SessaoSEI', 'https');
145   - $protocolo = 'HTTP';
146   - if ($temHTTPS) {
147   - $protocolo = 'HTTPS';
148   - }
149   - InfraDebug::getInstance()->gravar('SEI12 - Protocolo: ' . $protocolo, InfraLog::$INFORMACAO);
150   - return $protocolo;
151   - }
152   - }
153   -
154   - private function obterQuantidadeProcessosAdministrativos(){
155   - $query = "select count(*) as quantidade from procedimento";
156   - $rs = BancoSEI::getInstance()->consultarSql($query);
157   - $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
158   -
159   - InfraDebug::getInstance()->gravar('SEI06 - Quantidade de Processos Administrativos: ' . $quantidade, InfraLog::$INFORMACAO);
160   - return $quantidade;
161   - }
162   -
163   - private function obterTipoSGBD(){
164   - $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
165   - $sgbd = $objConfiguracaoSEI->getValor('BancoSEI','Tipo', false, '');
166   - InfraDebug::getInstance()->gravar('SEI02 - SGBD: ' . $sgbd, InfraLog::$INFORMACAO);
167   - return $sgbd;
168   - }
169   -
170   - private function obterQuantidadeDocumentosInternos(){
171   - $query = "SELECT COUNT(*) as quantidade FROM documento WHERE STA_DOCUMENTO = 'I'";
172   - $rs = BancoSEI::getInstance()->consultarSql($query);
173   - $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
174   -
175   - InfraDebug::getInstance()->gravar('SEI05 - Quantidade de documentos internos: ' . $quantidade, InfraLog::$INFORMACAO);
176   - return $quantidade;
177   - }
178   -
179   - private function obterQuantidadeDocumentosExternos(){
180   - $query = "SELECT COUNT(*) as quantidade FROM documento WHERE STA_DOCUMENTO = 'X'";
181   - $rs = BancoSEI::getInstance()->consultarSql($query);
182   - $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
183   -
184   - InfraDebug::getInstance()->gravar('SEI05 - Quantidade de documentos externos: ' . $quantidade, InfraLog::$INFORMACAO);
185   - return $quantidade;
186   - }
187   -
188   - private function obterQuantidadeDocumentosExternosPorExtensao(){
189   - $query = "SELECT nome FROM anexo WHERE sin_ativo = 'S'";
190   - $rs = BancoSEI::getInstance()->consultarSql($query);
191   - $extensoes = array();
192   - # Calculando na aplicacao para funcionar independente do banco
193   - foreach($rs as $r) {
194   - $extensao =pathinfo($r['nome'], PATHINFO_EXTENSION);
195   - $qtd = $extensoes[$extensao];
196   - if (!$qtd) {
197   - $qtd = 0;
198   - }
199   - $extensoes[$extensao] = $qtd + 1;
200   - }
201   - $lista = array();
202   - foreach($extensoes as $key => $value) {
203   - $result = array(
204   - 'extensao' => $key,
205   - 'quantidade' => $value
206   - );
207   - array_push($lista, $result);
208   - }
209   -
210   - InfraDebug::getInstance()->gravar('SEI07 - Quantidade de extensoes de documentos externos: ' . json_encode($lista), InfraLog::$INFORMACAO);
211   - return $lista;
212   - }
213   -
214   - private function obterEstrategiaCessao(){
215   - InfraDebug::getInstance()->gravar('SEI24 - Estrategia de armazenamento de cessao: ' . ini_get('session.save_handler'), InfraLog::$INFORMACAO);
216   - return ini_get('session.save_handler');
217   - }
218   -
219   - private function obterVersaoMemcached(){
220   - $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
221   - $host = $objConfiguracaoSEI->getValor('CacheSEI','Servidor', false, '');
222   - $porta = $objConfiguracaoSEI->getValor('CacheSEI','Porta', false, '');
223   -
224   - $memcache = new Memcache;
225   - $memcache->connect($host, $porta);
226   - $versao = $memcache->getVersion();
227   -
228   - InfraDebug::getInstance()->gravar('SEI23 - Versão memcached: ' . $versao, InfraLog::$INFORMACAO);
229   - return $versao;
230   - }
231   -
232   - private function obterTamanhoDatabase(){
233   - $sgbd = $this->obterTipoSGBD();
234   - $query = '';
235   - if ($sgbd == 'MySql') {
236   - $query = "SELECT table_schema, SUM(data_length + index_length) as tamanho FROM information_schema.TABLES WHERE table_schema = 'sei' GROUP BY table_schema";
237   - } elseif ($sgbd == 'SqlServer') {
238   - $query = "SELECT SUM(Total_Pages * 8 * 1000) As tamanho FROM sys.partitions As P INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id INNER JOIN sys.tables t on t.object_id = p.object_id";
239   - } elseif ($sgbd == 'Oracle') {
240   - $query = "";
241   - }
242   - $rs = array();
243   - if($query) {
244   - $rs = BancoSEI::getInstance()->consultarSql($query);
245   - }
246   - $tamanho = (count($rs) && isset($rs[0]['tamanho'])) ? $rs[0]['tamanho'] : 0;
247   -
248   - InfraDebug::getInstance()->gravar('SEI03 - Tamanho do SGBD: ' . $tamanho, InfraLog::$INFORMACAO);
249   - return $tamanho;
250   - }
251   -
252   - private function obterTamanhoTabelas(){
253   - $sgbd = $this->obterTipoSGBD();
254   - $query = '';
255   - if ($sgbd == 'MySql') {
256   - $query = "SELECT table_name as tabela, data_length + index_length as tamanho FROM information_schema.TABLES WHERE table_schema = 'sei'";
257   - } elseif ($sgbd == 'SqlServer') {
258   - $query = "" .
259   - " SELECT t.name as tabela, SUM(Total_Pages * 8 * 1000) As tamanho " .
260   - " FROM sys.partitions As P " .
261   - " INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id " .
262   - " INNER JOIN sys.tables t on t.object_id = p.object_id " .
263   - " GROUP BY t.name ORDER BY t.name";
264   - } elseif ($sgbd == 'Oracle') {
265   - $query = "";
266   - }
267   - $tabelas = array();
268   - if($query) {
269   - $tabelas = BancoSEI::getInstance()->consultarSql($query);
270   - }
271   -
272   - InfraDebug::getInstance()->gravar('SEI15 - Tamanho das tabelas: ' . json_encode($tabelas), InfraLog::$INFORMACAO);
273   - return $tabelas;
274   - }
275   -
276   -
277   - private function obterVersaoSolr(){
278   - $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
279   - $url = $objConfiguracaoSEI->getValor('Solr','Servidor', false, 'http://localhost:8983/solr');
280   - $url = $url . '/admin/info/system?wt=json';
281   -
282   - $ch = curl_init();
283   - curl_setopt($ch, CURLOPT_URL, $url);
284   - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
285   - $output = curl_exec($ch);
286   - $json = json_decode($output, true);
287   - $versao = $json['lucene']['lucene-spec-version'];
288   - InfraDebug::getInstance()->gravar('SEI22 - Versao Solr: ' . $versao, InfraLog::$INFORMACAO);
289   - return $versao;
290   - }
291   -
292   - private function obterServidorAplicacao(){
293   - $versao = $_SERVER['SERVER_SOFTWARE'];
294   - InfraDebug::getInstance()->gravar('SEI20 - Quantidade de servidores de aplicação e suas versões: ' . $versao, InfraLog::$INFORMACAO);
295   - return $versao;
296   - }
297   -
298   - private function obterSistemaOperacional(){
299   - $so = PHP_OS;
300   - $versao = $_SERVER['SERVER_SOFTWARE'];
301   - InfraDebug::getInstance()->gravar('SEI17 - Quantidade de Sistemas Operacionais: ' . $so, InfraLog::$INFORMACAO);
302   - return $so;
303   - }
304   -
305   - private function obterSistemaOperacionalDetalhado(){
306   - $so = php_uname();
307   - $versao = $_SERVER['SERVER_SOFTWARE'];
308   - InfraDebug::getInstance()->gravar('SEI17 - Quantidade de Sistemas Operacionais (Detalhado): ' . $so, InfraLog::$INFORMACAO);
309   - return $so;
310   - }
311   -
312   - private function obterDataColeta(){
313   - $dataColeta = date (DATE_ATOM);
314   - InfraDebug::getInstance()->gravar('SEI29 - Periodicidade do envio - Data da coleta: ' . $dataColeta, InfraLog::$INFORMACAO);
315   - return $dataColeta;
316   - }
317   -
318   - private function obterTamanhoDocumentosExternos(){
319   - $resultado = array();
320   - # 0MB - !MB
321   - $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 0 AND tamanho < 1000";
322   - $rs = BancoSEI::getInstance()->consultarSql($query);
323   - $resultado[0] = array(
324   - 'tamanho' => '0MB - 1MB',
325   - 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
326   - );
327   -
328   - # 1MB - 10MB
329   - $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 1000 AND tamanho < 10000";
330   - $rs = BancoSEI::getInstance()->consultarSql($query);
331   - $resultado[1] = array(
332   - 'tamanho' => '1MB - 10MB',
333   - 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
334   - );
335   -
336   - # 10MB - 100MB
337   - $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 10000 AND tamanho < 100000";
338   - $rs = BancoSEI::getInstance()->consultarSql($query);
339   - $resultado[2] = array(
340   - 'tamanho' => '10MB - 100MB',
341   - 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
342   - );
343   -
344   - # > 100MB
345   - $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 100000";
346   - $rs = BancoSEI::getInstance()->consultarSql($query);
347   - $resultado[3] = array(
348   - 'tamanho' => 'Maior que 100MB',
349   - 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
350   - );
351   -
352   - InfraDebug::getInstance()->gravar('SEI11 - Tamanho dos documentos externos: ' . json_encode($resultado), InfraLog::$INFORMACAO);
353   - return $resultado;
354   - }
355   -
356   - private function obterUsoMemoria(){
357   - $memoria = memory_get_usage();
358   - InfraDebug::getInstance()->gravar('SEI18 - Quantidade de byte de uso de memoria: ' . json_encode($memoria), InfraLog::$INFORMACAO);
359   - return $memoria;
360   - }
361   -
362   - private function obterUsoCPU(){
363   - $load = sys_getloadavg();
364   - $uso = null;
365   - if ($load) {
366   - $uso = $load[0];
367   - }
368   - InfraDebug::getInstance()->gravar('SEI18 - Porcentagem de uso de CPU: ' . json_encode($uso), InfraLog::$INFORMACAO);
369   - return $uso;
370   - }
371   -
372   - private function obterEspacoDisco() {
373   - $ds = null;
374   - if(php_uname('s')=='Windows NT') {
375   - $unidade = substr($_SERVER['DOCUMENT_ROOT'], 0, 2);
376   - if (!$unidade) {
377   - $unidade = 'C:';
378   - }
379   - } else {
380   - $unidade = "/";
381   - }
382   - $total = disk_total_space($unidade);
383   - $free = disk_free_space($unidade);
384   - $ds = $total - $free;
385   - InfraDebug::getInstance()->gravar('SEI18 - Espaco utilizado do disco: ' . json_encode($ds), InfraLog::$INFORMACAO);
386   - return $ds;
387   - }
388   -
389   - private function obterBancoVersao(){
390   - $sgbd = $this->obterTipoSGBD();
391   - $query = '';
392   - if ($sgbd == 'MySql') {
393   - $query = "SELECT version() as versao";
394   - } elseif ($sgbd == 'SqlServer') {
395   - $query = "SELECT SERVERPROPERTY('productversion') as versao";
396   - } elseif ($sgbd == 'Oracle') {
397   - $query = "select version AS versao from product_component_version WHERE product LIKE 'Oracle%'";
398   - }
399   - $rs = array();
400   - if ($query) {
401   - $rs = BancoSEI::getInstance()->consultarSql($query);
402   - }
403   - $versao = (count($rs) && isset($rs[0]['versao'])) ? $rs[0]['versao'] : null;
404   - InfraDebug::getInstance()->gravar('SEI02 - Versao do SGBD: ' . $versao, InfraLog::$INFORMACAO);
405   - return $versao;
406   - }
407   -
408   - public function obterVelocidadePorCidade(){
409   - $query = "
  2 +require_once dirname(__FILE__) . '/../../../SEI.php';
  3 +
  4 +class MdEstatisticasColetarRN extends InfraRN
  5 +{
  6 +
  7 + public function __construct() {
  8 + parent::__construct();
  9 + }
  10 +
  11 + protected function inicializarObjInfraIBanco() {
  12 + return BancoSEI::getInstance();
  13 + }
  14 +
  15 + public function coletarIndicadores() {
  16 + try {
  17 +
  18 + $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
  19 + $orgaoSigla = $objConfiguracaoSEI->getValor('MdEstatisticas', 'sigla', false, '');
  20 +
  21 + $ind = array();
  22 +
  23 + $ind['dataColeta'] = $this->obterDataColeta();
  24 + $ind['orgaoSigla'] = $orgaoSigla;
  25 + $ind['seiVersao'] = $this->obterVersaoSEI();
  26 + $ind['phpVersao'] = $this->obterVersaoPHP();
  27 + $ind['memcachedVersao'] = $this->obterVersaoMemcached();
  28 + $ind['solrVersao'] = $this->obterVersaoSolr();
  29 + $ind['protocolo'] = $this->obterProtocolo();
  30 + $ind['quantidadeUnidades'] = $this->obterQuantidadeUnidades();
  31 + $ind['quantidadeProcedimentos'] = $this->obterQuantidadeProcessosAdministrativos();
  32 + $ind['quantidadeUsuarios'] = $this->obterQuantidadeUsuarios();
  33 + $ind['quantidadeDocumentosInternos'] = $this->obterQuantidadeDocumentosInternos();
  34 + $ind['quantidadeDocumentosExternos'] = $this->obterQuantidadeDocumentosExternos();
  35 + $ind['quantidadeMemoria'] = $this->obterUsoMemoria();
  36 + $ind['porcentagemCPU'] = $this->obterUsoCPU();
  37 + $ind['espacoDiscoUsado'] = $this->obterEspacoDisco();
  38 + $ind['estrategiaCessao'] = $this->obterEstrategiaCessao();
  39 + $ind['tamanhoDatabase'] = $this->obterTamanhoDataBase();
  40 + $ind['bancoSei'] = $this->obterTipoSGBD();
  41 + $ind['bancoVersao'] = $this->obterBancoVersao();
  42 + $ind['servidorAplicacao'] = $this->obterServidorAplicacao();
  43 + $ind['sistemaOperacional'] = $this->obterSistemaOperacional();
  44 + $ind['sistemaOperacionalDetalhado'] = $this->obterSistemaOperacionalDetalhado();
  45 + $ind['tamanhoFilesystem'] = $this->obterTamanhoFileSystem();
  46 + $ind['tabelasTamanhos'] = $this->obterTamanhoTabelas();
  47 + $ind['modulos'] = $this->obterPlugins();
  48 + $ind['extensoes'] = $this->obterQuantidadeDocumentosExternosPorExtensao();
  49 + $ind['anexosTamanhos'] = $this->obterTamanhoDocumentosExternos();
  50 +
  51 + InfraDebug::getInstance()->gravar('Ind: ' . json_encode($ind), InfraLog::$INFORMACAO);
  52 +
  53 + return $ind;
  54 + } catch (Exception $e) {
  55 + InfraDebug::getInstance()->setBolLigado(false);
  56 + InfraDebug::getInstance()->setBolDebugInfra(false);
  57 + InfraDebug::getInstance()->setBolEcho(false);
  58 + throw new InfraException('Erro processando estatísticas do sistema.', $e);
  59 + }
  60 + }
  61 +
  62 + private function obterVersaoSEI() {
  63 + return SEI_VERSAO;
  64 + }
  65 +
  66 + private function obterVersaoPHP() {
  67 + return phpversion();
  68 + }
  69 +
  70 + private function getDirectorySize($path) {
  71 + $bytestotal = 0;
  72 + $path = realpath($path);
  73 + if ($path !== false) {
  74 + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object) {
  75 + $bytestotal += $object->getSize();
  76 + }
  77 + }
  78 + return $bytestotal;
  79 + }
  80 +
  81 + private function obterTamanhoFileSystem() {
  82 + $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
  83 + if ($objConfiguracaoSEI->isSetValor('SEI', 'RepositorioArquivos')) {
  84 + $diretorio = $objConfiguracaoSEI->getValor('SEI', 'RepositorioArquivos');
  85 + $tamanho = $this->getDirectorySize($diretorio);
  86 + }
  87 + return $tamanho;
  88 + }
  89 +
  90 + private function obterPlugins() {
  91 + global $SEI_MODULOS;
  92 + $lista = array();
  93 + foreach ($SEI_MODULOS as $strModulo => $seiModulo) {
  94 + $result = array(
  95 + 'nome' => $strModulo,
  96 + 'versao' => $seiModulo->getVersao()
  97 + );
  98 + array_push($lista, $result);
  99 + }
  100 +
  101 + InfraDebug::getInstance()->gravar('SEI03 - Plugins: ' . json_encode($lista), InfraLog::$INFORMACAO);
  102 + return $lista;
  103 + }
  104 +
  105 + private function obterQuantidadeUnidades() {
  106 + $objUnidadeRN = new UnidadeRN();
  107 + $numQuantidadeUnidades = $objUnidadeRN->contarRN0128(new UnidadeDTO());
  108 +
  109 + InfraDebug::getInstance()->gravar('SEI11 - Quantidade Unidades: ' . $numQuantidadeUnidades, InfraLog::$INFORMACAO);
  110 + return $numQuantidadeUnidades;
  111 + }
  112 +
  113 + private function obterTamanhoTotalDocumentosExternos() {
  114 + $query = "select sum(tamanho) as tamanho from anexo where sin_ativo = 'S'";
  115 + $rs = BancoSEI::getInstance()->consultarSql($query);
  116 + $tamanho = (count($rs) && isset($rs[0]['tamanho'])) ? $rs[0]['tamanho'] : 0;
  117 +
  118 + InfraDebug::getInstance()->gravar('SEI12 - Tamanho Documentos Externos: ' . $tamanho, InfraLog::$INFORMACAO);
  119 + return $tamanho;
  120 + }
  121 +
  122 + private function obterQuantidadeUsuarios() {
  123 + $query = "SELECT COUNT(*) as quantidade FROM usuario WHERE sin_ativo = 'S'";
  124 + $rs = BancoSEI::getInstance()->consultarSql($query);
  125 + $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
  126 +
  127 + InfraDebug::getInstance()->gravar('SEI09 - Quantidade de usuários: ' . $quantidade, InfraLog::$INFORMACAO);
  128 + return $quantidade;
  129 + }
  130 +
  131 + private function obterProtocolo() {
  132 + $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
  133 + if ($objConfiguracaoSEI->isSetValor('SessaoSEI', 'https')) {
  134 + $temHTTPS = $objConfiguracaoSEI->getValor('SessaoSEI', 'https');
  135 + $protocolo = 'HTTP';
  136 + if ($temHTTPS) {
  137 + $protocolo = 'HTTPS';
  138 + }
  139 + InfraDebug::getInstance()->gravar('SEI12 - Protocolo: ' . $protocolo, InfraLog::$INFORMACAO);
  140 + return $protocolo;
  141 + }
  142 + }
  143 +
  144 + private function obterQuantidadeProcessosAdministrativos() {
  145 + $query = "select count(*) as quantidade from procedimento";
  146 + $rs = BancoSEI::getInstance()->consultarSql($query);
  147 + $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
  148 +
  149 + InfraDebug::getInstance()->gravar('SEI06 - Quantidade de Processos Administrativos: ' . $quantidade, InfraLog::$INFORMACAO);
  150 + return $quantidade;
  151 + }
  152 +
  153 + private function obterTipoSGBD() {
  154 + $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
  155 + $sgbd = $objConfiguracaoSEI->getValor('BancoSEI', 'Tipo', false, '');
  156 + InfraDebug::getInstance()->gravar('SEI02 - SGBD: ' . $sgbd, InfraLog::$INFORMACAO);
  157 + return $sgbd;
  158 + }
  159 +
  160 + private function obterQuantidadeDocumentosInternos() {
  161 + $query = "SELECT COUNT(*) as quantidade FROM documento WHERE STA_DOCUMENTO = 'I'";
  162 + $rs = BancoSEI::getInstance()->consultarSql($query);
  163 + $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
  164 +
  165 + InfraDebug::getInstance()->gravar('SEI05 - Quantidade de documentos internos: ' . $quantidade, InfraLog::$INFORMACAO);
  166 + return $quantidade;
  167 + }
  168 +
  169 + private function obterQuantidadeDocumentosExternos() {
  170 + $query = "SELECT COUNT(*) as quantidade FROM documento WHERE STA_DOCUMENTO = 'X'";
  171 + $rs = BancoSEI::getInstance()->consultarSql($query);
  172 + $quantidade = (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0;
  173 +
  174 + InfraDebug::getInstance()->gravar('SEI05 - Quantidade de documentos externos: ' . $quantidade, InfraLog::$INFORMACAO);
  175 + return $quantidade;
  176 + }
  177 +
  178 + private function obterQuantidadeDocumentosExternosPorExtensao() {
  179 + $query = "SELECT nome FROM anexo WHERE sin_ativo = 'S'";
  180 + $rs = BancoSEI::getInstance()->consultarSql($query);
  181 + $extensoes = array();
  182 + // Calculando na aplicacao para funcionar independente do banco
  183 + foreach ($rs as $r) {
  184 + $extensao = pathinfo($r['nome'], PATHINFO_EXTENSION);
  185 + $qtd = $extensoes[$extensao];
  186 + if (! $qtd) {
  187 + $qtd = 0;
  188 + }
  189 + $extensoes[$extensao] = $qtd + 1;
  190 + }
  191 + $lista = array();
  192 + foreach ($extensoes as $key => $value) {
  193 + $result = array(
  194 + 'extensao' => $key,
  195 + 'quantidade' => $value
  196 + );
  197 + array_push($lista, $result);
  198 + }
  199 +
  200 + InfraDebug::getInstance()->gravar('SEI07 - Quantidade de extensoes de documentos externos: ' . json_encode($lista), InfraLog::$INFORMACAO);
  201 + return $lista;
  202 + }
  203 +
  204 + private function obterEstrategiaCessao() {
  205 + InfraDebug::getInstance()->gravar('SEI24 - Estrategia de armazenamento de cessao: ' . ini_get('session.save_handler'), InfraLog::$INFORMACAO);
  206 + return ini_get('session.save_handler');
  207 + }
  208 +
  209 + private function obterVersaoMemcached() {
  210 + $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
  211 + $host = $objConfiguracaoSEI->getValor('CacheSEI', 'Servidor', false, '');
  212 + $porta = $objConfiguracaoSEI->getValor('CacheSEI', 'Porta', false, '');
  213 +
  214 + $memcache = new Memcache();
  215 + $memcache->connect($host, $porta);
  216 + $versao = $memcache->getVersion();
  217 +
  218 + InfraDebug::getInstance()->gravar('SEI23 - Versão memcached: ' . $versao, InfraLog::$INFORMACAO);
  219 + return $versao;
  220 + }
  221 +
  222 + private function obterTamanhoDatabase() {
  223 + $sgbd = $this->obterTipoSGBD();
  224 + $query = '';
  225 + if ($sgbd == 'MySql') {
  226 + $query = "SELECT table_schema, SUM(data_length + index_length) as tamanho FROM information_schema.TABLES WHERE table_schema = 'sei' GROUP BY table_schema";
  227 + } elseif ($sgbd == 'SqlServer') {
  228 + $query = "SELECT SUM(Total_Pages * 8 * 1000) As tamanho FROM sys.partitions As P INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id INNER JOIN sys.tables t on t.object_id = p.object_id";
  229 + } elseif ($sgbd == 'Oracle') {
  230 + $query = "";
  231 + }
  232 + $rs = array();
  233 + if ($query) {
  234 + $rs = BancoSEI::getInstance()->consultarSql($query);
  235 + }
  236 + $tamanho = (count($rs) && isset($rs[0]['tamanho'])) ? $rs[0]['tamanho'] : 0;
  237 +
  238 + InfraDebug::getInstance()->gravar('SEI03 - Tamanho do SGBD: ' . $tamanho, InfraLog::$INFORMACAO);
  239 + return $tamanho;
  240 + }
  241 +
  242 + private function obterTamanhoTabelas() {
  243 + $sgbd = $this->obterTipoSGBD();
  244 + $query = '';
  245 + if ($sgbd == 'MySql') {
  246 + $query = "SELECT table_name as tabela, data_length + index_length as tamanho FROM information_schema.TABLES WHERE table_schema = 'sei'";
  247 + } elseif ($sgbd == 'SqlServer') {
  248 + $query = "" . " SELECT t.name as tabela, SUM(Total_Pages * 8 * 1000) As tamanho " . " FROM sys.partitions As P " . " INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id " . " INNER JOIN sys.tables t on t.object_id = p.object_id " . " GROUP BY t.name ORDER BY t.name";
  249 + } elseif ($sgbd == 'Oracle') {
  250 + $query = "";
  251 + }
  252 + $tabelas = array();
  253 + if ($query) {
  254 + $tabelas = BancoSEI::getInstance()->consultarSql($query);
  255 + }
  256 +
  257 + InfraDebug::getInstance()->gravar('SEI15 - Tamanho das tabelas: ' . json_encode($tabelas), InfraLog::$INFORMACAO);
  258 + return $tabelas;
  259 + }
  260 +
  261 + private function obterVersaoSolr() {
  262 + $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
  263 + $url = $objConfiguracaoSEI->getValor('Solr', 'Servidor', false, 'http://localhost:8983/solr');
  264 + $url = $url . '/admin/info/system?wt=json';
  265 +
  266 + $ch = curl_init();
  267 + curl_setopt($ch, CURLOPT_URL, $url);
  268 + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  269 + $output = curl_exec($ch);
  270 + $json = json_decode($output, true);
  271 + $versao = $json['lucene']['lucene-spec-version'];
  272 + InfraDebug::getInstance()->gravar('SEI22 - Versao Solr: ' . $versao, InfraLog::$INFORMACAO);
  273 + return $versao;
  274 + }
  275 +
  276 + private function obterServidorAplicacao() {
  277 + $versao = $_SERVER['SERVER_SOFTWARE'];
  278 + InfraDebug::getInstance()->gravar('SEI20 - Quantidade de servidores de aplicação e suas versões: ' . $versao, InfraLog::$INFORMACAO);
  279 + return $versao;
  280 + }
  281 +
  282 + private function obterSistemaOperacional() {
  283 + $so = PHP_OS;
  284 + InfraDebug::getInstance()->gravar('SEI17 - Quantidade de Sistemas Operacionais: ' . $so, InfraLog::$INFORMACAO);
  285 + return $so;
  286 + }
  287 +
  288 + private function obterSistemaOperacionalDetalhado() {
  289 + $so = php_uname();
  290 + InfraDebug::getInstance()->gravar('SEI17 - Quantidade de Sistemas Operacionais (Detalhado): ' . $so, InfraLog::$INFORMACAO);
  291 + return $so;
  292 + }
  293 +
  294 + private function obterDataColeta() {
  295 + $dataColeta = date(DATE_ATOM);
  296 + InfraDebug::getInstance()->gravar('SEI29 - Periodicidade do envio - Data da coleta: ' . $dataColeta, InfraLog::$INFORMACAO);
  297 + return $dataColeta;
  298 + }
  299 +
  300 + private function obterTamanhoDocumentosExternos() {
  301 + $resultado = array();
  302 + // 0MB - !MB
  303 + $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 0 AND tamanho < 1000";
  304 + $rs = BancoSEI::getInstance()->consultarSql($query);
  305 + $resultado[0] = array(
  306 + 'tamanho' => '0MB - 1MB',
  307 + 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
  308 + );
  309 +
  310 + // 1MB - 10MB
  311 + $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 1000 AND tamanho < 10000";
  312 + $rs = BancoSEI::getInstance()->consultarSql($query);
  313 + $resultado[1] = array(
  314 + 'tamanho' => '1MB - 10MB',
  315 + 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
  316 + );
  317 +
  318 + // 10MB - 100MB
  319 + $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 10000 AND tamanho < 100000";
  320 + $rs = BancoSEI::getInstance()->consultarSql($query);
  321 + $resultado[2] = array(
  322 + 'tamanho' => '10MB - 100MB',
  323 + 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
  324 + );
  325 +
  326 + // > 100MB
  327 + $query = "SELECT count(*) as quantidade FROM anexo WHERE sin_ativo = 'S' AND tamanho >= 100000";
  328 + $rs = BancoSEI::getInstance()->consultarSql($query);
  329 + $resultado[3] = array(
  330 + 'tamanho' => 'Maior que 100MB',
  331 + 'quantidade' => (count($rs) && isset($rs[0]['quantidade'])) ? $rs[0]['quantidade'] : 0
  332 + );
  333 +
  334 + InfraDebug::getInstance()->gravar('SEI11 - Tamanho dos documentos externos: ' . json_encode($resultado), InfraLog::$INFORMACAO);
  335 + return $resultado;
  336 + }
  337 +
  338 + private function obterUsoMemoria() {
  339 + $memoria = memory_get_usage();
  340 + InfraDebug::getInstance()->gravar('SEI18 - Quantidade de byte de uso de memoria: ' . json_encode($memoria), InfraLog::$INFORMACAO);
  341 + return $memoria;
  342 + }
  343 +
  344 + private function obterUsoCPU() {
  345 + $load = sys_getloadavg();
  346 + $uso = null;
  347 + if ($load) {
  348 + $uso = $load[0];
  349 + }
  350 + InfraDebug::getInstance()->gravar('SEI18 - Porcentagem de uso de CPU: ' . json_encode($uso), InfraLog::$INFORMACAO);
  351 + return $uso;
  352 + }
  353 +
  354 + private function obterEspacoDisco() {
  355 + $ds = null;
  356 + if (php_uname('s') == 'Windows NT') {
  357 + $unidade = substr($_SERVER['DOCUMENT_ROOT'], 0, 2);
  358 + if (! $unidade) {
  359 + $unidade = 'C:';
  360 + }
  361 + } else {
  362 + $unidade = "/";
  363 + }
  364 + $total = disk_total_space($unidade);
  365 + $free = disk_free_space($unidade);
  366 + $ds = $total - $free;
  367 + InfraDebug::getInstance()->gravar('SEI18 - Espaco utilizado do disco: ' . json_encode($ds), InfraLog::$INFORMACAO);
  368 + return $ds;
  369 + }
  370 +
  371 + private function obterBancoVersao() {
  372 + $sgbd = $this->obterTipoSGBD();
  373 + $query = '';
  374 + if ($sgbd == 'MySql') {
  375 + $query = "SELECT version() as versao";
  376 + } elseif ($sgbd == 'SqlServer') {
  377 + $query = "SELECT SERVERPROPERTY('productversion') as versao";
  378 + } elseif ($sgbd == 'Oracle') {
  379 + $query = "select version AS versao from product_component_version WHERE product LIKE 'Oracle%'";
  380 + }
  381 + $rs = array();
  382 + if ($query) {
  383 + $rs = BancoSEI::getInstance()->consultarSql($query);
  384 + }
  385 + $versao = (count($rs) && isset($rs[0]['versao'])) ? $rs[0]['versao'] : null;
  386 + InfraDebug::getInstance()->gravar('SEI02 - Versao do SGBD: ' . $versao, InfraLog::$INFORMACAO);
  387 + return $versao;
  388 + }
  389 +
  390 + public function obterVelocidadePorCidade() {
  391 + $query = "
410 392 select d.nome as cidade, e.nome as uf, avg(velocidade) as velocidade
411 393 from velocidade_transferencia a
412 394 join unidade b on b.id_unidade = a.id_unidade
... ... @@ -416,100 +398,101 @@ class MdEstatisticasColetarRN extends InfraRN {
416 398 group by
417 399 d.nome, e.nome
418 400 ";
419   - $rs = BancoSEI::getInstance()->consultarSql($query);
420   - $lista = array();
421   - foreach($rs as $r) {
422   - $result = array(
423   - 'cidade' => utf8_encode($r['cidade']),
424   - 'uf' => utf8_encode($r['uf']),
425   - 'velocidade' => $r['velocidade']
426   - );
427   -
428   - array_push($lista, $result);
429   - }
430   - InfraDebug::getInstance()->gravar('SEI14 - Quantidade de bytes de transferência: ' . json_encode($lista), InfraLog::$INFORMACAO);
431   - return $lista;
432   - }
433   -
434   - public function obterAcessosUsuarios($ultimadata=null){
435   - if ($ultimadata == null) {
436   - $ultimadata = '1900-01-01';
437   - }
438   - $sgbd = $this->obterTipoSGBD();
439   - $query = '';
440   - if ($sgbd == 'MySql') {
441   - $query = "select count(*) as quantidade, date(dth_acesso) as data from infra_navegador where date(dth_acesso) > " . $ultimadata . " group by date(dth_acesso)";
442   - } elseif ($sgbd == 'SqlServer') {
443   - $query = "select count(*) as quantidade, CONVERT(date, dth_acesso) as data from infra_navegador where dth_acesso >= " . $ultimadata . " group by CONVERT(date, dth_acesso)";
444   - } elseif ($sgbd == 'Oracle') {
445   - $query = "select count(*) as quantidade, to_char(dth_acesso,'YYYY-MM-DD') AS data from infra_navegador where dth_acesso >= date " . $ultimadata . " group by to_char(dth_acesso,'YYYY-MM-DD')";
446   - }
447   -
448   - $rs = array();
449   - if($query) {
450   - $rs = BancoSEI::getInstance()->consultarSql($query);
451   - }
452   - InfraDebug::getInstance()->gravar('SEI27 - Quantidade de acessos por dia: ' . json_encode($rs), InfraLog::$INFORMACAO);
453   - return $rs;
454   - }
455   -
456   - public function obterSistemasOperacionaisUsuarios(){
457   - $sgbd = $this->obterTipoSGBD();
458   - if ($sgbd == 'Oracle') {
459   - $query = "select distinct to_char(user_agent) as nome from infra_auditoria where user_agent is not null";
460   - } else {
461   - $query = "select distinct user_agent as nome from infra_auditoria where user_agent is not null";
462   - }
463   - $sistemas = BancoSEI::getInstance()->consultarSql($query);
464   -
465   - $lista = array();
466   - foreach($sistemas as $r) {
467   - $texto = $r['nome'];
468   - $inicio = strpos($texto, '(');
469   - if ($inicio !== false) {
470   - $fim = strpos($texto, ')', $inicio);
471   - $nome = substr($texto, $inicio + 1, $fim - $inicio -1);
472   - array_push($lista, $nome);
473   - }
474   - }
475   - $lista = array_unique($lista);
476   -
477   - $sistemas = array();
478   - foreach($lista as $n) {
479   - $result = array('nome'=>$n);
480   - array_push($sistemas, $result);
481   - }
482   -
483   - InfraDebug::getInstance()->gravar('SEI26 - Sistemas Operacionais dos Clientes: ' . json_encode($sistemas), InfraLog::$INFORMACAO);
484   - return $sistemas;
485   - }
486   -
487   - public function obterNavegadores(){
488   - $query = "select count(*) as quantidade, identificacao as nome, versao from infra_navegador group by identificacao,versao";
489   - $rs = BancoSEI::getInstance()->consultarSql($query);
490   - $lista = array();
491   - foreach ($rs as $r) {
492   - $result = array(
493   - 'nome' => utf8_encode($r['nome']),
494   - 'quantidade' => $r['quantidade'],
495   - 'versao' => $r['versao']
496   - );
497   - array_push($lista, $result);
498   - }
499   -
500   - InfraDebug::getInstance()->gravar('SEI13 - Quantidade de Navegadores: ' . json_encode($lista), InfraLog::$INFORMACAO);
501   - return $lista;
502   - }
503   -
504   - public function obterQuantidadeRecurso() {
505   - $query = "SELECT year(dth_acesso) as ano, month(dth_acesso) as mes, recurso, count(*) as quantidade FROM sei.infra_auditoria group by 1, 2, 3 order by 1, 2, 3";
506   - return BancoSEI::getInstance()->consultarSql($query);
507   - }
508   -
509   - public function obterQuantidadeLogErro() {
510   - $query = "select year(dth_log) ano, month(dth_log) mes, week(dth_log) semana, count(*) as quantidade from sei.infra_log where sta_tipo = 'E' group by 1, 2, 3";
511   - return BancoSEI::getInstance()->consultarSql($query);
512   - }
513   -
  401 + $rs = BancoSEI::getInstance()->consultarSql($query);
  402 + $lista = array();
  403 + foreach ($rs as $r) {
  404 + $result = array(
  405 + 'cidade' => utf8_encode($r['cidade']),
  406 + 'uf' => utf8_encode($r['uf']),
  407 + 'velocidade' => $r['velocidade']
  408 + );
  409 +
  410 + array_push($lista, $result);
  411 + }
  412 + InfraDebug::getInstance()->gravar('SEI14 - Quantidade de bytes de transferência: ' . json_encode($lista), InfraLog::$INFORMACAO);
  413 + return $lista;
  414 + }
  415 +
  416 + public function obterAcessosUsuarios($ultimadata = null) {
  417 + if ($ultimadata == null) {
  418 + $ultimadata = '1900-01-01';
  419 + }
  420 + $sgbd = $this->obterTipoSGBD();
  421 + $query = '';
  422 + if ($sgbd == 'MySql') {
  423 + $query = "select count(*) as quantidade, date(dth_acesso) as data from infra_navegador where date(dth_acesso) > " . $ultimadata . " group by date(dth_acesso)";
  424 + } elseif ($sgbd == 'SqlServer') {
  425 + $query = "select count(*) as quantidade, CONVERT(date, dth_acesso) as data from infra_navegador where dth_acesso >= " . $ultimadata . " group by CONVERT(date, dth_acesso)";
  426 + } elseif ($sgbd == 'Oracle') {
  427 + $query = "select count(*) as quantidade, to_char(dth_acesso,'YYYY-MM-DD') AS data from infra_navegador where dth_acesso >= date " . $ultimadata . " group by to_char(dth_acesso,'YYYY-MM-DD')";
  428 + }
  429 +
  430 + $rs = array();
  431 + if ($query) {
  432 + $rs = BancoSEI::getInstance()->consultarSql($query);
  433 + }
  434 + InfraDebug::getInstance()->gravar('SEI27 - Quantidade de acessos por dia: ' . json_encode($rs), InfraLog::$INFORMACAO);
  435 + return $rs;
  436 + }
  437 +
  438 + public function obterSistemasOperacionaisUsuarios() {
  439 + $sgbd = $this->obterTipoSGBD();
  440 + if ($sgbd == 'Oracle') {
  441 + $query = "select distinct to_char(user_agent) as nome from infra_auditoria where user_agent is not null";
  442 + } else {
  443 + $query = "select distinct user_agent as nome from infra_auditoria where user_agent is not null";
  444 + }
  445 + $sistemas = BancoSEI::getInstance()->consultarSql($query);
  446 +
  447 + $lista = array();
  448 + foreach ($sistemas as $r) {
  449 + $texto = $r['nome'];
  450 + $inicio = strpos($texto, '(');
  451 + if ($inicio !== false) {
  452 + $fim = strpos($texto, ')', $inicio);
  453 + $nome = substr($texto, $inicio + 1, $fim - $inicio - 1);
  454 + array_push($lista, $nome);
  455 + }
  456 + }
  457 + $lista = array_unique($lista);
  458 +
  459 + $sistemas = array();
  460 + foreach ($lista as $n) {
  461 + $result = array(
  462 + 'nome' => $n
  463 + );
  464 + array_push($sistemas, $result);
  465 + }
  466 +
  467 + InfraDebug::getInstance()->gravar('SEI26 - Sistemas Operacionais dos Clientes: ' . json_encode($sistemas), InfraLog::$INFORMACAO);
  468 + return $sistemas;
  469 + }
  470 +
  471 + public function obterNavegadores() {
  472 + $query = "select count(*) as quantidade, identificacao as nome, versao from infra_navegador group by identificacao,versao";
  473 + $rs = BancoSEI::getInstance()->consultarSql($query);
  474 + $lista = array();
  475 + foreach ($rs as $r) {
  476 + $result = array(
  477 + 'nome' => utf8_encode($r['nome']),
  478 + 'quantidade' => $r['quantidade'],
  479 + 'versao' => $r['versao']
  480 + );
  481 + array_push($lista, $result);
  482 + }
  483 +
  484 + InfraDebug::getInstance()->gravar('SEI13 - Quantidade de Navegadores: ' . json_encode($lista), InfraLog::$INFORMACAO);
  485 + return $lista;
  486 + }
  487 +
  488 + public function obterQuantidadeRecurso() {
  489 + $query = "SELECT year(dth_acesso) as ano, month(dth_acesso) as mes, recurso, count(*) as quantidade FROM sei.infra_auditoria group by 1, 2, 3 order by 1, 2, 3";
  490 + return BancoSEI::getInstance()->consultarSql($query);
  491 + }
  492 +
  493 + public function obterQuantidadeLogErro() {
  494 + $query = "select year(dth_log) ano, month(dth_log) mes, week(dth_log) semana, count(*) as quantidade from sei.infra_log where sta_tipo = 'E' group by 1, 2, 3";
  495 + return BancoSEI::getInstance()->consultarSql($query);
  496 + }
514 497 }
515 498 ?>
... ...
rn/MdEstatisticasEnviarRN.php
1 1 <?
2   -require_once dirname(__FILE__).'/../../../SEI.php';
  2 +require_once dirname(__FILE__) . '/../../../SEI.php';
3 3  
  4 +class MdEstatisticasEnviarRN extends InfraRN
  5 +{
4 6  
5   -class MdEstatisticasEnviarRN extends InfraRN {
  7 + public function __construct() {
  8 + parent::__construct();
6 9  
7   - public function __construct(){
8   - parent::__construct();
  10 + $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
  11 + $this->url = $objConfiguracaoSEI->getValor('MdEstatisticas', 'url', false, 'http://estatisticas.planejamento.gov.br');
  12 + $this->orgaoSigla = $objConfiguracaoSEI->getValor('MdEstatisticas', 'sigla', false, '');
  13 + }
9 14  
10   - $objConfiguracaoSEI = ConfiguracaoSEI::getInstance();
11   - $this->url = $objConfiguracaoSEI->getValor('MdEstatisticas','url', false, 'http://estatisticas.planejamento.gov.br');
12   - $this->orgaoSigla = $objConfiguracaoSEI->getValor('MdEstatisticas','sigla', false, '');
13   - }
  15 + protected function inicializarObjInfraIBanco() {
  16 + return BancoSEI::getInstance();
  17 + }
14 18  
15   - protected function inicializarObjInfraIBanco(){
16   - return BancoSEI::getInstance();
17   - }
  19 + public function enviarIndicadores($indicadores) {
  20 + return $this->doPost($this->url, $indicadores);
  21 + }
18 22  
19   - public function enviarIndicadores($indicadores) {
20   - return $this->doPost($this->url, $indicadores);
21   - }
  23 + public function obterUltimoAcesso() {
  24 + $data = $this->doGet($this->url . '/ultimoacesso?sigla=' . $this->orgaoSigla, false);
  25 + return date($data);
  26 + }
22 27  
23   - public function obterUltimoAcesso() {
24   - $data = $this->doGet($this->url . '/ultimoacesso?sigla=' . $this->orgaoSigla, false);
25   - return date($data);
26   - }
  28 + public function enviarAcessos($acessos, $id) {
  29 + $url = $this->url . '/acessos';
  30 + InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
  31 + $obj = array(
  32 + id => $id,
  33 + acessosUsuarios => $acessos
  34 + );
  35 + InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
  36 + return $this->doPost($url, $obj, false);
  37 + }
27 38  
28   - public function enviarAcessos($acessos, $id) {
29   - $url = $this->url . '/acessos';
30   - InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
31   - $obj = array(
32   - id => $id,
33   - acessosUsuarios => $acessos
34   - );
35   - InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
36   - return $this->doPost($url, $obj, false);
37   - }
38   -
39   - public function enviarVelocidades($velocidades, $id) {
40   - $url = $this->url . '/velocidades';
41   - InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
42   - $obj = array(
43   - id => $id,
44   - velocidades => $velocidades
45   - );
46   - InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
47   - return $this->doPost($url, $obj, false);
48   - }
49   -
50   - public function enviarSistemasUsuarios($sistemasOperacionaisUsuarios, $id) {
51   - $url = $this->url . '/sistemasoperacionais';
52   - InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
53   - $obj = array(
54   - id => $id,
55   - sistemasOperacionaisUsuarios => $sistemasOperacionaisUsuarios
56   - );
57   - InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
58   - return $this->doPost($url, $obj, false);
59   - }
60   -
61   - public function enviarNavegadores($navegadores, $id) {
62   - $url = $this->url . '/navegadores';
63   - InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
64   - $obj = array(
65   - id => $id,
66   - navegadores => $navegadores
67   - );
68   - InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
69   - return $this->doPost($url, $obj, false);
70   - }
  39 + public function enviarVelocidades($velocidades, $id) {
  40 + $url = $this->url . '/velocidades';
  41 + InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
  42 + $obj = array(
  43 + id => $id,
  44 + velocidades => $velocidades
  45 + );
  46 + InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
  47 + return $this->doPost($url, $obj, false);
  48 + }
71 49  
72   - private function doPost($url, $json, $isjson=true) {
73   - $data = json_encode($json);
74   - $ch = curl_init();
75   - curl_setopt($ch, CURLOPT_URL, $url);
76   - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
77   - curl_setopt($ch, CURLOPT_POST, true);
78   - curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
79   - curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
80   - $output = curl_exec($ch);
81   - curl_close($ch);
  50 + public function enviarSistemasUsuarios($sistemasOperacionaisUsuarios, $id) {
  51 + $url = $this->url . '/sistemasoperacionais';
  52 + InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
  53 + $obj = array(
  54 + id => $id,
  55 + sistemasOperacionaisUsuarios => $sistemasOperacionaisUsuarios
  56 + );
  57 + InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
  58 + return $this->doPost($url, $obj, false);
  59 + }
  60 +
  61 + public function enviarNavegadores($navegadores, $id) {
  62 + $url = $this->url . '/navegadores';
  63 + InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
  64 + $obj = array(
  65 + id => $id,
  66 + navegadores => $navegadores
  67 + );
  68 + InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
  69 + return $this->doPost($url, $obj, false);
  70 + }
82 71  
83   - if ($isjson) {
84   - return json_decode($output, true);
  72 + public function enviarLogsErro($logs, $id) {
  73 + $url = $this->url . '/logserro';
  74 + InfraDebug::getInstance()->gravar('URL: ' . $url, InfraLog::$INFORMACAO);
  75 + $obj = array(
  76 + id => $id,
  77 + logsErro => $logs
  78 + );
  79 + InfraDebug::getInstance()->gravar('URL: ' . json_encode($obj), InfraLog::$INFORMACAO);
  80 + return $this->doPost($url, $obj, false);
85 81 }
86   - return $output;
87   - }
88 82  
89   - private function doGet($url, $isjson=true) {
90   - $ch = curl_init();
91   - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
92   - curl_setopt($ch, CURLOPT_URL, $url);
93   - $output = curl_exec($ch);
94   - curl_close($ch);
  83 + private function doPost($url, $json, $isjson = true) {
  84 + $data = json_encode($json);
  85 + $ch = curl_init();
  86 + curl_setopt($ch, CURLOPT_URL, $url);
  87 + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  88 + curl_setopt($ch, CURLOPT_POST, true);
  89 + curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  90 + 'Content-Type: application/json'
  91 + ));
  92 + curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  93 + $output = curl_exec($ch);
  94 + curl_close($ch);
95 95  
96   - if ($isjson) {
97   - return json_decode($output, true);
  96 + if ($isjson) {
  97 + return json_decode($output, true);
  98 + }
  99 + return $output;
98 100 }
99   - return $output;
100   - }
101 101  
  102 + private function doGet($url, $isjson = true) {
  103 + $ch = curl_init();
  104 + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  105 + curl_setopt($ch, CURLOPT_URL, $url);
  106 + $output = curl_exec($ch);
  107 + curl_close($ch);
  108 +
  109 + if ($isjson) {
  110 + return json_decode($output, true);
  111 + }
  112 + return $output;
  113 + }
102 114 }
103 115 ?>
... ...