Você está na página 1de 4

TUTORIAL| Armazenamento e pesquisa de logs

Armazenamento e pesquisa de logs

TUTORIAL

Log centralizado
Quando algo d errado em um sistema, o arquivo de log o primeiro lugar onde devemos procurar pistas para soluo do problema. O Logstash, um servidor de log que possui ferramentas de anlise, consolida logs de muitos servidores e faz at mesmo com que os dados sejam pesquisveis. por Martin Loschwitz

e algo der errado em uma rede corporativa, o administrador deve encontrar e resolver o problema rapidamente. Encontrar informaes geralmente no um problema a maioria dos sistemas de TI produzem um fluxo constante de entradas de log no sistema e mensagens de erro mas, avaliando essas informaes corretamente em redes complexas onde esto presentes muitos dispositivos, sistemas e servidores, na maior parte das vezes mais fcil dizer do que fazer. Um problema a quantidade de informao produzida. Por um lado, uma ferramenta como o Pacemaker Cluster Manager particularmente detalhada, produzindo muitas vezes a sada necessria. Com o Apache, por

outro lado, os dados podem acabar indo parar em muitos lugares se o administrador definir o armazenamento do log de cada host separadamente. Em servidores web que atendem muitos clientes, um grande nmero de arquivos de log se acumulam, o que significa que a depurao de problemas especficos para um usurio individual pode ser uma tarefa interminvel. Ambientes de computao em nuvem que dependem do OpenStack, como o CloudStack ou outras plataformas de nuvem, raramente possuem menos de 20 servidores e a proliferao de logs de servidor proporcional ao nmero de sistemas presentes nestes servidores. A soluo clssica que o servidor de log colete

os logs em um sistema centralizado, ao invs de deix-los espalhados por toda a rede. Esta abordagem ajuda a evitar a digitao excessiva quando se navega entre servidores via SSH. Alguns arquivos de log at mesmo indexam os logs para uma pesquisa rpida e conveniente. Ferramentas comerciais como o Splunk [1] fornecem este tipo de servio de log de valor agregado. A resposta da comunidade de cdigo aberto para essas ferramentas de log comercial o Logstash [2], um servio de login centralizado que oferece uma opo para procurar por entradas de log existentes via interface web.

O Logstash e seus assistentes


O Logstash por si s no assegura uma gesto significativa e centralizada de arquivos de log. Para desempenhar suas tarefas como esperado, o Logstash precisa de alguma ajuda. O programa em si um aplicativo Java e, apesar de todos os preconceitos que os administradores tm contra o Java justificados ou no a deciso dos desenvolvedores do Logstash de seguir com o Java foi bem fundamentada. Como o Java est naturalmente instalado no Windows, o Logstash pode incluir arquivos de log do Windows em sua coleo; isto seria difcil de conseguir com os outros servios Rsyslog, na maior parte dos casos.

Figura 1 A organizao e gerenciamento das mensagens de log no so


tratadas pelo Logstash mas pelo ElasticSearch, que executado em segundo plano.

62

www.linuxmagazine.com.br

Armazenamento e pesquisa de logs | TUTORIAL

A instalao Logstash que se estende ao longo de mais de um servidor consiste em ao menos cinco servios diferentes. O papel central desempenhado pelos prprios componentes do Logstash: o shipper basicamente um cliente executando sobre cada sistema de destino coleta as mensagens de log. No prximo passo, ele as envia para o indexer, um indexador que interpreta e processa as mensagens de log, conforme especificado pelo administrador. O host no qual o indexador encontrado geralmente tambm executa o servidor web Logstash, que oferece aos administradores uma caixa de pesquisa para arquivos de log. Em segundo plano, dois outros servios que no pertencem diretamente ao Logstash, mas que so importantes para o seu funcionamento, cumprem suas funes: o agente de mensagens Redis e o ambiente de armazenamento e pesquisa ElasticSearch. O Redis o ponto central da comunicao entre o shipper e o indexer. O Logstash em cada servidor entrega suas mensagens para o servidor Redis, onde o indexador Logstash os recupera no passo seguinte. O ElasticSearch, tambm um aplicativo Java, compila o ndice no segundo plano e fornece a interface para a qual o servidor web Logstash encaminha solicitaes de pesquisa da interface web.

de mensagens precisava ser codificada. Enquanto isso, o conector Redis funciona perfeitamente e o RabbitMQ tornou-se uma relquia do passado.

Sem limites

