-
Notifications
You must be signed in to change notification settings - Fork 375
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Falcon support #1136
Comments
Hey @ioquatix, thank you for all your work on Ruby asynchronous I/O! We have not tested From a technical standpoint, implementing Falcon instrumentation only carries one caveat around ensuring That being said, our team is not currently focused on working on this new instrumentation, but we are more than happy to assist with this work and help with any blockers necessary to get it merged. |
Can you tell me how I could add tests to falcon? e.g. some high level integration tests which run some requests, log the spans to a local file or something, and then I can check they were captured correctly. |
👋 @ioquatix, had some dedicated time to try to write some specs you could follow, but I realized, after spending some time with the Async library, that our existing instrumentation dependent on thread-local variables would likely not work as expected with Falcon. A The code responsible for the thread-local behaviour is encapsulated in this class: dd-trace-rb/lib/ddtrace/context_provider.rb Lines 41 to 48 in 0574335
The implementation of a Fiber-aware ContextProvider doesn't seem too complicated, the main challenge being to ensure no behaviour change for non-Fiber users. I think this is the very first challenge we face to implement support for users of Async. |
Just gonna drop the bomb. Did you know |
No, I did not! I thought it was only the other way around... thank you for that! I'll try next to find what level we would like to instrument Falcon: I noticed while working with it yesterday that a lot of the heavy lifting is done by other "Socketry", and we might have better luck with those. |
I have a plan to expose instrumentation hooks. This is APM agnostic. I don't want APM libraries injecting random stuff into the async code if possible. I'd rather have a well defined interface for it. I don't know what that is yet, but interested to hear how you get on. |
Okay, I've created my agnostic hooks: https://github.com/socketry/traces I've implemented a backend for Datadog: https://github.com/socketry/traces-backend-datadog I've added some test trace captures including distributed tracing to https://github.com/socketry/async-http. This would provide a decent coverage within Falcon, at least initially. But there are some wider issues including metrics, and this is all largely untested. Are you able to give me some credit on my plan so I can test it further? |
By the way, with the advent of the above gems, this feature request is no longer relevant since I'll directly provide the tracing/metrics/integrations rather than expecting this gem to provide them. |
Hey! I was asking internally and there's actually a program at Datadog to give away free (as in beer/gratis) accounts for relevant open-source projects, which fits really well with Falcon and the Socketry ecosystem. Do you mind filling https://www.datadoghq.com/partner/open-source/ and dropping a note in the comments that you've been working on this with me? We should be able to get you setup nicely :) |
@ivoanjo I am still waiting, should I have heard something by now? Thanks! |
I shall find out what's up! :) |
Should be all set now! 🚀 |
Hello. I'm the author of Falcon and I'm hoping to add support for DataDog's tracing.
1/ Have you tested DataDog with Falcon?
2/ Are you interested in helping with this?
The text was updated successfully, but these errors were encountered: