Olá Rodrigo,
Muito legal o Prometheus, vou avaliar com certeza. Achei muito interessante a parte dos alertas.
Aproveitando, dei uma passada rápida (desculpa se não percebi algo) nas melhores práticas para ver se encontrava algo em relação a instrumentar códigos que executam em threads diferentes:
// Codigo Ludico
def processaAlgo = {
for {
res1 <- processaAlgoNoBanco // Thread Diferente
res2 <- processaAlgoEmUmWSExterno // Thread Diferente
} yield (res1, res2)
...
}
Eu poderia instrumentar o processaAlgo para obter o tempo total e se executou corretamente para monitoramento no Prometheus e ainda instrumentar o processaAlgoNoBanco e processaAlgoEmUmWSExterno, você saberia se tem algum recurso no Prometheus para que eu posso relacionar a execução do processaAlgoNoBanco e processaAlgoEmUmWSExterno com o processaAlgo? O Kamon utiliza o conceito de TraceContext
http://kamon.io/core/tracing/threading-model-considerations/ ou atualmente para vocês não há essa necessidade de conhecer o fluxo completo de forma atômica?
A minha ideia com essa rastreabilidade seria usar os Alertas (gostei demais) de forma onde eu pudesse colocar o caminho completo do evento. Por exemplo:
processaAlgoNoBanco demorou mais de 100ms para executar quando chamado a partir da função X, mas quando chamada a partir da função Y o comportamento demora apenas 10ms a partir dai consigo identificar alguns padrões.
Não sei se ficou muito claro, qualquer coisa tento explicar melhor.
[]'s