Arkitektur
En selvhostet Status200-installasjon er en håndfull containere: én ingress som hver forespørsel kommer inn gjennom, ett app-image som gjør jobben, prober som kjører kontrollene til monitorene dine, og tre datalagre. Denne siden viser hvordan de henger sammen, hva hver del gjør, og hvilke tilkoblinger som krysser nettverket ditt.
En selvhostet Status200-installasjon
Hva dette viser
- Personer når Status200 gjennom ingress, som avslutter TLS og sender hver forespørsel videre til appen: Dashboard, statussidene, API-et og hvert inntaksendepunkt som telemetri sendes til.
- Appen leser og skriver tilstanden sin i PostgreSQL, lagrer telemetri i ClickHouse og bruker Valkey (den BSD-lisensierte forken av Redis 7.2) som hurtigbuffer og til køene som bakgrunnsjobbene arbeider seg gjennom.
- Prober kan kjøre inne i klyngen din (anbefalt) og/eller andre steder i nettverket ditt. De kan overvåke:
- Interne/private tjenester bak brannmuren din.
- Eksterne/offentlige ressurser på internett.
- Proberesultater sendes til appen, legges i kø i Valkey og behandles av bakgrunnsjobbene inn i datalagrene dine. En probe et annet sted i nettverket ditt når appen gjennom ingress, på Status200-URL-en din.
- Telemetri (metrikker, traces, logger og mer) tas inn av den samme appen og lagres i ClickHouse.
Hvis du bruker ekstern PostgreSQL, Valkey (eller Redis) eller ClickHouse i stedet for de medfølgende, kobler appen seg til de eksterne endepunktene dine i stedet. Den logiske flyten forblir den samme.
Komponentene
| Komponent | Docker Compose-tjeneste | Helm-chart | Hva den gjør |
|---|---|---|---|
| Ingress | ingress | nginx | Avslutter TLS, betjener vertsnavnet ditt og domenene til statussidene dine, og sender hver forespørsel videre til appen. |
| App | app | app | Dashboard, statussidene, API- og inntaksendepunktene og, med mindre du skiller dem ut, bakgrunnsjobbene. |
| Worker | En del av app | worker (av som standard) | Bakgrunnsjobbene i egne pods, slik at tung købehandling aldri konkurrerer med API-forespørsler. |
| Telemetry writer | En del av app | telemetryWriter (av som standard) | Et lag med fast størrelse som gjør hver ClickHouse-innsetting, slik at innsettingene holder seg begrenset uansett hvor langt workerne skalerer. |
| Probe | probe-1 | probes | Kjører monitorkontroller og sender resultatene tilbake. Hver medfølgende probe er en global probe som alle prosjekter kan bruke. |
| Runner | runner | runner | Instansens egen Runner, som kan kjøre AI-koderettinger for alle prosjekter. Runbook-trinn kjører på Runnere som du installerer der de skal kjøre. |
| Global Runner | global-runner | globalRunner | En global Runner: den kjører JavaScript-trinnene til alle prosjekter som ikke velger sin egen Runner, hvert i en sandkasse som bare når internett. Den har sin egen nøkkel og ingenting annet fra serveren. |
| PostgreSQL | postgres | postgresql, eller postgresOperator.cnpg | Prosjekter, monitorer, hendelser, brukere og alle andre innstillinger og tilstander. |
| ClickHouse | clickhouse | clickhouse, eller clickhouseOperator.altinity | Logger, metrikker, traces, unntak, profiler og monitorlogger. |
| Valkey | valkey | valkey | Hurtigbufferen, jobbkøene og kortvarig tilstand som ventende push-kvitteringer. |
Alle rollene til appen er det samme imaget: Docker Compose kjører dem i én app-container, og Helm-chartet kan kjøre worker og telemetry writer som egne deployments. Hvordan du dimensjonerer hvert lag, står i Dimensjonering og kapasitetsplanlegging.
Tilkoblinger ut av nettverket ditt
Tre tilkoblinger opprettes med mindre du endrer en innstilling:
- Én gang om dagen spør appen GitHubs API (
api.github.com) om det har kommet en nyere utgivelse. Du slår det av medupdateCheck.disabled: truei Helm-chartet, eller medDISABLE_UPDATE_CHECK=trueiconfig.envpå Docker Compose. - Registrerer noen seg med «Varsle meg om sikkerhetsoppdateringer og nye utgivelser» avkrysset, slik den er fra starten, sendes personens navn og e-post, et eventuelt firma og telefonnummer, og installasjonens adresse og versjon til
status200.ru. Fjern avkryssingen på et nettverk uten internettilgang. - På Kubernetes faller prober tilbake på de offentlige resolverne
8.8.8.8og1.1.1.1etter klyngens egen DNS. SettdnsConfig.nameserverstil[]for å holde alle oppslag på din egen DNS.
Alt annet kobler seg bare utover når du slår det på, og hver har en side som oppgir de nøyaktige adressene som må tillates:
| Utgående tilkobling | Brukes til | Les mer |
|---|---|---|
| E-post (SMTP, eller API-et til SendGrid) | Varsler og invitasjoner | SMTP |
| Twilio | SMS og telefonsamtaler | Twilio-integrasjon |
| Push-reléet til Status200, eller Expo | Mobile push-varsler | Push-varsler |
| Slack og Microsoft Teams | Varsler og handlinger i arbeidsområdet | Slack-integrasjon |
| En LLM-leverandør, som OpenAI, Anthropic, Microsoft Foundry eller en modell du kjører selv | Status200 AI | LLM-leverandører |
status200.ru | Aktivere en Enterprise-lisens på nett | Enterprise Edition |
Tilkoblinger den andre veien – SendGrid som leverer innkommende e-post, og Slack og Microsoft Teams som ringer tilbake – krever at ingress kan nås fra internett. Hvilke private adresser appen og probene kan nå, bestemmer du: se Tilgang til privat nettverk.
Status200s logo ligger inne i hver e-post som Status200 sender, så den vises selv på et nettverk uten internettilgang, og når en e-post åpnes, blir ingen annen vert spurt om noe. Bilder du laster opp selv, som din egen logo eller logoen til en statusside, vises fra Status200-URL-en din, som de som leser disse e-postene, må kunne nå.