4.10 Introdução ao Stack de Monitoramento para Serviços ML
Nas seções anteriores discutimos a importância do monitoramento e os diferentes tipos de informações que podem ser coletadas em um sistema em produção. Agora vamos apresentar um conjunto de ferramentas amplamente utilizado para implementar esse monitoramento em aplicações modernas baseadas em contêineres e serviços distribuídos.
Nos últimos anos, surgiu um ecossistema bastante consolidado de ferramentas voltadas para observabilidade em ambientes cloud-native. Entre elas, duas se destacam pela ampla adoção na indústria: o Prometheus e o Grafana.
Essas ferramentas são frequentemente utilizadas em conjunto para coletar, armazenar e visualizar métricas de sistemas em execução. No contexto de Machine Learning, elas também podem ser utilizadas para monitorar não apenas a infraestrutura, mas o comportamento dos próprios modelos em produção.
Prometheus
O Prometheus é um sistema de monitoramento projetado para coletar métricas de serviços e aplicações. Ele funciona consultando periodicamente diferentes serviços do sistema e coletando valores numéricos que representam o estado desses serviços em um determinado instante.
Essas métricas são armazenadas em um banco de dados de séries temporais (time series database). Isso significa que cada valor coletado é associado a um instante no tempo, permitindo acompanhar como o comportamento do sistema evolui ao longo do tempo.
Por exemplo, o Prometheus pode coletar métricas como:
uso de CPU de um contêiner;
consumo de memória de um processo;
número de requisições recebidas por uma API;
tempo médio de resposta de um serviço.
Essas informações permitem acompanhar a saúde do sistema, detectar anomalias e identificar possíveis gargalos de desempenho.
No contexto de aplicações com Machine Learning, podemos ir além dessas métricas tradicionais e coletar também métricas específicas do modelo, como:
tempo de inferência do modelo;
distribuição das predições realizadas;
características estatísticas dos dados de entrada;
indicadores de data drift e output drift.
Essas métricas permitem observar não apenas se o sistema está funcionando, mas se o modelo continua se comportando de maneira consistente ao longo do tempo.
Grafana
Embora o Prometheus seja responsável por coletar e armazenar métricas, a visualização dessas informações normalmente é realizada por meio de ferramentas especializadas em dashboards. Uma das mais utilizadas para esse fim é o Grafana.
O Grafana permite construir painéis visuais interativos que apresentam métricas em forma de gráficos, tabelas e indicadores. Esses painéis ajudam a compreender rapidamente o estado do sistema em produção.
Por exemplo, um painel pode mostrar:
o uso de CPU e memória ao longo do tempo;
a quantidade de requisições recebidas por segundo por um serviço;
a latência média de uma API;
a taxa de erros em uma aplicação.
Em aplicações de Machine Learning, esses painéis podem ser estendidos para incluir visualizações mais específicas, como:
evolução da distribuição das categorias previstas pelo modelo;
variações nas características dos dados de entrada;
indicadores agregados de drift ao longo do tempo;
comparação entre comportamento atual e baseline de treinamento.
Essas visualizações são extremamente úteis, pois permitem identificar rapidamente mudanças sutis que poderiam passar despercebidas em métricas tradicionais de infraestrutura.
Exporters
Para que o Prometheus possa coletar métricas, os serviços monitorados precisam expor essas informações de alguma forma. Em muitos casos, aplicações ou componentes de infraestrutura não foram originalmente projetados para fornecer métricas diretamente. Para resolver esse problema, utiliza-se um tipo de componente chamado exporter.
Um exporter é um pequeno serviço responsável por coletar informações de um sistema e disponibilizá-las em um formato que o Prometheus consegue entender. Dessa forma, o Prometheus pode consultar esse serviço periodicamente e armazenar as métricas coletadas.
Existem exporters para diversos tipos de sistemas e aplicações, incluindo:
servidores e sistemas operacionais;
contêineres Docker;
bancos de dados;
sistemas de mensageria;
servidores web.
No caso de aplicações de Machine Learning, é comum que a própria aplicação exponha suas métricas diretamente (por exemplo, por meio de uma rota /metrics). Nesse cenário, o serviço atua como um exporter customizado, disponibilizando tanto métricas de infraestrutura quanto métricas específicas do modelo.
Isso permite integrar, em um único pipeline de observabilidade, informações sobre:
o funcionamento do sistema;
o desempenho da aplicação;
e o comportamento do modelo em produção.
A imagem a seguir ilustra a combinação desses três elementos em uma típica arquitetura de monitoramento:

Nas próximas seções iremos configurar o Prometheus e o Grafana e, em seguida, instrumentar nossa aplicação para expor métricas relevantes — incluindo métricas específicas de Machine Learning — que nos permitirão observar não apenas a infraestrutura, mas também o comportamento do modelo em produção.
Nota sobre o desenvolvimento do material
O conteúdo desta seção contou com o apoio do ChatGPT como ferramenta auxiliar na estruturação de explicações, revisão de conceitos e refinamento técnico. Todas as decisões de conteúdo, exemplos e direcionamento didático foram conduzidas pelo autor.
Atualizado