Aller au contenu principal

sng monitor

Bêta

Fonctionnalité en cours de déploiement. L'interface décrite ici est celle de la prochaine livraison : elle peut encore évoluer, et n'est pas forcément activée sur votre tenant.

Les commandes sng monitor sont en cours de diffusion dans la CLI, et la supervision en cours de déploiement.

Le groupe sng monitor est un raccourci pour gérer les manifestes Monitor de l'état désiré : create écrit et applique le manifeste, list et delete équivalent à sng kind list Monitor et sng kind delete Monitor NAME. Les canaux de notification et les pages de statut n'ont pas de commande dédiée : générez-les avec sng template gen NotificationChannel|StatusPage puis sng apply.

Les flags globaux (--config, --json, -v, --version) sont décrits dans l'index de la CLI. Toutes les commandes exigent une session de tenant (sng tenant use NAME), comme pour sng apply.

Actions IAM :

CommandeAction IAMRoute
listdeploy:listGET /v1/resources/Monitor
createdeploy:writePOST /v1/apply
deletedeploy:deleteDELETE /v1/resources/Monitor/{name}

sng monitor list​

sng monitor list

Liste les manifestes Monitor du tenant courant. N'affiche pas l'état des moniteurs : voir la page de statut.

FlagTypeDéfautDescription
(aucun flag propre)
sng monitor list
NAME KEY UPDATED
api acme/…/Monitor/api.yml 2026-10-07T10:02:11Z
db acme/…/Monitor/db.yml 2026-10-07T10:03:48Z

Sans moniteur : no Monitor.

Sortie --json : {"kind": "Monitor", "items": [{"name": "api", "key": "…", "updated_at": "…"}]}.

sng monitor create​

sng monitor create NAME (--http URL | --tcp HOST:PORT | --dns SERVER --query NAME)
[--interval D] [--timeout D] [--threshold N] [--expect CODES]
[--contains TEXT] [--channel NAME]... [--display-name TEXT] [--dry-run]

Écrit un manifeste Monitor et l'applique. Exactement une cible :

  • --http URL : check HTTP(S) ; --expect 200,204 (défaut : tout 2xx), --contains TEXT. Une URL https:// ajoute tls: {} : alertes avant l'expiration du certificat (14 et 3 jours).
  • --tcp HOST:PORT : check de connexion TCP.
  • --dns SERVER --query NAME : requête DNS (type A) envoyée à SERVER.

Seules les cibles publiques sont acceptées : la plateforme refuse les adresses privées et les noms internes. Relancer la commande sur un nom existant remplace le manifeste.

ArgumentDescription
NAMEnom du moniteur : minuscules, chiffres et -, 63 caractères au plus
FlagTypeDéfautDescription
--httpstringURL http(s):// à vérifier ; identifiants dans l'URL refusés
--tcpstringHOST:PORT auquel se connecter
--dnsstringserveur DNS interrogé (avec --query)
--querystringnom résolu par le check DNS
--intervalstring5m30s, 1m, 2m, 5m ou 10m ; le minimum dépend du tier (5 min en 3XS)
--timeoutstring10sdurée d'un check, de 1s à 30s, inférieure à --interval
--thresholdint3échecs consécutifs avant la panne (1 à 5)
--expectliste d'entierscodes HTTP acceptés (200,204) ; exige --http
--containsstringtexte que le corps HTTP doit contenir (256 caractères au plus) ; exige --http
--channelstring, répétableNotificationChannel prévenu en cas de panne et de retour (10 au plus)
--display-namestringNAMElibellé public sur les pages de statut (63 caractères au plus)
--dry-runboolfalseaffiche le manifeste sans l'appliquer
sng monitor create api --http https://api.example.com/health --expect 200 --channel ops
sng monitor create db --tcp db.example.com:5432 --interval 10m
sng monitor create resolver --dns ns1.example.com --query example.com --dry-run
monitor "api" declared in tenant acme: …

--dry-run :

apiVersion: monitoring.stackngo.io/v1alpha1
kind: Monitor
metadata:
name: resolver
spec:
type: DNS
target: ns1.example.com
interval: 5m
timeout: 10s
failureThreshold: 3
dns:
queryName: example.com

Sortie --json : {"uploads": [{"key": "acme/…/Monitor/api.yml", "kind": "Monitor", "name": "api", …}]}.

Pour les options absentes de la commande (méthode HTTP, en-têtes, bodyMustNotContain, ipFamily, type de requête DNS, tcp.tls, seuils TLS, paused), écrivez le manifeste : sng monitor create … --dry-run > api.yml, éditez, puis sng apply api.yml.

Erreurs :

MessageCause
exactly one of --http, --tcp or --dns is requiredaucune cible, ou plusieurs
monitor name "…": lowercase letters, digits and '-' (63 max.)nom invalide
--interval "…": one of 30s, 1m, 2m, 5m, 10mintervalle hors liste
--timeout "…": between 1s and 30stimeout hors bornes ou mal formé
--timeout 30s must be below --interval 30stimeout ≥ intervalle
--threshold must be between 1 and 5seuil hors bornes
--expect and --contains need --httpoptions HTTP sans --http
--expect "…": HTTP status code expectedcode non numérique ou hors 100–599
--http "…": http(s)://host/path expectedURL mal formée
--http: credentials in the URL are refusedhttps://user:pass@…
--tcp "…": HOST:PORT expectedport manquant ou hors 1–65535
--dns needs --query NAME, --query needs --dnsoptions DNS incomplètes
--channel "…": NotificationChannel name expectednom de canal invalide
--channel: 10 channels maxplus de 10 canaux distincts

sng monitor delete​

sng monitor delete NAME [--yes]

Supprime le manifeste Monitor NAME de l'état désiré ; le moniteur cesse d'être sondé. Une page de statut qui le liste encore est refusée ensuite : mettez-la à jour.

ArgumentDescription
NAMEnom du moniteur
FlagTypeDéfautDescription
-y, --yesboolfalseconfirme sans invite ; obligatoire hors terminal interactif
sng monitor delete api
sng monitor delete test-alerte --yes
⚠ Suppression définitive du Monitor "api".
Tapez « oui » pour confirmer : oui
deleted: acme/…/Monitor/api.yml

Sortie --json : la réponse de l'API de suppression (key, …).

Erreurs : confirmation requise : relancez avec --yes ou depuis un terminal interactif, opération annulée.

Voir aussi​