
Running a small WordPress site means you want it to stay fast and online. Prometheus monitoring helps you watch your site like a security camera watches a building. It collects data about speed, errors, and traffic. This guide shows you how to set it up step by step, even if you are new to server tools. By the end, you will have a working system that alerts you when something goes wrong.
Is Prometheus Monitoring Right for Your Small WordPress Site?
Not every small site needs Prometheus monitoring. Let us look at when it helps and when simpler tools work better.
When Prometheus Makes Sense for Small Sites
Prometheus monitoring works well when you run a WordPress site with a few hundred daily visitors and you want full control over your data. It is ideal if you already use Docker on your server. It also helps when you need custom alerts, like getting a message when your site slows down. If you care about privacy and want to keep all monitoring data on your own server, Prometheus is a strong choice.
Prometheus vs. Simpler Monitoring Tools: A Quick Comparison
| Feature | Prometheus | UptimeRobot | Jetpack Stats |
|---|---|---|---|
| Cost | Free (self-hosted) | Free tier available | Free with Jetpack |
| Custom Metrics | Yes, full control | No | Limited |
| Setup Difficulty | Medium | Easy | Easy |
| Data Ownership | Yours | Theirs | Theirs |
| Alerts | Fully customizable | Basic only | None |
What You’ll Need Before Getting Started
Before you start, make sure you have these items ready:
- A small WordPress site running on a VPS or dedicated server
- SSH access to your server
- Docker and Docker Compose installed
- Basic comfort with the command line
- About 512 MB of free RAM on your server
Planning Your Prometheus Monitoring Stack for WordPress
A good plan saves time. Let us look at what resources you need and how the pieces fit together.
Minimum Resource Requirements and Hosting Costs
Prometheus monitoring on a small WordPress site needs very little. You need about 256 MB of RAM and 1 GB of disk space for Prometheus and Grafana together. If you run them on the same server as WordPress, you want at least 2 GB of total RAM. The cost is zero for the software itself. You only pay for your existing server. A basic $5/month VPS can handle a small WordPress site plus Prometheus monitoring.
Choosing the Right WordPress Exporter: PromPress vs. wordpress-exporter
An exporter is a small tool that collects WordPress data and shows it to Prometheus. You have two main choices:
- PromPress — A WordPress plugin. It installs like any other plugin. It exposes a /metrics page on your site. Best for beginners.
- wordpress-exporter — A standalone app. It runs outside WordPress and checks your site from the outside. Good if you do not want to add a plugin.
For most small sites, PromPress is the easier path.
Architecture Overview: Docker Compose Setup for Small Sites
Your monitoring stack has three parts that work together:
- Prometheus — Collects and stores metrics data
- Grafana — Shows your data in easy-to-read dashboards
- Alertmanager — Sends you alerts when something is wrong
All three run as Docker containers. Docker Compose lets you start them all with one command.
Step 1 — Installing the WordPress Metrics Exporter Plugin
First, you need WordPress to share its data. The PromPress plugin does this.
Installing and Configuring PromPress on Your WordPress Site
- Log in to your WordPress admin dashboard.
- Go to Plugins > Add New.
- Search for “PromPress” in the search box.
- Click Install, then click Activate.
- Go to Settings > PromPress in the left menu.
- Leave the default settings. They work well for small sites.
PromPress now creates a /metrics page on your site that Prometheus monitoring can read.
Verifying the /metrics Endpoint Is Working
Open your browser and go to https://your-site.com/metrics. You should see lines of text that look like this:
wp_posts_total 42wp_active_plugins 8wp_php_memory_usage_bytes 67108864
If you see text like this, the endpoint works. If you see a 404 error, check that PromPress is active and try saving the permalink settings again.
Alternative: Setting Up the Standalone wordpress-exporter
If you prefer not to use a plugin, you can run wordpress-exporter as a Docker container. Add it to your Docker Compose file. Point it to your WordPress XML-RPC or REST API URL. It will collect basic stats without touching your WordPress files. This method gives fewer metrics than PromPress but keeps your WordPress install cleaner.
Step 2 — Deploying Prometheus with Docker Compose
Now you set up the main Prometheus monitoring server using Docker.
Creating the Docker Compose Configuration File
Create a folder called monitoring on your server. Inside it, create a file called docker-compose.yml. Add this content:
version: '3.8'services: prometheus: image: prom/prometheus:latest ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana:latest ports: - "3000:3000" alertmanager: image: prom/alertmanager:latest ports: - "9093:9093"
Configuring prometheus.yml to Scrape Your WordPress Site
Create a file called prometheus.yml in the same folder. Add this configuration:
global: scrape_interval: 60sscrape_configs: - job_name: 'wordpress' static_configs: - targets: ['your-site.com:443'] metrics_path: '/metrics' scheme: 'https'
The scrape interval of 60 seconds means Prometheus checks your site once per minute. This keeps resource use low for small sites.
Starting Prometheus and Verifying the Target Status
- Open your terminal and go to the monitoring folder.
- Run
docker compose up -d. - Open
http://your-server-ip:9090in your browser. - Click Status > Targets.
- You should see your WordPress target with a green “UP” label.
If the target shows “DOWN,” check that your firewall allows port 9090 and that the /metrics page is reachable from the server.
Step 3 — Setting Up Grafana Dashboards for WordPress Metrics
Grafana turns raw numbers into charts you can read at a glance.
Connecting Grafana to Your Prometheus Data Source
- Open
http://your-server-ip:3000in your browser. - Log in with the default user admin and password admin.
- Go to Connections > Data Sources.
- Click Add data source and choose Prometheus.
- Set the URL to
http://prometheus:9090. - Click Save and Test. You should see a green success message.
Importing Pre-Built WordPress Dashboards
You do not need to build dashboards from scratch. Go to Dashboards > Import in Grafana. Enter dashboard ID 17548 from the Grafana community library. This dashboard shows WordPress-specific metrics out of the box. Select your Prometheus data source and click Import.
Customizing Key Panels for Small Site Monitoring
After importing, focus on these panels for a small site:
- Response time over the last 24 hours
- Active users right now
- PHP memory usage trend
- Database query count per minute
Remove panels you do not need. Fewer panels mean faster dashboard loading.
Step 4 — Configuring Prometheus Alertmanager for WordPress Alerts
Alerts tell you when something needs your attention. Without alerts, monitoring is just watching numbers.
Defining Alert Rules for Critical WordPress Metrics
Create a file called alert_rules.yml. Add rules like these:
groups: - name: wordpress_alerts rules: - alert: WordPressDown expr: up{job="wordpress"} == 0 for: 2m labels: severity: critical - alert: HighResponseTime
expr: wp_response_time_seconds > 3 for: 5m labels: severity: warning
Setting Up Email and Slack Notifications
Create an alertmanager.yml file. Add your email or Slack webhook:
route: receiver: 'default'receivers: - name: 'default' email_configs: - to: 'you@example.com' from: 'alerts@example.com' smarthost: 'smtp.example.com:587'
For Slack, replace email_configs with slack_configs and add your webhook URL.
Testing Your Alerts to Ensure They Fire Correctly
To test, temporarily stop your WordPress site or change an alert threshold to a value that triggers right away. Wait a few minutes. Check that you receive the notification. Then restore the original settings. This confirms your alert pipeline works end to end.
Essential Prometheus Metrics to Monitor on Small WordPress Sites
Knowing which metrics matter saves you from data overload.
Uptime and Response Time Metrics
These two metrics tell you if your site is available and fast. The up metric shows 1 when your site responds and 0 when it does not. The wp_response_time_seconds metric shows how long each page takes to load. For a small site, response time under 2 seconds is good.
PHP Memory Usage and Database Query Performance
The wp_php_memory_usage_bytes metric shows how much RAM WordPress uses. If it stays near the limit, your site may crash. The wp_db_queries_total metric counts database queries. A sudden spike can mean a plugin is misbehaving or your site is under a bot attack.
Plugin and Theme Error Tracking
PromPress tracks PHP errors with the wp_php_errors_total metric. Watch this number. If it jumps after you update a plugin, that plugin likely caused the problem. This makes debugging much faster than digging through log files.
Troubleshooting Common Prometheus Monitoring Issues for WordPress
Things can go wrong. Here is how to fix the most common problems.
Fixing “Target Down” Errors in Prometheus
If Prometheus shows your WordPress target as DOWN:
- Check that your site is online by visiting it in a browser.
- Verify the /metrics page loads without errors.
- Make sure your server firewall allows outbound connections to your WordPress domain.
- Check that the scrape URL in prometheus.yml matches your site exactly, including https.
Resolving High Metric Cardinality on Small Sites
Cardinality means the number of unique metric series. If it grows too high, Prometheus uses too much memory. To fix this, limit the labels PromPress exports. In the PromPress settings, disable metrics you do not use. For small sites, you rarely need more than 20 active metrics.
Debugging Grafana Dashboard Display Problems
If Grafana shows “No data” on panels:
- Confirm Prometheus is collecting data by checking the Targets page.
- Check the time range selector in Grafana. It may be set to a future date.
- Verify the metric names in your panel queries match what PromPress exports.
Maintaining Your Prometheus Monitoring Stack on a Budget
Keeping costs low is key for small sites.
Optimizing Scrape Intervals and Data Retention
Set your scrape interval to 60 or 120 seconds. Shorter intervals waste resources. For data retention, add --storage.tsdb.retention.time=15d to your Prometheus command. This keeps 15 days of data, which is enough for most small site needs. Older data gets deleted automatically.
Keeping Docker Containers Updated in 2026
Run docker compose pull once a month to get the latest images. Then run docker compose up -d to restart with the new versions. This takes two minutes and keeps your stack secure. Set a calendar reminder so you do not forget.
When to Scale Up or Switch to Managed Monitoring
Consider moving to a managed service when your site grows beyond 10,000 daily visitors, when you spend more than one hour per month fixing monitoring issues, or when you need data retention longer than 30 days. Managed options like Grafana Cloud offer free tiers that handle small sites well.
FAQ: Prometheus Monitoring for Small WordPress Sites
How Much Does It Cost to Run Prometheus for a Small WordPress Site?
The software is free and open source. Your only cost is the server resources it uses. On a small VPS, Prometheus monitoring adds about 256 MB of RAM usage. If your current plan has spare RAM, the cost is zero. If you need to upgrade your VPS, expect to pay $2 to $5 more per month.
Can I Run Prometheus on the Same Server as My WordPress Site?
Yes. For small sites, running Prometheus on the same server works fine. Just make sure you have at least 2 GB of total RAM. Use Docker to keep things isolated. If your site grows, move Prometheus to its own server later.
Do I Need Kubernetes to Use Prometheus with WordPress?
No. Kubernetes is for large systems with many containers. For a small WordPress site, Docker Compose is all you need. It is simpler, uses fewer resources, and is easier to learn.
What Are the Best Prometheus Alternatives for WordPress in 2026?
If Prometheus feels too complex, consider these simpler options:
- UptimeRobot — Free uptime checks with email alerts
- Grafana Cloud Free Tier — Managed Prometheus with no server setup
- New Relic Free — Application monitoring with a generous free plan
- Jetpack Monitor — Basic uptime monitoring built into Jetpack
Conclusion and Next Steps for Your WordPress Monitoring Setup
You now have a complete Prometheus monitoring setup for your small WordPress site. You installed the PromPress plugin, deployed Prometheus with Docker Compose, connected Grafana for visual dashboards, and configured alerts. The key takeaways are: start with simple metrics, keep your scrape interval at 60 seconds, and test your alerts right away. Next, spend a week watching your dashboards to learn what normal looks like for your site. Then fine-tune your alert thresholds based on what you see. Monitoring is not a one-time setup. It gets better as you learn your site’s patterns.
