What is an exporter?

An exporter is a small program (a daemon, in most cases) that exists for one job: collect metrics from one specific thing (a host, a database, a webserver, a custom app…) and expose them on an HTTP endpoint in a standard format.

The pattern is universal:

  1. The exporter reads something locally (reads /proc/stat, queries MySQL with SHOW GLOBAL STATUS, pings a URL…).
  2. It transforms the data into the Prometheus exposition format (plain text, label-based, one line per metric).
  3. It serves the result on http://host:port/metrics.

That’s it.

An exporter doesn’t push anywhere, doesn’t store anything long-term, doesn’t talk to the database: It just exposes.

Common exporters worth knowing

ExporterMeasuresPort (default)
node-exporterLinux host (CPU, RAM, disk, net, filesystem)9100
cAdvisorDocker / container resource usage8080
mysqld-exporterMySQL/MariaDB internal state9104
postgres-exporterPostgreSQL internal state9187
redis-exporterRedis instance9121
nginx-vts-exporterNginx connections, request rates9913
blackbox-exporterHTTP/TCP/ICMP probes (synthetic monitoring)9115
kube-state-metricsKubernetes objects state8080
process-exporterper-process metrics by command name9256
Your custom oneWhatever your app does(you decide)

You can also write your own exporter in any language with a Prometheus client library (Python, Go, Java…).