View Source API Reference Data Streams Ex v1.2.2
Modules
This is a port of the data-streams-go library to Elixir.
A GenServer
instance responsible for aggregating many points of data
together into 10 second buckets, and then sending them to the Datadog
agent. It holds many structs in its memory, looking something like this
Responsible for parsing application configuration to usable chunks in the application.
Logic for linking current running container id to data stream traces.
This module deals with storing a Datadog.DataStreams.Pathway
in process, so it can be propagated later on. In Golang, this is handled
via Context
which is a grab bag that is
passed down the whole calling stack. We don't have an equivalent in Elixir,
so we instead piggy back off of OpenTelemetry.Baggage
. This
essentially lets us do the same thing without needing to manually pass
data down the calling stack.
Fowler-Noll-Vo variant 1 64-bit hash implementation. Use for
Datadog.DataStreams.Pathway
hashing.
Functions for integrating Kafka tracing with DataStreams.
A pathway is used to monitor how payloads are sent across different services.
Encoding logic for a payload. This is the top level struct we send to Datadog. It wraps all other information. These are primarily sent via MessagePack, although uses Protobuf encoded binary for latency records.
Handles propagating Datadog.DataStreams.Pathway
via encoding and adding
to message headers.
A helper module to enumerate and filter over data stream tags.
An HTTP client for Datadog data streams reporting. It uses the Finch
library for requests.
A minimal implementation of the distributed quantile sketch (DDSketch)
algorithm as implemented in the sketches-go
library. For more
information, please read the sketches-go
README.
Basic module for handling various index mapping algorithms. All functions in this module proxy to the respective index mapping implementation module.
LogarithmicMapping is an IndexMapping that is memory-optimal, that is to say that given a targeted relative accuracy, it requires the least number of indices to cover a given range of values. This is done by logarithmically mapping floating-point values to integers.
Different stores use different data structures and techniques to store data. Each with unique trade offs and memory usage. All functions in this module proxy to the respective index mapping implementation module.
The Dense store is a dynamically growing contiguous (non-sparse) store. The
number of bins are bound only by the size of the :array
that can be allocated.