Integration · Prometheus

Prometheus monitoring with remote write and PromQL

Keep your exporters, scrape configs and PromQL. Obseria receives Prometheus metrics via remote write or the OpenTelemetry Collector and adds long-term storage, topology and AI root cause.
Obseria apps and capabilities: observability, APM, infrastructure and integrations
Obseria home dashboard with service health, open problems, SLO compliance and ingestion
Obseria trace explorer with span list and span attributes
Overview

Why monitor Prometheus with Obseria

Keep PromQL

Query Prometheus metrics in Obseria with PromQL, or switch to OQL and SQL when you want to join metrics with logs and traces.

Long-term storage without sharding

Metric data points are retained for 13 months in Obseria Lake, so you no longer operate Thanos, Cortex or federation layers just for history.

Context beyond metrics

TopoGraph links each series to the pod, host and service it came from, and Obseria Intelligence correlates metric anomalies with traces and logs.

Coverage

Prometheus sources Obseria ingests

  • Prometheus server. Existing servers forward samples through remote write with a bearer token and per-series relabeling.
  • Prometheus Agent mode. Run Prometheus in agent mode as a lightweight scraper that only forwards data, without a local TSDB to manage.
  • Exporters. node_exporter, blackbox_exporter, mysqld_exporter, kube-state-metrics and any other /metrics endpoint keep working unchanged.
  • OpenTelemetry Collector. The prometheus receiver scrapes targets with standard scrape_configs and sends the data via OTLP.
  • Kubernetes service discovery. Pods, services and endpoints discovered by Prometheus or the Obseria Agent DaemonSet are scraped automatically.
  • Client libraries. Applications instrumented with Prometheus client libraries for Go, Java, Python or Node.js need no code changes.
At a glance

The Prometheus signals that matter

Obseria collects these values automatically and shows them in ready-made dashboards and alerts.

Data collection health

Shows whether all monitored systems are reachable and deliver their data on time, so no blind spots appear.

  • up
  • scrape_duration_seconds

Data volume

Tells you how much monitoring data is collected and stored, which drives both storage needs and cost.

  • scrape_samples_scraped
  • prometheus_tsdb_head_series

Delivery to Obseria

Reveals whether data is forwarded reliably and quickly, or whether it is piling up or getting lost on the way.

  • prometheus_remote_storage_samples_pending
  • prometheus_remote_storage_samples_failed_total
  • prometheus_remote_storage_shards

Alert reliability

Highlights alert rules that fail to run, meaning important warnings might never reach your team.

  • prometheus_rule_evaluation_failures_total
Show all 8 metrics in detail
MetricUnitWhat it tells you
up1Whether the last scrape of a target succeeded; the first signal of a broken exporter.
scrape_duration_secondssHow long each scrape took; values near the scrape timeout lead to gaps.
scrape_samples_scraped{samples}Samples returned per scrape; sudden jumps point to a cardinality explosion.
prometheus_tsdb_head_series{series}Active series in the head block, the main driver of Prometheus memory use.
prometheus_remote_storage_samples_pending{samples}Samples queued for remote write; a growing queue means the endpoint cannot keep up.
prometheus_remote_storage_samples_failed_total{samples}Samples that failed to send with a non-recoverable error.
prometheus_remote_storage_shards{shards}Parallel remote write shards currently in use; pinned at max_shards means throttling.
prometheus_rule_evaluation_failures_total{evaluations}Recording and alerting rules that failed to evaluate.
Setup

Set up Prometheus monitoring in minutes

  1. Step 1

    Create an ingest token

    Create a token with metric ingest scope in Obseria and store it as a file or Kubernetes secret next to Prometheus.

  2. Step 2

    Add remote_write

    Add a remote_write block with the Obseria endpoint and bearer token, then reload Prometheus. Optionally drop series you never query.

  3. Step 3

    Query and alert

    Open the Prometheus dashboards, run your PromQL queries and turn the important ones into alerts and SLOs.

Example configuration · YAML
# prometheus.yml: forward every scraped series to Obseria
remote_write:
  - url: "https://<your-obseria-remote-write-endpoint>"
    authorization:
      type: Bearer
      credentials_file: /etc/prometheus/obseria-token
    queue_config:
      capacity: 10000
      max_shards: 50
      max_samples_per_send: 2000
    write_relabel_configs:
      # drop high-churn series you never query
      - source_labels: [__name__]
        regex: "go_gc_duration_seconds.*"
        action: drop

Out of the box

Dashboards, alerts and SLOs that are ready the moment data arrives.

  • Prometheus remote write health and queue backlog
  • Scrape target availability (up) by job
  • Series cardinality by metric and label
  • Alert: target down for more than 5 minutes
  • Kubernetes cluster overview from kube-state-metrics
