Hello @allie, a long time has passed since my initial post and now, I found myself searching through the forums again for news with regards to a proper way of integrating with New Relic.
After reading your reply again, I think that you are talking about a code API, used by calling some NR-provided methods to instrument the application code, but I’m talking about an HTTP API, where people could just POST the metrics and traces information directly, without any New Relic provided code or libraries.
Going back to our use case (and I guess @gavinr as well), we, the Kamon team, do have a lot of instrumentation code for several frameworks and we do have our own code API to gather transaction information and metrics which is then reported with the very same format to all the backend modules we support and then adjusted to the needs of each backend: UDP for StatsD and Datadog, Json for our current New Relic module and a few more integrations will come soon. So, obviously we cannot spread New Relic specific code through our codebase but rather find a way to push data to your servers, and that currently translates to talking directly to your collectors.
The Agent SDK solves the issues you mentioned only when you use it as the base for all instrumentation in a given application and that is not the case for us. Also, I did review the new Async Transaction API introduced in the New Relic Agent but, same as with the Agent SDK, it requires us to spread New Relic specific code through our codebase and we can’t do that.
You mentioned that:
I have been following the collectors API for at least two years now and I can say that nothing that was there when I started working with it has ever changed, although some new things have been added. So, at least two years of no breaking changes wouldn’t make it an stable HTTP API for the community to use?.
Finally, the decision of not making your collector protocol public is still a final decision? has the public HTTP API idea found any sponsors on your side?