Skip to content

Scrape Prometheus metrics into Osuite

Many services already expose a Prometheus /metrics endpoint — application libraries with a Prometheus client, and standalone exporters like node_exporter, postgres_exporter, or redis_exporter. To bring those metrics into Osuite, run the OpenTelemetry Collector with the prometheus receiver: it scrapes the endpoints on a schedule and forwards the samples to Osuite over OTLP. You do not point the exporters at Osuite directly — the Collector does the scraping and the forwarding.

  • One or more targets that expose a Prometheus /metrics endpoint the Collector can reach on the network.
  • An OpenTelemetry Collector running where it can scrape those targets.
  • Your Osuite ingest endpoint and token.

The prometheus receiver takes a standard Prometheus scrape_configs block. Scrape the targets, batch, and export over OTLP:

receivers:
prometheus:
config:
scrape_configs:
- job_name: 'payment-service'
scrape_interval: 30s
static_configs:
- targets: ['payment-service:9100']
- job_name: 'node-exporter'
scrape_interval: 30s
static_configs:
- targets: ['host-a:9100', 'host-b:9100']
processors:
batch: {}
exporters:
otlp/osuite:
endpoint: ingest.<region>.osuite.io:443
headers:
x-osuite-ingest-token: <your-ingest-token>
service:
pipelines:
metrics:
receivers: [prometheus]
processors: [batch]
exporters: [otlp/osuite]

The receiver defaults to the /metrics path over HTTP; set metrics_path and scheme: https on a job if a target differs. Each job_name becomes the service.name of the metrics from that job, and each target’s address becomes its service.instance.id, so choose job names you will recognize in the Explore metrics view.

Prometheus relabeling runs inside the receiver, before the samples are forwarded, so you can shape targets and drop noise at the source.

  • relabel_configs rewrites target labels before a scrape — for example, copying a meaningful label onto every series from a job.
  • metric_relabel_configs runs after the scrape and filters individual metrics — the cheapest place to drop high-cardinality or unused series you do not want to ingest.
- job_name: 'payment-service'
static_configs:
- targets: ['payment-service:9100']
labels:
team: 'payments'
metric_relabel_configs:
- source_labels: [__name__]
regex: 'go_gc_.*'
action: drop

Here every series from the job carries a team="payments" label, and the Go garbage-collector metrics are dropped before they leave the Collector.

Give the Collector one scrape interval, then open the Explore metrics view and search for a metric name you expect from the target — for a node_exporter job, node_cpu_seconds_total. It should list the scraped metrics with the job and instance labels attached.

  • No metrics from a target — confirm the Collector can reach the target’s address and port, and that the endpoint returns Prometheus text at /metrics. A scrape failure is recorded in the Collector’s own logs.
  • Wrong service name — the metrics are grouped by job_name; rename the job, not the metrics.

No data in Osuite after a few minutes? Work through these checks.

  • Endpoint — confirm the exporter targets exactly ingest.<region>.osuite.io:443 for your region, over TLS.
  • Token — confirm the ingest header carries a valid <your-ingest-token> and has not been rotated.
  • Pipeline — confirm the signal you expect (traces, logs, or metrics) is wired into an active pipeline with the otlp/osuite exporter attached.
  • Export errors — check the application or Collector logs for OTLP export failures (auth, DNS, TLS, connection refused).
  • Network — confirm the host has outbound access to the ingest endpoint on port 443.
  • Timing — allow up to a minute for the first data to appear before assuming a failure.

Still stuck? Ask the Investigation Agent or contact support.