Limpeza da tabela de logs transacionais
As transações realizadas no sistema são salvas como registros da tabela iLog com o objetivo de auditar, desfazer ou refazer alterações no sistema. Com o tempo, o acesso imediato a logs transacionais muito antigos pode não compensar o espaço ocupado por eles na base de dados. Para resolver isso, o sistema oferece a possibilidade de limpar e arquivar logs que excedam um determinado tempo de retenção configurável.
O processo “Administração do sistema > Auditoria > Limpeza da tabela de log” permite disparar manualmente a limpeza dos logs. No mesmo processo também é possível configurar retenção, agendamento da limpeza e arquivamento dos logs, executar a restauração de logs e visualizar histórico de limpezas efetuadas.
Executar limpeza manualmente
É possível disparar manualmente a limpeza por meio do botão “Executar limpeza”.
Ao final da limpeza, um relatório é exibido listando informações de todos os arquivos que foram gerados. Este relatório inclui:
- Chave do arquivamento.
- Data dos logs.
- Referência: o tipo de log de evento ou as tabelas referentes aos logs naquele arquivo.
- Qtd. registros: a quantidade de registros de log salvos naquele arquivo.
Configurações de limpeza
A página inicial do processo conta com uma grade de configurações de limpeza dos logs. A seguir, explicaremos cada uma das configurações.
Execução da limpeza
Habilitada
Indica se a limpeza de logs está habilitada para aquela base. Caso esteja desabilitada, qualquer limpeza falhará, seja ela manual ou agendada. Vem desabilitada por padrão.
Hora
A hora em que a tarefa agendada diária de limpeza de logs é executada. O padrão é “01:00”. Esta configuração sozinha não realiza o agendamento, sendo necessário configurar também o servidor em que será criada a tarefa. Explicaremos em detalhes a seguir.
Servidor
Determina o servidor em que a limpeza será executada. Os servidores são registros da classe “Servidores” (-1898145089).
Ao definir um servidor, uma tarefa agendada diária de limpeza é automaticamente criada naquele servidor com o nome “Limpeza da tabela iLog” e com a hora definida pelo campo “Hora”. Esta configuração normaliza o agendamento de limpeza de logs para aquele servidor. Portanto, caso já existam uma ou mais tarefas de limpeza criadas, uma delas é reconfigurada e as excedentes são removidas.
Ao limpar este campo, o servidor que estava previamente configurado tem suas tarefas de limpeza removidas. Caso o acesso ao servidor falhe, um alerta é emitido na tela, e caberá ao administrador remover posteriormente a tarefa de forma manual.
Não é necessário configurar um servidor para realizar uma limpeza. O administrador pode deixar este campo vazio e configurar manualmente uma tarefa agendada de limpeza que melhor atenda as necessidades do negócio. Também é possível acessar a base a partir do servidor desejado e disparar manualmente a limpeza utilizando o botão “Executar limpeza” deste processo.
Retenção padrão dos logs em dias
Padrão
A configuração de retenção dos logs determina a quantidade de dias que um registro de log pode permanecer na base antes que seja removido pela limpeza. Este campo define a retenção padrão para todos os logs.
O administrador também pode clicar no botão “Configurar retenção” da grade para uma configuração de retenção mais completa, onde é possível configurar a retenção individualmente para cada classe ou tipo de log do sistema.
Logs de arquivos JAZ
Determina a retenção em dias dos logs de arquivos da VFS do tipo JAZ. A retenção destes arquivos é tratada de forma separada e geralmente é mais curta, pois, via de regra, os JAZ são construídos de forma automática a partir de repositórios que já possuem seu próprio controle de versão.
Configuração de retenção
Ao clicar no botão “Configurar retenção”, o administrador pode acessar a configuração completa de retenção dos logs transacionais. Esta tela do processo possui cinco grades:
- Regras de retenção padrão: repete as configurações de retenção padrão em dias da grade de configurações de limpeza da tela principal.
- Regras de retenção para logs de registros: define retenções específicas por classe do sistema. Retenções configuradas nessa grade sobrescrevem a retenção padrão e são aplicadas a todos os logs de edição, criação e remoção de registros daquela classe e de suas filhas.
- Regras de retenção para logs de eventos: define retenções específicas para tipos de log relativos a eventos não associados à manipulação de registros. São configuráveis nessa grade todos os tipos de log que não sejam de edição, criação ou remoção de registros. Retenções configuradas nessa grade sobrescrevem a retenção padrão.
- Retenção dos logs de alterações de registros: gera uma visualização em forma de árvore da configuração resultante de retenção por classe do sistema. A hierarquia de classes exibida na árvore segue até que todas as classes que definem as tabelas do sistema e todas as que têm uma retenção específica configurada sejam exibidas. As demais classes filhas são podadas para manter uma visualização concisa.
- Retenção dos demais tipos de logs de eventos: gera uma lista com todos os tipos de log do sistema (com exceção de edição, criação e remoção de registro) e sua respectiva configuração de retenção resultante.
Em resumo, esta tela possui uma grade de configurações gerais de retenção, duas grades de configurações específicas (uma que define retenções por classe e outra por tipo de log), e duas grades em que é possível visualizar o resultado completo das configurações de retenção.
As grades de visualização são atualizadas automaticamente à medida que as retenções são editadas.
Configurações de arquivamento
Toda limpeza dos logs de auditoria gera arquivos de backup dos logs que foram limpos. Estes arquivos podem ser posteriormente restaurados para análise. Os registros de log restaurados dessa maneira permanecem na base de dados pelo tempo determinado no momento da restauração, sendo limpos no primeiro arquivamento realizado após a data de validade ser atingida.
Cada arquivo pode guardar mais de um registro de log, mas todos os logs salvos em um arquivo possuem a mesma data de criação original.
O arquivamento é vantajoso, pois logs transacionais muito antigos são raramente utilizados, logo, seu armazenamento em banco é muito caro para o pouco benefício oferecido. Com o arquivamento, o espaço no banco de dados é liberado, e esses registros são armazenados de forma comprimida, podendo ser restaurados para análises pontuais.
A página inicial do processo conta com uma grade de configurações do arquivamento dos logs. A seguir, explicaremos cada uma das configurações.
Armazenamento
Localização
Define se os arquivos de backup dos logs serão salvos em nuvem (Cloud) ou no diretório local do Engine que executou a limpeza (Local). Caso deseje salvar em nuvem, um serviço de armazenamento deve ser configurado.
Serviço de armazenamento
Define o serviço de armazenamento em nuvem onde os arquivos serão salvos. Este serviço é um registro da classe “Armazenamento de objetos” (-1898139353), e pode ser criado no processo “Administração do sistema/Serviços em nuvem/Armazenamento de objetos”. É recomendado criar um serviço destinado apenas ao arquivamento de logs.
Diretório base
Por padrão, os arquivos de log usam a seguinte convenção de nome:
<diretório base>/archived-logs/<tipo de arquivamento>/<chave>/YYYY/MM/DD/<timestamp>_<record count>.backup,
onde:
- Diretório base: caminho do diretório informado neste campo.
- Tipo de arquivamento: “table-class” (para logs de registros) ou “log-type” (para outros tipos de log).
- Chave: classe da tabela (para logs de registros) ou tipo de log (para outros tipos de log).
- Ano, mês e dia (YYYY/MM/DD): correspondem à data de criação original dos logs naquele arquivo.
- Timestamp: momento da criação do arquivo em milissegundos.
- Record count: número de registros de log contidos no arquivo de backup.
Caso o diretório base não seja informado, o caminho relativo dos arquivos iniciará por “archived-logs”.
Retenção
Retenção dos arquivos em dias
Por padrão, os arquivos de backup dos logs permanecem armazenados por tempo indefinido. No entanto, o administrador pode preencher esse campo para definir um tempo máximo de retenção desses arquivos. O tempo é contado a partir da data de arquivamento.
Durante a limpeza, os arquivos que passam desse tempo sofrem uma tentativa de remoção com base nos dados de localização do arquivamento guardados nos eventos do sistema.
Restauração de logs arquivados
O administrador pode acessar a tela de restauração de logs arquivados clicando no botão “Restaurar logs arquivados” da grade.
Buscar eventos de arquivamento
Uma das opções de restauração consiste em realizar uma busca pelos eventos de arquivamento. Esses eventos salvam informações sobre a localização do arquivo, que são usadas pelo processo para tentar encontrar esse arquivo.
Os filtros da busca são:
- Datas inicial e final dos logs: busca arquivos que armazenam logs cuja data de criação original está compreendida entre as datas definidas.
- Tipos de evento: busca arquivos que armazenam logs com os tipos definidos nesse campo. Não são listados tipos de log referentes a manipulação de registros (edição, criação e remoção).
- Tabelas: busca arquivos que armazenam logs referentes a registros que pertencem às tabelas definidas nesse campo. Pode ser refinada por classe.
- Classes: busca arquivos que, entre seus logs armazenados, possuem logs referentes às classes de dados definidas nesse campo. São listadas apenas classes cujos registros são armazenados em uma das tabelas definidas no campo “Tabelas”.
Uma vez definidos os filtros, basta clicar em “Buscar” e esperar que os arquivos a serem restaurados sejam listados na próxima tela.
Enviar arquivos
Outra opção é enviar diretamente do próprio computador os arquivos a serem restaurados. Basta clicar em “Enviar arquivos”, escolher os arquivos no computador e realizar o upload.
Uma vez feito o upload, esses arquivos serão listados na próxima tela. Qualquer que seja o método usado para listar os arquivos, a próxima tela é a mesma.
Período de retenção dos logs restaurados
Na tela que lista os arquivos a serem restaurados, primeiro temos a grade para definir o período de retenção dos logs restaurados. Essa grade possui apenas o campo “Retenção em dias”.
Esse campo define o tempo que um log restaurado deve permanecer no banco de dados antes de ser removido novamente. Logs restaurados estão sujeitos apenas a essa retenção e não são afetados pela configuração de retenção da limpeza de logs. Caso contrário, sempre seriam removidos na próxima limpeza, já que sua data de validade original já foi atingida.
Arquivos a serem restaurados
Essa grade lista todos os arquivos que deveriam ser restaurados de acordo com os filtros de busca ou com os arquivos que foram enviados manualmente. Eventualmente, a localização de um arquivo pode mudar desde que o seu arquivamento foi realizado. Para indicar quais dos arquivos listados foram encontrados na localização indicada, a grade possui um campo booleano “Encontrado”. Apenas arquivos encontrados são considerados para restauração.
A grade também exibe o caminho do arquivo, se foi armazenado localmente ou em nuvem, qual o serviço de armazenamento e a quantidade de registros que possui.
É possível editar o serviço de armazenamento de cada arquivo na lista. Quando um serviço de armazenamento é trocado, o processo busca o arquivo e atualiza de forma automática a informação no campo “Encontrado”. Isso é útil para os casos em que os arquivos de log tenham sido migrados de serviço. No momento da restauração, caso a lista possua arquivos cujo serviço de armazenamento foi atualizado, o processo pergunta se o usuário também deseja atualizar essa informação no evento de arquivamento.
Semelhante ao método de enviar arquivos que foi discutido anteriormente, a grade de arquivos a serem restaurados também possui um botão “Enviar arquivos”. Esse botão possibilita adicionar manualmente a partir do seu computador arquivos à lista. Isso pode ser útil para enviar cópias dos arquivos que não tenham sido encontrados no seu local original de arquivamento.
Uma vez definidos os arquivos, basta selecionar os arquivos que se pretende restaurar e clicar no botão “Restaurar” da grade. Após realizada a restauração, é exibido na tela um resumo do que foi restaurado e de quais arquivos resultaram em erro.
Ciclo de vida do registro de log
Com todas as configurações de limpeza e arquivamento explicadas, é possível resumir o ciclo de vida de um registro de log da seguinte maneira:
- Uma transação cria um registro de log na tabela iLog.
- O registro permanece na iLog durante a quantidade de dias configurada na retenção de log.
- Quando o tempo de vida do registro é maior que sua retenção, ele é removido e arquivado na próxima limpeza.
- Enquanto estiver guardado, o arquivo que foi gerado na limpeza pode ser restaurado. Uma restauração insere novamente todos os registros daquele arquivo na tabela iLog.
- Logs restaurados permanecem na base pela quantidade de dias definida no momento da restauração. Esses logs não são afetados pela configuração de retenção da limpeza.
- O arquivo permanece guardado durante a quantidade de dias configurada na retenção de arquivos de log, contados a partir da data do arquivamento. Se essa configuração não for preenchida, o arquivo fica salvo por tempo indeterminado.
- Quando o tempo de vida do arquivo é maior que sua retenção, ele sofre uma tentativa de remoção na próxima limpeza. Uma vez removido o arquivo, todos aqueles logs estarão definitivamente excluídos e não poderão mais ser restaurados.
Histórico das limpezas de log
A página inicial do processo exibe o histórico de limpeza de logs dos últimos 30 dias. Clicando no botão “Ver histórico de limpezas” também é possível acessar a tela de busca das limpezas e gerar um relatório filtrando por data da limpeza e classes de dados afetadas.
Estrutura dos relatórios
O relatório principal de limpezas de log inclui:
- Chave da limpeza.
- Estado: iniciada, finalizada ou fracassada.
- Solicitante: usuário responsável pela limpeza.
- Data e hora de início.
- Intervalo de data dos logs: maior e menor data original de criação entre os logs removidos na limpeza.
- Qtd. arquivos gerados: a quantidade de arquivos de log que foram gerados por aquela limpeza.
- Qtd. registros: quantidade de registros de log que foram removidos na limpeza.
Os campos “Chave da limpeza” e “Qtd. arquivos gerados” são clicáveis. Ambos abrem um relatório que lista todos os arquivos gerados por aquela limpeza.
O relatório de arquivos gerados inclui:
- Chave do arquivamento.
- Data dos logs.
- Local do arquivamento: se na nuvem, inclui o serviço de armazenamento. Se localmente, inclui o ID do Engine.
- Referência: o tipo de log de evento ou as tabelas referentes aos logs naquele arquivo.
- Qtd. classes afetadas: a quantidade de classes a que os logs naquele arquivo fazem referência.
- Qtd. registros: a quantidade de registros de log salvos naquele arquivo.
O campo “Qtd. classes afetadas” é clicável. Ele abre um relatório com a lista de todas as classes de dados referentes aos logs presentes naquele arquivo.
O relatório de classes afetadas inclui:
- Classe de dados: nome e chave.
- Qtd. registros: quantidade de registros de log que referenciam aquela classe de dados naquele arquivo.