Skip to main content

Guardião dos servidores — monitoramento de status, recursos, custo/expiração e segurança de hosts Linux via SSH.

Project description

Vordr 🐺

Na mitologia nórdica, Vörðr é o espírito-guardião que acompanha cada pessoa do nascimento à morte, vigiando-a sem descanso. Aqui, Vordr monta guarda diante dos seus servidores.

Vordr é uma CLI que vigia seus hosts Linux por SSH e responde, num só lugar, às perguntas que importam no dia a dia:

  • Estão de pé? — estado, uptime, carga, RAM, disco e containers de todos os hosts.
  • Vou ser cobrado? — há quanto tempo você hospeda cada host, quando o servidor renova e quando o domínio expira, e quanto você gasta por mês. O recurso que evita a cobrança surpresa.
  • Estão seguros? — falhas de login, portas em escuta, fail2ban, atualizações pendentes e necessidade de reboot.

Sem agentes instalados nos servidores, sem banco de dados, sem segredos no código: Vordr só precisa do seu ~/.ssh/config.

┌──────────────────────────────────────────────────────────────────────┐
│ Vordr · status dos servidores                                          │
├───────────┬──────────┬─────────┬──────┬─────┬───────┬────────┬─────────┤
│ host      │ estado   │ uptime  │ load │ ram │ disco │ docker │ expira  │
├───────────┼──────────┼─────────┼──────┼─────┼───────┼────────┼─────────┤
│ web       │ ● online │ 2sem 5d │ 0.28 │ 32% │ 22%   │ 5/6    │ 53d     │
│ db        │ ● online │ 4sem 4d │ 0.04 │ 18% │ 62%   │ 6/6    │ 6d  ⚠   │
└───────────┴──────────┴─────────┴──────┴─────┴───────┴────────┴─────────┘

Por que existe

Quem mantém alguns servidores acaba acumulando comandos soltos e logins repetidos para responder perguntas simples. Vordr junta isso numa camada única que:

  1. olha todos os hosts de uma vez, com métricas comparáveis e coloridas por limiar (load por CPU, % de disco/RAM);
  2. avisa antes de uma renovação cobrar de novo;
  3. dá uma auditoria rápida de segurança sem precisar logar em cada máquina.

Vordr coleta métricas via pequenos scripts sh que emitem CHAVE=valor (estável e testável) em vez de parsear saída colorida e frágil — mas ainda oferece um modo --raw que reproduz a saída nativa de um status_command seu, quando você define um.

Instalação

Requer Python 3.11+ e o cliente ssh configurado com os hosts que você quer monitorar.

pipx install vordr          # recomendado (ferramenta isolada no PATH)
# ou, para desenvolvimento:
pip install -e ".[dev]"

Configuração

Os hosts são aliases do seu ~/.ssh/config — nenhum IP, usuário ou chave fica guardado pelo Vordr. As datas de cobrança são informadas por você (o servidor não tem como saber quando o provedor ou o registrar vão cobrar de novo).

Cada host tem dois blocos opcionais de ciclo de vida: [hosts.X.server] (a hospedagem) e [hosts.X.domain] (o domínio). Ambos com expires/cost, somados no custo mensal.

vordr init        # cria ~/.config/vordr/config.toml comentado
[thresholds]
warn_days = 14
critical_days = 7

[hosts.web]
ssh = "web"                   # alias no ~/.ssh/config
label = "Web"
# status_command = "meu-status"   # opcional: seu script para `vordr status --raw`

  [hosts.web.server]          # a hospedagem
  provider = "Hetzner"
  since   = "2024-03-01"      # desde quando você hospeda (tempo de hospedagem)
  expires = "2026-08-15"      # AAAA-MM-DD — próxima renovação do servidor
  cost = 6.99
  currency = "USD"
  cycle = "monthly"           # monthly | yearly

  [hosts.web.domain]          # o domínio (opcional)
  name = "web.exemplo.com"
  registrar = "Cloudflare"
  expires = "2027-03-01"
  cost = 12.00
  currency = "USD"
  cycle = "yearly"

Vordr não embute nenhum host: vordr init cria um config.toml comentado para você preencher com seus aliases. Sem hosts configurados, os comandos apenas orientam a rodar vordr init.

Uso

vordr status              # painel de todos os hosts
vordr status web          # só um host
vordr status --watch 5    # atualiza a cada 5s (tela cheia)
vordr status --raw        # saída nativa do status_command do host

vordr resources           # CPU/load, memória e disco em detalhe
vordr security            # auditoria: logins, falhas, portas, fail2ban, updates
vordr cost                # tabela: hospedagem, renovação de servidor/domínio, custo/mês
vordr cost web            # painel detalhado do ciclo de vida de um host
vordr cost --offline      # sem rede: usa só o que está no config
vordr billing             # saldo/crédito e próxima cobrança por provedor
vordr hosts               # lista o que está configurado

