TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

We Migrated from StatsD to Prometheus in One Month

3 pointsby Vendanover 1 year ago

2 comments

rewmieover 1 year ago
From the article:<p>&gt; Our services now ran on Kubernetes with individual pods collecting tens-of-thousands of metric samples per second. Engineers also evolved much stricter expectations for the amount of dropped metric samples (none).<p>Is there any indication of how many datagrams can be dropped in a localhost connection? I expect zero datagrams to be dropped between a service and it&#x27;s sidecar.<p>It&#x27;s also possible to run a StatsD node in a Kubernetes cluster as a DaemonSet. Each service+StatsD sidecar runs as a Deployment and StatsD sidecars can be configured to both aggregate metrics and push them to the StatsD DaemonSet through a TCP connection. This would lead to very low traffic rates between each Deployment and the DaemonSet, as sidecars can push their metrics in periods of several seconds or even minutes, and each Kubernetes node typically runs single digit&#x2F;low two digit Deployments which results in single-digit TPS.<p>Does anyone with experience in both Prometheus and StatsD have any insight into this scenario? At first glance it sounds like the premise to push a migration to Prometheus is flawed and unjustified.
matthewtseover 1 year ago
It&#x27;s interesting to me how Prometheus came to dominate the metrics ecosystem over the past decade.<p>When I first encountered it, I had a visceral reaction against it, primary over: 1) The PromQL query language is really not intuitive. I&#x27;ve been using it for years and I still stick to really simple joins to keep myself out of hot water 2) Being forced to use rate() on counter metrics was a really big initial barrier against one of the presumably simpler things a metrics system should handle. See this popular long blog post explaining what Prometheus Counters are: <a href="https:&#x2F;&#x2F;www.robustperception.io&#x2F;how-does-a-prometheus-counter-work&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.robustperception.io&#x2F;how-does-a-prometheus-counte...</a><p>But complicated rate() and counters were a symptom of the killer feature about Prometheus, that it was a pull-based rather than push-based model. This meant you could easily re-deploy subcomponents of your metrics system, getting rid of the hair-raising stop-the-world updates that we used to have to do with graphite.