Skip to main content

StatusPage

Beta

Being rolled out. The interface described here is the one of the next release: it may still change, and may not be enabled on your tenant yet.

Monitoring is being rolled out; custom domains are not available yet.

apiVersionmonitoring.stackngo.io/v1alpha1
kindStatusPage
Applied bysng apply
Related commandssng template gen StatusPage, sng apply, sng kind list StatusPage, sng kind delete StatusPage NAME

What it is for​

A StatusPage publishes, without authentication, the state of your Monitors grouped into components: current state, availability over 24 h, 30 and 90 days, day-by-day history, and, optionally, latency. The address derives from the tenant: https://status.<tenant>.dev.stackngo.app/ for the default page, and https://status.<tenant>.dev.stackngo.app/<nom> for the others. The page never shows the probed targets, only the labels.

Minimal example​

default.yml
apiVersion: monitoring.stackngo.io/v1alpha1
kind: StatusPage
metadata:
name: default
spec:
title: État des services
groups:
- name: API
monitors: [api]
sng apply default.yml # https://status.<tenant>.dev.stackngo.app/

Complete annotated example​

default.yml
apiVersion: monitoring.stackngo.io/v1alpha1
kind: StatusPage
metadata:
name: default # "default": root of status.<tenant>…; otherwise /<nom>
spec:
title: État des services Acme # page title, 1 to 120 characters
logoURL: https://www.example.com/logo.png # header logo, https only
groups: # sections, in display order (1 to 50)
- name: API # public section name (80 chars max), unique within the page
monitors: [api-docs] # one line per Monitor, under its displayName (1 to 50)
components: # named lines, after monitors (1 to 20)
- name: API publique # public line name (80 chars max), unique within the section
monitors: [api, api-auth] # 1 to 10 Monitors combined into one line
combine: All # All (default): all operational; Any: at least one
- name: Site web
components:
- name: Site vitrine # a single Monitor: renames the line
monitors: [www]
showLatency: true # displays the p95 latency over 24 h (default false)
historyDays: 90 # history depth: 30 or 90 (default 90)
# customDomains: [status.example.com] # not available yet: the page would be rejected

Fields​

Cross-field validation rules​

The schema rejects, as early as sng apply:

  • an empty title or one longer than 120 characters; a logoURL that does not start with https://;
  • an empty groups or more than 50 groups, a group with neither monitors nor components ("monitors ou components requis"), more than 50 monitors in monitors, more than 20 components or more than 10 monitors per component, a monitor name that is not a DNS label, a combine other than All or Any; group names must also be unique within the page, and component names within their group;
  • a historyDays other than 30 or 90; more than 5 customDomains.

The platform also rejects, after application (Accepted=False, page not served):

  • a listed monitor that does not exist in the tenant (MonitorNotFound);
  • a monitor shown twice on the page, in monitors or components (Invalid);
  • a non-empty customDomains (NotSupported);
  • a page beyond the number allowed by the tier: the most recent ones are refused (QuotaExceeded).

A monitor that exists but is rejected stays listed: it is shown as "unknown".

StatusPage​

StatusPage publie une page de statut qui affiche l'état et l'historique de vos monitors.

ChampDescriptionDéfautValidation
apiVersion stringmonitoring.stackngo.io/v1alpha1
kind stringStatusPage
metadata ObjectMetaSeul metadata.name est à renseigner (nom de la ressource dans votre tenant).
spec StatusPageSpec
status StatusPageStatus

StatusPageSpec​

StatusPageSpec décrit une page de statut publique. Son adresse n'est pas dans le manifeste : elle est attribuée par la plateforme à partir de votre tenant et affichée dans status.url.

