5 ms·
> This PR would sort of allow data to flow OUT of datadog's libs/agents? Yes. This allows you to expose a Telemetry collector on the datadog agent port 8126[0
by judge2020 4y ago
> This PR would sort of allow data to flow OUT of datadog's libs/agents?
Yes.
This allows you to expose a Telemetry collector on the datadog agent port 8126[0], allowing you to collect Application Performance Monitoring (APM) traces from any APM-enabled datadog library[1].
If I had to guess, DataDog's argument is that they don't want you using the engineering hours they invest into their libraries to have DD do the heavy lifting of collecting APM traces and send the messages off to another service.
<removed OSS comment>
0: https://github.com/boostchicken/opentelemetry-collector-contrib/blob/datadog-receiver/receiver/datadogreceiver/README.md https://github.com/boostchicken/opentelemetry-collector-cont...
1: https://docs.datadoghq.com/tracing/#send-traces-to-datadog https://docs.datadoghq.com/tracing/#send-traces-to-datadog
- cmeacham98 4y ago> DataDog's libraries don't seem to be OSS: https://github.com/DataDog/datadogpy/blob/master/LICENSE https://github.com/DataDog/datadogpy/blob/master/LICENSE Is that not a verbatim the 3-clause BSD license (which is an FSF/OSI approved OSS license)?
- deleted 4y ago[deleted]
- aeyes 4y agoThe library you linked is just for sending metric data (gauges, counters etc), the relevant library for APM is called ddtrace and its dual licensed with Apache2 and BSD3. https://github.com/DataDog/dd-trace-py/blob/1.x/LICENSEe https://github.com/DataDog/dd-trace-py/blob/1.x/LICENSEe
- blibble 4y agothat LICENSE of theirs is literally 3 clause BSD?
- hosh 4y agoWhen we switched off of AppSignal, since our instrumentation as deeply intertwined with our code, it took a while to change that over to Otel. But at least now, being Otel, theoretically if we want to change it to a different vendor, we can. If we were to change off of DD, and there is an otel collector that can accept DD APM spans, then we can switch now, refactor later. In practice, DD has a lot going for it that I don't see in New Relic. There are also some key features in DD that is not in OTEl -- for example, we can't use DD's APM ingestion controls for controlling sampling rates for OTEL spans, and DD has no incentive to add such a feature. I'm actually working on adding in Otel sampling into our project right now. (In our case, we have to use Otel because DD does not have SDKs for Elixir)
- technimad 4y agoWhy sample otel spans and miss out on the important ones?
- harpratap 4y agoBecause of cost?
- hosh 4y agoWhile I would like to ingest every one, cost is a factor. Even if we were self-hosting, there's a cost to ingesting and storing every single span. And even if we are able to pay for ingesting 100%, not everything is practical to be ingested 100%. Our most common request type (heartbeat) generate a span payload size that is a multiple of the original request. We're using Elixir in production, and those can absorb a tremendous amount of traffic, saturating the entire CPU capacity of the hardware if we let it. The agents are not capable of keeping up.
- phillipcarter 4y agoYou can sorta have your cake and eat to too. Firstly, not all spans are interesting. When 99.99% of your traffic is just going to serve up an HTTP 200 within your acceptable latency threshold, you don't need every one of those. You probably do want to keep 100% of error spans, or those where the root has a duration beyond a configured threshold. There's tools to be able to sample that way. Secondly, there's ways to also attach your effective sample rate as metadata to spans, and if there's a backend that supports re-weighting counts based on that, you can still get accurate all-up counts of overall traffic. Admittedly, OTel and many other backends don't have the best story for this yet. But it's getting better.