Gå til indhold
Arkitektur

Arkitektur

Vis som Markdown

En selvhostet Status200-installation er en håndfuld containere: én ingress, som hver forespørgsel kommer ind gennem, ét app-image, der gør arbejdet, probes, der kører dine monitorers tjek, og tre datalagre. Denne side viser, hvordan de hænger sammen, hvad hver enkelt gør, og hvilke forbindelser der krydser dit netværk.

flowchart TB People["Personer<br/>og browsere"] Senders["Telemetriafsendere:<br/>OpenTelemetry,<br/>Fluent Bit,<br/>syslog, agenter"] Targets["Det, du overvåger:<br/>internt og<br/>offentligt"] subgraph Install["Dit netværk"] direction TB Ingress["Ingress<br/>(Nginx, TLS)"] App["App<br/>dashboards,<br/>statussider,<br/>API, ingest,<br/>baggrundsjob"] Runner["Runner"] Probe["Probes"] subgraph Data["Datalagre"] direction LR Postgres[("PostgreSQL<br/>konfiguration<br/>og tilstand")] ClickHouse[("ClickHouse<br/>logs, metrikker,<br/>traces")] Valkey[("Valkey<br/>cache og<br/>køer")] end end People -->|"HTTPS"| Ingress Senders -->|"OTLP, HTTPS"| Ingress Ingress --> App Runner -->|"tage job,<br/>sende resultater"| App Probe -->|"hente arbejde,<br/>sende resultater"| App Probe -->|"HTTP, TCP, ping,<br/>DNS, SNMP"| Targets App --> Postgres App --> ClickHouse App --> Valkey Targets ~~~ Probe

En selvhostet Status200-installation

Det viser dette

  • Personer når Status200 gennem ingress, som afslutter TLS og sender hver forespørgsel videre til appen: Dashboardet, statussiderne, API'et og hvert ingest-endpoint, som telemetri sendes til.
  • Appen læser og skriver sin tilstand i PostgreSQL, gemmer telemetri i ClickHouse og bruger Valkey (den BSD-licenserede fork af Redis 7.2) som cache og til de køer, dens baggrundsjob arbejder sig igennem.
  • Probes kan køre inde i din klynge (anbefalet) og/eller andre steder på dit netværk. De kan overvåge:
    • Interne/private tjenester bag din firewall.
    • Eksterne/offentlige ressourcer på internettet.
  • Proberesultater sendes til appen, sættes i kø i Valkey og behandles af baggrundsjobbene ind i dine datalagre. En probe andre steder på dit netværk når appen gennem ingress, på din Status200-URL.
  • Telemetri (metrikker, traces, logs og mere) modtages af den samme app og gemmes i ClickHouse.
Bemærk

Hvis du bruger ekstern PostgreSQL, Valkey (eller Redis) eller ClickHouse i stedet for de medfølgende, forbinder appen sig i stedet til dine eksterne endpoints. Det logiske flow forbliver det samme.

Komponenterne

KomponentDocker Compose-tjenesteHelm-chartHvad den gør
IngressingressnginxAfslutter TLS, betjener dit værtsnavn og dine statussiders domæner og sender hver forespørgsel videre til appen.
AppappappDashboardet, statussiderne, API- og ingest-endpoints og, medmindre du skiller dem ud, baggrundsjobbene.
WorkerEn del af appworker (slået fra som standard)Baggrundsjobbene i deres egne pods, så tung købehandling aldrig konkurrerer med API-forespørgsler.
Telemetry writerEn del af apptelemetryWriter (slået fra som standard)Et lag af fast størrelse, der udfører hver ClickHouse-indsættelse, så indsættelserne holdes begrænsede, uanset hvor langt workerne skalerer.
Probeprobe-1probesKører monitortjek og sender resultaterne tilbage. Hver medfølgende probe er en global probe, som alle projekter kan bruge.
RunnerrunnerrunnerInstansens egen Runner, som kan køre AI-koderettelser for alle projekter. Runbook-trin kører på Runnere, som du installerer der, hvor de skal køre.
Global Runnerglobal-runnerglobalRunnerEn global Runner: den kører JavaScript-trinnene i alle projekter, der ikke vælger deres egen Runner, hvert i en sandkasse, der kun når internettet. Den har sin egen nøgle og intet andet fra serveren.
PostgreSQLpostgrespostgresql eller postgresOperator.cnpgProjekter, monitorer, hændelser, brugere og alle andre indstillinger og tilstande.
ClickHouseclickhouseclickhouse eller clickhouseOperator.altinityLogs, metrikker, traces, undtagelser, profiler og monitorlogs.
ValkeyvalkeyvalkeyCachen, jobkøerne og kortlivet tilstand som ventende push-kvitteringer.

Alle appens roller er det samme image: Docker Compose kører dem i én app-container, og Helm-chartet kan køre workeren og telemetry writer som deres egne deployments. Hvordan du dimensionerer hvert lag, står i Dimensionering og kapacitetsplanlægning.

Forbindelser ud af dit netværk

Tre forbindelser oprettes, medmindre du ændrer en indstilling:

  • Én gang om dagen spørger appen GitHubs API (api.github.com), om der er kommet en nyere udgivelse. Du slår det fra med updateCheck.disabled: true i Helm-chartet eller med DISABLE_UPDATE_CHECK=true i config.env på Docker Compose.
  • Tilmelder nogen sig med »Underret mig om sikkerhedsrettelser og nye udgivelser« markeret, som den er fra start, sendes personens navn og e-mail, et eventuelt firma og telefonnummer samt din installations adresse og version til status200.ru. Fjern markeringen på et netværk uden internetadgang.
  • På Kubernetes falder probes tilbage på de offentlige resolvere 8.8.8.8 og 1.1.1.1 efter din klynges egen DNS. Sæt dnsConfig.nameservers til [] for at holde alle opslag på din egen DNS.

Alt andet forbinder sig kun udad, når du slår det til, og hver har en side, der nævner de præcise adresser, der skal tillades:

Udgående forbindelseBruges tilLæs mere
E-mail (SMTP eller SendGrids API)Notifikationer og invitationerSMTP
TwilioSms og telefonopkaldTwilio-integration
Status200s push-relay eller ExpoMobile push-notifikationerPush-notifikationer
Slack og Microsoft TeamsNotifikationer og handlinger i arbejdsområdetSlack-integration
En LLM-udbyder som OpenAI, Anthropic, Microsoft Foundry eller en model, du selv kørerStatus200 AILLM-udbydere
status200.ruAktivering af en Enterprise-licens onlineEnterprise Edition

Forbindelser den anden vej – SendGrid, der leverer indgående e-mail, og Slack og Microsoft Teams, der kalder tilbage – kræver, at ingress kan nås fra internettet. Hvilke private adresser appen og probes må nå, bestemmer du: se Adgang til privat netværk.

Status200s logo ligger inde i hver e-mail, som Status200 sender, så det vises selv på et netværk uden internetadgang, og når en e-mail åbnes, bliver ingen anden vært spurgt efter det. Billeder, du selv uploader, som dit eget logo eller en statussides logo, vises fra din Status200-URL, som de, der læser disse e-mails, skal kunne nå.

Næste trin