diff --git a/moko-platform/SITE_MONITORING.md b/moko-platform/SITE_MONITORING.md index 07ce19d..370cb8e 100644 --- a/moko-platform/SITE_MONITORING.md +++ b/moko-platform/SITE_MONITORING.md @@ -2,7 +2,7 @@ # Site Monitoring -Panopticon-style monitoring for Joomla and Dolibarr client sites using Prometheus, Grafana, and the Joomla Web Services API. +Endpoint monitoring for MokoWaaS (Joomla) and MokoCRM (Dolibarr) client sites using Prometheus, Grafana, and the Joomla Web Services API. --- @@ -15,13 +15,20 @@ sites.json (source of truth) │ ├── blackbox-http.json → Prometheus file_sd (uptime, SSL, response time) │ ├── blackbox-ssl.json → Prometheus file_sd (certificate expiry) │ ├── joomla-monitor.conf → joomla-monitor.sh (Joomla API metrics) - │ └── Grafana dashboards → one per client (auto-generated) + │ └── Grafana dashboards → MokoWaaS / MokoCRM dashboards │ ├── joomla-monitor.sh (cron every 30m) │ └── joomla-sites.prom → node-exporter textfile collector │ - └── Grafana Dashboard - └── Client: {name} — Panopticon-style panels + ├── site-uptime-alert.sh (cron every 5m) + │ └── ntfy alert-critical → DOWN/RECOVERED notifications + │ + └── Grafana Dashboard (MokoWaaS) + ├── Site Health table + ├── Joomla Core & Extensions table + ├── Backup Status table + ├── Performance (response time + duration) + └── Uptime History (30d availability) ``` --- @@ -35,14 +42,14 @@ Central definition file at `moko-platform/monitoring/sites.json`. Defines all mo "grafana": { "baseUrl": "https://bench.mokoconsulting.tech", "apiKey": "glsa_...", - "dashboardFolder": "Clients", - "dashboardFolderUid": "cfldz4r88nhfkc" + "dashboardFolder": "Endpoints", + "dashboardFolderUid": "..." }, "sites": [ { "name": "clientname-live", "url": "https://example.com", - "type": "joomla", + "type": "mokowaas", "client": "ClientName", "joomlaToken": "...", "akeebaSecret": "", @@ -51,7 +58,7 @@ Central definition file at `moko-platform/monitoring/sites.json`. Defines all mo { "name": "clientname-dev", "url": "https://clientname.dev.mokoconsulting.tech", - "type": "joomla", + "type": "mokowaas-dev", "client": "ClientName", "joomlaToken": "...", "tlsVerify": false @@ -64,11 +71,13 @@ Central definition file at `moko-platform/monitoring/sites.json`. Defines all mo | Type | Description | |------|-------------| -| `joomla` | Joomla CMS (uses Joomla Web Services API) | -| `dolibarr` | Dolibarr ERP | -| `gitea` | Gitea instance | -| `grafana` | Grafana instance | -| `generic` | HTTP probe only | +| `mokowaas` | MokoWaaS — Joomla CMS (uses Joomla Web Services API) | +| `mokowaas-dev` | MokoWaaS development instance | +| `mokowaas-demo` | MokoWaaS demo instance | +| `mokocrm` | MokoCRM — Dolibarr ERP | +| `mokocrm-dev` | MokoCRM development instance | +| `mokocrm-demo` | MokoCRM demo instance | +| `other` | HTTP probe only (gitea, grafana, etc.) | ### Multiple Endpoints per Client @@ -86,7 +95,7 @@ monitor_site_add(name, url, type, client, joomlaToken, akeebaSecret, tlsVerify) ### Manual -1. Edit `monitoring/sites.json` -- add site entries +1. Edit `monitoring/sites.json` — add site entries 2. Run `monitoring/generate-targets.sh` 3. Copy generated files to server: - `generated/blackbox-http.json` → `/opt/.../monitoring/targets/` @@ -101,7 +110,7 @@ monitor_site_add(name, url, type, client, joomlaToken, akeebaSecret, tlsVerify) monitoring/generate-targets.sh --deploy ``` -The `--deploy` flag auto-pushes generated targets to the server AND creates/updates Grafana dashboards (one per client) via the Grafana API. Dashboard UIDs are stable -- they are derived from a hash of the client name, so re-running `--deploy` updates existing dashboards rather than creating duplicates. +The `--deploy` flag auto-pushes generated targets to the server AND creates/updates Grafana dashboards via the Grafana API. Dashboard UIDs are stable — they are derived from a hash of the client name, so re-running `--deploy` updates existing dashboards rather than creating duplicates. --- @@ -145,22 +154,23 @@ Backup status is collected via the Akeeba Backup JSON API v2: --- -## Grafana Dashboards +## Grafana Dashboard -Template at `monitoring/grafana/client-joomla-dashboard.json` in the client template repo. +Dashboard: **MokoWaaS** (UID: `mokowaas`) in the Endpoints folder. -### Panel Layout +### Table Layout -| Row | Content | -|-----|---------| -| **Row 1 -- Status** | Site UP/DOWN, Joomla ONLINE/OFFLINE, HTTP status, SSL cert days, API reachable, last check | -| **Row 2 -- Updates** | Joomla version, core update available, extensions total/enabled/disabled | -| **Row 3 -- Performance** | Response time breakdown, DNS lookup, total duration, TLS version, HTTP version | -| **Row 4 -- Backup** | Last backup status, backup age, backup record count | -| **Row 5 -- History** | 30-day availability timeline | +| Section | Columns | +|---------|---------| +| **Site Health** | Endpoint (clickable → front page), Online, Status, HTTP (→ Wikipedia), API, SSL days, Last Scrape | +| **Joomla Core & Extensions** | Endpoint (clickable → /administrator/), Version, System update, Ext Updates, Total, Enabled, Disabled | +| **Backup Status** | Endpoint (clickable → Akeeba Manage), Status (OK/FAILED), Age, Records | +| **Performance** | Response time chart (transfer + processing), Total duration gauge | +| **Uptime History** | 30-day availability timeline | -### Dashboard Organization +### Alerting +<<<<<<< Updated upstream | Folder | Contents | |--------|----------| | `Clients/` | Per-client dashboards (auto-generated by `generate-targets.sh --deploy`) | @@ -209,3 +219,6 @@ Template at `monitoring/grafana/client-joomla-dashboard.json` in the client temp | Revision | Date | Author | Description | |---|---|---|---| | 1.0 | 2026-05-09 | Moko Consulting | Initial version | +======= +`site-uptime-alert.sh` runs every 5 minutes and sends to ntfy `alert-critical` when any `mokowaas.*` site goes DOWN, with a recovery notification when it comes back UP. +>>>>>>> Stashed changes diff --git a/monitor-mcp/Sites-Monitoring.-.-.md b/monitor-mcp/Sites-Monitoring.-.-.md index 39a7a20..8ed85bb 100644 --- a/monitor-mcp/Sites-Monitoring.-.-.md +++ b/monitor-mcp/Sites-Monitoring.-.-.md @@ -2,7 +2,7 @@ # Sites Monitoring -The monitor MCP integrates with `sites.json` to manage monitored Joomla and Dolibarr sites. This provides a single source of truth for all client endpoints, driving Prometheus blackbox probes, Joomla API metrics, and Grafana dashboards. +The monitor MCP integrates with `sites.json` to manage monitored MokoWaaS (Joomla) and MokoCRM (Dolibarr) sites. This provides a single source of truth for all client endpoints, driving Prometheus blackbox probes, Joomla API metrics, and Grafana dashboards. ## How it works @@ -18,7 +18,7 @@ The monitor MCP integrates with `sites.json` to manage monitored Joomla and Doli ├── blackbox-http.json → Prometheus ├── blackbox-ssl.json → Prometheus ├── joomla-monitor.conf → cron script - └── Grafana dashboards → one per client + └── Grafana dashboards → MokoWaaS / MokoCRM ``` ## sites.json format @@ -28,14 +28,14 @@ The monitor MCP integrates with `sites.json` to manage monitored Joomla and Doli "grafana": { "baseUrl": "https://bench.mokoconsulting.tech", "apiKey": "glsa_...", - "dashboardFolder": "Clients", - "dashboardFolderUid": "cfldz4r88nhfkc" + "dashboardFolder": "Endpoints", + "dashboardFolderUid": "..." }, "sites": [ { "name": "clientname-live", "url": "https://example.com", - "type": "joomla", + "type": "mokowaas", "client": "ClientName", "joomlaToken": "sha256:...", "akeebaSecret": "", @@ -49,20 +49,22 @@ The monitor MCP integrates with `sites.json` to manage monitored Joomla and Doli | Type | Probes | API Monitoring | |------|--------|----------------| -| `joomla` | HTTP, SSL | Version, updates, extensions, backup (via Joomla API) | -| `dolibarr` | HTTP, SSL | Planned | -| `gitea` | HTTP, SSL | -- | -| `grafana` | HTTP, SSL | -- | -| `generic` | HTTP, SSL | -- | +| `mokowaas` | HTTP, SSL | Version, updates, extensions, backup (via Joomla API) | +| `mokowaas-dev` | HTTP, SSL | Same as mokowaas | +| `mokowaas-demo` | HTTP, SSL | Same as mokowaas | +| `mokocrm` | HTTP, SSL | Planned | +| `mokocrm-dev` | HTTP, SSL | Planned | +| `mokocrm-demo` | HTTP, SSL | Planned | +| `other` | HTTP, SSL | -- | ## Multiple endpoints per client A single client can have multiple monitored endpoints sharing the same `client` label: ```json -{"name": "acme-live", "url": "https://acme.com", "type": "joomla", "client": "ACME"}, -{"name": "acme-dev", "url": "https://acme.dev.mokoconsulting.tech", "type": "joomla", "client": "ACME", "tlsVerify": false}, -{"name": "acme-staging", "url": "https://acme-staging.com", "type": "joomla", "client": "ACME"} +{"name": "acme-live", "url": "https://acme.com", "type": "mokowaas", "client": "ACME"}, +{"name": "acme-dev", "url": "https://acme.dev.mokoconsulting.tech", "type": "mokowaas-dev", "client": "ACME", "tlsVerify": false}, +{"name": "acme-staging", "url": "https://acme-staging.com", "type": "mokowaas", "client": "ACME"} ``` Grafana dashboard dropdowns auto-populate from Prometheus `site_name` and `site_type` labels. @@ -83,7 +85,7 @@ Grafana dashboard dropdowns auto-populate from Prometheus `site_name` and `site_ generate-targets.sh --deploy ``` -The `--deploy` flag now also auto-creates Grafana dashboards (one per client) via the Grafana API. Dashboard UIDs are stable (derived from client name hash), so re-running updates existing dashboards rather than creating duplicates. +The `--deploy` flag also auto-creates Grafana dashboards via the Grafana API. Dashboard UIDs are stable (derived from client name hash), so re-running updates existing dashboards rather than creating duplicates. ## Template-Client-WaaS workflow files @@ -96,8 +98,8 @@ The client template repo (`Template-Client-WaaS`) includes two Gitea Actions wor ## Related -- [SITE_MONITORING](https://git.mokoconsulting.tech/MokoConsulting/moko-platform/wiki/SITE_MONITORING) -- full architecture docs in moko-platform wiki -- [JOOMLA_SYNC](https://git.mokoconsulting.tech/MokoConsulting/moko-platform/wiki/JOOMLA_SYNC) -- SFTP sync between dev/live servers +- [SITE_MONITORING](https://git.mokoconsulting.tech/MokoConsulting/moko-platform/wiki/SITE_MONITORING) — full architecture docs in moko-platform wiki +- [JOOMLA_SYNC](https://git.mokoconsulting.tech/MokoConsulting/moko-platform/wiki/JOOMLA_SYNC) — SFTP sync between dev/live servers ]]> --- @@ -107,3 +109,4 @@ The client template repo (`Template-Client-WaaS`) includes two Gitea Actions wor | Revision | Date | Author | Description | |---|---|---|---| | 1.0 | 2026-05-09 | Moko Consulting | Initial version | +| 1.1 | 2026-05-12 | Moko Consulting | Update site types to mokowaas/mokocrm/other |