staxmonitor documentation
Choose a version
Version 0.1.x
StaxMonitor Deployment and Alert Routing #
StaxMonitor’s console is a self-hosted control plane. It receives signed agent reports, stores the latest snapshot per host, renders a multi-host view, and routes triggered alerts.
Architecture #
Agent (per host) ──HTTPS/signed POST──▶ Console (self-hosted) ──▶ alerts: webhook / Slack / email
Signed transport #
When a --secret is set on both the console and the agent, the agent computes
an HMAC-SHA256 signature of each report and sends it in the x-stax-signature
header. The console rejects reports whose signature does not verify, so a host
cannot impersonate another without the secret.
If you run without a secret, the console accepts unsigned payloads — only use this on trusted, isolated networks.
Routing configuration #
The console reads a --routing JSON file that maps channel names to targets:
{
"webhook": { "url": "https://hooks.example.com/alerts" },
"slack": { "url": "https://hooks.slack.com/services/T000/B000/XXXX" },
"email": { "to": "[email protected]", "relayUrl": "https://relay.example.com/send" }
}
- webhook — POSTs a JSON alert payload to
url. - slack — POSTs
{ "text": ... }to a Slack incoming-webhookurl. - email — POSTs to
relayUrlwithtoand a subject/body; native SMTP is not in the MVP.
Agent alert rules #
Rules live in the agent config. Each rule names a dotted metric path, an
operator (gt, gte, lt, lte), a threshold, and the channels to notify:
{
"rules": [
{ "name": "High CPU", "metric": "cpu.usage", "op": "gt", "threshold": 90, "channels": ["slack"] },
{ "name": "Low disk", "metric": "disks.0.percent", "op": "gt", "threshold": 90, "channels": ["webhook"] },
{ "name": "Service down", "metric": "services.0.up", "op": "lt", "threshold": 1, "channels": ["email"] }
]
}
disks.0.percent refers to the first configured disk; services.0.up is 1
when the process is detected, 0 when not.
Multi-host view #
GET / renders a table of all agents, their CPU/memory, and last report time.
The API exposes GET /api/hosts (list) and GET /api/host?id=<agentId>
(single snapshot) for dashboards and automation.
Air-gapped deployment #
- Install the console and agents from the standalone binaries; no internet access is required after that.
- Keep the
--secretconsistent across agents and console. - The console’s
--persistfile holds all state locally; nothing leaves the network except the alert routes you configure.