Un centro de monitoreo de recursos de servidor liviano con datos históricos, estadísticas de Docker y alertas.
Ligero : más pequeño y que consume menos recursos que las soluciones líderes.
Sencillo : configuración sencilla, sin necesidad de exposición pública a Internet.
Estadísticas de Docker : realiza un seguimiento del historial de uso de la CPU, la memoria y la red de cada contenedor.
Alertas : alertas configurables para CPU, memoria, disco, ancho de banda, temperatura y estado del sistema.
Multiusuario : Cada usuario gestiona sus propios sistemas. Los administradores pueden compartir sistemas entre usuarios.
OAuth/OIDC : Admite múltiples proveedores de OAuth2. La autenticación de contraseña se puede desactivar.
Copias de seguridad automáticas : guarde y restaure datos desde el disco o el almacenamiento compatible con S3.
API REST : utilice o actualice sus datos en sus propios scripts y aplicaciones.
Beszel consta de dos componentes principales: el centro y el agente.
Hub: una aplicación web que proporciona un panel para ver y administrar sistemas conectados. Construido sobre PocketBase.
Agente: se ejecuta en cada sistema que desea monitorear, creando un servidor SSH mínimo para comunicar las métricas del sistema al concentrador.
Si no utiliza Docker, omita los pasos 4 y 5 y ejecute el agente usando el binario.
Inicie el concentrador (ver instalación).
Abra http://localhost:8090 y cree un usuario administrador.
Haga clic en "Agregar sistema". Ingrese el nombre y el host del sistema que desea monitorear.
Haga clic en "Copiar docker compose" para copiar el archivo docker-compose.yml del agente a su portapapeles.
En el sistema del agente, cree el archivo de redacción y ejecute docker compose up
para iniciar el agente.
De vuelta en el centro, haga clic en el botón "Agregar sistema" en el cuadro de diálogo para terminar de agregar el sistema.
Si todo va bien, el sistema debería cambiar a verde. Si se pone rojo, consulte la página Registros y consulte los consejos para la solución de problemas.
Para el tutorial en francés, consulte https://belginux.com/installer-beszel-avec-docker/
Puede instalar el concentrador y el agente como archivos binarios únicos o mediante Docker.
Hub : consulte el archivo de ejemplo docker-compose.yml.
Agente : el centro proporciona contenido de redacción para el agente, pero también puede consultar el archivo de ejemplo docker-compose.yml.
El agente utiliza el modo de red de host para acceder a las estadísticas de la interfaz de red, lo que expone automáticamente el puerto. Cambie el puerto usando una variable de entorno si es necesario.
Si no necesita estadísticas de red, elimine esa línea del archivo de redacción y asigne el puerto manualmente.
Consejo
Si usa Linux, consulte guías/systemd.md para obtener un script para instalar el concentrador o agente como un servicio del sistema. Esto también está integrado en la interfaz de usuario web.
Descargue y ejecute los archivos binarios más recientes desde la página de versiones o utilice los siguientes comandos.
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" | alquitrán -xz -O beszel | tee ./beszel >/dev/null && chmod +x beszel && ls beszel
Ejecutando el hub directamente:
./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
Ejecutando el agente directamente:
PUERTO=45876 LLAVE="{PASTE_YOUR_KEY}" ./beszel-agent
Utilice ./beszel update
y ./beszel-agent update
para actualizar a la última versión.
Nombre | Por defecto | Descripción |
---|---|---|
CSP | desarmado | Agrega un encabezado Content-Security-Policy con este valor. |
DISABLE_PASSWORD_AUTH | FALSO | Deshabilita la autenticación de contraseña. |
Nombre | Por defecto | Descripción |
---|---|---|
DOCKER_HOST | desarmado | Anula el host de la ventana acoplable (docker.sock) si se utiliza un proxy. 1 |
EXTRA_FILESYSTEMS | desarmado | Ver Supervisión de discos, particiones o montajes remotos adicionales |
FILESYSTEM | desarmado | Dispositivo, partición o punto de montaje que se utilizará para las estadísticas del disco raíz. |
KEY | desarmado | Clave SSH pública que se utilizará para la autenticación. Proporcionado en el centro. |
LOG_LEVEL | información | Nivel de registro. Valores válidos: "depurar", "información", "advertir", "error". |
MEM_CALC | desarmado | Anula el cálculo de memoria predeterminado. 2 |
NICS | desarmado | Lista blanca de interfaces de red para monitorear el gráfico de ancho de banda. |
PORT | 45876 | Puerto o dirección: puerto para escuchar. |
SENSORS | desarmado | Lista blanca de sensores de temperatura para monitorear. |
SYS_SENSORS | desarmado | Anula la ruta del sistema para los sensores. Ver #160. |
Beszel admite OpenID Connect y muchos proveedores de autenticación OAuth2 (consulte la lista a continuación).
Visite la página "Proveedores de autenticación" para habilitar su proveedor. La URL de redireccionamiento/devolución de llamada debe ser
.
Manzana
Bitbucket
Discordia
casa rural
Casa rural
GitHub
GitLab
kakao
Chat en vivo
vaca postal
microsoft
Conexión OpenID
Patreon (v2)
Spotify
Strava
Contracción nerviosa
Gorjeo
VK
yandex
El método para agregar discos adicionales difiere según su método de implementación.
Utilice lsblk
para encontrar los nombres y puntos de montaje de sus particiones. Si tiene problemas, consulte los registros del agente.
Nota: Los gráficos utilizarán el nombre del dispositivo o partición, si está disponible, y recurrirán al nombre de la carpeta. No obtendrá estadísticas de E/S para unidades montadas en red.
Monte una carpeta del sistema de archivos de destino en el directorio /extra-filesystems
del contenedor. Por ejemplo:
volúmenes: - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
Establezca la variable de entorno EXTRA_FILESYSTEMS
en una lista separada por comas de dispositivos, particiones o puntos de montaje para monitorear. Por ejemplo:
EXTRA_FILESYSTEMS="sdb,sdc1,mmcblk0,/mnt/network-share"
Debido a que Beszel se basa en PocketBase, puede utilizar las API web de PocketBase y los SDK del lado del cliente para leer o actualizar datos desde fuera de Beszel.
El concentrador y el agente se comunican a través de SSH, por lo que no necesitan estar expuestos a Internet. Incluso si coloca una puerta de enlace de autenticación externa, como Authelia, frente al centro, no interrumpirá ni romperá la conexión entre el centro y el agente.
Cuando el concentrador se inicia por primera vez, genera un par de claves ED25519.
El servidor SSH del agente está configurado para aceptar conexiones utilizando esta clave únicamente. No proporciona un pseudoterminal ni acepta entradas, por lo que es imposible ejecutar comandos en el agente incluso si su clave privada está comprometida.
Los administradores tienen acceso a enlaces adicionales en el centro, como copias de seguridad, configuraciones SMTP, etc. El primer usuario creado es automáticamente un administrador y puede iniciar sesión en PocketBase.
Cambiar la función de un usuario no crea una cuenta de administrador de PocketBase para él. Para hacerlo, vaya a Configuración > Administradores en PocketBase y agréguelos manualmente.
Los usuarios pueden crear sus propios sistemas y alertas. Los enlaces a la configuración de PocketBase no se muestran en el centro.
Los usuarios de solo lectura no pueden crear sistemas, pero pueden ver cualquier sistema compartido con ellos por un administrador y crear alertas.
Suponiendo que el agente se esté ejecutando, es probable que un firewall esté bloqueando la conexión. Tienes dos opciones:
Agregue una regla de entrada a los firewalls del sistema agente para permitir conexiones TCP al puerto. Verifique los firewalls activos, como iptables, y la configuración del firewall de su proveedor de nube, si corresponde.
Alternativamente, utilice software como Cloudflare Tunnel, WireGuard o Tailscale para evitar de forma segura su firewall.
Puede probar la conectividad ejecutando telnet
.
Si utiliza el modo de red de host para el agente pero no para el concentrador, agregue su sistema usando el nombre de host host.docker.internal
, que se resuelve en la dirección IP interna utilizada por el host. Vea el ejemplo docker-compose.yml.
Si usa el modo de red de host para ambos, puede usar localhost
como nombre de host.
De lo contrario, utilice el nombre del container_name
del agente como nombre de host si ambos están en la misma red Docker.
Especifique el sistema de archivos/dispositivo/partición para las estadísticas del disco raíz utilizando la variable de entorno FILESYSTEM
.
Si no se configura, el agente intentará encontrar la partición montada en /
y usarla. Es posible que esto no funcione correctamente en un contenedor, por lo que se recomienda establecer este valor. Utilice uno de los siguientes métodos para encontrar el sistema de archivos correcto:
Ejecute lsblk
y elija una opción en "NOMBRE".
Ejecute df -h
y elija una opción en "Sistema de archivos".
Ejecute sudo fdisk -l
y elija una opción en "Dispositivo".
Si los gráficos de contenedores muestran datos vacíos o no aparecen en absoluto, es posible que deba habilitar la contabilidad de memoria de cgroup. Para verificar, ejecute docker stats
. Si eso muestra un uso nulo de memoria, siga esta guía para solucionar el problema:
https://akashrajpurohit.com/blog/resolving-missing-memory-stats-in-docker-stats-on-raspberry-pi/
Intente actualizar su versión de Docker en el sistema del agente. Este problema se observó en una máquina que ejecutaba la versión 24 y se resolvió actualizando a la versión 27.
Los registros para períodos de tiempo más largos se crean promediando estadísticas de períodos más cortos. El agente debe ejecutarse ininterrumpidamente para que un conjunto completo de datos complete estos registros.
Pausar/reanudar la pausa del agente durante más de un minuto dará como resultado datos incompletos, lo que restablecerá el tiempo para el intervalo actual.
Tanto el centro como el agente están escritos en Go, por lo que puede crearlos usted mismo fácilmente o realizar una compilación cruzada para diferentes plataformas. Instala Go primero si aún no lo has hecho.
Ejecute make
en /beszel
. Esto crea un directorio build
que contiene los archivos binarios.
bisel de cd && hacer
También puedes construir para diferentes plataformas:
hacer OS=freebsd ARCH=arm64
Vea una lista de opciones válidas ejecutando go tool dist list
.
cd beszel && go mod ordenado
Vaya a beszel/cmd/agent
y ejecute el siguiente comando para crear un binario en el directorio actual:
CGO_ENABLED=0 ir a compilar -ldflags "-w -s" .
El centro incorpora la interfaz de usuario web en el binario, por lo que primero debe crear el sitio web. Yo uso Bun, pero puedes usar Node.js si lo prefieres:
CD bisel/sitio instalar bollo construcción de ejecución de panecillos
Luego en beszel/cmd/hub
:
CGO_ENABLED=0 ir a compilar -ldflags "-w -s" .
Puede realizar una compilación cruzada para diferentes plataformas utilizando las variables de entorno GOOS
y GOARCH
.
Por ejemplo, para compilar para FreeBSD ARM64:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 ir a construir -ldflags "-w -s" .
Vea una lista de opciones válidas ejecutando go tool dist list
.
Las contribuciones son bienvenidas, pero es una buena idea consultarnos primero en una discusión/tema si planeas hacer algo significativo.
Usamos Crowdin para gestionar las traducciones. ¡Se agradecen nuevos idiomas o mejoras a las traducciones existentes!
Tendremos más información útil sobre cómo contribuir a Beszel en un futuro próximo.
Beszel tiene la licencia MIT. Consulte el archivo de LICENCIA para obtener más detalles.
Beszel solo necesita acceso para leer la información del contenedor. Para linuxserver/docker-socket-proxy establecería CONTAINERS=1
. ↩
El valor predeterminado para la memoria usada se basa en el cálculo Usado de gopsutil, que debería alinearse bastante estrechamente con free
. Establezca MEM_CALC
en htop
para alinearse con el cálculo de htop. ↩