Reading — step 1 of 5
Read
~1 min readTime-Series Workloads
Push vs Pull Ingestion
Two models for getting data into the TSDB:
Push (InfluxDB, Datadog):
- Apps emit metrics periodically to the TSDB endpoint.
- Pros: immediate; works through NAT; flexible.
- Cons: noisy when apps misbehave (flood); harder backpressure.
Pull (Prometheus):
- TSDB scrapes apps' /metrics endpoints periodically (e.g., every 15s).
- Pros: TSDB knows expected sources (down detection); easy backpressure.
- Cons: requires service discovery; doesn't traverse NAT well.
Push protocol example (Influx Line Protocol):
http_requests,method=GET,host=h1 count=42i,latency=0.013 1715000000000
metric,labels fields timestamp_ns
Pull (Prometheus Exposition Format):
# HELP http_requests_total Total requests
# TYPE http_requests_total counter
http_requests_total{method="GET",host="h1"} 42
Hybrid: OpenTelemetry can bridge — apps emit OTel; collector aggregates and pushes to TSDB or pulls.
Backpressure:
- Push: TSDB returns 429 / drops; client must buffer or drop.
- Pull: TSDB controls scrape concurrency.
Aggregation in transit:
- Cardinality reduction: drop or aggregate high-cardinality labels at agent.
- Pre-computation: rate, sum, percentile at edge to reduce points.
OpenMetrics / Prometheus exposition is a stable text format. Most modern apps speak it natively or via libraries.
Ingestion rate planning:
- Each point ~30 bytes after compression.
- 1M points/sec = 30 MB/sec ingest = 2.5TB/day.
- Hardware: 1-2 cores per 100k points/sec.
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…