Ir para o conteúdo
Arquitetura

Arquitetura

Ver como Markdown

Uma instalação auto-hospedada do Status200 é um punhado de contêineres: um ingress por onde entra cada requisição, uma imagem de aplicação que faz o trabalho, sondas que executam as verificações dos seus monitores e três armazenamentos de dados. Esta página mostra como eles se encaixam, o que cada um faz e quais conexões atravessam a sua rede.

flowchart TB People["Pessoas e<br/>navegadores"] Senders["Emissores de<br/>telemetria:<br/>OpenTelemetry,<br/>Fluent Bit,<br/>syslog, agentes"] Targets["O que você<br/>monitora:<br/>interno e público"] subgraph Install["Sua rede"] direction TB Ingress["Ingress<br/>(Nginx, TLS)"] App["Aplicação<br/>dashboards,<br/>páginas de status,<br/>API, ingestão,<br/>tarefas em<br/>segundo plano"] Runner["Runner"] Probe["Sondas"] subgraph Data["Armazenamentos de dados"] direction LR Postgres[("PostgreSQL<br/>configuração<br/>e estado")] ClickHouse[("ClickHouse<br/>logs, métricas,<br/>traces")] Valkey[("Valkey<br/>cache e<br/>filas")] end end People -->|"HTTPS"| Ingress Senders -->|"OTLP, HTTPS"| Ingress Ingress --> App Runner -->|"assumir<br/>tarefas,<br/>enviar<br/>resultados"| App Probe -->|"buscar<br/>trabalho,<br/>enviar<br/>resultados"| App Probe -->|"HTTP, TCP, ping,<br/>DNS, SNMP"| Targets App --> Postgres App --> ClickHouse App --> Valkey Targets ~~~ Probe

Uma instalação auto-hospedada do Status200

O que isto mostra

  • As pessoas chegam ao Status200 pelo ingress, que termina o TLS e encaminha cada requisição para a aplicação: o Dashboard, as páginas de status, a API e cada endpoint de ingestão para onde a telemetria é enviada.
  • A aplicação lê e grava o seu estado no PostgreSQL, guarda a telemetria no ClickHouse e usa o Valkey (o fork com licença BSD do Redis 7.2) como cache e para as filas que as suas tarefas em segundo plano processam.
  • As sondas podem rodar dentro do seu cluster (recomendado) e/ou em outro ponto da sua rede. Elas podem monitorar:
    • Serviços internos/privados atrás do seu firewall.
    • Recursos externos/públicos na internet.
  • Os resultados das sondas são enviados para a aplicação, enfileirados no Valkey e processados pelas tarefas em segundo plano para os seus armazenamentos de dados. Uma sonda em outro ponto da sua rede chega à aplicação pelo ingress, na sua URL do Status200.
  • A telemetria (métricas, traces, logs e mais) é ingerida pela mesma aplicação e armazenada no ClickHouse.
Nota

Se você usa PostgreSQL, Valkey (ou Redis) ou ClickHouse externos em vez dos incluídos, a aplicação se conecta aos seus endpoints externos. O fluxo lógico continua o mesmo.

Os componentes

ComponenteServiço do Docker ComposeChart do HelmO que faz
IngressingressnginxTermina o TLS, atende o seu nome de host e os domínios das suas páginas de status e encaminha cada requisição para a aplicação.
AplicaçãoappappO Dashboard, as páginas de status, os endpoints de API e de ingestão e, a menos que você os separe, as tarefas em segundo plano.
WorkerParte de appworker (desligado por padrão)As tarefas em segundo plano, em pods próprios, para que o processamento pesado das filas nunca concorra com as requisições à API.
Telemetry writerParte de apptelemetryWriter (desligado por padrão)Uma camada de tamanho fixo que faz cada inserção no ClickHouse, para que as inserções continuem limitadas por mais que os workers escalem.
Sondaprobe-1probesExecuta as verificações dos monitores e envia os resultados de volta. Cada sonda incluída é uma sonda global que todos os projetos podem usar.
RunnerrunnerrunnerO Runner próprio da instância, que pode executar correções de código com IA para cada projeto. Os passos dos runbooks rodam em Runners que você instala onde eles devem rodar.
Runner globalglobal-runnerglobalRunnerUm Runner global: executa as etapas JavaScript de todos os projetos que não escolhem um Runner próprio, cada uma em um sandbox que só alcança a internet. Tem a sua própria chave e nada mais do servidor.
PostgreSQLpostgrespostgresql, ou postgresOperator.cnpgProjetos, monitores, incidentes, usuários e todas as outras configurações e estados.
ClickHouseclickhouseclickhouse, ou clickhouseOperator.altinityLogs, métricas, traces, exceções, perfis e logs de monitores.
ValkeyvalkeyvalkeyO cache, as filas de tarefas e o estado de curta duração, como os recibos de push pendentes.

Todos os papéis da aplicação são a mesma imagem: o Docker Compose os executa em um único contêiner app, e o chart do Helm pode executar o worker e o telemetry writer como deployments próprios. Para dimensionar cada camada, veja Dimensionamento e planejamento de capacidade.

Conexões que saem da sua rede

Três conexões são feitas, a menos que você mude uma configuração:

  • Uma vez por dia, a aplicação pergunta à API do GitHub (api.github.com) se saiu uma versão mais nova. Para desligar isso, defina updateCheck.disabled: true no chart do Helm, ou DISABLE_UPDATE_CHECK=true no config.env com o Docker Compose.
  • Cadastrar-se com “Notifique-me sobre patches de segurança e novas versões” marcado, como vem de início, envia para status200.ru o nome e o e-mail da pessoa, a empresa e o telefone que ela informou, e o endereço e a versão da sua instalação. Desmarque essa opção em uma rede sem acesso à internet.
  • No Kubernetes, as sondas recorrem aos resolvedores públicos 8.8.8.8 e 1.1.1.1 depois do DNS do seu próprio cluster. Defina dnsConfig.nameservers como [] para manter todas as consultas no seu próprio DNS.

Todo o resto só se conecta para fora quando você o ativa, e cada um tem uma página que indica os endereços exatos a liberar:

Conexão de saídaUsada paraOnde ler mais
E-mail (SMTP, ou a API do SendGrid)Notificações e convitesSMTP
TwilioSMS e chamadas telefônicasIntegração com o Twilio
O relay de push do Status200, ou o ExpoNotificações push móveisNotificações push
Slack e Microsoft TeamsNotificações e ações no workspaceIntegração com o Slack
Um provedor de LLM, como OpenAI, Anthropic, Microsoft Foundry ou um modelo que você mesmo executaStatus200 AIProvedores de LLM
status200.ruAtivar uma licença Enterprise onlineEdição Enterprise

As conexões no sentido contrário – o SendGrid entregando e-mails recebidos, o Slack e o Microsoft Teams chamando de volta – exigem que o ingress seja acessível pela internet. Quais endereços privados a aplicação e as sondas podem alcançar é você quem decide: veja Acesso à rede privada.

O logotipo do Status200 vai dentro de cada e-mail que o Status200 envia, então ele aparece até em uma rede sem acesso à internet, e abrir um e-mail não pede nada a nenhum outro host. As imagens que você mesmo envia, como o seu próprio logotipo ou o de uma página de status, são mostradas a partir da sua URL do Status200, que quem lê esses e-mails precisa conseguir acessar.

Próximos passos