ChampDescriptionDéfautValidation
title stringTitre affiché en tête de page.MaxLength: 120
MinLength: 1
logoURL stringLogo affiché en en-tête (https).MaxLength: 2048
Pattern: ^https://
Optional: {}
groups StatusPageGroup arrayComposants affichés, dans l'ordre.MaxItems: 50
MinItems: 1
showLatency booleanAffiche la latence p95 sur 24 h.Optional: {}
historyDays integerProfondeur de l'historique en jours.90Enum: [30 90]
customDomains string arrayVos propres domaines pour la page (pas encore disponible : un manifeste qui en contient n'est pas accepté).MaxItems: 5
Optional: {}

StatusPageStatus​

StatusPageStatus : adresse publique et acceptation de la page.

ChampDescriptionDéfautValidation
url stringAdresse publique de la page.Optional: {}
observedGeneration integerDernière version du manifeste prise en compte.Optional: {}
conditions Condition arrayConditions : Accepted (page valide et publiée).Optional: {}

StatusPageGroup​

StatusPageGroup : section publique. Chaque Monitor de monitors y est une ligne, sous son displayName ; chaque entrée de components est une ligne sous son propre nom, qui peut réunir plusieurs Monitors.

ChampDescriptionDéfautValidation
name stringNom public de la section.MaxLength: 80
MinLength: 1
monitors string arrayNoms des Monitor de votre tenant, une ligne chacun.MaxItems: 50
MinItems: 1
items:Pattern: ^[a-z0-9]([-a-z0-9]\{0,61\}[a-z0-9])?$
Optional: {}
components StatusPageComponent arrayLignes nommées, affichées après monitors.MaxItems: 20
MinItems: 1
Optional: {}

StatusPageComponent​

StatusPageComponent : ligne publique sous son propre nom. Avec un seul Monitor, elle le renomme ; avec plusieurs, elle les combine selon combine.

ChampDescriptionDéfautValidation
name stringNom public de la ligne.MaxLength: 80
MinLength: 1
monitors string arrayNoms des Monitor de votre tenant.MaxItems: 10
MinItems: 1
items:Pattern: ^[a-z0-9]([-a-z0-9]\{0,61\}[a-z0-9])?$
combine CombineModeAll (défaut) : et ; Any : ou.AllEnum: [All Any]
Optional: {}

CombineMode​

Type sous-jacent : string

CombineMode : état d'une ligne qui réunit plusieurs Monitors.

Règles de validation :

  • Enum: [All Any]
ValeurDescription
AllCombineAll : opérationnelle seulement si tous les Monitors le sont (et).
AnyCombineAny : opérationnelle dès qu'un Monitor l'est (ou).

Status and conditions​

status.url gives the public address of the accepted page, for example https://status.acme.dev.stackngo.app/ or https://status.acme.dev.stackngo.app/interne; it is empty as long as the page is not accepted.

ConditionTrue whenFalse when
Acceptedthe page is admitted and served (reason Accepted)rejection by the platform; the page responds 404
reasonExplanationAction
AcceptedPage served—
MonitorNotFoundA monitor in groups does not exist (the message cites the group and the monitor)Fix the name, or create the monitor
InvalidA monitor appears twice on the page (the message cites both groups)Keep it on a single line
NotSupportedcustomDomains is not available yetRemove customDomains
QuotaExceededThe tier's number of pages is reached (1 on 3XS/2XS, 2 on XS/S, 3 on M, 5 on L, 10 on XL, 20 on 2XL, 50 on 3XL)Delete a page, or change tier

In this version, sng kind get StatusPage default shows the saved manifest without the page's state (# status: not observed yet); check the page by opening it, or with curl.

What happens when you apply​

Creation. With the tenant's first accepted page, the platform publishes the address status.<tenant>.dev.stackngo.app with an HTTPS certificate; allow a few minutes before the first HTTPS display. In this version, DNS publication of this address is not guaranteed on all tenants. Subsequent pages share the same address.

Content served.

PathContent
/ and /<nom>HTML page (no JavaScript), 30 s browser cache
/api/v1/summary.json, /api/v1/pages/<nom>/summary.jsonsame content in JSON, callable from any site
/badge/<moniteur>.svgstate badge of a monitor listed by an accepted page

A component's state comes from the monitor; uptimes are recalculated every 30 seconds, the history every 10 minutes. Each IP address is limited to 5 requests per second (429 response beyond that).

Update. A new sng apply changes the page; the display follows in less than a minute.

What happens when you delete​

sng kind delete StatusPage default: the page responds 404. When the tenant no longer has any accepted page, the status.<tenant>… address is removed. The monitors' measurements are not affected.

Common errors​

SymptomCauseFix
404 page introuvablePage rejected (MonitorNotFound, NotSupported, QuotaExceeded), wrong page name in the URL, or page named healthzFix the page; check /<nom>
sng apply rejects: spec.logoURL … should match '^https://'Logo over http://https:// URL
sng apply rejects on historyDaysValue other than 30 or 9030 or 90
Component shown as "unknown"Monitor rejected or without a recent measurementSee Monitor
The page becomes 404 after a monitor is deletedA listed monitor no longer exists (MonitorNotFound)Remove the monitor from the page in the same sng apply
503 statut momentanément indisponibleThe measurement storage is not respondingTry again

See also​