Zum Inhalt springen
Architektur

Architektur

Eine selbst gehostete Status200-Installation besteht aus einer Handvoll Container: einem Ingress, über den jede Anfrage hereinkommt, einem App-Image, das die Arbeit erledigt, Probes, die die Prüfungen Ihrer Monitore ausführen, und drei Datenspeichern. Diese Seite zeigt, wie sie zusammenspielen, was jeder Teil tut und welche Verbindungen Ihr Netzwerk überqueren.

flowchart TB People["Menschen<br/>und Browser"] Senders["Telemetrie-Sender:<br/>OpenTelemetry,<br/>Fluent Bit,<br/>Syslog, Agenten"] Targets["Was Sie<br/>überwachen:<br/>intern und<br/>öffentlich"] subgraph Install["Ihr Netzwerk"] direction TB Ingress["Ingress<br/>(Nginx, TLS)"] App["App<br/>Dashboards,<br/>Statusseiten,<br/>API, Ingest,<br/>Hintergrundjobs"] Runner["Runner"] Probe["Probes"] subgraph Data["Datenspeicher"] direction LR Postgres[("PostgreSQL<br/>Konfiguration<br/>und Zustand")] ClickHouse[("ClickHouse<br/>Logs, Metriken,<br/>Traces")] Valkey[("Valkey<br/>Cache und<br/>Warteschlangen")] end end People -->|"HTTPS"| Ingress Senders -->|"OTLP, HTTPS"| Ingress Ingress --> App Runner -->|"Jobs übernehmen,<br/>Ergebnisse<br/>senden"| App Probe -->|"Arbeit<br/>abholen,<br/>Ergebnisse<br/>senden"| App Probe -->|"HTTP, TCP, Ping,<br/>DNS, SNMP"| Targets App --> Postgres App --> ClickHouse App --> Valkey Targets ~~~ Probe

Eine selbst gehostete Status200-Installation

Was das zeigt

  • Menschen erreichen Status200 über den Ingress, der TLS terminiert und jede Anfrage an die App weiterleitet: das Dashboard, die Statusseiten, die API und jeden Ingest-Endpunkt, an den Telemetrie gesendet wird.
  • Die App liest und schreibt ihren Zustand in PostgreSQL, speichert Telemetrie in ClickHouse und nutzt Valkey (den BSD-lizenzierten Fork von Redis 7.2) als Cache und für die Warteschlangen, die ihre Hintergrundjobs abarbeiten.
  • Probes können in Ihrem Cluster laufen (empfohlen) und/oder an anderer Stelle in Ihrem Netzwerk. Sie können Folgendes überwachen:
    • Interne/private Dienste hinter Ihrer Firewall.
    • Externe/öffentliche Ressourcen im Internet.
  • Probe-Ergebnisse werden an die App gesendet, in Valkey eingereiht und von den Hintergrundjobs in Ihre Datenspeicher geschrieben. Eine Probe an anderer Stelle in Ihrem Netzwerk erreicht die App über den Ingress, unter Ihrer Status200-URL.
  • Telemetrie (Metriken, Traces, Logs und mehr) wird von derselben App aufgenommen und in ClickHouse gespeichert.
Hinweis

Wenn Sie statt der mitgelieferten Datenbanken ein externes PostgreSQL, Valkey (oder Redis) oder ClickHouse verwenden, verbindet sich die App stattdessen mit Ihren externen Endpunkten. Der logische Ablauf bleibt derselbe.

Die Komponenten

KomponenteDocker-Compose-DienstHelm-ChartWas sie tut
IngressingressnginxTerminiert TLS, bedient Ihren Hostnamen und die Domains Ihrer Statusseiten und leitet jede Anfrage an die App weiter.
AppappappDas Dashboard, die Statusseiten, die API- und Ingest-Endpunkte und, sofern Sie sie nicht abtrennen, die Hintergrundjobs.
WorkerTeil von appworker (standardmäßig aus)Die Hintergrundjobs in eigenen Pods, damit aufwendige Warteschlangenverarbeitung nie mit API-Anfragen konkurriert.
Telemetrie-WriterTeil von apptelemetryWriter (standardmäßig aus)Eine Stufe fester Größe, die jeden ClickHouse-Insert ausführt, damit die Inserts begrenzt bleiben, wie weit die Worker auch skalieren.
Probeprobe-1probesFührt Monitorprüfungen aus und sendet die Ergebnisse zurück. Jede mitgelieferte Probe ist eine globale Probe, die alle Projekte nutzen können.
RunnerrunnerrunnerDer eigene Runner der Instanz, der KI-Codekorrekturen für jedes Projekt ausführen kann. Runbook-Schritte laufen auf Runnern, die Sie dort installieren, wo sie laufen sollen.
Globaler Runnerglobal-runnerglobalRunnerEin globaler Runner: Er führt die JavaScript-Schritte jedes Projekts aus, das keinen eigenen Runner wählt, jeden in einer Sandbox, die nur das Internet erreicht. Er hat seinen eigenen Schlüssel und sonst nichts vom Server.
PostgreSQLpostgrespostgresql oder postgresOperator.cnpgProjekte, Monitore, Incidents, Benutzer und alle anderen Einstellungen und Zustände.
ClickHouseclickhouseclickhouse oder clickhouseOperator.altinityLogs, Metriken, Traces, Ausnahmen, Profile und Monitor-Logs.
ValkeyvalkeyvalkeyDer Cache, die Job-Warteschlangen und kurzlebiger Zustand wie ausstehende Push-Belege.

Alle Rollen der App sind dasselbe Image: Docker Compose führt sie in einem app-Container aus, und das Helm-Chart kann den Worker und den Telemetrie-Writer als eigene Deployments ausführen. Wie Sie jede Stufe dimensionieren, steht unter Dimensionierung und Kapazitätsplanung.

Verbindungen aus Ihrem Netzwerk heraus

Drei Verbindungen werden aufgebaut, solange Sie keine Einstellung ändern:

  • Einmal am Tag fragt die App die API von GitHub (api.github.com), ob eine neuere Version erschienen ist. Abschalten lässt sich das mit updateCheck.disabled: true im Helm-Chart oder mit DISABLE_UPDATE_CHECK=true in config.env bei Docker Compose.
  • Registriert sich jemand mit aktiviertem „Benachrichtigen Sie mich über Sicherheitsupdates und neue Versionen“ (so ist es voreingestellt), gehen Name und E-Mail-Adresse der Person, eine angegebene Firma und Telefonnummer sowie Adresse und Version Ihrer Installation an status200.ru. Deaktivieren Sie das Kästchen in einem Netzwerk ohne Internetzugang.
  • Unter Kubernetes greifen Probes nach dem DNS Ihres Clusters auf die öffentlichen Resolver 8.8.8.8 und 1.1.1.1 zurück. Setzen Sie dnsConfig.nameservers auf [], damit jede Abfrage bei Ihrem eigenen DNS bleibt.

Alles andere baut nur dann Verbindungen nach außen auf, wenn Sie es einschalten, und zu jedem gibt es eine Seite, die die genauen freizugebenden Adressen nennt:

Ausgehende VerbindungWofürMehr dazu
E-Mail (SMTP oder die API von SendGrid)Benachrichtigungen und EinladungenSMTP
TwilioSMS und TelefonanrufeTwilio-Integration
Das Push-Relay von Status200 oder ExpoMobile Push-BenachrichtigungenPush-Benachrichtigungen
Slack und Microsoft TeamsBenachrichtigungen und Aktionen im WorkspaceSlack-Integration
Ein LLM-Anbieter, etwa OpenAI, Anthropic, Microsoft Foundry oder ein Modell, das Sie selbst betreibenStatus200 AILLM-Anbieter
status200.ruEine Enterprise-Lizenz online aktivierenEnterprise Edition

Verbindungen in die andere Richtung – SendGrid, das eingehende E-Mails zustellt, oder Slack und Microsoft Teams, die zurückrufen – setzen voraus, dass der Ingress aus dem Internet erreichbar ist. Welche privaten Adressen die App und die Probes erreichen dürfen, entscheiden Sie: siehe Zugriff auf private Netzwerke.

Das Logo von Status200 steckt in jeder E-Mail, die Status200 versendet, selbst. Es wird also auch in einem Netzwerk ohne Internetzugang angezeigt, und beim Öffnen einer E-Mail wird kein anderer Host danach gefragt. Bilder, die Sie selbst hochladen, etwa Ihr eigenes Logo oder das einer Statusseite, werden von Ihrer Status200-URL geladen; wer diese E-Mails liest, muss sie also erreichen können.

Nächste Schritte