Architecture
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.
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.
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
| Composant | Service Docker Compose | Chart Helm | Ce qu'il fait |
|---|---|---|---|
| Ingress | ingress | nginx | Termine TLS, sert votre nom d'hôte et les domaines de vos pages de statut, et achemine chaque requête vers l'application. |
| Application | app | app | Le 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. |
| Worker | Fait partie de app | worker (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 writer | Fait partie de app | telemetryWriter (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. |
| Sonde | probe-1 | probes | Exécute les vérifications des moniteurs et renvoie les résultats. Chaque sonde fournie est une sonde globale que tous les projets peuvent utiliser. |
| Runner | runner | runner | Le 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 global | global-runner | globalRunner | Un 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. |
| PostgreSQL | postgres | postgresql, ou postgresOperator.cnpg | Les projets, moniteurs, incidents, utilisateurs et tous les autres paramètres et états. |
| ClickHouse | clickhouse | clickhouse, ou clickhouseOperator.altinity | Les logs, métriques, traces, exceptions, profils et logs de moniteurs. |
| Valkey | valkey | valkey | Le 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éfinissezupdateCheck.disabled: truedans le chart Helm, ouDISABLE_UPDATE_CHECK=truedansconfig.envavec 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.rule 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.8et1.1.1.1après le DNS de votre cluster. DéfinissezdnsConfig.nameserverssur[]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 sortante | Utilisée pour | Pour en savoir plus |
|---|---|---|
| E-mail (SMTP, ou l'API de SendGrid) | Notifications et invitations | SMTP |
| Twilio | SMS et appels téléphoniques | Intégration Twilio |
| Le relais push de Status200, ou Expo | Notifications push mobiles | Notifications push |
| Slack et Microsoft Teams | Notifications et actions dans l'espace de travail | Intégration Slack |
| Un fournisseur de LLM, comme OpenAI, Anthropic, Microsoft Foundry ou un modèle que vous exécutez vous-même | Status200 AI | Fournisseurs de LLM |
status200.ru | Activer 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.