Connectors: pull reports from other tools, starting with Beszel #37

Closed
opened 2026-10-29 09:30:28 +00:00 by Gilles · 0 comments
Owner

Monitoring plan, phase 4.1 and 4.2: Argus pulls reports from other tools ("connectors"), starting with Beszel.

Spike results (Beszel 0.21.1, PocketBase API, user auth)

  • systems: name, status (up / down / paused / pending), info (cpu, mp, dp, la…).
  • alerts: system, name (CPU, Memory, Disk…), value (threshold), min (minutes), triggered. A user can list them (single-record GET is superuser-only).
  • alerts_history: alert_id, name, value, resolved (empty while active).
  • Detailed stats (system_stats, container_stats) stay in Beszel: it's the place for graphs.

Scope

  • New apps.connectors: Connector (project, kind, name, base URL, username, secret encrypted at rest, interval ≥ 60 s, enabled, last run / status / error).
  • Celery beat task every minute runs the connectors that are due, each in its own task.
  • Shared ingestion helper creating a "format maison" report (raw file + Report + process_report), also used by the self-reports.
  • Beszel connector: one report per system, ref_kind=source, ref_value=<system name> (the machine, so a server card gathers host-check and Beszel), custom_type_name=beszel: system state (fail when down), triggered alerts (warn) and their list; expect_every = 3 × interval, so a broken connector or Beszel shows up as a silent source. Unchanged reports are de-duplicated as usual.
  • API (project admin): list / create / update / delete connectors (secret write-only), "run now".
  • Deploy: the worker joins a monitoring network shared with Beszel (the hub is behind Authentik on its public URL).
Monitoring plan, phase 4.1 and 4.2: Argus pulls reports from other tools ("connectors"), starting with Beszel. ## Spike results (Beszel 0.21.1, PocketBase API, user auth) - `systems`: `name`, `status` (up / down / paused / pending), `info` (cpu, mp, dp, la…). - `alerts`: `system`, `name` (CPU, Memory, Disk…), `value` (threshold), `min` (minutes), `triggered`. A user can list them (single-record GET is superuser-only). - `alerts_history`: `alert_id`, `name`, `value`, `resolved` (empty while active). - Detailed stats (`system_stats`, `container_stats`) stay in Beszel: it's the place for graphs. ## Scope - New `apps.connectors`: `Connector` (project, kind, name, base URL, username, secret encrypted at rest, interval ≥ 60 s, enabled, last run / status / error). - Celery beat task every minute runs the connectors that are due, each in its own task. - Shared ingestion helper creating a "format maison" report (raw file + `Report` + `process_report`), also used by the self-reports. - Beszel connector: one report per system, `ref_kind=source`, `ref_value=<system name>` (the machine, so a server card gathers host-check and Beszel), `custom_type_name=beszel`: system state (fail when down), triggered alerts (warn) and their list; `expect_every` = 3 × interval, so a broken connector or Beszel shows up as a silent source. Unchanged reports are de-duplicated as usual. - API (project admin): list / create / update / delete connectors (secret write-only), "run now". - Deploy: the worker joins a `monitoring` network shared with Beszel (the hub is behind Authentik on its public URL).
Sign in to join this conversation.
No description provided.