1
Health-Monitoring
Jonathan Miller edited this page 2026-05-24 09:13:55 +00:00

Health Monitoring

MokoWaaS includes a built-in health monitoring system that runs 16 diagnostic checks against the Joomla site. Results are returned as a JSON payload via the /?mokowaas=health endpoint.

Endpoint

GET https://example.com/?mokowaas=health
Authorization: Bearer <health_api_token>

The health_api_token is auto-generated during plugin installation and stored as a read-only plugin parameter. See API Endpoints for authentication details.

Response Structure

The response includes an overall status, a human-readable reason string, a UTC timestamp, individual check results, and instance metadata.

Field Description
status Overall status: ok, degraded, or error
reason Human-readable summary of issues (null when status is ok)
timestamp ISO 8601 UTC timestamp
checks Object containing all 16 check results
meta Instance metadata (brand, versions, server name)

Status Determination

  • If any check returns error, the overall status is error and the HTTP status code is 503.
  • If any check returns degraded (and none are error), the overall status is degraded with HTTP 200.
  • Otherwise the overall status is ok with HTTP 200.

The 16 Checks

1. database

Tests database connectivity and query latency.

Field Description
status ok or error
latency_ms Query round-trip time in milliseconds
driver Database driver name (e.g. mysqli, pdomysql)
users Total user count (sanity check)

2. filesystem

Checks writable directories and disk space.

Field Description
status ok, degraded (low disk), or error (not writable)
tmp_writable Whether /tmp is writable
log_writable Whether /administrator/logs is writable
cache_writable Whether /cache is writable
free_disk_mb Free disk space in MB
total_disk_mb Total disk space in MB
site_size_mb Estimated site size in MB (images, media, tmp, cache, logs)

Degraded when free disk is below 100 MB. Error when required directories are not writable.

3. cache

Reports Joomla cache configuration.

Field Description
status Always ok
enabled Whether Joomla caching is active
handler Cache handler type (e.g. file, redis)

4. extensions

Counts enabled extensions by type and checks for pending updates.

Field Description
status ok or degraded (pending updates)
by_type Object with counts per extension type
pending_updates Number of available extension updates

5. backup (Akeeba)

Checks Akeeba Backup status.

Field Description
status ok, degraded, or error
last_status Status of the last backup record (complete, fail, etc.)
days_since Days since the last backup
message Human-readable backup status

Degraded when the last backup is older than 7 days or did not complete successfully.

6. security (Admin Tools)

Checks Admin Tools WAF status if installed.

Field Description
status ok, degraded, or error
waf_enabled Whether the Web Application Firewall is active
blocked_24h Number of blocked requests in the last 24 hours

7. ssl

Checks SSL certificate validity and expiration.

Field Description
status ok, degraded, or error
days_left Days until certificate expiration
issuer Certificate issuer
valid_from Certificate start date
valid_to Certificate expiration date

Degraded when the certificate expires within 30 days.

8. cron (Scheduled Tasks)

Checks Joomla scheduled task execution.

Field Description
status ok or degraded
total_tasks Total number of scheduled tasks
failed_24h Tasks that failed in the last 24 hours

9. errors (Error Log)

Analyzes recent Joomla error log entries.

Field Description
status ok or degraded
recent_errors Count of recent error log entries
last_error Most recent error message

10. db_size

Reports database size metrics.

Field Description
status ok or degraded
total_mb Total database size in MB
tables Number of database tables

11. content

Reports content statistics.

Field Description
status Always ok
articles Total article count
categories Total category count
published Number of published articles
unpublished Number of unpublished articles

12. users (User Activity)

Reports user statistics.

Field Description
status Always ok
total Total user count
active_30d Users active in the last 30 days
blocked Number of blocked user accounts

13. mail

Checks Joomla mail configuration.

Field Description
status ok or degraded
mailer Mail handler type (e.g. smtp, mail, sendmail)
from Configured sender address

14. seo

Checks SEO configuration.

Field Description
status ok or degraded
sef Whether SEF URLs are enabled
sef_rewrite Whether URL rewriting is enabled
sitemap Whether a sitemap is detected

15. template

Reports active template information.

Field Description
status Always ok
site_template Active frontend template name
admin_template Active admin template name

16. config (Config Drift)

Detects configuration anomalies.

Field Description
status ok or degraded
issues Array of detected configuration problems

Checks for issues such as debug mode enabled in production, error reporting set too high, or default database prefix still in use.

Example Response

{
  "status": "degraded",
  "reason": "2 extension updates available; SSL expires in 14 days",
  "timestamp": "2026-05-24T12:00:00Z",
  "checks": {
    "database": {
      "status": "ok",
      "latency_ms": 1.23,
      "driver": "pdomysql",
      "users": 5
    },
    "filesystem": {
      "status": "ok",
      "tmp_writable": true,
      "log_writable": true,
      "cache_writable": true,
      "free_disk_mb": 4500,
      "total_disk_mb": 20000,
      "site_size_mb": 320
    },
    "ssl": {
      "status": "degraded",
      "days_left": 14,
      "issuer": "Let's Encrypt",
      "valid_to": "2026-06-07"
    }
  },
  "meta": {
    "brand": "MokoWaaS",
    "plugin_version": "02.03.11",
    "joomla_version": "5.2.4",
    "php_version": "8.2.20",
    "server_name": "Example Site",
    "server_time": "2026-05-24T12:00:00Z"
  }
}

(Remaining checks omitted for brevity.)

Metadata

The meta object is included in every health response:

Field Description
brand Configured brand name
plugin_version MokoWaaS plugin version
joomla_version Joomla CMS version
php_version PHP version
server_name Joomla site name
server_time Server UTC time