If Apache Iggy is useful to you, give it a star on GitHubStar apache/iggy
Apache Iggy
Server

Scrape the server's Prometheus metrics: the token the endpoint needs, what it exports, and which metrics are worth alerting on.

The server exports Prometheus metrics on its HTTP API at /metrics. Both the HTTP API and the metrics endpoint are on by default. See [http.metrics] to change the path or turn it off.

This page covers the server's own metrics. The connectors runtime has a separate endpoint with its own metric names; see Connectors observability.

Get a token for the scraper

/metrics needs a bearer token, like every other read on the HTTP API. Any logged-in user can scrape it; there's no separate monitoring permission. Prometheus can't log in, so create a personal access token and put it in the scrape config:

iggy pat create prometheus 90d

The token is printed once. The Prometheus scrape config is in [http.metrics].

The token can read every metric the server exports, so store it like any other secret: in a Kubernetes Secret or your secrets manager, not in a file you commit. With the Helm chart, set it through server.serviceMonitor.authorization. See Docker & Helm.

What's exported

The core metrics are below. The gauges are read fresh on every scrape.

MetricTypeWhat it counts
http_requests_totalcounterHTTP API requests
streams, topics, partitions, segmentsgaugeCurrent number of each
messagesgaugeMessages stored
usersgaugeUsers
clientsgaugeConnected clients

The names have no iggy_ prefix, so watch for clashes if Prometheus scrapes other exporters with similar names.

Each shard also exports its own lower-level metrics, labelled shard="<id>". These cover the write-ahead log (the partition_wal_* series), partition housekeeping (partitions_*), and requests or frames the server refused or dropped. To see the full list with descriptions, scrape a running server:

curl -s -H "Authorization: Bearer <token>" http://localhost:3000/metrics | grep '^# HELP'

What to alert on

  • frame_drops_total{variant="forward_client_send"}. Any increase means a client never got a reply to a request. Most other frame_drops_total variants are retried or repaired automatically. This series only appears after the first drop, so on a healthy server it won't be in the scrape at all. Write the alert so that a missing series counts as no drops.
  • stats_rollup_underflows_total. It goes up when a stream, topic or partition total would have dropped below zero and was held at zero instead. A few during deletes, purges or restores are expected. A steady rise at other times is worth a look.

Grafana and OpenTelemetry

Add Prometheus as a data source in Grafana, then build panels from the metric names above.

The server doesn't export metrics over OTLP. To bring them into an OpenTelemetry pipeline, scrape /metrics with the collector's Prometheus receiver, using the same bearer token. Server export of logs and traces over OTLP isn't available yet; see [telemetry].

On this page