Em outros lugares, o Logstash impe uma criatividade praticamente sem limites para o administrador: a ferramenta no s oferece a possibilidade de arquivar entradas de log via filtros definidos como tambm interpret-las pois as entradas de log individuais so indexadas e tornam-se pesquisveis. Por exemplo, na requisio, o Logstash gerencia os logs HTTP, permitindo a busca sistemtica mais tarde na interface web para todas as consultas possveis que causaram um erro interno. Aplicado ao Pacemaker, por exemplo, isso significa que os administradores poderiam procurar expressamente por mensagens de log com pacemakers um prefixo ERROR. Os filtros tambm podem ser projetados para remover completamente vrias entradas de registros de log. Por exemplo, se quisermos manter mensagens syslog clssicas fora do arquivo de log, ser preciso somente modificar a configurao do shipper Logstash.

de fato para o sistema do usurio. No Ubuntu, um simples apt-get install redis-server instala os componentes. Em seguida, aconselhvel modificar a entrada 127.0.0.1 no arquivo /etc/redis/redis.conf para que ela contenha o endereo IP do host; caso contrrio, o Redis conecta-se ao host local, que impede que outros hosts entreguem suas mensagens Logstash diretamente para o Redis. Aqueles que valorizam a segurana devem definir uma senha para o acesso atravs da diretiva requirepass no arquivo redis.conf.

Instalao do ElasticSearch
O ElasticSearch (figura 1) um aplicativo Java como o Logstash; mas, infelizmente, nenhum dos pacotes esto disponveis para Ubuntu. Felizmente, a ajuda est disponvel no Upstream, que oferece um pacote Debian pr-

