Percona Monitoring and Management

Find the slow query, not just the slow server.

Open source monitoring and query analytics for MySQL, PostgreSQL, MongoDB and Valkey/Redis.
Self-hosted, and every feature is open source: there is no paid edition.

Latest release Docker pulls License: AGPL-3.0 | Apache-2.0 Forum topics GitHub stars

▶ Try the live demo · Quickstart · Docs · Forum

![PMM: from a CPU spike to the PostgreSQL query behind it](.github/readme/pmm-hero.gif)

From a CPU spike on the node to the PostgreSQL query behind it.

MySQL Percona Server MariaDB PostgreSQL MongoDB Valkey Redis ProxySQL HAProxy Amazon RDS / Aurora Azure Google Cloud

Supported versions follow the Percona lifecycle policy.

## Quickstart **1. Start PMM Server** (needs Docker; the script installs it if it's missing) ```sh curl -fsSL https://www.percona.com/get/pmm | /bin/bash ``` Open `https://` and log in as `admin` / `admin`, then set a new password. **2. Connect a database** (on the database host; Debian/Ubuntu shown) ```sh wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb sudo percona-release enable pmm3-client release sudo apt update && sudo apt install -y pmm-client sudo pmm-admin config --server-insecure-tls --server-url=https://admin:@:443 sudo pmm-admin add mysql --username=pmm --password= --query-source=perfschema ``` This assumes a fresh server with its self-signed certificate. For production, use a trusted certificate (drop `--server-insecure-tls`) and register with a [service account token](https://docs.percona.com/percona-monitoring-and-management/3/api/authentication.html) instead of the admin password. Open **Query Analytics** and your queries appear within a minute. The `pmm` database user needs [these privileges](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-client/connect-database/mysql/mysql.html). Guides for RHEL, Docker, [PostgreSQL, MongoDB, Valkey/Redis, Amazon RDS/Aurora, Azure and Google Cloud](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-client/connect-database/index.html) are in the [full quickstart](https://docs.percona.com/percona-monitoring-and-management/3/quickstart/quickstart.html). Other ways to run PMM Server: [Docker](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-server/deployment-options/docker/index.html) · [Podman](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-server/deployment-options/podman/index.html) · [Kubernetes (Helm)](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-server/deployment-options/helm/index.html) · [AWS Marketplace](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-server/deployment-options/aws/deploy_aws.html) ## Product tour
Query Analytics: find the queries that cost the most Every query ranked by load, with examples, EXPLAIN plans and table stats. See the [Query Analytics docs](https://docs.percona.com/percona-monitoring-and-management/3/use/qan/index.html). ![Query Analytics: queries ranked by load, with per-query metrics](documentation/docs/images/PMM_Query_Analytics_Tabs_Details.jpg)
Dashboards for every layer: node → instance → query For MySQL, PostgreSQL, MongoDB, Valkey/Redis, ProxySQL and HAProxy. Built on Grafana.
MySQL PostgreSQL Valkey / Redis
MySQL Instances Overview dashboard PostgreSQL Instances Overview dashboard Valkey/Redis Overview dashboard
Advisors: automatic checks for security, configuration and performance ![Advisor checks: failed checks by severity](documentation/docs/images/FailedChecks.png)
Alerting: ready-made templates, any Grafana contact point ![Alert status list with firing and silenced alerts](documentation/docs/images/Alert_status.png)
Backup and restore: MongoDB with point-in-time recovery, MySQL in Technical Preview ![MongoDB Backup Details dashboard](documentation/docs/images/BackupDetails_Dashboard.png)
**Runs where your databases run**: bare metal, VMs, Kubernetes, Amazon RDS/Aurora, Azure and Google Cloud. ## Why PMM? | | PMM | Prometheus + Grafana, self-built | Hosted DB monitoring | |------------------------------------------|-------------------|----------------------------------|----------------------| | Per-query analytics | Built in | Build it yourself | Yes | | DB dashboards, advisors, alert templates | Built in | Assemble by hand | Yes | | Where your data lives | Your servers | Your servers | Vendor cloud | | Cost | Free, open source | Free + your time | Per host, per month | ### Compared with tools you know **Prometheus + exporters**
Good if you want to assemble it yourself. PMM ships the exporters, curated dashboards, query analytics, advisors and alert templates as one install with one upgrade path. **Datadog Database Monitoring**
SaaS, priced per database host. PMM is self-hosted, so query text and samples stay on your servers. **pganalyze**
Commercial and PostgreSQL only. PMM covers PostgreSQL, MySQL, MongoDB and Valkey in one tool. ## How it works **PMM Server** (Grafana, VictoriaMetrics, ClickHouse, PostgreSQL) stores metrics and query data. **PMM Client** (`pmm-agent` plus exporters) runs next to each database and sends them. Details are in the [architecture reference](https://docs.percona.com/percona-monitoring-and-management/3/reference/index.html).
Architecture diagrams Overall Architecture PMM Server PMM Client
## FAQ
How is PMM different from Prometheus + Grafana? PMM is built on Grafana and VictoriaMetrics (PromQL-compatible) and adds the database parts: exporters configured for you, query analytics stored in ClickHouse, curated dashboards, advisors, alert templates and backups. It installs and upgrades as one product.
Will it slow down my database? The client reads statistics the database already collects (Performance Schema or the slow log, `pg_stat_statements` or `pg_stat_monitor`, the MongoDB profiler or log), and you choose the query source for each service. See [choosing a query source](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-client/connect-database/mysql/mysql.html).
Can I monitor Amazon RDS, Aurora or Azure without access to the host? Yes. Add the instance from the PMM web interface; nothing is installed on the database host. For RDS, PMM also reads Enhanced Monitoring metrics through the AWS API. See [Connect Amazon RDS](https://docs.percona.com/percona-monitoring-and-management/3/install-pmm/install-pmm-client/connect-database/aws.html).
Is any feature paid? No. Every feature is in the open source release. Percona sells [support](https://hubs.ly/Q02_Fs100), not features.
How do I upgrade? PMM Server: pull the new image for Docker or Podman, or run `helm upgrade` for Helm. PMM Client: your package manager. See the [upgrade guide](https://docs.percona.com/percona-monitoring-and-management/3/pmm-upgrade/index.html).
## Community and support - **Questions and ideas**: [Percona Forum](https://forums.percona.com/c/percona-monitoring-and-management-pmm) - **Bugs**: [PMM on Jira](https://perconadev.atlassian.net/issues/?jql=project=PMM). See [how to report a bug](CONTRIBUTING.md#submitting-a-bug). - **Contributing**: [CONTRIBUTING.md](CONTRIBUTING.md) · [good first issues](https://github.com/percona/pmm/labels/good%20first%20issue) - **Commercial support**: [Percona Support](https://hubs.ly/Q02_Fs100) for production deployments If PMM saves you time, give the repo a ⭐. It helps other DBAs find it. ## License - PMM Server: [GNU AGPLv3](./LICENSE) - PMM Client: [Apache 2.0](./agent/LICENSE) - PMM Documentation: [GNU AGPLv3](./documentation/LICENSE)