Saluki is an experimental toolkit for building telemetry data planes in Rust.
This repository contains experimental code that is UNSUPPORTED and may cease to receive further updates at ANY TIME. In the event that we cease further development, the repository will be put into a read-only archive state.
Everything under lib
contains reusable/common code, and everything under bin
contains dedicated crates for building
application-specific binaries.
bin/agent-data-plane
: data plane used for testing Saluki, which emulates the standalone DogStatsD server in the Datadog Agent
lib/datadog-protos
: Rust bindings generated from Protocol Buffers definitions for metrics/trace intake APIslib/ddsketch-agent
: Rust implementation of the DDSketch algorithm matched to the implementation used in the Datadog Agentlib/memory-accounting
: foundational traits and helpers for declaring memory bounds on components, and partitioning memory grants based on those componentslib/process-memory
: cross-platform library for querying the RSS of the current process with few to no allocationslib/stringtheory
: custom string types and string interning implementations for high-performance string handling
All remaining crates are part of Saluki itself, and all have a name with the prefix saluki-
:
lib/saluki-api
: minimal interface for defining API endpoints (to avoid circular crate dependencies)lib/saluki-app
: generic helpers for application bring up (initialization of logging, metrics, etc)lib/saluki-components
: feature-complete implementations of various common components (DogStatsD source, Datadog Metrics destination, and so on)lib/saluki-config
: lightweight helpers for both typed and untyped configuration file loadinglib/saluki-context
: core primitives for metric contexts (unique name and tag combination), including zero-allocation resolving and cachinglib/saluki-core
: core primitives for building data planes, such as the topology builder, foundational traits for components, buffers, and morelib/saluki-env
: helpers for interacting with the process's environment, such as querying time, hostname, host environment (e.g. cloud provider), and so onlib/saluki-error
: generic error type and helpers for error handling based onanyhow
lib/saluki-event
: the core event model used by Salukilib/saluki-health
: lightweight library for defining components and checking/exposing the health of those componentslib/saluki-io
: core I/O primitives for networking (TCP/UDP/UDS), serialization (codecs and framers), compression, I/O-specific buffers, as well as some common codec implementations (e.g. DogStatsD)lib/saluki-metadata
: basic crate for currying build-time information about the top-level binary into subcrates to support customization (e.g., getting the binary name/version in a generic way)lib/saluki-metrics
: helper macros for generating statically-defined metric structs to ease creating/holding registered metric handleslib/saluki-tls
: lightweight library for initializing global TLS primitives, as well as build client/server TLS configurations, in a centralized way that is amenable to ensuring certain aspects of usage (such as operating in FIPS mode) are controlled and conforming
If you find an issue with this package and have a fix, or simply want to report it, please review our contributing guide.
Please refer to our Security Policy if you believe you have found a security vulnerability.