4
62 www.linuxmagazine.com.br Armazenamento e pesquisa de logs Log centralizado Quando algo dá errado em um sistema, o arquivo de log é o primeiro lugar onde devemos procurar pistas para solução do problema. O Logstash, um servidor de log que possui ferramentas de análise, consolida logs de muitos servidores e faz até mesmo com que os dados sejam pesquisáveis. por Martin Loschwitz S e algo der errado em uma rede corporativa, o administrador deve encontrar e resolver o problema rapidamente. Encontrar informações geralmente não é 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 informações correta- mente em redes complexas onde estão presentes muitos dispositivos, sistemas e servidores, na maior parte das vezes é mais fácil dizer do que fazer. Um problema é a quantidade de informação produzida. Por um lado, uma ferramenta como o Pacemaker Cluster Manager é particularmente detalhada, produzindo muitas vezes a saída necessária. Com o Apache, por outro lado, os dados podem acabar indo parar em muitos lugares se o ad- ministrador definir o armazenamento do log de cada host separadamente. Em servidores web que atendem à muitos clientes, um grande número de arquivos de log se acumulam, o que significa que a depuração de problemas específicos para um usuário individu- al pode ser uma tarefa interminável. Ambientes de computação em nuvem que dependem do OpenStack, como o CloudStack ou outras plataformas de nuvem, raramente possuem menos de 20 servidores e a proliferação de logs de servidor é proporcional ao número de sistemas presentes nestes servidores. A solução clássica é que o servidor de log colete os logs em um sistema centralizado, ao invés de deixá-los espalhados por toda a rede. Esta abordagem ajuda a evitar a digitação excessiva quando se navega entre servidores via SSH. Alguns arquivos de log até mesmo indexam os logs para uma pesquisa rápida e conveniente. Ferramentas comerciais como o Splunk [1] fornecem este tipo de serviço de log de valor agregado. A resposta da comunidade de có- digo aberto para essas ferramentas de log comercial é o Logstash [2], um serviço de login centralizado que oferece uma opção para procurar por entradas de log existentes via interface web. O Logstash e seus assistentes O Logstash por si só não assegura uma gestão 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 adminis- tradores têm contra o Java – justificados ou não – a decisão 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 coleção; isto seria difícil de conseguir com os outros servi- ços Rsyslog, na maior parte dos casos. TUTORIAL Figura 1 A organização e gerenciamento das mensagens de log não são tratadas pelo Logstash mas pelo ElasticSearch, que é executado em segundo plano.

Tut Log Centralizado Linux Logstash

  • Upload
    dcenzi

  • View
    181

  • Download
    21

Embed Size (px)

