2017-04-27 4 views
1

Je voudrais tracer mon application asynchrone avec un point de contrôle clé. Y at-il un cadre populaire que je peux utiliser? Par exemple, je peux choisir d'utiliser vert.x ou toute autre structure java async. Pour chaque cycle de requête/réponse, je créerais un point de contrôle pour consigner quelque chose alors que ces points pourraient se produire dans différents threads.N'importe quel framework java async tracing?

Je voudrais voir une vue agrégée de 1 demande pour voir ce qui se passe.

La prise en charge d'un cas distribué serait préférable, mais le mode jvm simple est préférable.

Merci d'avance!

Répondre

1

Ce que vous cherchez est OpenTracing. C'est une API qui vous permet d'avoir des fonctionnalités de traçage distribuées d'une manière indépendante du fournisseur. Pour votre cas spécifique, vous devez gérer vous-même la propagation du contexte, car il n'existe pas d'autre moyen (fiable) de faire cela sur OpenTracing pour le cas asynchrone. Pour les autres cas (synchronisation JAX-RS, Servlets, Spring Boot, ...), il serait prudent d'utiliser l'intégration native du framework et/ou les règles de l'agent Java.

Pour Vert.x, vous aurez besoin de inject le contexte de l'étendue dans le message Vert.x, et extract ce contexte plus tard.

Voici un exemple de OpenTracing + Vert.x on the Hawkular APM example directory qui pourrait vous aider à démarrer. Notez, cependant, que vous pourriez vouloir utiliser un autre backend si vous décidez d'aller de l'avant, car nous (équipe Hawkular APM) avons décidé de joindre nos forces avec Jaeger pour le backend OpenTracing.