Skip to content
Push vs Pull Ingestion
step 1/5

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…