vordr secret set hetzner  # guarda o token da API (chmod 600, fora do repo)
vordr secret status       # mostra quais provedores têm token (mascarado)

Todas as cores seguem limiares: verde (ok), amarelo (atenção), vermelho (crítico) — para disco/RAM, load por CPU e dias até a cobrança.

Automação do cost (sem digitar datas)

O cost preenche sozinho o que você não informou — e o valor do config sempre vence (útil para preços promocionais/legados):

  • Domínio: informe só name no [hosts.X.domain] e a expiração vem do RDAP (público, sem credencial), cacheada em ~/.cache/vordr/rdap.json.
  • Servidor: com provider = "Hetzner" ou "Vultr" e um token configurado, o since (data de criação) e o custo mensal vêm da API do provedor.

Provedores suportados: Hetzner (HCLOUD_TOKEN) e Vultr (VULTR_API_KEY). Tokens nunca ficam no repositório: são lidos de variável de ambiente ou de ~/.config/vordr/secrets.toml (chmod 600, no .gitignore), com o env tendo prioridade. Configure com vordr secret set <provedor>. Valores vindos da rede aparecem marcados com (API) / (RDAP).

⚠️ O preço da API é o de lista do tipo/plano — se a sua conta tem valor promocional/travado, informe cost no config (ele vence). A API da Vultr usa allowlist de IP e o token é full-access (não há read-only): cuide bem dele.

Saldo e próxima cobrança (vordr billing)

Com o token configurado, vordr billing responde quando e de onde sai a cobrança — cada provedor tem um modelo:

  • Pré-pago (ex.: Vultr): mostra crédito, uso pendente do ciclo e o runway — quantos dias o saldo ainda cobre (somando o custo dos servidores da conta) e a data em que ele esgota. Útil quando se roda em cima de bônus/crédito: a cobrança no cartão só começa quando o saldo zera. Um resumo dessa linha aparece também no rodapé do vordr cost.
  • Postpago (ex.: Hetzner): a Cloud API não expõe saldo; o billing mostra a próxima data de cobrança (1º do mês seguinte) e o custo mensal estimado.

Como funciona

Camada Arquivo Responsabilidade
Transporte SSH vordr/ssh.py Executa comandos remotos (BatchMode, timeout).
Coleta de métrica vordr/probe.py Scripts shCHAVE=valor → dataclasses.
Configuração vordr/config.py Lê o TOML; cálculo de dias/custo.
Expiração domínio vordr/rdap.py RDAP público + cache em disco (sem credencial).
API de provedor vordr/hetzner.py, vordr/vultr.py Clientes read-only (since, preço e saldo).
Segredos vordr/secrets.py Tokens fora do repo (env > arquivo chmod 600).
Formatação vordr/format.py Funções puras (uptime, bytes, limiares de cor).
CLI vordr/cli.py Typer + Rich; orquestra tudo em paralelo.

Os hosts são consultados em paralelo (ThreadPoolExecutor), então monitorar 2 ou 10 servidores leva praticamente o mesmo tempo.

Segurança por design

  • Read-only: Vordr só roda comandos de leitura (/proc, df, ss, last, …).
  • Sem segredos no repositório: hosts são aliases SSH; o config.toml real fica fora do versionamento (veja .gitignore).
  • Sem sudo interativo: checagens privilegiadas usam sudo -n (não-interativo) e degradam graciosamente quando não há permissão — nunca travam o terminal.
  • BatchMode: se a chave não estiver disponível, falha rápido em vez de pedir senha.

Desenvolvimento

pip install -e ".[dev]"
ruff check .
pytest

Os testes não tocam a rede: a camada SSH é injetada (monkeypatch) e a lógica de parsing/formatação é testada com amostras reais de saída dos servidores.

Licença

MIT — veja LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vordr-0.2.0.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vordr-0.2.0-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file vordr-0.2.0.tar.gz.

File metadata

  • Download URL: vordr-0.2.0.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vordr-0.2.0.tar.gz
Algorithm Hash digest
SHA256 83b5d3de2435a334729fa13769581d5ba971aebc7ff4dd8bf68ce924c1ed38a6
MD5 476f41bf1e8fb11badeb0c62ad61369b
BLAKE2b-256 c4524724cc4c3e47d90f68e606900210278189bfbcc47ac40dcef1b6f36cbe4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for vordr-0.2.0.tar.gz:

Publisher: publish.yml on gusta-ve/vordr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vordr-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: vordr-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 32.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vordr-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6cab502a0da7562060cf1ab332a88b5e0c4ec2437571b6fe4e5e691510b6f6e8
MD5 3d39ecbd61b799c3a47d39c8ca85db87
BLAKE2b-256 5474089b1e2f521ff8dcf41b8a2b340f5784d954f2a87c016f228f7a3be89ae8

See more details on using hashes here.

Provenance

The following attestation bundles were made for vordr-0.2.0-py3-none-any.whl:

Publisher: publish.yml on gusta-ve/vordr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page