Prerequisites
Before installing PMP4PG, make sure your environment meets the following requirements.
PMP4PG Backend
The backend is a Java Spring Boot application. It requires:
| Requirement | Minimum Version | Notes |
|---|---|---|
| Java JDK | 17 or later | JDK (not JRE) required |
| Operating System | Linux (recommended) | Windows and macOS supported for development |
| RAM | 2 GB minimum | 4 GB recommended for production |
| Disk | 10 GB minimum | Depends on metrics retention period |
| Network | Accessible from all monitored servers | Agents must be able to reach the backend REST API |
The backend server does not need to be co-located with any PostgreSQL server. It is typically deployed on a dedicated host or VM.
PMP Repository
PMP4PG uses PostgreSQL as its central data repository.
| Requirement | Minimum Version | Notes |
|---|---|---|
| PostgreSQL | 14 or later | Used as the metrics repository |
| TimescaleDB | 2.x | Extension for efficient time-series storage |
| RAM | 2 GB minimum | Dedicated to repository PostgreSQL instance |
| Disk | Depends on fleet size and retention | Plan for ~5 GB/month per monitored server under normal load |
The PMP repository PostgreSQL instance is separate from the PostgreSQL servers you want to monitor. Do not install the PMP repository on a server you are monitoring with PMP4PG.
PMP4PG Frontend
The frontend is an Angular single-page application. For self-hosting:
| Requirement | Minimum Version | Notes |
|---|---|---|
| Web Server | Nginx (recommended) or Apache | Serves the compiled Angular bundle |
| Node.js | 18 or later | Required only if building from source |
If you are using the pre-built distribution package, Node.js is not required on the server. Only a web server such as Nginx is needed.
PMP4PG Agent
The agent is a pre-compiled Go binary. It runs on each PostgreSQL server you want to monitor.
| Requirement | Details |
|---|---|
| Operating System | Linux (x86_64) |
| PostgreSQL | 13 or later (the instance being monitored) |
| Network access | Must be able to reach the PMP4PG backend on its configured port |
| PostgreSQL user | A monitoring user with read access to pg_stat_activity, pg_stat_statements, pg_stat_database |
Required PostgreSQL Permissions
The agent connects to PostgreSQL using a dedicated monitoring user. This user needs the following privileges:
-- Create monitoring user
CREATE USER pmp_monitor WITH PASSWORD 'your_secure_password';
-- Grant required permissions
GRANT pg_monitor TO pmp_monitor;
-- Required for pg_stat_statements
GRANT EXECUTE ON FUNCTION pg_stat_statements_reset() TO pmp_monitor;
:::info pg_stat_statements
The pg_stat_statements extension must be enabled on each monitored PostgreSQL instance for query-level analysis in ASH and AWR. Add the following to postgresql.conf:
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all
Then create the extension:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
:::
Network Requirements
| Source | Destination | Port | Protocol |
|---|---|---|---|
| PMP Agents | PMP4PG Backend | 8080 (default) | HTTP / HTTPS |
| Browser (users) | PMP4PG Frontend | 80 / 443 | HTTP / HTTPS |
| PMP4PG Backend | PMP Repository | 5432 (default) | PostgreSQL |
:::warning Firewall Ensure that firewalls between agents and the backend allow outbound connections from agent hosts on the configured backend port. :::