What is MageMonitor?
MageMonitor is a comprehensive store health monitoring extension for Magento 2. It continuously scans your server, database, cron system, cache layer, frontend, and security posture — then surfaces actionable findings directly in your Magento admin panel with exact instructions to fix each issue.
Requirements
| Component | Requirement | Notes |
|---|---|---|
| Magento | 2.4.0 – 2.4.9 | Community and Commerce editions |
| PHP | 8.1, 8.2, or 8.3 | CLI binary must be accessible to www-data |
| Database | MySQL 5.7+ / MariaDB 10.4+ | InnoDB engine required |
| Magento Cron | Must be configured | Run as www-data user, not root |
| Redis | Optional | Required for session/cache monitoring |
| Varnish | Optional | Required for Varnish hit rate monitoring |
| AWS SDK | Optional | Required only for AWS Integration feature |
| Composer | 2.x | For installation |
www-data user (not root). Running as root creates permission issues with generated files and can prevent MageMonitor from reading certain system stats. Verify with: sudo crontab -u www-data -lInstallation
Upload the Module
Extract the MageMonitor zip file and upload the MageMonitor folder to your server at app/code/PointOfCode/MageMonitor/ using SFTP or SCP.
scp -r MageMonitor/ user@server:/var/www/magento/app/code/PointOfCode/
Enable the Module
SSH into your server and run these commands as the web user:
sudo -u www-data php bin/magento module:enable PointOfCode_MageMonitor
sudo -u www-data php bin/magento setup:upgrade
sudo -u www-data php bin/magento setup:di:compile
sudo -u www-data php bin/magento cache:flush
Verify Installation
Check the module is active:
sudo -u www-data php bin/magento module:status PointOfCode_MageMonitor
# Expected output: Module is enabled
Enter Your License Key
In the Magento Admin go to Stores → Configuration → PointOfCode → MageMonitor → License and enter your license key. Then go to PointOfCode → MageMonitor in the admin menu to access the dashboard.
Optional: Enable Varnish Stats Access
If you use Varnish, add www-data to the varnish group for full statistics access:
sudo usermod -a -G varnish www-data
sudo systemctl restart php8.1-fpm # or php8.2-fpm
License Activation
MageMonitor uses domain-based license validation. Your license key is tied to the domain where it is installed and validated automatically on every scan.
Go to Configuration
Navigate to Stores → Configuration → PointOfCode → MageMonitor → License
Enter License Key
Paste your license key in the format POC-XXXX-XXXX-XXXX-XXXX. This key was emailed to you after purchase from store.pointofcode.com.
Save and Validate
Click Save Config. The domain is auto-detected from your Magento base URL. Validation runs automatically in the background every 30 minutes via cron.
General Settings
Master controls for the entire MageMonitor module. Navigate to Stores → Configuration → PointOfCode → MageMonitor → General Settings.
Performance Monitoring
Controls how MageMonitor tracks request performance and how frequently it scans your server and Magento health. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Performance Monitoring.
Store Intelligence
Deep background analysis that runs every 3 hours and surfaces proactive recommendations about your database, cron system, and performance configuration. All checks are strictly read-only. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Store Intelligence.
Database Thresholds
Cron Thresholds
Performance Thresholds
Cache Health Monitoring
Read-only health checks for Varnish, Redis, Magento FPC, and OPcache. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Cache Health Monitoring.
Database Cleanup Detection
Controls which tables appear in the "Database Cleanup Opportunities" section on the Database tab. MageMonitor never deletes data — it only provides copy-paste SQL suggestions. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Database Cleanup Detection.
Security Settings
Controls for file integrity monitoring sensitivity and brute force detection thresholds. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Security Settings.
Alert General Settings
Settings that apply to all alert channels (Email, Slack, and Webhook). Navigate to Stores → Configuration → PointOfCode → MageMonitor → Alert General Settings.
Email Alerts
Configure email notifications for health issues, score drops, and downtime events. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Email Alerts.
admin@store.com,tech@store.com. All listed addresses receive every alert — there is no per-recipient severity filtering.Slack Notifications
Receive MageMonitor alerts directly in your Slack workspace. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Slack Notifications.
Create a Slack App
Go to api.slack.com/apps, click Create New App → From Scratch, give it a name like "MageMonitor", and select your workspace.
Enable Incoming Webhooks
In your app settings, go to Incoming Webhooks, toggle it on, then click Add New Webhook to Workspace. Select the channel to post alerts to.
Copy the Webhook URL
Copy the generated webhook URL (format: https://hooks.slack.com/services/T.../B.../...) and paste it into the Slack Webhook URL field in MageMonitor configuration.
https://hooks.slack.com/services/TXXXXXXX/BXXXXXXX/XXXXXXXXX#store-alerts. Leave empty to use the channel selected when creating the webhook.Webhook Integration
Send MageMonitor health data to any HTTPS endpoint — useful for integrating with custom dashboards, PagerDuty, or other monitoring systems. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Webhook Integration.
Content-Type: application/json. MageMonitor sends a JSON payload with all current detections and store health data.X-MageMonitor-Signature HTTP header so your endpoint can verify the request authenticity. Use a random generator to create a strong secret.Uptime Monitoring
MageMonitor checks your store's uptime every 3 minutes and sends immediate alerts on downtime and recovery. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Uptime Monitoring.
https://www.store.com/checkout
https://api.store.com/healthFile Integrity Monitoring
SHA-256 hash monitoring of critical Magento files. Any unexpected change triggers a HIGH severity security alert. Navigate to Stores → Configuration → PointOfCode → MageMonitor → File Integrity Monitoring.
app/etc/config.php or .htaccess. After adding new paths, the baseline is rebuilt on the next scan.Frontend Monitoring
JavaScript error collection from real visitor browsers. Captured errors appear in the JS Errors tab. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Frontend Monitoring.
AWS Integration
Connect MageMonitor to AWS CloudFront, WAF, and CloudWatch for CDN analytics, WAF event monitoring, and infrastructure metrics. Navigate to Stores → Configuration → PointOfCode → MageMonitor → AWS Integration.
composer require aws/aws-sdk-phpE1ABCDEF123456. Leave empty if not using CloudFront.Cloudflare Integration
Connect to Cloudflare for CDN analytics, cache statistics, and WAF event monitoring. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Cloudflare Integration.
dash.cloudflare.com with these permissions: Zone → Analytics:Read AND Zone → Firewall Services:Read. Do NOT use your Global API Key — use a scoped token for security.SSL Certificate Monitoring
Automatic SSL certificate expiry monitoring for all store domains. Navigate to Stores → Configuration → PointOfCode → MageMonitor → SSL Certificate Monitoring.
Advanced Settings
Low-level controls for scanning behavior, HTTP monitoring, and data retention. Navigate to Stores → Configuration → PointOfCode → MageMonitor → Advanced Settings.
Overview Tab
The landing page of the MageMonitor dashboard. Shows a health score, category status summary, and all Critical & High issues that need immediate attention.
Health Score
The circular score (0–100) reflects the overall health of your store:
| Score Range | Color | Meaning |
|---|---|---|
| 90–100 | 🟢 Green | Excellent — no significant issues |
| 70–89 | 🟡 Yellow | Good — minor warnings present |
| 50–69 | 🟠 Orange | Fair — high-severity issues need attention |
| 0–49 | 🔴 Red | Poor — critical issues require immediate action |
Category Cards
Each category card shows the detection count and color-coded status dot. Clicking a card navigates directly to that detection tab. Categories include: Server Health, Magento System, Database, Frontend/JS, Extensions, Performance, Security, Search, Cron Health, and Cache Health.
Critical & High Issues
All detections with severity Critical or High are listed here with their problem description, how-to-fix instructions, and action buttons. Use Mark as Solved to acknowledge an issue and remove it from the list.
Live Metrics Tab
Real-time server and database metrics that auto-refresh every 10 seconds. No page reload required.
System Details Table
Below the metric cards, a full system details table shows: PHP Version, SAPI, Memory Limit, Max Execution Time, OPcache status, CPU Cores, Disk paths, MySQL Version, InnoDB Buffer Pool, Max Connections, and Slow Query Log status.
Live Slow Queries
When any query is running longer than 5 seconds, an expandable panel appears showing: Query ID, User, Running time, State, and a snippet of the SQL. Rows turn red if running longer than 30 seconds.
Uptime Tab
Historical uptime data for all monitored URLs with availability percentages and response time trends.
The uptime check runs every 3 minutes. Two consecutive failures are required before marking a URL as DOWN (prevents false alerts from transient network issues). An immediate email is sent on status change (DOWN and RECOVERY) when Email Alerts are enabled with downtime notifications turned on.
| Data Point | Description |
|---|---|
| Uptime % | Percentage of checks that returned HTTP 200 in the last 7 days |
| Avg Response | Average response time in milliseconds across all checks |
| Last Check | Result and timestamp of the most recent uptime check |
| Status | Current UP or DOWN status with time since last change |
Detection Tabs
Each detection category has its own tab in the sidebar. All tabs follow the same format: detection cards at the top showing active issues, followed by analytical data sections.
| Tab | What It Monitors | Scan Frequency |
|---|---|---|
| Server | PHP-FPM, OPcache, disk, RAM, cron jobs, file integrity, admin logins, health check endpoint | Every 5 min (configurable) |
| Magento | Cache status, indexers, Magento config issues, order email sending, version checks | Every 15 min (configurable) |
| Database | Live slow queries, missing indexes, table fragmentation, storage usage, largest tables, cleanup opportunities | Every 30 min |
| Frontend | JS error rate, checkout JS errors, recurring error patterns, JS error spikes | Every 15 min |
| Extensions | Module conflicts, disabled modules, known compatibility issues | Every 15 min |
| Performance | Flat catalog configuration, FPC backend, Redis memory, InnoDB buffer pool, OPcache sizing | Every 20 min |
| Search | Elasticsearch/OpenSearch health, search index status, search query table bloat | Every 6 hours |
| Security | File integrity changes, brute force attempts, admin login audit, WAF events | Every 4 hours (file check) |
| Cron Health | Critical job status, backlog, stuck jobs, schedule bloat, root ownership | Every 3 hours (intelligence) |
| Cache Health | Varnish hit rate, Redis memory/eviction, FPC backend, OPcache hit rate | Every scan |
Detection Severity Levels
Slow Requests Tab
Shows the slowest routes across your store based on sampled request tracking. Requests exceeding the configured threshold (default 2000ms) are recorded with route, method, average time, max time, hit count, and last seen.
The table is split into two sections:
- Active (last 24h) — Routes still generating slow requests recently, sorted by average response time
- Historical — Routes that were slow in the past but have not been seen recently, shown with dimmed styling
Route types are color-coded: PAGE (storefront pages), REST (REST API calls), GRAPHQL (GraphQL queries), ADMIN (admin panel pages).
JS Errors Tab
Real JavaScript errors collected from real visitors' browsers. The collector catches window.onerror, unhandledrejection, and require.onError events, batches them client-side, and sends them to MageMonitor every 3 seconds.
Stat Cards
- Total Hits — Sum of all error occurrences (click to show all errors)
- Unique Errors — Number of distinct error fingerprints (click to show all errors)
- On Checkout — Errors occurring on checkout pages (click to filter to checkout only)
- Last Hour — Errors seen in the last 60 minutes (click to filter to recent)
Filtering
- Search box — Filter by error message, source file, or page URL in real time
- Page filter dropdown — Filter to a specific page or all pages
- Card click — Click any stat card to filter the table
Error Table
Errors are grouped by message + source file combination. Each row shows: error message, source filename, pages affected (with page count badge if multiple pages), total count, and last seen timestamp. The page column color-codes checkout (red), customer account (orange), and homepage (blue) for quick identification.
CDN Tab
CDN analytics from AWS CloudFront or Cloudflare. Shows cache hit rate, bandwidth, request volume, top cached URLs, and error rates. Requires AWS or Cloudflare integration to be configured.
WAF Tab
Web Application Firewall events from AWS WAF or Cloudflare. Shows blocked requests, triggered rules, and top blocked IPs. Requires AWS or Cloudflare integration to be configured.
SSL Certs Tab
SSL certificate status for all monitored domains. Shows certificate issuer, expiry date, and days remaining with color-coded urgency indicators.
| Days Remaining | Status | Alert Sent |
|---|---|---|
| 30+ days | 🟢 Valid | No alert |
| 7–29 days | 🟡 Warning | WARNING alert |
| 1–6 days | 🔴 Critical | CRITICAL alert |
| 0 or expired | 🔴 Expired | CRITICAL alert |
Infrastructure Tab
Detailed server infrastructure information including PHP configuration, Apache/Nginx settings, Redis configuration, deployment mode, and MageMonitor's own database storage usage.
Live Traffic Tab
Real-time traffic feed showing the last 2 hours of sampled requests with route, response time, status code, and request type. Data refreshes automatically. Traffic is sampled at the configured sampling rate (default 10%).
Quick Fixes
One-click maintenance actions that run instantly from the dashboard. Every action is logged to the Audit Log with the admin username, timestamp, and result.
Cache & Files
Indexing
Database
Server & Maintenance
MageMonitor
RESET to proceed.Server Advisor
An automated analysis tool that evaluates your server configuration against Magento best practices and provides specific recommendations with exact configuration values calculated for your server's resources (RAM, CPU cores, traffic volume).
The Server Advisor analyzes PHP-FPM pool settings, OPcache configuration, Redis memory allocation, MySQL buffer pool size, and Apache/Nginx worker configuration — then generates recommendations tailored to your specific server specs.
Audit Log
Complete audit trail of all Quick Fix actions performed through the MageMonitor dashboard. Every action is recorded with the admin username, timestamp, action type, and result message.
The audit log cannot be edited or deleted through the UI — it provides a tamper-evident record of all maintenance actions for compliance and troubleshooting purposes.
Health Report
Generate a complete store health report as a self-contained HTML page that can be saved as PDF directly from your browser.
Click the Report button in the MageMonitor header to open the report in a new browser tab. The report includes:
- Executive summary with issue counts by severity
- All Critical & High issues with how-to-fix instructions
- All Warnings and Info detections
- Server health metrics snapshot
- Database health and largest tables
- Cache health (Varnish, Redis, FPC, OPcache)
- Cron job status summary
- Uptime summary for last 7 days
- Top JS errors
- SSL certificate status
- Performance overview
- Security summary
- Actionable recommendations
To save as PDF: click Download PDF inside the report page, which opens the browser print dialog. Select "Save as PDF" as the destination.
All Detectors
MageMonitor includes 10 specialized detectors. Each detector runs independently with its own try/catch error handling — a failure in one detector never affects others.
Server Detector
Runs every 5 minutes (configurable). Checks PHP-FPM worker status, OPcache hit rate and memory, disk usage across all mount points, MySQL buffer pool sizing, Redis connection health, cron process ownership (root vs www-data), health check endpoint availability, and admin login brute force attempts.
Magento Detector
Runs every 15 minutes (configurable). Checks Magento cache status (which types are enabled/disabled), indexer states (valid/invalid/working), async grid indexing configuration, order confirmation email sending status, and Magento configuration issues.
Database Detector
Runs every 30 minutes. Checks database storage utilization, live slow queries from PROCESSLIST, missing indexes on high-impact tables (url_rewrite, sales_order_address), table fragmentation (>30% waste AND >200MB recoverable), async grid indexing, and orders grid size.
Frontend Detector
Runs every 15 minutes. Analyzes the JS error log for checkout errors, error spikes (unusual increase in error volume), and recurring high-frequency errors that degrade user experience.
Extensions Detector
Runs every 15 minutes. Checks for disabled modules that other modules depend on, known conflicting extension combinations, and modules with known performance issues.
Performance Detector
Runs every 20 minutes. Checks flat catalog configuration vs product count, Full Page Cache backend (recommends Varnish at scale), Redis maxmemory configuration, InnoDB buffer pool vs available RAM, and OPcache sizing.
Search Detector
Runs every 6 hours. Checks Elasticsearch/OpenSearch cluster health (yellow/red status), shard assignment, and search query table growth with intelligent junk ratio analysis (flags only when >40% of rows are one-time queries older than 90 days).
Security Detector
Runs every 4 hours (file check). Monitors file integrity changes against stored SHA-256 baseline, admin brute force attempts, and WAF events from AWS or Cloudflare integration.
Cron Health Detector
Runs every 3 hours (Store Intelligence). Checks critical cron jobs (sales_send_order_emails, indexer_reindex_all_invalid, sitemap_generate, catalog_product_alert), cron backlog count, stuck running jobs, cron_schedule table size, and whether cron is running as root.
Cache Detector
Runs on every scan. Checks Varnish running status and hit rate (via varnishstat with layered fallback), Redis running status, memory usage, eviction policy, evicted keys count, and per-database key counts. Also checks Magento FPC backend configuration and OPcache hit rate and file count.
Background Jobs
MageMonitor registers 19 cron jobs that run automatically via Magento's cron system. All jobs are prefixed with poc_magemonitor_ and belong to the default cron group.
| Job | Schedule | What It Does |
|---|---|---|
| ServerHealth | Configurable (default: */5) | PHP-FPM, OPcache, disk, Redis health scan |
| MagentoHealth | Configurable (default: */15) | Cache, indexers, Magento config scan |
| DatabaseHealth | */30 * * * * | DB storage, indexes, slow queries, fragmentation |
| PerformanceCheck | */20 * * * * | FPC, flat catalog, Redis config checks |
| FrontendHealth | */15 * * * * | JS error analysis, checkout error detection |
| UptimeCheck | */3 * * * * | HTTP health check of all monitored URLs |
| AlertProcessor | */5 * * * * | Sends email/Slack/webhook alerts for new detections |
| FlushTrafficQueue | * * * * * | Writes queued traffic data from Redis/files to DB |
| TrafficSnapshot | */2 * * * * | Captures traffic metrics snapshot |
| CleanTrafficData | */5 * * * * | Removes traffic data older than 2 hours |
| LogParser | */10 * * * * | Parses Magento log files for error patterns |
| CdnStats | */10 * * * * | Fetches CDN analytics from AWS/Cloudflare |
| SslCheck | 0 */6 * * * | Checks SSL certificate validity and expiry |
| SearchCheck | 0 */6 * * * | Elasticsearch/OpenSearch health check |
| HealthScoreSnapshot | 0 * * * * | Calculates and saves hourly health score |
| FileIntegrity | 0 */4 * * * | SHA-256 hash comparison for monitored files |
| LicenseCheck | */30 * * * * | Validates license key against registered domain |
| StoreIntelligenceScan | 0 */3 * * * | Deep database/cron/performance intelligence scan |
| Cleanup | 0 2 * * * | Daily cleanup of old data per retention policy |
www-data. Verify your cron is configured: sudo crontab -u www-data -l. If cron is not installed, run: sudo -u www-data php bin/magento cron:installNotifications
MageMonitor supports three notification channels, each configurable independently with their own digest schedule.
How Alerts Work
The AlertProcessor cron runs every 5 minutes and checks for:
- New detections — Issues detected since the last alert cycle that meet the minimum severity threshold
- Health score drops — When the score falls below the configured threshold
- Digest schedule — Full summary of all open issues on the configured interval
- Downtime/Recovery — Immediate alerts when any monitored URL changes state
Alert Deduplication
The same detection code does not trigger repeated alerts. An alert is sent when a detection is first created, and again only if the detection was resolved and reoccurs. Persistent issues are included in digest emails rather than sending individual alerts on every scan cycle.
Webhook Payload Format
{
"event": "detection_alert",
"store": "My Store",
"health_score": 72,
"timestamp": "2026-06-13T10:00:00+02:00",
"detections": [
{
"code": "VARNISH_HIT_RATE_CRITICAL",
"severity": "critical",
"category": "cache",
"title": "Varnish Hit Rate Critical (18%)",
"problem": "Varnish cache hit rate is 18%...",
"how_to_fix": "Check VCL cookie stripping..."
}
]
}
Webhook payloads are signed with HMAC-SHA256 using your configured secret. Verify the signature on your endpoint by comparing the X-MageMonitor-Signature header against HMAC-SHA256(secret, payload_body).
Frequently Asked Questions
Does MageMonitor impact store performance?
MageMonitor is designed for minimal overhead. The traffic sampling plugin runs on a configurable percentage of requests (default 10%) with a cache-backed enablement check on every request. All heavy analysis runs via background cron, not during customer page loads. The JS collector snippet is under 2KB and uses a 3-second batch delay before sending.
Does MageMonitor modify any store data?
No. All detectors are strictly read-only — they only run SELECT queries against your database. The only writes MageMonitor performs are to its own tables (prefixed poc_magemonitor_). Quick Fix actions that modify data (cache flush, reindex) run standard Magento CLI commands and are explicitly triggered by admin users.
The health score is 0 but my store is working fine. Why?
This can happen immediately after installation before the first cron scan completes. Wait 5–10 minutes for the initial scans to run. If the score remains 0, check that Magento cron is running: sudo crontab -u www-data -l.
I see a false positive detection. How do I stop it?
Use Mark as Solved on any detection card to acknowledge it. For persistent false positives (e.g. Varnish hit rate warning on a store with many logged-in customers), adjust the relevant threshold in Configuration — for example, lower the Varnish Hit Rate Warning Threshold from 40% to 25%.
Can I install MageMonitor on multiple stores with one license?
Each license key is tied to one domain. For multiple stores (different domains), purchase a separate license for each. Multi-domain licenses are available — contact support at store.pointofcode.com.
Varnish stats show 0% hit rate but Varnish is running.
The www-data user does not have permission to read Varnish shared memory. Fix using the Quick Fix button: Quick Fixes → Fix Varnish Permissions. Or run manually: sudo usermod -a -G varnish www-data && sudo systemctl restart php-fpm
The "On Checkout" filter shows no errors but the count is non-zero.
Checkout errors are matched against URLs containing "checkout", "onepage", or "payment". If your store uses a custom checkout URL, the filter may not match. Search for the checkout URL pattern manually using the search box in the JS Errors tab.
How do I uninstall MageMonitor?
Run the following commands:
sudo -u www-data php bin/magento module:disable PointOfCode_MageMonitor
sudo -u www-data php bin/magento setup:upgrade
sudo -u www-data php bin/magento cache:flush
# Optionally remove the module files:
rm -rf app/code/PointOfCode/MageMonitor/
MageMonitor also includes an Uninstall script that removes all its database tables automatically when uninstalled via module:uninstall.