SolidPing

Monitoramento de uptime para agentes de IA: liste, crie e diagnostique verificações, leia resultados, gerencie incidentes, janelas de manutenção e páginas de status (42 ferramentas). Funciona via stdio (solidping mcp --stdio) ou HTTP remoto com OAuth, e na demo pública sem cadastro. Código aberto, AGPL-3.0.

Servidor MCP hospedado

npx add-mcp 'https://solidping.io/api/v1/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

SolidPing

SolidPing

Monitoramento de uptime distribuído e auto-hospedável. 43 tipos de verificação, workers multi-região, agentes privados, páginas de status, incidentes e escalonamento de plantão — em um único binário Go.

Build Coverage Release Go Go Reference License

Live Status Docs Container


Do docker run ao primeiro resultado

https://github.com/user-attachments/assets/471694b0-b136-4764-86c1-5f85615c45f4

Tudo, do início ao fim: docker run, o primeiro login e a troca de senha forçada, uma verificação HTTP criada contra https://solidping.io/api/mgmt/health, e seus primeiros tempos de resposta plotados a partir de duas regiões. Regenerado a partir do painel ao vivo com make showcase — nada aqui é uma maquete. O mesmo vídeo é exibido na página Tour se o player acima não carregar.

Capturas de tela

Lista de verificaçõesFormulário de nova verificaçãoDetalhe da verificação
Checks list in the SolidPing dashboardNew-check form, filled inCheck detail page with response-time history

Experimente

Hospedadowww.solidping.io — cadastre-se, sem necessidade de cartão
Página de status ao vivostatus.solidping.io — uma instância real do SolidPing monitorando a de produção, de outro provedor em outro país
Documentaçãodocs.solidping.io
Auto-hospedagemdocker run -p 4000:4000 --hostname solidping ghcr.io/fclairamb/solidping (também no Docker Hub como fclairamb/solidping) — SQLite por padrão, sem necessidade de outros serviços. O primeiro login é admin@solidping.io / solidpass, e você deve alterá-lo (veja Credenciais padrão). Prefere um binário puro? Toda versão também publica um para Linux, macOS e Windows — veja os guias de instalação. Também: brew install fclairamb/tap/solidping (tap), scoop bucket add fclairamb https://github.com/fclairamb/scoop-bucket e depois scoop install solidping, e um Helm chart.

Visão geral

O SolidPing é um sistema de monitoramento multi-tenant que permite que organizações monitorem sua infraestrutura por meio de workers distribuídos que executam verificações de saúde. Foi projetado para baixo consumo de recursos e fácil auto-hospedagem.

