StatsD vs Prometheus: Qual Abordagem de Métricas?
StatsD é um protocolo de métricas push-based simples com um pequeno daemon agregador; Prometheus é um sistema de monitoramento pull-based e dimensional com uma linguagem de consulta rica.
StatsD deixa as aplicações dispararem counters e timers via UDP para um daemon que agrega e encaminha, valorizando a simplicidade sobre a dimensionalidade. Prometheus faz scraping de métricas rotuladas e oferece PromQL, alerting e um grande ecossistema. StatsD vence em simplicidade e instrumentação fácil de app; Prometheus vence em consulta dimensional, alerting e ecossistema.
| StatsD | Prometheus | |
|---|---|---|
| Modelo | Push (UDP) | Pull (scrape) |
| Dimensões | Limitadas (tags variam) | Labels de primeira classe |
| Consulta | Via store downstream | PromQL |
| Alerting | Externo | Embutido |
| Melhor para | Métricas simples de app | Monitoramento dimensional |
Caso de uso e modelo
StatsD serve à instrumentação rápida de aplicações, onde os apps enviam métricas simples sem expor um endpoint de scrape. Prometheus serve ao monitoramento dimensional com labels, consultas poderosas e alerting embutido. Um statsd_exporter pode fazer a ponte das métricas StatsD para o Prometheus.
Ajuste a ops e CI
StatsD é trivialmente leve; Prometheus é um sistema mais completo, mas ainda simples de operar. Ambos são exercitados no CI contra instâncias efêmeras, onde runners gerenciados mais rápidos encurtam os testes de integração de pipelines de métricas.
Decide with your own numbers, not a feature table
Feature comparisons age badly and rarely decide anything, because both tools in a mature category can do the job. What differs is how each behaves on your repository, and that takes one afternoon to measure.
# time a cold install with each candidate, cache cleared
hyperfine --prepare "rm -rf node_modules" --warmup 1 \
"<tool-a> install" "<tool-b> install"
# and the thing CI actually pays for: a cold run with no local cache
docker run --rm -v "$(pwd):/w" -w /w node:22 sh -c "<tool> install"What actually changes when you switch
- Lockfile format. A switch is a one-way door for anyone still on the old tool until everyone migrates, so plan it as a single coordinated change.
- Resolution strictness. Tools differ on whether an undeclared transitive import works, and the stricter one will surface latent bugs as new failures.
- CI cache configuration. The cache path and key differ per tool; carrying over the old ones silently disables caching.
- Everyone on the team and every runner must move together. Pin the version so they cannot drift.
O veredito
Quer instrumentação push extremamente simples: StatsD. Quer métricas dimensionais, PromQL e alerting embutido: Prometheus. Muitos fazem a ponte do StatsD para o Prometheus via exporter para ter o melhor dos dois.