Guide

Prometheus monitoring: what matters

Why Prometheus monitoring needs more than one server

Prometheus is the default metrics system in cloud native environments. A single server with local storage is easy to run, but it was designed for a short retention window and for a single failure domain. As clusters multiply, teams end up running several servers per region, federation, and a long-term storage layer such as Thanos or Cortex. Prometheus monitoring then becomes two jobs: monitoring your workloads, and keeping the monitoring itself alive.

Obseria takes over the second job. Your Prometheus servers or agents keep scraping exporters as before and forward samples via Prometheus remote write. Obseria stores them for 13 months, answers PromQL queries and puts every series into the context of your topology, traces and logs.

The Prometheus metrics that matter

Every Prometheus setup should watch itself with a small set of meta metrics:

  • Target health: up is 1 for every successful scrape. Alert on up == 0 per job, not per instance, to avoid alert storms during rollouts.
  • Scrape cost: scrape_duration_seconds and scrape_samples_scraped show slow exporters and targets that suddenly expose far more series.
  • Cardinality: prometheus_tsdb_head_series is the number of active series. It drives memory and is the first metric to check when Prometheus is OOM-killed.
  • Remote write health: prometheus_remote_storage_samples_pending, prometheus_remote_storage_samples_failed_total and prometheus_remote_storage_shards tell you whether data actually leaves the server.
  • Rule evaluation: prometheus_rule_evaluation_failures_total catches recording and alerting rules that silently stopped working.

Common problems and how to detect them

Cardinality explosions

A label with user IDs, request paths or pod hashes can multiply series overnight. Watch the growth rate of head series and samples per scrape, and use write_relabel_configs to drop or aggregate labels before they leave the server. In Obseria, the Pipeline can additionally drop or rewrite labels at ingest.

Remote write falling behind

If the pending sample count grows and shards sit at max_shards, the network or the receiving endpoint is the bottleneck. A query such as rate(prometheus_remote_storage_samples_failed_total[5m]) > 0 is a good alert. Tune capacity, max_shards and max_samples_per_send in queue_config instead of raising scrape intervals.

Gaps after restarts

Local TSDB data is lost when a pod without a persistent volume restarts. With remote write, the history lives in Obseria, and Prometheus in agent mode only needs a small write-ahead log.

Best practices for scaling Prometheus

  1. Use Prometheus agent mode or the OpenTelemetry Collector at the edge and keep only one central store for queries.
  2. Add an external label for cluster and region so series from different servers never collide.
  3. Set sample_limit per scrape job so a single misbehaving target cannot overload the server.
  4. Follow naming conventions (_total, _seconds, _bytes) so metric types are clear in every tool.
  5. Review the top series by metric name regularly and delete what nobody queries.

How Obseria helps with Prometheus monitoring

Obseria accepts Prometheus data through remote write, through the prometheus receiver of the OpenTelemetry Collector, or by letting the Obseria Agent scrape /metrics endpoints directly. PromQL works for dashboards and alerts, and OQL lets you join the same metrics with logs and spans. TopoGraph maps series to Kubernetes workloads and hosts, so an alert on a latency histogram already shows which service and which deployment are affected. Obseria Intelligence detects anomalies on your Prometheus metrics and explains them with a chain of evidence. You pay per metric data point ingested and stored, not per host, and data points dropped in the Pipeline only cost ingestion.

A typical migration runs in parallel: add remote write to one cluster, compare dashboards and alerts side by side for a few days, then roll the same configuration out to the remaining servers. Because the scrape layer does not change, exporters, ServiceMonitors and recording rules stay exactly where they are, and you can stop the remote write at any time.

Prometheus monitoring FAQ

Yes. Obseria supports PromQL for queries, dashboards and alerts. You can also use OQL or SQL on the same metrics when you want to correlate them with logs and traces.

No. Add a remote_write block and your servers keep scraping as before. Many teams later switch to Prometheus agent mode or the OpenTelemetry Collector to reduce the local footprint.

Metric data points are retained for 13 months, so you do not need a separate long-term storage layer such as Thanos or Cortex.

Drop series with write_relabel_configs before sending, or filter and aggregate them in Obseria Pipeline at ingest. Filtered data points are only charged for ingestion.

Yes. The Prometheus resource of the Operator supports a remoteWrite section, so you add the Obseria endpoint and a secret reference there. ServiceMonitors and PodMonitors stay as they are.

Start monitoring Prometheus today

Connect Prometheus in minutes with OpenTelemetry or the Obseria Agent. Free for 14 days.