// the find
bdeitte/hot-shots
A Node.js client for Datadog's DogStatsD server, InfluxDB's Telegraf StatsD server, the OpenTelemetry Collector StatsD receiver, and Etsy's StatsD server.
hot-shots is a Node.js StatsD client that targets Datadog's DogStatsD, Telegraf, OpenTelemetry Collector, and plain StatsD backends from a single library. It started as a fork of node-statsd and has grown considerably — UDS support, child clients, async timers, per-metric cardinality, and Datadog origin detection are all there. If you're shipping metrics from a Node.js app to any of these backends, this is the de facto choice.
Protocol flexibility is real: UDP, TCP, UDS, and raw streams all work, and backend-specific features (Datadog tags, Telegraf line protocol, OTel) are guarded cleanly so non-Datadog users don't get noise. The UDS retry/backoff options with configurable exponential backoff are a nice touch for high-throughput Datadog setups where packet drops are actually a problem. Test coverage is thorough — separate test files per feature area rather than one monolithic suite. The `asyncTimer` with dynamic tag injection via a context object is genuinely useful and I haven't seen it in similar libraries.
The callback semantics between buffered and unbuffered mode are a gotcha that will burn people: in buffered mode the per-metric callback fires synchronously with no delivery guarantee, which is the opposite of what most callers expect from a callback. The README documents it, but it's a footgun. UDS is Linux-only and requires node-gyp, which silently degrades to nothing on failure — fine in practice, but if you're deploying in a mixed-OS environment you'll spend time debugging why metrics stopped working on Windows. The single-maintainer publish model with no organizational backup is a real adoption risk for a library this many teams depend on. There's no native Promise/async API; everything is callback-based, and the async wrappers only cover the timer helpers, not the core send path.