
Há alguns meses, o Google anunciou o OpenCensus, uma biblioteca open source independente de fornecedor para coleta de telemetria e tracing. Com ele, fica fácil coletar métricas da sua aplicação e rastrear o andamento das requisições.
Na maioria dos casos, há uma separação clara entre coletar os dados e exportá-los para sistemas de tracing e monitoramento. Depois de começar a usar o OpenCensus no seu projeto e identificar quais métricas valem a pena rastrear e monitorar, dá para trocar de sistema de monitoramento, ou até usar mais de um, sem mexer na sua lógica de coleta de métricas.
Aqui na DoiT International, estamos desenvolvendo uma arquitetura de referência e a implementação de um pipeline de event analytics (ainda em andamento, mas você já pode dar uma espiada aqui).
Nossa API está sendo escrita em Go e queríamos dar aos usuários alguma visibilidade do sistema e de algumas métricas customizadas que pretendemos expor. Antigamente, você tinha que escolher um sistema de monitoramento e, se quisesse trocar depois, gastava tempo (e dinheiro) para isso. Mas e quando se trata de um sistema open source, em que você não sabe de antemão onde nem como ele vai rodar, e muito menos como será monitorado?
Com o OpenCensus, quase nada precisa ser decidido de cara. A escolha do sistema de monitoramento não fica acoplada ao código, e você pode até usar mais de um sistema de monitoramento ou de coleta de métricas em paralelo.
Para expor as métricas no sistema de monitoramento que você preferir, basta criar um novo exporter e registrá-lo:
https://gist.github.com/avivl/15fd071ca0212838aebec2e45430eb1c
Criar métricas também é bem simples: é só definir o tipo e como você quer que elas sejam exibidas:
https://gist.github.com/avivl/32ed40cbbfb8bbc07e3b3ae07a161251
Pronto, agora é só coletar as métricas: chame o método Record e passe os dados necessários.
https://gist.github.com/avivl/f49969508a846fbf0abd1a7a37825c52
Como você pode ver nos gráficos a seguir, as métricas são exportadas tanto para o Prometheus quanto para o Stackdriver e visualizadas em cada um deles:
Prometheus - Dashboard no Grafana
Dashboard no Stackdriver
Quer ler mais? Confira nosso blog ou siga o Aviv no Twitter.