Principais recursos

  • 43 tipos de verificação: HTTP, TCP, UDP, ICMP, DNS, DNSBL, NTP, SSL/Domínio, SSH, RDP, VNC, FTP/SFTP, SMTP/POP3/IMAP, Email (caixa de entrada passiva JMAP), WebSocket, SIP, gRPC, Prometheus, 7 bancos de dados (Postgres, MySQL, MSSQL, Oracle, ClickHouse, MongoDB, Redis), 3 filas de mensagens (Kafka, RabbitMQ, MQTT), Docker, Kubernetes, SNMP, linha Freebox, servidor de jogos (Source/A2S, Minecraft), navegador headless, JS personalizado, rastreamento de site, endpoint de saúde, heartbeat
  • Workers distribuídos: Execução de verificações multi-região com agendamento baseado em lease, períodos de verificação por região com controle de propagação e cotas de taxa de verificação por organização
  • Locais privados: Agentes externos executam verificações de dentro da sua própria rede por meio de um WebSocket de saída, com cotas de agentes por organização
  • Multi-tenant: Isolamento de dados por organização, RBAC, 2FA (TOTP), rótulos com autocompletar
  • Baixo consumo: Binário único; SQLite, Postgres embutido ou Postgres externo
  • Verificações rápidas: Frequências abaixo de um minuto suportadas
  • Notificações (10 nativas): Slack (OAuth + threads + instalação no Marketplace), Discord (OAuth + webhook), Email, Webhooks, Google Chat, Mattermost, Ntfy, PagerDuty, Pushover, Web Push (VAPID)
  • Incidentes: Resolução adaptativa com tempo de espera, correlação de incidentes em grupo (um alerta por interrupção, não por verificação), reconhecimento, adiamento, resolução manual e comentários por incidente
  • Grupos de verificação: Organize verificações em grupos com paginação agrupada e correlação de incidentes em nível de grupo
  • Plantão e escalonamento: Escalas de rodízio com substituições, políticas de escalonamento em várias etapas (destinos: usuário / escala / conexão / todos os administradores, repetições)
  • Criptografia de credenciais em repouso: Criptografia de envelope com chave mestra fora de banda; segredos nunca são exibidos de volta no painel
  • Túneis SSH: Alcance destinos inacessíveis por meio de hosts de salto SSH
  • Páginas de status: Seções, recursos, métricas públicas de disponibilidade, formatação de data sensível ao local
  • Janelas de manutenção: Supressão recorrente de alertas
  • Scripts JavaScript: Lógica de monitoramento personalizada em sandbox
  • Monitoramento de navegador: Chrome headless via Rod
  • Servidor MCP: Acesso a ferramentas por IA/LLM via Model Context Protocol (listado no Smithery)
  • SSO / OAuth: Google, GitHub, GitLab, Microsoft, Slack, Discord, além de OIDC genérico, SAML e LDAP / Active Directory (alternância de ativação por provedor, com revogação de token por autoatendimento)
  • Observabilidade: Prometheus /metrics, integração com Sentry, OpenTelemetry
  • Cliente CLI: Gerencie verificações e resultados pelo terminal
  • i18n: Painel multilíngue (inglês, francês, alemão, espanhol)

Início rápido

Pré-requisitos

  • Go 1.24+
  • PostgreSQL 15+
  • Docker (para desenvolvimento)
  • Bun (para desenvolvimento do frontend)

Configuração de desenvolvimento

# Start PostgreSQL
docker-compose up -d

# Build and run
make build && ./solidping serve

# Or use hot reload for development
make dev-test   # Backend + frontend with hot reload

Credenciais padrão

  • Email: admin@solidping.io
  • Senha: solidpass
  • Organização: default

Ambas as partes desse par são publicadas aqui, então o primeiro login em um banco de dados novo deve definir uma nova senha antes que a conta possa fazer qualquer outra coisa. O painel leva você direto ao formulário; pela API, o login é bem-sucedido e todos os endpoints, exceto POST /api/v1/auth/change-password, GET /api/v1/auth/me e POST /api/v1/auth/logout, respondem 403 com o código PASSWORD_CHANGE_REQUIRED até que você a altere.

Exemplo de API

# Get a JWT token
TOKEN=$(curl -s -X POST -H 'Content-Type: application/json' \
  -d '{"org":"default","email":"admin@solidping.io","password":"solidpass"}' \
  'http://localhost:4000/api/v1/auth/login' | jq -r '.accessToken')

# List checks
curl -s -H "Authorization: Bearer $TOKEN" \
  'http://localhost:4000/api/v1/orgs/default/checks'

Tipos de verificação suportados

Rede

ProtocoloDescrição
HTTP/HTTPSCódigos de status, correspondência de corpo, asserções JSON, autenticação básica
TCPConectividade de porta
UDPAlcance de porta
ICMPPing
DNSResolução de registros
DNSBLParticipação em lista de bloqueio DNS (RBL)
NTPAlcance do servidor de horário e desvio de relógio
WebSocketVerificação de conexão
SIPServidor VoIP SIP (ping OPTIONS)

Segurança e certificados

ProtocoloDescrição
SSL/TLSValidade e expiração de certificado
DomínioExpiração de nome de domínio (WHOIS)

Email

ProtocoloDescrição
SMTPConectividade do servidor, STARTTLS, AUTH
POP3Disponibilidade do servidor
IMAPDisponibilidade do servidor
Email (JMAP)Monitoramento passivo de caixa de entrada — receba uma mensagem conhecida via JMAP e verifique a entrega

