Skip to main content

Starting the Platform

Once the repository and the server (backend + embedded frontend) are installed and configured, this page guides you through starting the platform and verifying that all components are running correctly.


Startup Order

PMP4PG has only two server-side components to start, in the following order:

1. PostgreSQL (repository)
2. PMP4PG Server (backend + embedded frontend)
note

There is no separate frontend service. The Angular frontend is embedded inside the pmp4pg.jar and served directly by the backend — starting pmp4pg starts both.


Step 1 — Start the Repository

# Start PostgreSQL
systemctl start postgresql-16 # Rocky Linux
# or
systemctl start postgresql # Ubuntu

# Verify it is running
systemctl status postgresql-16

# Test the repository connection
psql -U pmp4pg -h localhost -d metadata -c "SELECT version();"

Step 2 — Start the PMP4PG Server

systemctl start pmp4pg

# Check status
systemctl status pmp4pg

Expected output:

● pmp4pg.service - PMP4PG — PostgreSQL Workload Analyzer
Loaded: loaded (/usr/lib/systemd/system/pmp4pg.service; enabled; preset: disabled)
Active: active (running) since Fri 2026-06-26 23:02:48 CEST; 1min 8s ago
Docs: https://www.pmp4pg.com
Main PID: 718 (java)
Tasks: 38 (limit: 12115)
Memory: 340.6M
CPU: 18.521s
CGroup: /system.slice/pmp4pg.service
└─718 /usr/bin/java -Xms256m -Xmx512m -jar /usr/share/pmp4pg/pmp4pg.jar --spring.config.location=/etc/pmp4pg/application.properties
# Follow startup logs
journalctl -u pmp4pg -f --no-pager | head -30

# or directly from the log file
tail -f /var/log/pmp4pg/pmp4pg.log

API health check:

curl -s http://localhost:8080/pmp/actuator/health | python3 -m json.tool
# Expected: { "status": "UP" }

Frontend reachability check:

curl -o /dev/null -s -w "%{http_code}" http://localhost:8080/pmp/
# Expected: 200
note

By default, PMP4PG listens on port 8080 with no SSL. The full UI is accessible at http://<host>:8080/pmp. See Backend Installation for enabling HTTPS.


Full Platform Verification

ComponentVerification CommandExpected
Repositorypg_isready -U pmp4pg -d metadataaccepting connections
Server (API)curl http://localhost:8080/pmp/actuator/health{"status":"UP"}
Server (UI)curl -o /dev/null -s -w "%{http_code}" http://localhost:8080/pmp/200

If both components return the expected results, the platform is fully operational.

{screenshot: platform-all-systems-up}


Enabling Services on Boot

Make sure both services start automatically after a server reboot:

systemctl enable postgresql-16 # or postgresql
systemctl enable pmp4pg
tip

systemctl enable --now pmp4pg enables and starts the service in a single command — see Backend Installation.


Stopping the Platform

systemctl stop pmp4pg
systemctl stop postgresql-16

Troubleshooting

Server fails to start

# Check full logs
journalctl -u pmp4pg --no-pager -n 100

# or
tail -100 /var/log/pmp4pg/pmp4pg.log

Common causes:

  • Repository not reachable → verify PostgreSQL is running and credentials in /etc/pmp4pg/application.properties are correct (db.url, db.username, db.password)
  • Port 8080 already in use → ss -tlnp | grep 8080
  • Wrong Java version → java -version (Java 17+ required, installed automatically as an RPM dependency)

UI shows a blank page or assets fail to load

  • Check browser console for errors (F12)
  • Confirm the service is fully started — the embedded frontend is only served once the application context has fully initialized (Started PmpApplication)
  • Verify you are accessing the correct context path: http://<host>:8080/pmp/ (trailing slash matters for some assets)

Cannot reach the platform from a remote browser

# Check firewall
firewall-cmd --list-all # Rocky Linux

# Open the listening port if needed
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

Next Steps

Now that the platform is running, deploy your first agent: