Aller au contenu
Architecture

Architecture

Voir en Markdown

Une installation auto-hébergée de Status200 tient en quelques conteneurs : un ingress par lequel entre chaque requête, une image d'application qui fait le travail, des sondes qui exécutent les vérifications de vos moniteurs, et trois magasins de données. Cette page montre comment ils s'assemblent, ce que fait chacun et quelles connexions traversent votre réseau.

flowchart TB People["Personnes et<br/>navigateurs"] Senders["Émetteurs de<br/>télémétrie :<br/>OpenTelemetry,<br/>Fluent Bit,<br/>syslog, agents"] Targets["Ce que vous<br/>surveillez :<br/>interne et public"] subgraph Install["Votre réseau"] direction TB Ingress["Ingress<br/>(Nginx, TLS)"] App["Application<br/>tableaux de bord,<br/>pages de statut,<br/>API, ingestion,<br/>tâches de fond"] Runner["Runner"] Probe["Sondes"] subgraph Data["Magasins de données"] direction LR Postgres[("PostgreSQL<br/>configuration<br/>et état")] ClickHouse[("ClickHouse<br/>logs, métriques,<br/>traces")] Valkey[("Valkey<br/>cache et<br/>files d'attente")] end end People -->|"HTTPS"| Ingress Senders -->|"OTLP, HTTPS"| Ingress Ingress --> App Runner -->|"prendre<br/>les tâches,<br/>envoyer les<br/>résultats"| App Probe -->|"récupérer<br/>le travail,<br/>envoyer les<br/>résultats"| App Probe -->|"HTTP, TCP, ping,<br/>DNS, SNMP"| Targets App --> Postgres App --> ClickHouse App --> Valkey Targets ~~~ Probe

Une installation auto-hébergée de Status200

Ce que cela montre

  • Les personnes accèdent à Status200 par l'ingress, qui termine TLS et achemine chaque requête vers l'application : le Dashboard, les pages de statut, l'API et chaque point d'ingestion vers lequel la télémétrie est envoyée.
  • L'application lit et écrit son état dans PostgreSQL, conserve la télémétrie dans ClickHouse et utilise Valkey (le fork sous licence BSD de Redis 7.2) pour le cache et pour les files d'attente que traitent ses tâches de fond.
  • Les sondes peuvent s'exécuter dans votre cluster (recommandé) et/ou ailleurs sur votre réseau. Elles peuvent surveiller :
    • Les services internes/privés derrière votre pare-feu.
    • Les ressources externes/publiques sur Internet.
  • Les résultats des sondes sont envoyés à l'application, mis en file d'attente dans Valkey, puis traités par les tâches de fond vers vos magasins de données. Une sonde située ailleurs sur votre réseau joint l'application par l'ingress, à votre URL Status200.
  • La télémétrie (métriques, traces, logs et plus) est ingérée par la même application et stockée dans ClickHouse.
Remarque

Si vous utilisez un PostgreSQL, un Valkey (ou Redis) ou un ClickHouse externe au lieu de ceux fournis, l'application se connecte à vos points de terminaison externes à la place. Le flux logique reste le même.

Les composants

ComposantService Docker ComposeChart HelmCe qu'il fait
IngressingressnginxTermine TLS, sert votre nom d'hôte et les domaines de vos pages de statut, et achemine chaque requête vers l'application.
ApplicationappappLe Dashboard, les pages de statut, les points d'API et d'ingestion et, à moins que vous ne les sépariez, les tâches de fond.
WorkerFait partie de appworker (désactivé par défaut)Les tâches de fond, dans leurs propres pods, pour que le traitement lourd des files d'attente ne concurrence jamais les requêtes d'API.
Telemetry writerFait partie de apptelemetryWriter (désactivé par défaut)Un niveau de taille fixe qui effectue chaque insertion ClickHouse, pour que les insertions restent bornées quel que soit le nombre de workers.
Sondeprobe-1probesExécute les vérifications des moniteurs et renvoie les résultats. Chaque sonde fournie est une sonde globale que tous les projets peuvent utiliser.
RunnerrunnerrunnerLe Runner propre à l'instance, qui peut exécuter les corrections de code par IA pour chaque projet. Les étapes des runbooks s'exécutent sur les Runners que vous installez là où elles doivent s'exécuter.
Agent Runbook globalglobal-runnerglobalRunnerUn agent Runbook global : il exécute les étapes JavaScript de chaque projet qui ne choisit pas de Runner à lui, chacune dans un bac à sable qui n'atteint qu'internet. Il détient sa propre clé et rien d'autre du serveur.
PostgreSQLpostgrespostgresql, ou postgresOperator.cnpgLes projets, moniteurs, incidents, utilisateurs et tous les autres paramètres et états.
ClickHouseclickhouseclickhouse, ou clickhouseOperator.altinityLes logs, métriques, traces, exceptions, profils et logs de moniteurs.
ValkeyvalkeyvalkeyLe cache, les files de tâches et l'état de courte durée, comme les accusés de push en attente.

Tous les rôles de l'application utilisent la même image : Docker Compose les exécute dans un seul conteneur app, et le chart Helm peut exécuter le worker et le telemetry writer dans leurs propres déploiements. Pour dimensionner chaque niveau, consultez Dimensionnement et planification de capacité.

Connexions sortant de votre réseau

Trois connexions sont établies tant que vous ne changez pas un réglage :

  • Une fois par jour, l'application demande à l'API de GitHub (api.github.com) si une version plus récente est sortie. Pour désactiver cela, définissez updateCheck.disabled: true dans le chart Helm, ou DISABLE_UPDATE_CHECK=true dans config.env avec Docker Compose.
  • S'inscrire avec « M'avertir des correctifs de sécurité et des nouvelles versions » coché, comme c'est le cas au départ, envoie à status200.ru le nom et l'e-mail de la personne, l'entreprise et le numéro de téléphone qu'elle a indiqués, ainsi que l'adresse et la version de votre installation. Décochez cette case sur un réseau sans accès à Internet.
  • Sur Kubernetes, les sondes se rabattent sur les résolveurs publics 8.8.8.8 et 1.1.1.1 après le DNS de votre cluster. Définissez dnsConfig.nameservers sur [] pour que chaque résolution reste sur votre propre DNS.

Tout le reste ne se connecte vers l'extérieur que lorsque vous l'activez, et chaque connexion a une page qui indique les adresses exactes à autoriser :

Connexion sortanteUtilisée pourPour en savoir plus
E-mail (SMTP, ou l'API de SendGrid)Notifications et invitationsSMTP
TwilioSMS et appels téléphoniquesIntégration Twilio
Le relais push de Status200, ou ExpoNotifications push mobilesNotifications push
Slack et Microsoft TeamsNotifications et actions dans l'espace de travailIntégration Slack
Un fournisseur de LLM, comme OpenAI, Anthropic, Microsoft Foundry ou un modèle que vous exécutez vous-mêmeStatus200 AIFournisseurs de LLM
status200.ruActiver une licence Enterprise en ligneÉdition Enterprise

Les connexions dans l'autre sens – SendGrid qui livre les e-mails entrants, Slack et Microsoft Teams qui rappellent – exigent que l'ingress soit joignable depuis Internet. Les adresses privées que l'application et les sondes peuvent joindre, c'est vous qui les choisissez : voir Accès au réseau privé.

Le logo de Status200 voyage à l'intérieur de chaque e-mail qu'envoie Status200 : il s'affiche donc même sur un réseau sans accès à Internet, et ouvrir un e-mail ne demande rien à aucun autre hôte. Les images que vous importez vous-même, comme votre propre logo ou celui d'une page de statut, s'affichent depuis votre URL Status200, que les lecteurs de ces e-mails doivent pouvoir joindre.

Étapes suivantes