Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Esse conteúdo é um trecho do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
Há muitas boas ferramentas de registro centralizadas, e elas variam em custo, desde opções 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 software livre: Elasticsearch, Logstash e Kibana.
Coletivamente, essas ferramentas são conhecidas como Elastic Stack ou ELK stack.
Pilha Elástica
O Elastic Stack é 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 do 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 para Kubernetes
Esta etapa instalará o Elasticsearch no cluster e terá como destino enviar todos os logs de cluster para ele.
Figura 7-6. Exemplo de um painel de Kibana mostrando os resultados de uma consulta em logs ingeridos pelo Kubernetes
Para obter mais informações sobre a configuração, consulte Configurar log (Kibana).
Quais são as vantagens da Pilha Elástica?
O Elastic Stack fornece log centralizado de maneira econômica, escalável e amigá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. O Elastic Stack também dá suporte a pesquisas rápidas mesmo em grandes conjuntos de dados, possibilitando até mesmo que aplicativos grandes registrem dados detalhados e ainda possam ter visibilidade sobre eles de maneira performante.
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 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 para essa mensagem.
O Serilog é uma biblioteca de log para idiomas .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 serilog de exemplo 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. Uma configuração do Logstash para consumir logs do Serilog
Para cenários em que a manipulação de log abrangente não é necessária, há uma alternativa ao Logstash conhecido 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 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 à medida que 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. Uma 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 Elasticsearch pode ser incluída nos painéis do Kibana. Os usuários individuais podem ter diferentes desejos de painel e o Kibana permite essa personalização por meio da permissão de painéis específicos do usuário.
Instalando o Elastic Stack no Azure
A stack Elastic pode ser instalada no Azure de várias maneiras. Como sempre, é possível provisionar máquinas virtuais e instalar o Elastic Stack diretamente neles. Essa opção é preferida por alguns usuários experientes, pois oferece o maior grau 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 do Docker nos quais a Pilha Elástica já foi configurada. Esses contêineres podem ser inseridos em um cluster Kubernetes existente e executados junto com o código do aplicativo. O contêiner sebp/elk é um contêiner do Elastic Stack bem documentado e testado.
Outra opção é uma oferta ELK como serviço anunciada recentemente.