Não é incomum que cargas de trabalho implementadas em ambientes de infraestrutura como serviço (IaaS) sejam monitoradas de forma insuficiente. O problema causado por essa deficiência impacta diretamente na produtividade dos times, devido a imprevisibilidade dos problemas bem como dificuldade de rastreamento já que, sem uma visão clara sobre o ambiente produtivo, qualquer ação converte-se em um “tiro no escuro”. Tudo isso, resulta em potencial aumento do custo operacional.
Os pilares da observabilidade (métricas, tracing e logs) fornecem respostas adequadas, que explicam o estado das cargas de trabalho ao longo do tempo. Eles são cruciais para a obtenção de insights sobre comportamento e eficiência dos workloads. A partir deles é possível tomar decisões mais assertivas sobre a evolução da carga de trabalho, mas também facilitar a identificação de comportamentos inadequados para resolução proativa e no melhor tempo.
Em IaaS, o cliente tem total controle sobre a infraestrutura que executa suas cargas de trabalho. Desta forma, o primeiro dos pilares, métricas, precisa ser acompanhado desde a máquina virtual – considerando aspectos como memória, CPU e disco – passando por frameworks e plataformas (métricas da JVM, por exemplo), e finalizando na aplicação, onde é possível extrair métricas como volume de recursos consumidos pelo processo, response time, throughput, e muito mais.
Os Logs, o segundo pilar da observabilidade, precisam fornecer detalhes temporais de diversas fontes, indo muito além das aplicações. Em ambientes com Windows, por exemplo, é interessante consolidar logs do IIS, ou de alguma sessão dos Logs de Eventos do Windows.
O terceiro pilar, tracing, é extremamente importante quando a carga de trabalho opera de forma distribuída, onde operações e transações de negócio envolvam diversos serviços. Avaliar os logs de cada serviço individualmente, para identificar sequências de uma mesma operação é bastante oneroso, e muitas vezes inviável. O tracing serve justamente para simplificar essa “relação” através de adição de identificadores a estes logs, permitindo identificá-los de uma forma muito simples.
Para cargas de trabalho operando no Microsoft Azure, em praticamente todos os cenários, estes pilares podem ser satisfeitos utilizando as ferramentas do Azure Monitor.
Métricas diretas do Hipervisor das máquinas virtuais são extraídas automaticamente e endereçadas ao Log Analytics Workspaces. Para mais detalhes, pode ser instalado e ativado o Agente de Monitoramento da Microsoft (MMA), que extraí métricas do Sistema Operacional convidado. Já na aplicação, o Application Insights fornece algumas métricas muito importantes como número de requisições, erros e tempo de resposta.
Para Logs, tanto o Log Analytics Workspaces quanto o Application Insights, fornecem formas de obter e analisar logs de forma bastante simples, com pouca necessidade de instrumentação através da Kusto Query Language tanto para a aplicação, quanto para o estrutura que a mantém. Finalmente, o Application Insights também oferece suporte a tracing distribuído.
Observabilidade das aplicações e da infraestrutura que a suportam é imprescindível para o sucesso de um produto pois mitiga riscos de problemas em produção. O Azure Monitor é uma excelente ferramenta para suportar essa necessidade.