Banco de Dados

29 mar, 2016

A importância da centralização de logs

Publicidade

Você, administrador de sistemas, já tentou convencer seu chefe a adquirir discos e mais discos ou contratar serviços em nuvem para armazenamentos de registros? Como foi o processo de convencimento?

Se a situação está neste nível, está muito boa, pois se você já sabe calcular o tamanho dos seus logs e a progressão de crescimento – o que significa que você já possui uma ferramenta que o auxilia na gerência destes dados, que provavelmente estão sendo recolhidos de todo o cenário em apenas um local. Mas se você administra centenas de servidores, rodando inúmeras aplicações, sendo conectadas por vários ativos de rede, além dos firewalls e possíveis virtualizadores, e cada um destes objetos possui geração de logs local, você pode ter uma bela dor de cabeça!

destaque-editorial-marco-centralizacao-logs-gerencianet-640px

Segundo a Wikipedia, o conceito de log surgiu ainda na época dos grandes descobrimentos, com a criação de uma espécie de diário de bordo das embarcações para registrar qualquer tipo de evento ocorrido durante as viagens. Este conceito foi levado à aviação, com o mesmo objetivo, até desenvolver-se a caixa-preta. Assim, da mesma forma, aconteceu para os computadores e internet, criou-se o “hábito” de registro de atividades. Este conceito de “narrativa sobre si”, cientificamente falando, surgiu na época do Renascimento Europeu, com o nascimento do individualismo. Apesar de muito filosófico, faz-nos pensar que os logs são uma necessidade humana histórica, tendo nascido naturalmente (por esta necessidade) para os sistemas computacionais e internet, e sempre será aplicado o mesmo conceito em novas tecnologias e inovações.

Voltando à modernidade, o passo zero é: elaborar políticas de armazenamento de logs. Estas políticas envolvem um estudo bem amplo do cenário. Quais logs são necessários para o negócio? Quais os logs devem ser armazenados de acordo com a lei (referência ao Marco Civil da Internet)? Por quanto tempo armazenar cada log? Qual o impacto do armazenamento de log nas despesas? Qual o impacto do não armazenamento? A ideia aqui é gerar uma discussão e – quem sabe – elucidar os gestores da importância da geração de logs e armazenamento centralizado.

Pode-se considerar, em uma classificação não oficial, que existem 3 tipos de logs:

  1. Registros das operações dos usuários que acessam e realizam operações no sistema (clientes e/ou parceiros);
  2. Registros das operações de quem planeja, implementa, testa e mantém o sistema (colaboradores);
  3. Registros da camada de infraestrutura (hardware e software).

A ideia de muitos projetistas é que não haja armazenamento redundante de logs, buscando otimizar a geração – o que é uma excelente estratégia, uma vez que os dados geralmente são replicados frequentemente em uma outra infraestrutura, a fim de manter uma alta disponibilidade de acesso, caso haja um sinistro.

Um dos principais motivos para se armazenar logs é o crescimento do acesso das pessoas à Internet, que causou um aumento diretamente proporcional das ameaças a sistemas de interesse (bancos, redes sociais, lojas virtuais etc). Em uma situação de investigação criminal cibernética, os logs podem ser de fundamental valia. Outro motivo é o histórico de atividades computacionais automatizadas (o que mudou no sistema, o que foi atualizado, o que foi removido etc) e atividades de resolução de problemas corriqueiros que podem surgir na relação humano versus sistema (o que uma pessoa – cliente/parceiro ou colaborador/desenvolvedor – executou no sistema). Além destes, existem outros motivos como auxílio na atualização de pessoas que mantém o sistema funcionando, entendimento de implementações, restabelecimento após alteração inesperada, entre outros.

Dada toda essa importância, é necessário um meio de pesquisa em todos esses dados, que por apresentarem alto crescimento e utilizarem muito espaço em disco, dificultam o acesso. Ou seja, a ideia não é somente armazenar, mas também poder consultar eficientemente o que foi armazenado de modo a não atrasar a execução das atividades envolvidas na importância deste armazenamento, como citado anteriormente. É nesta fase que o administrador de sistemas se perde em um cenário complicado e deixa de argumentar com seu gestor sobre a importância da operação, fazendo com que tudo acabe em uma investigação difícil ou até mesmo impossível, levando o negócio ao prejuízo ou à falência.

A análise de arquivos de logs pode ser uma tarefa árdua e demorada. Quanto menos informação de busca o analista tiver, mais difícil e complexo será encontrar um rastro que responda questionamentos ou evidencie alguma investigação. O Analista deve entender detalhadamente todo o cenário que envolve a análise para que o rastro obtido seja coeso e possa, de fato, auxiliar na investigação, seja criminal, de debug, dúvida, melhoria, ou entendimento do que foi feito no passado.

Existem várias ferramentas no mercado que facilitam a centralização de logs. A forma mais simples, para entendimento e cálculo de necessidade do cenário, em camada de desenvolvimento, é utilizando o Rsyslog. Este software de código aberto implementa o protocolo syslog, porém utiliza o protocolo TCP para transporte de mensagens de logs locais para um servidor remoto numa rede IP. Ele possui filtro baseado em conteúdo, configuração rápida e adaptável a vários serviços (Servidores Web, SGBDs, e-mail, Messages, Security etc). Para um cenário de médio e grande porte, não recomendo a utilização do Rsyslog, por não gerenciar bem o armazenamento dos arquivos no disco, o que inviabiliza a busca a medida em que o tempo vai passando. Como este não é um tutorial, não citarei outras ferramentas que podem ser facilmente pesquisadas nos mecanismos de busca mais conhecidos.

O importante no início da implementação da centralização de logs é a escolha da ferramenta correta. O tipo de armazenamento dos dados em disco pode fazer uma diferença grande no futuro, uma vez que quanto maior a quantidade de dados, pior é a manipulação dos mesmos se mal armazenados. Quando falo em armazenamento, estou falando desde a estrutura escolhida pela ferramenta (json, árvore, objetos, etc), passando pelo sistema de arquivos do disco configurado na máquina onde os dados estão sendo armazenados, até o nível da RAID escolhida na controladora que entrega os discos virtuais. Após escolhida a ferramenta, é necessário acompanhar bem de perto o crescimento dos logs nos primeiros meses, a fim de dimensionar o que realmente é necessário ser descartado e como fazê-lo. Se essa análise inicial não for feita, prepare o bolso para investir apenas em disco, pois dados sendo gravados de forma redundante será multiplicado pelo número de vezes que a atividade acontece em seu sistema e isso pode se tornar uma bola de neve.

Por fim, seria fundamental que todo sistema surgisse com um bom planejamento de logs, porém, atualmente grande parte dos sistemas nasce de uma ideia de um empreendedor que muitas vezes desconhece procedimentos de software e investe 100% do seu tempo na ideia para que dê certo de qualquer forma e sobreviva no mercado (se for o mercado brasileiro, há de lutar mesmo e a preocupação com logs passa longe!). Como, na maioria dos casos, isso não acontece, será necessário um grande esforço para que tudo seja colocado em ordem. Mesmo com um trabalho maior pelo sistema já estar em produção, com a centralização de logs, o administrador de sistemas terá menos dores de cabeça, o desenvolvedor poderá implementar à vontade que tudo estará sendo rastreado, a empresa terá menos prejuízos e o usuário terá um sistema no qual pode confiar, pois problemas que chegarem ao suporte serão mais facilmente resolvidos, melhorias serão rapidamente planejadas e incluídas no road map de desenvolvimento e investimentos em virtude de crescimento serão melhor dimensionadas.