Os artigos que publico são para servir de base ao aprendizado.

Existem ferramentas e métodos específicos para este fim de monitoramento com tudo este exemplo, iremos abordar os seguintes assuntos :

 

 --> Criação de tabela & utilização de chave primaria

--> Como podemos utilizar o INFORMATION_SCHEMA..... neste caso INFORMATION_SCHEMA.PROCESSLIST.

--> Criação de PROCEDURE

--> Criação SCHEDULE  & event_scheduler

 

1.) Vamos criar a base para gravação dos acessos.

 

 

CREATE TABLE IF NOT EXISTS `amostragem_acesso` 

(

  `USER` varchar(30) NOT NULL,

  

`HOST` varchar(30) NOT NULL,

  

`DATABASE` varchar(30) NOT NULL,

  

`DATA` datetime NOT NULL

 

-- Uma boa dica e criar ou altere o campo DATA definindo como CURRENT_TIMESTAMP

---- :-)

ALTER TABLE `amostragem_acesso` CHANGE `DATA` `DATA` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;

 

-- Outra boa dica crie uma chave primaria composta evitando duplicidade de registros.

-- Assim economizamosespaco e facilitamos nossa analise de acesso.

------- :-)

ALTER TABLE `amostragem_acesso` DROP PRIMARY KEY, ADD PRIMARY KEY( `USER`, `HOST`, `DATABASE`);

 

 

2.)  Vamos criar a gravação do LOG.

 

-- A gravação do log utilizaremos o INFORMATION_SCHEMA.PROCESSLIST

 

   INSERT INTO `monitoramento`.`amostragem_acesso` (`USER`, `HOST`, `DATABASE`) SELECT USER,HOST,DB FROM INFORMATION_SCHEMA.PROCESSLIST where DB is not null AND HOST!='localhost' AND DB!='monitoramento';

 

   

   

   

   

   

   3.) COMPLICANDO PARA DESCOMPLICAR

 

-- Vamos criar uma procedure que gera um loop para armazenar os acessos, entre no 

   mysql>  CREATE PROCEDURE pega_acesso1()

    -> BEGIN

    -> DECLARE x  INT;

    -> SET x = 1;

    -> WHILE x  <= 50 DO

    ->  INSERT INTO `monitoramento`.`amostragem_acesso` (`USER`, `HOST`, `DATABASE`) SELECT USER,HOST,DB FROM INFORMATION_SCHEMA.PROCESSLIST where DB is not null AND HOST!='localhost' AND DB!='monitoramento';

    -> SET  x = x + 1;

    -> END WHILE;

    -> END$$

Query OK, 0 rows affected (0.01 sec)

  

 

 4.) Agora vamos criar um procedimento que acada 5 minutos pege o log de acesso.

 -- Primeiro vamos ligar o event_scheduel 

 

 SET GLOBAL event_scheduler="ON"

 CREATE EVENT `pega_acesso` ON SCHEDULE EVERY 5 MINUTE STARTS '2018-02-02 16:20:00.000000' ENDS '2018-02-02 18:20:00.000000' ON COMPLETION NOT PRESERVE ENABLE DO call pega_acesso1();

-- Para alteração de tempo de execução de 5 minutos para cada 1 minuto.

DROP EVENT `pega_acesso`CREATE DEFINER=`root`@`localhost` EVENT `pega_acesso` ON SCHEDULE EVERY 1 MINUTE STARTS '2018-02-02 16:20:00' ENDS '2018-02-02 18:20:00' ON COMPLETION NOT PRESERVE ENABLE DO call pega_acesso1()