Bancos de dados

ProtocoloDescrição
PostgreSQLConexão + execução de consulta
MySQL/MariaDBConexão + execução de consulta
MSSQLConexão + execução de consulta
OracleConexão + execução de consulta
ClickHouseConexão + execução de consulta
MongoDBComando ping
RedisComando PING

Acesso remoto

ProtocoloDescrição
SSHDisponibilidade do servidor
RDPHandshake de negociação RDP pré-autenticação (sem credenciais)
FTPDisponibilidade do servidor
SFTPDisponibilidade do servidor

Filas de mensagens

ProtocoloDescrição
KafkaConectividade do broker
RabbitMQConectividade do broker
MQTTConectividade do broker

Infraestrutura

TipoDescrição
DockerSaúde do contêiner
KubernetesSaúde do cluster / servidor de API
SNMPMonitoramento de dispositivos
gRPCSaúde do serviço
A2SConsulta a servidor de jogos Source / Steam (Valve A2S)
MinecraftConsulta a servidor Minecraft
PrometheusColeta de um endpoint Prometheus e verificação de uma métrica

Especializados

TipoDescrição
HeartbeatMonitoramento passivo via pings recebidos
JavaScriptLógica de monitoramento personalizada em sandbox
NavegadorChrome headless (Rod) — JS, CSS, renderização completa
Linha FreeboxQualidade da linha xDSL/fibra Freebox (via Freebox conectada)

Configuração

Tudo é configurado com variáveis de ambiente com prefixo SP_. Precedência: variáveis de ambiente > config.local.yml > config.yml > padrões.

Você só precisa das configurações do banco de dados para começar — os padrões cobrem o restante.

SQLite (o padrão — bom para uma única instância)

Nada para configurar. A imagem já armazena o banco de dados SQLite e todos os blobs enviados (logotipos de organizações, ativos de páginas de status, capturas de tela) em /data, então um único volume nomeado montado é suficiente:

docker run -p 4000:4000 \
  --hostname solidping \
  -v solidping-data:/data \
  ghcr.io/fclairamb/solidping

--hostname solidping não é opcional: o nome do worker é derivado do hostname e deve corresponder a ^[a-z][a-z0-9-]{2,20}$. O hostname padrão do Docker é o ID aleatório do contêiner, que na maioria das vezes começa com um dígito, e o servidor então se recusa a iniciar. Passe --hostname, ou defina SP_NODE_NAME.

Se você usar um bind mount em vez de um volume nomeado (-v ./solidping-data:/data), o diretório do host mantém sua própria propriedade, que geralmente não é gravável pelo usuário não-root da imagem (uid/gid 65532). Ou chown 65532:65532 o diretório do host primeiro, ou execute com -u "$(id -u):$(id -g)". Um volume nomeado, como usado acima, não tem esse problema — o Docker o inicializa a partir da imagem com a propriedade correta.

PostgreSQL (recomendado para produção)

As migrações de esquema são executadas no primeiro boot, então aponte para um banco de dados vazio e deixe-o criar suas próprias tabelas:

docker run -p 4000:4000 \
  --hostname solidping \
  -e SP_DB_TYPE=postgres \
  -e SP_DB_URL='postgresql://solidping:password@postgres:5432/solidping?sslmode=disable' \
  ghcr.io/fclairamb/solidping

sslmode=disable é adequado para um banco de dados na mesma rede privada, e é o que um contêiner postgres padrão aceita — ele não serve TLS, então sslmode=require falha contra um com SSL is not enabled on the server. Para um banco de dados gerenciado ou remoto, use sslmode=require (ou verify-full).

As variáveis que você realmente precisa

