Compartilhar via


Como registrar em log com a pilha elástica

Dica

Esse conteúdo é um trecho do livro eletrônico, para Projetar os Aplicativos .NET nativos de nuvem para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Há muitas ferramentas centralizadas boas de log e elas variam em custo, desde ferramentas gratuitas de código aberto até opções mais caras. Em muitos casos, as ferramentas gratuitas são tão boas quanto ou melhores do que as ofertas pagas. Uma dessas ferramentas é uma combinação de três componentes de código aberto: Elasticsearch, Logstash e Kibana.

Coletivamente, essas ferramentas são conhecidas como Pilha Elástica ou pilha ELK.

Pilha Elástica

A Pilha Elástica é uma opção poderosa para coletar informações de um cluster do Kubernetes. O Kubernetes dá suporte ao envio de logs para um ponto de extremidade Elasticsearch e, na maioria das vezes, tudo o que você precisa para começar é definir as variáveis de ambiente, conforme mostrado na Figura 7-5:

KUBE_LOGGING_DESTINATION=elasticsearch
KUBE_ENABLE_NODE_LOGGING=true

Figura 7-5. Variáveis de configuração do Kubernetes

Esta etapa instalará o Elasticsearch no cluster e no destino, enviando todos os logs de cluster para ele.

An example of a Kibana dashboard showing the results of a query against logs ingested from KubernetesFigura 7-6. Exemplo de um painel de Kibana mostrando os resultados de uma consulta em logs ingeridos pelo Kubernetes

Quais são as vantagens da Pilha Elástica?

A Pilha Elástica fornece log centralizado de maneira escalonável, de baixo custo e favorável à nuvem. Sua interface do usuário simplifica a análise de dados para que você possa gastar seu tempo coletando insights dos dados, em vez de enfrentar uma interface desajeitada. Ele dá suporte a uma ampla variedade de entradas para que, à medida que seu aplicativo distribuído inclua tipos de serviços diferentes e em maior quantidade, você possa alimentar dados de log e de métrica no sistema. A Pilha Elástica também dá suporte a pesquisas rápidas, mesmo em grandes conjuntos de dados, possibilitando que até os aplicativos grandes registrem dados detalhados e ainda possam ter a visibilidade esperada deles.

Logstash

O primeiro componente é o Logstash. Essa ferramenta é usada para coletar informações de log de uma grande variedade de fontes diferentes. Por exemplo, o Logstash pode ler logs do disco e receber mensagens de bibliotecas de log, como a Serilog. O Logstash pode fazer alguma filtragem e expansão básicas nos logs conforme eles chegam. Por exemplo, se os seus logs contiverem endereços IP, o Logstash poderá ser configurado para fazer uma pesquisa geográfica e obter um país/região ou até mesmo uma cidade de origem da mensagem.

A Serilog é uma biblioteca de logs de linguagens do .NET, que permite registro em log parametrizado. Em vez de gerar uma mensagem de log textual que insere campos, os parâmetros são mantidos separados. Essa biblioteca permite filtragem e pesquisa mais inteligentes. Uma configuração de exemplo da Serilog para gravação no Logstash aparece na Figura 7-7.

var log = new LoggerConfiguration()
         .WriteTo.Http("http://localhost:8080")
         .CreateLogger();

Figura 7-7. Configuração da Serilog para gravar informações de log diretamente no Logstash por HTTP

O Logstash usaria uma configuração como a mostrada na Figura 7-8.

input {
    http {
        #default host 0.0.0.0:8080
        codec => json
    }
}

output {
    elasticsearch {
        hosts => "elasticsearch:9200"
        index=>"sales-%{+xxxx.ww}"
    }
}

Figura 7-8. Configuração do Logstash para consumir logs da Serilog

Em cenários em que a manipulação extensa de log não é necessária, há uma alternativa ao Logstash conhecida como Beats. O Beats é uma família de ferramentas que pode coletar uma ampla variedade de dados, desde logs até dados de rede e informações de tempo de atividade. Muitos aplicativos usarão Logstash e Beats.

Depois que os logs são coletados pelo Logstash, ele precisa de algum lugar para colocá-los. Embora o Logstash dê suporte a muitas saídas diferentes, uma das mais interessantes é o Elasticsearch.

Elasticsearch

O Elasticsearch é um poderoso mecanismo de pesquisa que pode indexar logs à medida que eles chegam. Ele torna rápida a execução de consultas nos logs. O Elasticsearch pode lidar com grandes quantidades de logs e, em casos extremos, pode ser escalado horizontalmente entre vários nós.

As mensagens de log criadas para conter parâmetros, ou que tiveram parâmetros divididos por meio do processamento do Logstash, podem ser consultadas diretamente, pois o Elasticsearch preserva essas informações.

Uma consulta que pesquisa as 10 principais páginas visitadas por jill@example.com aparece na Figura 7-9.

"query": {
    "match": {
      "user": "jill@example.com"
    }
  },
  "aggregations": {
    "top_10_pages": {
      "terms": {
        "field": "page",
        "size": 10
      }
    }
  }

Figura 7-9. Consulta do Elasticsearch para localizar as 10 principais páginas visitadas por um usuário

Visualizando informações com painéis da Web do Kibana

O componente final da pilha é o Kibana. Essa ferramenta é usada para fornecer visualizações interativas em um painel da Web. Os painéis podem ser criados até mesmo por usuários que não são técnicos. A maioria dos dados residentes no índice do Elasticsearch pode ser incluída nos painéis do Kibana. Os usuários individuais podem desejar diversos painéis e o Kibana habilitará essa personalização por meio da permissão de painéis específicos do usuário.

Instalando a Pilha Elástica no Azure

A Pilha Elástica pode ser instalada no Azure de várias maneiras. Como sempre, é possível provisionar máquinas virtuais e instalar a Pilha Elástica diretamente nelas. Essa opção é preferida por alguns usuários experientes, pois oferece o maior nível de personalização. A implantação na infraestrutura como serviço introduz uma sobrecarga de gerenciamento significativa, forçando aqueles que tomam esse caminho a assumir a propriedade de todas as tarefas associadas à infraestrutura como um serviço, como proteger os computadores e mantê-los atualizado com patches.

Uma opção com menos sobrecarga é usar um dos muitos contêineres de Docker nos quais a Pilha Elástica já foi configurada. Esses contêineres podem ser colocados em um cluster de Kubernetes existente e executados juntamente com o código do aplicativo. O contêiner sebp/elk é um contêiner da Pilha Elástica bem documentado e testado.

Outra opção é uma oferta de ELK como serviço anunciada recentemente.

Referências