Monitoramento nos Serviços Kubernetes do Azure
Gorjeta
Este conteúdo é um excerto do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF transferível gratuito que pode ser lido offline.
O registro interno no Kubernetes é primitivo. No entanto, existem algumas ótimas opções para tirar os logs do Kubernetes e colocá-los em um lugar onde eles possam ser devidamente analisados. Se você precisa monitorar seus clusters AKS, configurar o Elastic Stack para Kubernetes é uma ótima solução.
Azure Monitor para Contentores
O Azure Monitor for Containers dá suporte ao consumo de logs não apenas do Kubernetes, mas também de outros mecanismos de orquestração, como DC/OS, Docker Swarm e Red Hat OpenShift.
Figura 7-10. Consumindo logs de vários contêineres
Prometheus é uma solução popular de monitoramento de métricas de código aberto. Faz parte da Cloud Native Compute Foundation. Normalmente, o uso do Prometheus requer o gerenciamento de um servidor Prometheus com sua própria loja. No entanto, o Azure Monitor for Containers fornece integração direta com pontos de extremidade de métricas Prometheus, portanto, um servidor separado não é necessário.
As informações de log e métricas são coletadas não apenas dos contêineres em execução no cluster, mas também dos próprios hosts do cluster. Ele permite correlacionar informações de log dos dois, tornando muito mais fácil rastrear um erro.
A instalação dos coletores de log difere em clusters Windows e Linux . Mas, em ambos os casos, a coleção de logs é implementada como um Kubernetes DaemonSet, o que significa que o coletor de logs é executado como um contêiner em cada um dos nós.
Não importa qual orquestrador ou sistema operacional esteja executando o daemon do Azure Monitor, as informações de log são encaminhadas para as mesmas ferramentas do Azure Monitor com as quais os usuários estão familiarizados. Essa abordagem garante uma experiência paralela em ambientes que misturam diferentes fontes de log, como um ambiente híbrido do Kubernetes/Azure Functions.
Figura 7-11. Um painel de exemplo mostrando informações de log e métricas de muitos contêineres em execução.
Log.Finalize()
O registro em log é uma das partes mais negligenciadas e, no entanto, mais importante da implantação de qualquer aplicativo em escala. À medida que o tamanho e a complexidade dos aplicativos aumentam, aumenta também a dificuldade de depurá-los. Ter logs de alta qualidade disponíveis torna a depuração muito mais fácil e a move do reino de "quase impossível" para "uma experiência agradável".