VariávelPadrãoDescrição
SP_DB_TYPEsqlitesqlite ou postgres
SP_DB_URL—String de conexão PostgreSQL (obrigatória quando SP_DB_TYPE=postgres)
SP_DB_DIR/data na imagem, . para o binário puroOnde o arquivo SQLite fica — defina-o para um volume
SP_SERVER_LISTEN:4000Endereço de escuta
SP_BASE_URLhttp://localhost:4000URL pública, usada em links e notificações
SP_NODE_NAMEo hostnameNome do worker, ^[a-z][a-z0-9-]{2,20}$. Defina-o, ou passe --hostname — o servidor não iniciará se o hostname não corresponder
SP_LOG_LEVELinfodebug, info, warn, error

Essa é toda a superfície de início. Todo o resto — autenticação e SSO, email e os outros canais de notificação, domínios personalizados e TLS, workers multi-região, retenção de dados, armazenamento — é opcional e documentado em docs.solidping.io:

Visão geral da configuraçãotodas as variáveis, agrupadas por área
Banco de dadosstrings de conexão, modos SSL, pooling, backups
Autenticaçãoprovedores OAuth, OIDC, SAML, LDAP, 2FA
NotificaçõesSlack, Discord, email, webhooks e o restante

Arquitetura

Componentes principais

  • Servidor de API: API REST para gerenciar verificações, incidentes e resultados
  • Painel (web/dash0): UI de administração (React + TanStack Router + shadcn/ui)
  • Página de status (web/status0): Painel de status público
  • Workers: Agentes distribuídos que executam verificações de monitoramento
  • Notificações: Slack, Discord, Email, Webhooks, Google Chat, Mattermost, Ntfy, PagerDuty, Pushover, Web Push
  • Banco de dados: PostgreSQL (resultados particionados) ou SQLite

Pilha de Tecnologia

  • Backend: Go 1.24+, go-chi/chi v5, Bun ORM, koanf
  • Frontend: React 19, TypeScript, Vite, TanStack Router/Query, Tailwind CSS, shadcn/ui
  • Banco de dados: PostgreSQL (produção), SQLite (desenvolvimento/nó único)

Estrutura do Projeto

solidping/
├── server/
│   ├── main.go                  # CLI entry point (serve, migrate, client)
│   └── internal/
│       ├── app/                 # Server setup, services, embedded assets
│       ├── handlers/            # HTTP handlers + business logic
│       ├── checkers/            # Protocol checker implementations
│       ├── notifications/       # Notification channels
│       ├── db/                  # Bun models + Postgres/SQLite migrations
│       └── middleware/          # Auth, CORS, org context
├── web/
│   ├── dash0/                   # Admin dashboard (React)
│   └── status0/                 # Public status page
├── docker-compose.yml           # Development PostgreSQL
├── Dockerfile                   # Production container
└── Makefile                     # Build targets

Desenvolvimento

Comandos

make build            # Build complete application
make dev-test         # Hot-reload backend + frontend
make dev-backend      # Backend only with hot reload (air)
make dev-dash0        # Dashboard dev server
make test             # Run backend tests
make lint             # Lint all code
make fmt              # Format all code
make docker-build     # Build Docker image

Cliente CLI

# Build the CLI
make build-cli

# Usage
./bin/sp auth login
./bin/sp checks list
./bin/sp results list

Objetivos

Principais

  • Muitos protocolos e tipos de teste
  • Baixo consumo de memória
  • Execução rápida (verificações em menos de um minuto)
  • Fácil auto-hospedagem (binário único + PostgreSQL)
  • Multiplataforma (Linux, macOS, Windows)
  • Páginas públicas de status

Não Objetivos

  • Testes transacionais de múltiplas etapas / fluxos de usuário com script (use Playwright diretamente para isso)
  • Monitoramento de Performance de Aplicações / RUM (use Datadog, New Relic ou Site24x7)

Inspiração

  • uptime-kuma - Ótima ferramenta de monitoramento auto-hospedada

Contribuindo

Relatórios de bugs e pull requests são bem-vindos — veja CONTRIBUTING.md para configuração local e convenções de PR. Encontrou um problema de segurança? Veja SECURITY.md em vez de abrir uma issue pública.

Licença

AGPL-3.0 - Veja LICENSE.