Skip to content

CLI

Ongrid livre deux binaires :

  • ongrid — le manager cloud. Tourne à l'intérieur du conteneur manager.
  • ongrid-edge — l'agent edge. Tourne comme service systemd sur les hosts Linux.

Les deux sont conçus pour être configurés via variables d'environnement (Variables d'environnement), pas via flags. La surface CLI est intentionnellement minuscule — juste assez pour afficher la version et un résumé d'aide. Tout ce qui ressemble à un flag dans des déploiements de production a probablement été posé comme env ONGRID_* dans /etc/ongrid-edge/ongrid-edge.env ou deploy/docker-compose.yml.

ongrid (manager)

Lit chaque variable d'env ONGRID_* que le binaire reconnaît, ouvre ses listeners, et tourne jusqu'à SIGINT / SIGTERM. Il n'y a pas d'arguments requis et pas de sous-commandes.

Flags

Le manager n'expose pas de flags documentés. La seule gestion d'argv est celle du runtime Go standard : tout flag inconnu est ignoré. Les flags d'outillage ops futurs (forcer les migrations, dumper la config, regénérer l'admin bootstrap) sont trackés sous le label ops sur GitHub.

Modèle de processus

text
ongrid
  ├─ HTTP listener on $ONGRID_HTTP_ADDR (:8080)
  ├─ /metrics listener on $ONGRID_METRICS_ADDR (:9100)
  ├─ geminio service-end SDK dial to $ONGRID_FRONTIER_ADDR (frontier:40011)
  ├─ alert evaluator goroutine (interval $ONGRID_ALERT_EVAL_INTERVAL)
  ├─ DB pool sampler (10s tick)
  └─ background investigators (one goroutine per investigation request)

Santé

sh
curl http://localhost:8080/healthz   # always 200 once the server is up
curl http://localhost:8080/readyz    # 200 when DB + frontier dial are healthy

Arrêter / redémarrer

sh
docker compose -f deploy/docker-compose.yml restart ongrid
docker compose -f deploy/docker-compose.yml down
docker compose -f deploy/docker-compose.yml up -d

Shutdown gracieux : le manager câble SIGINT / SIGTERM au contexte racine de son errgroup. Toutes les goroutines stoppent sur context cancel ; les requêtes HTTP en vol ont jusqu'à 10 secondes pour finir.

ongrid-edge (agent)

Le binaire edge supporte deux flags avant que toute startup driven par env n'ait lieu. Ils sont gérés tout en haut de main() pour qu'ils affichent et sortent même sur un host mal configuré.

FlagAliasComportement
--version-vAffiche ongrid-edge <version> et exit 0.
--help-hAffiche ongrid-edge <version> plus un hint d'une ligne sur la configuration systemd, puis exit 0.

Verbatim depuis cmd/ongrid-edge/main.go :

text
$ ongrid-edge --version
ongrid-edge v0.7.167

$ ongrid-edge --help
ongrid-edge v0.7.167
Run as a systemd service. See /etc/ongrid-edge/ongrid-edge.env for config.

Il n'y a pas de flag --config /path. Chaque setting vient de l'environnement. L'unit systemd charge /etc/ongrid-edge/ongrid-edge.env via EnvironmentFile= ; pour les runs ad-hoc (dev sur macOS, debugging) vous les posez dans votre shell.

Env requis pour démarrer

L'agent va booter peu importe, mais il ne peut faire un travail utile qu'une fois ces trois posés :

sh
export ONGRID_EDGE_CLOUD_ADDR=ongrid.example.com:40012
export ONGRID_EDGE_ACCESS_KEY=<from manager UI>
export ONGRID_EDGE_SECRET_KEY=<from manager UI>

Modèle de processus

text
ongrid-edge
  ├─ tunnel dial to $ONGRID_EDGE_CLOUD_ADDR
  ├─ /metrics + /healthz listener on :9101 (localhost)
  ├─ embedded collector (gopsutil)
  ├─ plugin supervisor (subprocess promtail / otelcol-contrib / node_exporter / process-exporter)
  ├─ skill dispatcher (handles execute_skill RPCs from manager)
  └─ webshell port-forwarder (handles open_shell RPCs from manager)

L'agent ne fork pas. Les plugins sont des processus enfants de première classe gérés par le superviseur in-process ; si un plugin crash, le superviseur le redémarre avec backoff exponentiel et rapporte l'échec au prochain heartbeat (visible dans la page Edges comme health.last_error).

Arrêter / redémarrer

sh
sudo systemctl restart ongrid-edge
sudo systemctl stop ongrid-edge
sudo systemctl status ongrid-edge
journalctl -u ongrid-edge -f

Désinstaller

sh
# from a running edge:
curl -k -sSL https://<manager>/install.sh | sudo bash -s -- --uninstall

Retire le binaire, le fichier env, l'unit systemd, les binaires de plugin sous /usr/local/lib/ongrid-edge/, mais préserve /var/log/ongrid-edge/.

Flags de debug via env

Ceux-ci n'ont pas de flags CLI mais sont assez utiles à connaître :

VariableEffet
ONGRID_LOG_LEVEL=debugbascule slog en debug ; double le volume de log de heartbeat
ONGRID_EDGE_PLUGIN_BIN_DIR=...surcharge le répertoire de binaires de plugin (défaut /usr/local/lib/ongrid-edge)
ONGRID_EDGE_PLUGIN_WORK_DIR=...surcharge les dirs runtime des plugins (défaut /var/lib/ongrid-edge/plugins)
ONGRID_EDGE_UPGRADE_STAGE_DIR=""désactive le staging de bundle entier ADR-024 (poser vide)
NO_COLOR=1retire les codes ANSI de la sortie install.sh (utilisé par l'installer, pas l'agent)

install.sh (l'installer curl-pipe)

Techniquement pas un binaire, mais il a un CLI qui vaut la peine d'être documenté. Usage :

sh
curl -k -sSL https://<manager>/install.sh | sudo bash -s -- \
    --access-key=KEY \
    --secret-key=SECRET \
    --server-edge-addr=<host>:40012 \
    --server-http-addr=<host>:443

Flags

FlagRequisDescription
--access-key=KEYoui (install)clé d'accès par-edge (depuis l'UI manager)
--secret-key=SECREToui (install)secret matchant
--server-edge-addr=HOST:PORToui (install)endpoint de tunnel (broker frontier)
--server-http-addr=HOST[:PORT]oui (install)porte d'entrée nginx ; utilisé pour téléchargements de binaires et self-check
--uninstallnonarrêter et retirer l'agent (préserve /var/log/ongrid-edge/)
-h, --helpnonafficher usage

Env qu'il lit

VariableDéfautEffet
ONGRID_INSTALL_WAIT20secondes à attendre que l'agent logge « registered with cloud » avant de déclarer succès
NO_COLORnon posédésactiver les couleurs ANSI

Codes de sortie

  • 0 — installé et enregistré (ou désinstallé).
  • 1 — install complétée mais enregistrement n'a pas eu lieu (réseau, mauvaises clés) ; utilisez journalctl -u ongrid-edge -f pour diagnostiquer.
  • 2 — mauvaise invocation (flag requis manquant).

Voir aussi