هذا الالتزام موجود في:
2026-09-17 22:16:24 +03:00
الأصل b9136d2a71
التزام 867b6adf00
2 ملفات معدلة مع 41 إضافات و24 حذوفات

عرض الملف

@@ -39,29 +39,34 @@ flowchart TD
|--------------------|----------------------------|------|-----------|--------------| |--------------------|----------------------------|------|-----------|--------------|
| `uptime-kuma` | `louislam/uptime-kuma:2` | 3001 | 1 | `/app/data` | | `uptime-kuma` | `louislam/uptime-kuma:2` | 3001 | 1 | `/app/data` |
| `demo-web-server` | `nginx` | 80 | 1 | none | | `demo-web-server` | `nginx` | 80 | 1 | none |
| `status-page` | `nginx:alpine` | 8080 | 1 | none |
Both run as single-instance Ghaymah Apps. Uptime Kuma is intentionally Uptime Kuma is intentionally kept at **1 instance** — it stores its data
kept at **1 instance** — it stores its data in a local SQLite database, in a local SQLite database, so scaling it out would split monitor history
so scaling it out would split monitor history across separate, across separate, inconsistent instances.
inconsistent instances.
`demo-web-server` (plain nginx) was added as a self-owned target to `demo-web-server` (plain nginx) was added as a self-owned target to
monitor, so the POC watches infrastructure we actually control rather monitor, so the POC watches infrastructure we actually control rather
than a third-party test endpoint. than a third-party test endpoint.
`status-page` is a custom GitHub-style status page (HTML/CSS/JS) served
by nginx. It fetches live data from the Uptime Kuma public API and
displays service health with heartbeat bars and uptime percentages.
## Monitoring setup ## Monitoring setup
- **Monitor:** `test app` | Monitor | Type | Target | Interval |
- **Type:** HTTP(s) |---------|------|--------|----------|
- **Target:** `https://demo-web-server-web-9b9b121d.hosted.cumin.dev/` | `test app` | HTTP(s) | `https://demo-web-server-web-9b9b121d.hosted.cumin.dev/` | 60s |
- **Check interval:** every 60 seconds | `test uptime kuma` | HTTP(s) | `https://uptime-kuma-web-3aa83c30.hosted.cumin.dev/` | 60s |
- **Retries:** 0 (flags Down immediately — good for fast POC testing)
- **Timeout:** 48 seconds
During setup the monitor was pointed first at `httpstat.us/200` (found Both monitors use 0 retries (flags Down immediately) and a 48-second
unstable, frequent 502s) and then `httpbin.org/status/200` for timeout. `test uptime kuma` is a self-monitoring check — Uptime Kuma
stability testing, before finally being switched to the team's own watching itself to detect if the monitoring service goes down.
nginx instance.
During setup the `test app` monitor was pointed first at `httpstat.us/200`
(unstable, frequent 502s) and then `httpbin.org/status/200` for stability
testing, before finally being switched to the self-owned nginx instance.
## Alerting ## Alerting
@@ -75,11 +80,18 @@ nginx instance.
## Public Status Page ## Public Status Page
### Built-in (Uptime Kuma)
- **URL:** https://uptime-kuma-web-3aa83c30.hosted.cumin.dev/status/ghaymah-status - **URL:** https://uptime-kuma-web-3aa83c30.hosted.cumin.dev/status/ghaymah-status
- **Access:** public, no login required - **Access:** public, no login required
- Shows overall status ("All Systems Operational"), the `test app` - Shows overall status, both monitors grouped under **Services**, uptime
monitor grouped under **Services**, its uptime percentage, and a percentages, and heartbeat history bars.
recent heartbeat history bar.
### Custom (GitHub-style)
- **Files:** `status-page/index.html` + `status-page/nginx.conf`
- **Local:** `http://localhost:8080` (via `docker compose up status-page`)
- Fetches live data from the Uptime Kuma public API; proxies it through
nginx to avoid CORS. Displays 90-heartbeat bars, 24h/30d uptime %,
and animated status indicators. Auto-refreshes every 60 seconds.
## Data persistence ## Data persistence
@@ -114,7 +126,7 @@ token, chat ID) are intentionally redacted from that file.
## Next steps (not yet done) ## Next steps (not yet done)
- Put Uptime Kuma behind a custom domain / HTTPS via reverse proxy - Deploy the custom status page to Ghaymah Cloud via `gy deploy` to
(Ghaymah already terminates HTTPS on its own subdomains, so this is give it a public URL.
optional for the POC). - Add monitors for real application services once a backend app is
deployed, replacing the current demo targets.

عرض الملف

@@ -72,7 +72,9 @@
{ {
"friendly_name": "My Telegram Alert (1)", "friendly_name": "My Telegram Alert (1)",
"type": "Telegram", "type": "Telegram",
"linked_to_monitors": ["test app"], "linked_to_monitors": [
"test app"
],
"bot_token": "REDACTED - stored securely in Uptime Kuma, not included in this export", "bot_token": "REDACTED - stored securely in Uptime Kuma, not included in this export",
"chat_id": "REDACTED - stored securely in Uptime Kuma, not included in this export", "chat_id": "REDACTED - stored securely in Uptime Kuma, not included in this export",
"tested": true, "tested": true,
@@ -87,7 +89,10 @@
"groups": [ "groups": [
{ {
"name": "Services", "name": "Services",
"monitors": ["test app", "test uptime kuma"] "monitors": [
"test app",
"test uptime kuma"
]
} }
], ],
"refresh_interval_seconds": 300, "refresh_interval_seconds": 300,