Um hub leve de monitoramento de recursos de servidor com dados históricos, estatísticas do Docker e alertas.
Leve : menor e que consome menos recursos do que as soluções líderes.
Simples : configuração fácil, sem necessidade de exposição pública na Internet.
Estatísticas do Docker : rastreia o histórico de uso de CPU, memória e rede para cada contêiner.
Alertas : Alertas configuráveis para CPU, memória, disco, largura de banda, temperatura e status do sistema.
Multiusuário : Cada usuário gerencia seus próprios sistemas. Os administradores podem compartilhar sistemas entre usuários.
OAuth/OIDC : Suporta vários provedores OAuth2. A autenticação por senha pode ser desativada.
Backups automáticos : salve e restaure dados do disco ou armazenamento compatível com S3.
API REST : use ou atualize seus dados em seus próprios scripts e aplicativos.
Beszel consiste em dois componentes principais: o hub e o agente.
Hub: um aplicativo da web que fornece um painel para visualizar e gerenciar sistemas conectados. Construído em PocketBase.
Agente: é executado em cada sistema que você deseja monitorar, criando um servidor SSH mínimo para comunicar as métricas do sistema ao hub.
Se não estiver usando o docker, pule as etapas 4 a 5 e execute o agente usando o binário.
Inicie o hub (veja instalação).
Abra http://localhost:8090 e crie um usuário administrador.
Clique em “Adicionar sistema”. Insira o nome e o host do sistema que você deseja monitorar.
Clique em "Copiar docker compose" para copiar o arquivo docker-compose.yml do agente para a área de transferência.
No sistema do agente, crie o arquivo de composição e execute docker compose up
para iniciar o agente.
De volta ao hub, clique no botão "Adicionar sistema" na caixa de diálogo para finalizar a adição do sistema.
Se tudo correr bem, o sistema deverá ficar verde. Se ficar vermelho, verifique a página Logs e consulte as dicas de solução de problemas.
Para o tutorial em francês, consulte https://belginux.com/installer-beszel-avec-docker/
Você pode instalar o hub e o agente como binários únicos ou usando o Docker.
Hub : veja o exemplo do arquivo docker-compose.yml.
Agente : o hub fornece conteúdo de composição para o agente, mas você também pode fazer referência ao arquivo de exemplo docker-compose.yml.
O agente usa o modo de rede host para acessar estatísticas da interface de rede, o que expõe automaticamente a porta. Altere a porta usando uma variável de ambiente, se necessário.
Se você não precisar de estatísticas de rede, remova essa linha do arquivo de composição e mapeie a porta manualmente.
Dica
Se estiver usando Linux, consulte guides/systemd.md para obter um script para instalar o hub ou agente como um serviço do sistema. Isso também está integrado à interface da web.
Baixe e execute os binários mais recentes na página de lançamentos ou use os comandos abaixo.
curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/ armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O moldura | tee ./beszel >/dev/null && chmod +x moldura && ls moldura
Executando o hub diretamente:
./beszel servir
curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed ' s/armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O agente beszel | tee ./beszel-agent >/dev/null && chmod +x beszel-agent && ls beszel-agent
Executando o agente diretamente:
PORT=45876 KEY="{PASTE_YOUR_KEY}" ./beszel-agent
Use ./beszel update
e ./beszel-agent update
para atualizar para a versão mais recente.
Nome | Padrão | Descrição |
---|---|---|
CSP | desarmar | Adiciona um cabeçalho Content-Security-Policy com este valor. |
DISABLE_PASSWORD_AUTH | falso | Desativa a autenticação por senha. |
Nome | Padrão | Descrição |
---|---|---|
DOCKER_HOST | desarmar | Substitui o host docker (docker.sock) se estiver usando um proxy. 1 |
EXTRA_FILESYSTEMS | desarmar | Consulte Monitorando discos, partições ou montagens remotas adicionais |
FILESYSTEM | desarmar | Dispositivo, partição ou ponto de montagem a ser usado para estatísticas do disco raiz. |
KEY | desarmar | Chave SSH pública a ser usada para autenticação. Fornecido no hub. |
LOG_LEVEL | informações | Nível de registro. Valores válidos: "debug", "info", "warn", "error". |
MEM_CALC | desarmar | Substitui o cálculo de memória padrão. 2 |
NICS | desarmar | Lista branca de interfaces de rede para monitorar o gráfico de largura de banda. |
PORT | 45876 | Porta ou endereço:porta para escutar. |
SENSORS | desarmar | Lista branca de sensores de temperatura a serem monitorados. |
SYS_SENSORS | desarmar | Substitui o caminho do sistema para sensores. Veja #160. |
Beszel suporta OpenID Connect e muitos provedores de autenticação OAuth2 (veja a lista abaixo).
Visite a página "Provedores de autenticação" para ativar seu provedor. O URL de redirecionamento/retorno de chamada deve ser
.
Maçã
Bitbucket
Discórdia
Gitea
Turismo rural
GitHub
GitLab
Kakao
Bate-papo ao vivo
vaca postal
Microsoft
Conexão OpenID
Patreon (v2)
Spotify
Strava
Contração muscular
VK
Yandex
O método para adicionar discos adicionais difere dependendo do método de implantação.
Use lsblk
para encontrar os nomes e pontos de montagem de suas partições. Se você tiver problemas, verifique os logs do agente.
Nota: Os gráficos usarão o nome do dispositivo ou partição, se disponível, e retornarão ao nome da pasta. Você não obterá estatísticas de E/S para unidades montadas em rede.
Monte uma pasta do sistema de arquivos de destino no diretório /extra-filesystems
do contêiner. Por exemplo:
volumes: - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
Configure a variável de ambiente EXTRA_FILESYSTEMS
para uma lista separada por vírgulas de dispositivos, partições ou pontos de montagem a serem monitorados. Por exemplo:
EXTRA_FILESYSTEMS="sdb,sdc1,mmcblk0,/mnt/compartilhamento de rede"
Como o Beszel é construído no PocketBase, você pode usar as APIs da web do PocketBase e os SDKs do lado do cliente para ler ou atualizar dados de fora do próprio Beszel.
O hub e o agente se comunicam por SSH, portanto, não precisam ficar expostos à Internet. Mesmo que você coloque um gateway de autenticação externo, como o Authelia, na frente do hub, ele não interromperá nem interromperá a conexão entre o hub e o agente.
Quando o hub é iniciado pela primeira vez, ele gera um par de chaves ED25519.
O servidor SSH do agente está configurado para aceitar conexões usando apenas esta chave. Ele não fornece um pseudoterminal nem aceita entrada, portanto é impossível executar comandos no agente mesmo que sua chave privada esteja comprometida.
Os administradores têm acesso a links adicionais no hub, como backups, configurações de SMTP, etc. O primeiro usuário criado é automaticamente um administrador e pode fazer login no PocketBase.
Alterar a função de um usuário não cria uma conta de administrador do PocketBase para ele. Para fazer isso, vá em Configurações > Administradores no PocketBase e adicione-os manualmente.
Os usuários podem criar seus próprios sistemas e alertas. Links para configurações do PocketBase não são mostrados no hub.
Os usuários somente leitura não podem criar sistemas, mas podem visualizar qualquer sistema compartilhado com eles por um administrador e criar alertas.
Supondo que o agente esteja em execução, a conexão provavelmente está bloqueada por um firewall. Você tem duas opções:
Adicione uma regra de entrada ao(s) firewall(s) do sistema do agente para permitir conexões TCP com a porta. Verifique todos os firewalls ativos, como iptables, e as configurações de firewall do seu provedor de nuvem, se aplicável.
Como alternativa, use software como Cloudflare Tunnel, WireGuard ou Tailscale para contornar seu firewall com segurança.
Você pode testar a conectividade executando telnet
.
Se estiver usando o modo de rede do host para o agente, mas não para o hub, adicione seu sistema usando o nome do host host.docker.internal
, que resolve o endereço IP interno usado pelo host. Veja o exemplo docker-compose.yml.
Se estiver usando o modo de rede host para ambos, você poderá usar localhost
como nome do host.
Caso contrário, use o container_name
do agente como nome do host se ambos estiverem na mesma rede Docker.
Especifique o sistema de arquivos/dispositivo/partição para estatísticas do disco raiz usando a variável de ambiente FILESYSTEM
.
Se não for definido, o agente tentará encontrar a partição montada em /
e usá-la. Isto pode não funcionar corretamente em um contêiner, por isso é recomendado definir esse valor. Use um dos seguintes métodos para encontrar o sistema de arquivos correto:
Execute lsblk
e escolha uma opção em “NOME”.
Execute df -h
e escolha uma opção em “Sistema de arquivos”.
Execute sudo fdisk -l
e escolha uma opção em “Dispositivo”.
Se os gráficos de contêiner mostrarem dados vazios ou não aparecerem, pode ser necessário ativar a contabilidade de memória do cgroup. Para verificar, execute docker stats
. Se isso mostrar zero uso de memória, siga este guia para corrigir o problema:
https://akashrajpurohit.com/blog/resolving-missing-memory-stats-in-docker-stats-on-raspberry-pi/
Tente atualizar sua versão do Docker no sistema do agente. Esse problema foi observado em uma máquina executando a versão 24 e foi resolvido com a atualização para a versão 27.
Os registros para períodos mais longos são criados pela média das estatísticas de períodos mais curtos. O agente deve funcionar ininterruptamente para que um conjunto completo de dados preencha esses registros.
Pausar/retomar o agente por mais de um minuto resultará em dados incompletos, redefinindo o tempo do intervalo atual.
Tanto o hub quanto o agente são escritos em Go, então você mesmo pode construí-los facilmente ou fazer compilação cruzada para diferentes plataformas. Instale o Go primeiro, se ainda não o fez.
Execute make
em /beszel
. Isso cria um diretório build
contendo os binários.
moldura do cd && make
Você também pode construir para diferentes plataformas:
faça OS=freebsd ARCH=arm64
Veja uma lista de opções válidas executando go tool dist list
.
moldura do cd && go mod arrumado
Vá para beszel/cmd/agent
e execute o seguinte comando para criar um binário no diretório atual:
CGO_ENABLED=0 vá construir -ldflags "-w -s" .
O hub incorpora a IU da web no binário, portanto, você deve primeiro construir o site. Eu uso Bun, mas você pode usar Node.js se preferir:
moldura do cd/site instalação de pão construção de bun run
Então em beszel/cmd/hub
:
CGO_ENABLED=0 vá construir -ldflags "-w -s" .
Você pode fazer compilação cruzada para diferentes plataformas usando as variáveis de ambiente GOOS
e GOARCH
.
Por exemplo, para construir para FreeBSD ARM64:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 vá construir -ldflags "-w -s" .
Veja uma lista de opções válidas executando go tool dist list
.
Contribuições são bem-vindas, mas é uma boa ideia verificar conosco primeiro em uma discussão/questão se você planeja fazer algo significativo.
Usamos Crowdin para gerenciar traduções. Novos idiomas ou melhorias nas traduções existentes são apreciados!
Teremos mais informações úteis sobre como contribuir para Beszel em um futuro próximo.
Beszel é licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.
Beszel só precisa de acesso para ler as informações do contêiner. Para linuxserver/docker-socket-proxy você definiria CONTAINERS=1
. ↩
O valor padrão para memória usada é baseado no cálculo Used do gopsutil, que deve estar alinhado com free
. Defina MEM_CALC
como htop
para alinhar com o cálculo do htop. ↩