> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# prometheus_exporter extension for MySQL

> The prometheus_exporter community extension serves a Prometheus /metrics endpoint from inside MySQL, covering status variables, InnoDB metrics, and replication.

Scraping MySQL for Prometheus usually means running a separate exporter process
that logs in and polls. `prometheus_exporter` serves the `/metrics` endpoint
from inside the server instead, so there is one fewer process to deploy,
authenticate, and keep alive.

|                              |                                                                                           |
| ---------------------------- | ----------------------------------------------------------------------------------------- |
| **Maintainer**               | [ProxySQL](https://github.com/ProxySQL)                                                   |
| **Source and documentation** | [ProxySQL/vsql-prometheus-exporter](https://github.com/ProxySQL/vsql-prometheus-exporter) |
| **License**                  | GPL-2.0                                                                                   |

<Note>
  A third party writes and maintains this extension. VillageSQL does not build,
  test, or ship it, and the description below follows the maintainer's own
  documentation. Read that documentation before you rely on it.
</Note>

## Install

<Warning>
  The code on the repository's default branch does not build against the current
  SDK: it calls `make_sys_var_bool` and `make_status_var_int`, which left the SDK
  in May 2026. The ported code is on the maintainer's open pull request
  [#4](https://github.com/ProxySQL/vsql-prometheus-exporter/pull/4), which
  declares preview capabilities, so a server built from it must be started with
  `--vsql_allow_preview_extensions=ON`.
</Warning>

Build it from that branch, then install it into the server:

```sql theme={null}
INSTALL EXTENSION prometheus_exporter;
```

## What it adds

It adds an HTTP listener and three settings, and no SQL functions.

| Setting                            | Default     | What it controls          |
| ---------------------------------- | ----------- | ------------------------- |
| `prometheus_exporter.enabled`      | `OFF`       | Whether the listener runs |
| `prometheus_exporter.port`         | `9104`      | The port it listens on    |
| `prometheus_exporter.bind_address` | `127.0.0.1` | The address it binds      |

Four families of metric are exported, each named after where it came from.

| Prefix                              | Source                              |
| ----------------------------------- | ----------------------------------- |
| `mysql_global_status_`              | `SHOW GLOBAL STATUS`                |
| `mysql_global_variables_`           | The numeric server variables        |
| `mysql_info_schema_innodb_metrics_` | `information_schema.innodb_metrics` |
| `mysql_replica_`                    | `SHOW REPLICA STATUS`, on a replica |

The exporter also reports on itself through `requests_total`,
`scrape_duration_us`, and `errors_total`.

## Example

The maintainer's quick start turns it on and picks a port:

```sql theme={null}
INSTALL EXTENSION prometheus_exporter;
SET GLOBAL prometheus_exporter.port = 9104;
SET GLOBAL prometheus_exporter.enabled = ON;
```

Prometheus then scrapes `http://127.0.0.1:9104/metrics`.

<Warning>
  The listener binds to localhost unless you change it, which is the safe
  choice. Metrics describe your traffic and configuration, so put the port
  behind something that authenticates before you move it off the loopback
  address.
</Warning>

## See also

* [Available extensions](/docs/mysql-8.4/stable/extensions) — the full catalog
* [ProxySQL/vsql-prometheus-exporter](https://github.com/ProxySQL/vsql-prometheus-exporter) — source, the metric list, and the test suite