Listagem 1: shipper.conf
01 02 03 04 05 06 input { file { type => "syslog" # Wildcards work here :) path => [ "/var/log/ messages", "/var/log/07 syslog", "/var/log/*.log" ] } file { type => "apache-access" path => "/var/log/apache2/ access.log" }

Congurao de teste

Design modular

Uma grande vantagem do Logstash a sua diversidade, que surge a partir do design modular e torna a ferramenta muito flexvel: at alguns meses atrs, por exemplo, era comum as instalaes Logstash usarem um corretor AMQP no lugar do Redis sendo o RabbitMQ [3] a escolha padro. No entanto, o mdulo amqp para Logstash no era muito bem desenvolvido e nem era particularmente popular entre os desenvolvedores do Logstash. A deciso de mudar para um agente diferente foi implementada de forma muito fcil, pois apenas a interface para o agente

Se o usurio quiser experimentar o Logstash, estar com sorte. Contrariamente s alegaes feitas na Internet, a instalao de nenhuma maneira uma tarefa herclea. Apenas preciso esclarecer de antemo qual papel ser atribudo a qual host. Uma vez que estiver claro em qual host o servidor Redis, o ElasticSearch e o indexador Logstash estaro funcionando, a tarefa estar concluda. O exemplo a seguir baseado no Ubuntu 12.04, mas tambm funciona no Debian. Pacotes RPM para Redis e ElasticSearch para distribuies empresariais tpicas tambm esto disponveis na web, incluindo RHEL e SLES. A facilidade de instalao do Redis depende muito se os pacotes de servidor Redis existem

08 09 10 11

12 13 14 file { 15 type => "apache-error" 16 path => "/var/log/apache2/ error.log" 17 } 18 } 19 20 output { 21 stdout { debug => true debug_ format => "json"} 22 redis { host => "192.168.122.165" data_ type => 23 "list" key => "logstash" } 24}

Linux Magazine #103 | Junho de 2013

63

TUTORIAL| Armazenamento e pesquisa de logs

-compilado para Ubuntu em seu site [4] ou que pode ser instalado com o comando dpkg -i. O comando inicialmente retorna uma mensagem de erro por conta de dependncias que no so cumpridas. Aps publicar o comando apt-get -f install, o ElasticSearch est pronto. Por padro, o ElasticSearch tambm escuta o endereo 127.0.0.1, ento um indexador deve ser executado no mesmo host. Se o usurio quiser que o ElasticSearch e o servio de indexao Logstash executem em diferentes hosts, encontrar as chaves necessrias para isso no arquivo /etc/elasticsearch/ elasticsearch.yml; eles atendem pelos nomes network.bind_host e network.host.

Figura 2 Uma pesquisa nos registros Logstash em busca de Network


Manager exibe mensagens cronologicamente ordenadas.

Envio de dados

Em seguida, devemos configurar o prprio Logstash. importante que este no venha sob a forma de bibliotecas Java individuais para o cliente e servidor, mas como um grande arquivo para todos os servios. As tarefas que uma instncia do Logstash executa dependem do contedo do arquivo que a ferramenta utiliza como fonte para sua configurao. Aps baixar o arquivo Logstash JAR [4], o usurio s precisa escolher os parmetros corretos. Para configurar um shipper, o arquivo shipper.conf deve aparecer como na listagem 1. Com esta configurao, o Logstash enviaria as mensagens a partir dos arquivos do syslog e do Apache para o indexador no domnio virtual padro. O host com o indexador nes-

te exemplo 192.168.122.165. A chave mostrada na linha 22 pode ser um pouco confusa; no se refere a uma chave criada para fins de autenticao, mas ao valor usado pelo Redis como o nome da fila Logstash. Com este arquivo de configurao, o comando:
java -jar logstash-1.1.9-monolithic.jar agent -f shipper.conf

Em contraste com o shipper, o indexador praticamente no produz nenhuma sada prpria no canal de sada padro, por isso, se tudo estiver calmo por l, o usurio no tem nenhuma razo para se preocupar.

Servidor

inicia o Logstash.

Indexao

Finalmente, precisamos do prprio servidor web Logstash; ele no precisa de um arquivo de configurao prprio e pode ser iniciado com:
java -jar logstash-1.1.9-monolithic.jar web --backend elasticsear ch://192.168.122.165/

Listagem 2: Indexer.conf
01 input { 02 redis { 03 host => "192.168.122.165" 04 type => "redis-input" 05 data_type => "list" 06 key => "logstash" 07 format => "json_event" 08 } 09 } 10 output { 11 elasticsearch { 12 host => "192.168.122.165" 13 } 14}

Configurar o indexador no complicado se comearmos com uma configurao adequada ( listagem 2). A configurao Logstash , assim, dividida em entrada e sada de blocos, que conforme o nome sugere especificam como o servio comea e para onde ele encaminha suas novidades. O indexador inicia seu trabalho dirio com o comando:
java -jar logstash-1.1.9-monolithic.jar agent -f indexer.conf

Depois disso, o usurio deve ser capaz de efetuar login imediatamente no sistema Logstash na porta 9292 ( figura 2 ). Neste exemplo, o endereo completo seria http://192.168.122.165:9292. Logo aps a primeira inicializao, mensagens de log devem comear a chegar (figura 3); alternativamente, podemos verificar o processo

Figura 3 Atualizaes de status do Logstash revelam como o software funciona: ele envia mensagens de log para o Redis.

64

www.linuxmagazine.com.br

Armazenamento e pesquisa de logs | TUTORIAL

atravs da caixa de pesquisa. Isso basicamente completa os principais passos de instalao do Logstash. O sysops tem a liberdade de enfeitar a configurao para atender s suas prprias necessidades. Por exemplo, o usurio normalmente quer executar o shipper Logstash em todos os sistemas na inicializao, o que significa criar um script de inicializao correspondente (se quiser evitar o trabalho, possvel encontrar scripts predefinidos na web). Criar filtros especficos para alavancar todas as opes da soluo tambm aconselhvel. Uma viso geral das possveis opes de filtro

Logstash, que tambm suportam expresses regulares, pode ser encontrada no site do fornecedor [5], em conjunto com uma extensa documentao.

Concluso

O Logstash uma soluo muito elegante para log centralizado. Livros de alguns especialistas e receitas Puppet j esto disponveis, o que especialmente til para administradores que mantm grandes parques computacionais e

trabalham com gerenciamento centralizado de arquivos de configurao. O Logstash pode ser adaptado facilmente em tais configuraes. No entanto, o Logstash realmente mostra a que veio quando pesquisa por logs. Administradores que tm procurado manualmente atravs de dezenas de milhares de linhas iro encontrar na soluo de problemas do Logstash uma verdadeira revelao. Apenas os administradores com pronunciada alergia ao Java no devem apreci-lo. n

Mais informaes
[1] Splunk: http://www.splunk.com [2] Logstash: http://www.logstash.net [3] RabbitMQ: http://www.rabbitmq.com [4] Download do ElasticSearch: http://www.elasticsearch. org/download/2013/02/14/0.20.5.html [5] Exemplos de ltros: https://github.com/logstash/grok-patterns

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em: cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/8653

Linux Magazine #103 | Junho de 2013

65