Citation preview

  • 62 www.linuxmagazine.com.br

    TUTORIAL | Armazenamento e pesquisa de logs

    Armazenamento e pesquisa de logs

    Log centralizadoQuando 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

    Se 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 correta-mente 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 ad-ministrador 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 individu-al 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 c-digo 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 assistentesO 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 adminis-tradores 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 servi-os Rsyslog, na maior parte dos casos.

    TUTORIAL

    Figura 1 A organizao e gerenciamento das mensagens de log no so tratadas pelo Logstash mas pelo ElasticSearch, que executado em segundo plano.

  • 63

    | TUTORIALArmazenamento e pesquisa de logs

    Linux Magazine #103 | Junho de 2013

    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 exe-cutando 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 especifica-do pelo administrador. O host no qual o indexador encontrado geralmente tambm executa o servidor web Logs-tash, que oferece aos administradores uma caixa de pesquisa para arquivos de log. Em segundo plano, dois outros ser-vios 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 ser-vidor entrega suas mensagens para o servidor Redis, onde o indexador Logstash os recupera no passo se-guinte. 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.

    Design modularUma 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 de-senvolvedores do Logstash. A deciso de mudar para um agente diferente foi implementada de forma muito fcil, pois apenas a interface para o agente

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

    Sem limitesEm outros lugares, o Logstash impe uma criatividade praticamente sem limites para o administrador: a ferra-menta 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 Logs-tash gerencia os logs HTTP, permitin-do a busca sistemtica mais tarde na interface web para todas as consultas possveis que causaram um erro in-terno. Aplicado ao Pacemaker, por exemplo, isso significa que os admi-nistradores poderiam procurar expres-samente 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 exem-plo, se quisermos manter mensagens syslog clssicas fora do arquivo de log, ser preciso somente modificar a con-figurao do shipper Logstash.

    Configurao de testeSe o usurio quiser experimentar o Logstash, estar com sorte. Contraria-mente 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 ta-refa estar concluda. O exemplo a seguir baseado no Ubuntu 12.04, mas tambm funciona no Debian. Paco-tes RPM para Redis e ElasticSearch para distribuies empresariais tpicas tambm esto disponveis na web, in-cluindo RHEL e SLES. A facilidade de instalao do Redis depende muito se os pacotes de servidor Redis existem

    de fato para o sistema do usurio. No Ubuntu, um simples aptget install redisserver 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 se-nha para o acesso atravs da diretiva requirepass no arquivo redis.conf.

    Instalao do ElasticSearchO ElasticSearch (figura 1) um apli-cativo Java como o Logstash; mas, in-felizmente, 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 input { 02 file { 03 type => "syslog" 04 05 # Wildcards work here :) 06 path => [ "/var/log/ messages", "/var/log/07 syslog", "/var/log/*.log" ] 08 } 09 file { 10 type => "apacheaccess" 11 path => "/var/log/apache2/ access.log" 12 } 13 14 file { 15 type => "apacheerror" 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}

  • 64 www.linuxmagazine.com.br

    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 inicial-mente retorna uma mensagem de erro por conta de dependncias que no so cumpridas. Aps publicar o comando aptget f install, o ElasticSearch est pronto. Por padro, o ElasticSearch tam-bm 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.

    Envio de dadosEm seguida, devemos configurar o prprio Logstash. importante que este no venha sob a forma de biblio-tecas 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 arqui-vo shipper.conf deve aparecer como na listagem 1. Com esta configurao, o Logstash enviaria as mensagens a par-tir 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 pou-co 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 logstash1.1.9monolithic.jar agent f shipper.conf

    inicia o Logstash.

    IndexaoConfigurar o indexador no complicado se comearmos com uma configurao adequada (lis-tagem 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 logstash1.1.9monolithic.jar agent f indexer.conf

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

    ServidorFinalmente, precisamos do pr-prio servidor web Logstash; ele no precisa de um arquivo de configurao prprio e pode ser iniciado com:

    java jar logstash1.1.9monolithic.jar web

    backend elasticsear ch://192.168.122.165/

    Depois disso, o usurio deve ser capaz de efetuar login ime-diatamente 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); alternativamen-te, podemos verificar o processo

    Figura 2 Uma pesquisa nos registros Logstash em busca de Network Manager exibe mensagens cronologicamente ordenadas.

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

    Listagem 2: Indexer.conf01 input { 02 redis { 03 host => "192.168.122.165" 04 type => "redisinput" 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}

  • 65

    | TUTORIALArmazenamento e pesquisa de logs

    Linux Magazine #103 | Junho de 2013

    atravs da caixa de pesquisa. Isso basicamente completa os principais passos de instalao do Logstash.

    O sysops tem a liberdade de en-feitar a configurao para atender s suas prprias necessidades. Por exemplo, o usurio normalmente quer executar o shipper Logstash em todos os sistemas na iniciali-zao, o que significa criar um script de inicializao correspon-dente (se quiser evitar o trabalho, possvel encontrar scripts prede-finidos na web).

    Criar filtros especficos para ala-vancar todas as opes da soluo tambm aconselhvel. Uma viso geral das possveis opes de filtro

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

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

    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 filtros: https://github.com/logstash/grokpatterns

    trabalham com gerenciamento cen-tralizado de arquivos de configura-o. 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 reve-lao. Apenas os administradores com pronunciada alergia ao Java no devem apreci-lo. n

    Gostou do artigo?Queremos ouvir sua opinio. Fale conosco em: [email protected] artigo no nosso site: http://lnm.com.br/article/8653