@@ -20,12 +20,12 @@ alerting**, **backup & disaster recovery**, and **load testing**. Honest status
2020 static_configs : [{ targets: ["metis:8080"] }]
2121 rule_files : [ "deploy/monitoring/prometheus-alerts.yml" ]
2222 ` ` `
23- - **Alerts** ([` deploy/monitoring/prometheus-alerts.yml`](deploy/monitoring/prometheus-alerts.yml)):
23+ - **Alerts** ([` deploy/monitoring/prometheus-alerts.yml`](../ deploy/monitoring/prometheus-alerts.yml)):
2424 ` MetisDown` (up==0, 1m, **critical**), `MetisNoScrape` (target absent), `MetisProviderCircuitOpen`
2525 (an LLM/vision provider failing), `MetisKnowledgeStoreEmptied` (lost data mount). Route
2626 `severity : critical` to your pager (PagerDuty/OpsGenie/Alertmanager) so a Metis outage pages
2727 **you**, not your users.
28- - **Grafana**: import [`deploy/monitoring/grafana-dashboard.json`](deploy/monitoring/grafana-dashboard.json)
28+ - **Grafana**: import [`deploy/monitoring/grafana-dashboard.json`](../ deploy/monitoring/grafana-dashboard.json)
2929 (uid `metis-cognition`) — up, knowledge, breaker state, run/failure rates.
3030
3131# # Backup & disaster recovery
@@ -34,21 +34,21 @@ State that matters lives in the **`/app/data` bind-mount** (`/opt/metis/data` on
3434knowledge store (SQLite), vector/episodic memory, traces. It is **not** rebuildable from the
3535image — back it up.
3636
37- - **Snapshot + rotate**: [`deploy/backup.sh`](deploy/backup.sh) → `/opt/metis/backups/metis-data-<ts>.tar.gz`, keeps newest 14.
37+ - **Snapshot + rotate**: [`deploy/backup.sh`](../ deploy/backup.sh) → `/opt/metis/backups/metis-data-<ts>.tar.gz`, keeps newest 14.
3838 ` ` ` cron
3939 30 3 * * * /opt/metis/deploy/backup.sh >/var/log/metis-backup.log 2>&1
4040 ` ` `
4141- **Restore**: `./deploy/backup.sh --restore /opt/metis/backups/metis-data-<ts>.tar.gz`
4242 (stops the container, rsyncs the snapshot, `chown 1000:1000`, restarts).
4343- **Rebuild from scratch** (total loss): recreate the container per
44- [`deploy/README.md`](deploy/README.md), then re-seed grounding :
44+ [`deploy/README.md`](../ deploy/README.md), then re-seed grounding :
4545 ` docker exec -i metis python3 - data/knowledge < scripts/seed_ecosystem_knowledge.py` .
4646- **Config**: `prod.yaml` holds the provider keys and is **git-excluded** — keep it in your
4747 secret store; it is the only piece not reproducible from the repo.
4848
4949# # Load testing
5050
51- [`deploy/loadtest.k6.js`](deploy/loadtest.k6.js) (k6) : a health + fast-route mix with SLO
51+ [`deploy/loadtest.k6.js`](../ deploy/loadtest.k6.js) (k6) : a health + fast-route mix with SLO
5252thresholds (errors <5%, health p95 <500ms, fast-verify p95 <20s).
5353` ` ` bash
5454k6 run -e BASE=http://127.0.0.1:8080 -e VUS=20 -e DURATION=2m deploy/loadtest.k6.js
0 commit comments