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 Runtime | JRE 17 or later | |
| Operating System | Linux x86_64 | Tested on Rocky Linux 9. Other Linux distributions should work but are not officially tested. Windows and macOS are not supported. |
| RAM | 4 GB minimum | 8 GB For a single monitored server. Scale further based on number of monitored servers and concurrent users. |
| Disk | 20 GB minimum | Base allocation for the platform itself. Total disk usage depends on the number of monitored servers and the AWR data 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 | 16 or later | Used as the metrics repository |
| TimescaleDB | 2.x | Extension for efficient time-series storage |
| RAM | 4 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 packaged together with the backend inside the Spring Boot JAR. No separate web server or Node.js installation is required. For production deployments, Nginx is recommended as a reverse proxy in front of the application to handle SSL termination (HTTPS on port 443) and redirect traffic to the embedded Tomcat server running on port 8080.
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 | 14 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;
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 |
Ensure that firewalls between agents and the backend allow outbound connections from agent hosts on the configured backend port.