기록 데이터, Docker 통계 및 경고가 포함된 경량 서버 리소스 모니터링 허브입니다.
경량 : 주요 솔루션보다 작고 리소스 집약적입니다.
단순함 : 설정이 쉽고, 공용 인터넷 노출이 필요하지 않습니다.
Docker 통계 : 각 컨테이너의 CPU, 메모리, 네트워크 사용 기록을 추적합니다.
경고 : CPU, 메모리, 디스크, 대역폭, 온도 및 시스템 상태에 대해 구성 가능한 경고입니다.
다중 사용자 : 각 사용자가 자신의 시스템을 관리합니다. 관리자는 사용자 간에 시스템을 공유할 수 있습니다.
OAuth / OIDC : 여러 OAuth2 공급자를 지원합니다. 비밀번호 인증을 비활성화할 수 있습니다.
자동 백업 : 디스크 또는 S3 호환 스토리지에서 데이터를 저장하고 복원합니다.
REST API : 자체 스크립트 및 애플리케이션에서 데이터를 사용하거나 업데이트합니다.
Beszel은 허브와 에이전트라는 두 가지 주요 구성 요소로 구성됩니다.
허브: 연결된 시스템을 보고 관리하기 위한 대시보드를 제공하는 웹 애플리케이션입니다. PocketBase를 기반으로 제작되었습니다.
에이전트: 모니터링하려는 각 시스템에서 실행되어 시스템 메트릭을 허브에 전달하기 위한 최소 SSH 서버를 생성합니다.
Docker를 사용하지 않는 경우 4~5단계를 건너뛰고 바이너리를 사용하여 에이전트를 실행하세요.
허브를 시작합니다(설치 참조).
http://localhost:8090을 열고 관리자를 생성합니다.
"시스템 추가"를 클릭하세요. 모니터링하려는 시스템의 이름과 호스트를 입력합니다.
에이전트의 docker-compose.yml 파일을 클립보드에 복사하려면 "Docker compose 복사"를 클릭하세요.
에이전트 시스템에서 compose 파일을 생성하고 docker compose up
실행하여 에이전트를 시작합니다.
허브로 돌아가 대화 상자에서 "시스템 추가" 버튼을 클릭하여 시스템 추가를 완료합니다.
모든 것이 순조롭게 진행되면 시스템이 녹색으로 바뀌어야 합니다. 빨간색으로 바뀌면 로그 페이지를 확인하고 문제 해결 팁을 참조하세요.
프랑스어 튜토리얼을 따르세요. https://belginux.com/installer-beszel-avec-docker/
허브와 에이전트를 단일 바이너리로 설치하거나 Docker를 사용하여 설치할 수 있습니다.
허브 : docker-compose.yml 파일 예시를 참조하세요.
에이전트 : 허브는 에이전트에 대한 작성 콘텐츠를 제공하지만 예제 docker-compose.yml 파일을 참조할 수도 있습니다.
에이전트는 호스트 네트워크 모드를 사용하여 포트를 자동으로 노출하는 네트워크 인터페이스 통계에 액세스합니다. 필요한 경우 환경 변수를 사용하여 포트를 변경합니다.
네트워크 통계가 필요하지 않은 경우 작성 파일에서 해당 줄을 제거하고 포트를 수동으로 매핑하세요.
팁
Linux를 사용하는 경우 허브나 에이전트를 시스템 서비스로 설치하는 스크립트는guides/systemd.md를 참조하세요. 이는 웹 UI에도 내장되어 있습니다.
릴리스 페이지에서 최신 바이너리를 다운로드하여 실행하거나 아래 명령을 사용하세요.
컬 -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 베젤 | tee ./beszel >/dev/null && chmod +x beszel && ls beszel
허브를 직접 실행:
./베젤 서브
컬 -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 베젤 에이전트 | tee ./beszel-agent >/dev/null && chmod +x beszel-agent && ls beszel-agent
에이전트를 직접 실행:
PORT=45876 KEY="{PASTE_YOUR_KEY}" ./beszel-agent
./beszel update
및 ./beszel-agent update
사용하여 최신 버전으로 업데이트하세요.
이름 | 기본 | 설명 |
---|---|---|
CSP | 설정되지 않음 | 이 값을 사용하여 Content-Security-Policy 헤더를 추가합니다. |
DISABLE_PASSWORD_AUTH | 거짓 | 비밀번호 인증을 비활성화합니다. |
이름 | 기본 | 설명 |
---|---|---|
DOCKER_HOST | 설정되지 않음 | 프록시를 사용하는 경우 docker 호스트(docker.sock)를 재정의합니다. 1 |
EXTRA_FILESYSTEMS | 설정되지 않음 | 추가 디스크, 파티션 또는 원격 마운트 모니터링 참조 |
FILESYSTEM | 설정되지 않음 | 루트 디스크 통계에 사용할 장치, 파티션 또는 마운트 지점입니다. |
KEY | 설정되지 않음 | 인증에 사용할 공개 SSH 키입니다. 허브에서 제공됩니다. |
LOG_LEVEL | 정보 | 로깅 수준. 유효한 값: "디버그", "정보", "경고", "오류". |
MEM_CALC | 설정되지 않음 | 기본 메모리 계산을 재정의합니다. 2 |
NICS | 설정되지 않음 | 대역폭 차트를 모니터링할 네트워크 인터페이스의 화이트리스트입니다. |
PORT | 45876 | 포트 또는 주소: 수신 대기할 포트입니다. |
SENSORS | 설정되지 않음 | 모니터링할 온도 센서의 화이트리스트입니다. |
SYS_SENSORS | 설정되지 않음 | 센서의 sys 경로를 재정의합니다. #160을 참조하세요. |
Beszel은 OpenID Connect 및 다양한 OAuth2 인증 공급자를 지원합니다(아래 목록 참조).
공급자를 활성화하려면 "인증 공급자" 페이지를 방문하세요. 리디렉션/콜백 URL은
이어야 합니다.
사과
비트버킷
불화
페이스북
기테아
기티
GitHub
GitLab
인스타그램
카카오
라이브챗
우편소
마이크로소프트
오픈아이디 커넥트
패트리온(v2)
스포티파이
스트라바
경련
지저귀다
VK
얀덱스
추가 디스크를 추가하는 방법은 배포 방법에 따라 다릅니다.
lsblk
사용하여 파티션의 이름과 마운트 지점을 찾으세요. 문제가 있는 경우 에이전트 로그를 확인하세요.
참고: 차트는 가능한 경우 장치 또는 파티션의 이름을 사용하고 폴더 이름으로 대체됩니다. 네트워크에 마운트된 드라이브에 대한 I/O 통계는 얻을 수 없습니다.
컨테이너의 /extra-filesystems
디렉터리에 있는 대상 파일 시스템의 폴더를 마운트합니다. 예를 들어:
볼륨: - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
EXTRA_FILESYSTEMS
환경 변수를 모니터링할 장치, 파티션 또는 마운트 지점의 쉼표로 구분된 목록으로 설정하십시오. 예를 들어:
EXTRA_FILESYSTEMS="sdb,sdc1,mmcblk0,/mnt/network-share"
Beszel은 PocketBase를 기반으로 구축되었으므로 PocketBase 웹 API 및 클라이언트 측 SDK를 사용하여 Beszel 외부에서 데이터를 읽거나 업데이트할 수 있습니다.
허브와 에이전트는 SSH를 통해 통신하므로 인터넷에 노출될 필요가 없습니다. Authelia와 같은 외부 인증 게이트웨이를 허브 앞에 배치하더라도 허브와 에이전트 간의 연결이 중단되거나 끊어지지 않습니다.
허브가 처음 시작되면 ED25519 키 쌍이 생성됩니다.
에이전트의 SSH 서버는 이 키만 사용하여 연결을 허용하도록 구성되었습니다. 의사 터미널을 제공하거나 입력을 허용하지 않으므로 개인 키가 손상된 경우에도 에이전트에서 명령을 실행할 수 없습니다.
관리자는 백업, SMTP 설정 등과 같은 허브의 추가 링크에 액세스할 수 있습니다. 생성된 첫 번째 사용자는 자동으로 관리자가 되며 PocketBase에 로그인할 수 있습니다.
사용자 역할을 변경해도 해당 사용자에 대한 PocketBase 관리자 계정이 생성되지 않습니다. 그렇게 하려면 PocketBase의 설정 > 관리자로 이동하여 수동으로 추가하세요.
사용자는 자신만의 시스템과 경고를 만들 수 있습니다. PocketBase 설정에 대한 링크는 허브에 표시되지 않습니다.
읽기 전용 사용자는 시스템을 생성할 수 없지만 관리자가 공유한 모든 시스템을 보고 경고를 생성할 수 있습니다.
에이전트가 실행 중이라고 가정하면 방화벽에 의해 연결이 차단되었을 수 있습니다. 두 가지 옵션이 있습니다:
포트에 대한 TCP 연결을 허용하려면 에이전트 시스템의 방화벽에 인바운드 규칙을 추가하십시오. iptables와 같은 활성 방화벽과 해당하는 경우 클라우드 제공업체의 방화벽 설정을 확인하세요.
또는 Cloudflare Tunnel, WireGuard 또는 Tailscale과 같은 소프트웨어를 사용하여 방화벽을 안전하게 우회하세요.
telnet
실행하여 연결을 테스트할 수 있습니다.
에이전트에는 호스트 네트워크 모드를 사용하고 허브에는 사용하지 않는 경우 호스트에서 사용하는 내부 IP 주소로 확인되는 호스트 이름 host.docker.internal
사용하여 시스템을 추가하세요. docker-compose.yml 예제를 참조하세요.
둘 다에 대해 호스트 네트워크 모드를 사용하는 경우 localhost
호스트 이름으로 사용할 수 있습니다.
그렇지 않고 둘 다 동일한 Docker 네트워크에 있는 경우 에이전트의 container_name
호스트 이름으로 사용하십시오.
FILESYSTEM
환경 변수를 사용하여 루트 디스크 통계에 대한 파일 시스템/장치/파티션을 지정합니다.
설정되지 않은 경우 에이전트는 /
에 마운트된 파티션을 찾아서 사용하려고 시도합니다. 컨테이너에서는 제대로 작동하지 않을 수 있으므로 이 값을 설정하는 것이 좋습니다. 올바른 파일 시스템을 찾으려면 다음 방법 중 하나를 사용하십시오.
lsblk
실행하고 "NAME"에서 옵션을 선택하세요.
df -h
실행하고 "파일 시스템"에서 옵션을 선택합니다.
sudo fdisk -l
실행하고 "장치"에서 옵션을 선택합니다.
컨테이너 차트에 빈 데이터가 표시되거나 전혀 표시되지 않는 경우 cgroup 메모리 계정을 활성화해야 할 수 있습니다. 확인하려면 docker stats
실행하세요. 메모리 사용량이 0으로 표시되면 이 가이드에 따라 문제를 해결하세요.
https://akashrajpurohit.com/blog/resolving-missing-memory-stats-in-docker-stats-on-raspberry-pi/
에이전트 시스템에서 Docker 버전을 업그레이드해 보세요. 이 문제는 버전 24를 실행하는 컴퓨터에서 발견되었으며 버전 27로 업그레이드하여 해결되었습니다.
더 긴 기간에 대한 기록은 더 짧은 기간의 통계를 평균하여 생성됩니다. 이러한 레코드를 채우려면 전체 데이터 세트에 대해 에이전트가 중단 없이 실행되어야 합니다.
1분 이상 에이전트를 일시 중지/일시 중지 해제하면 데이터가 불완전해지며 현재 간격에 대한 타이밍이 재설정됩니다.
허브와 에이전트는 모두 Go로 작성되었으므로 쉽게 직접 구축하거나 다양한 플랫폼용으로 크로스 컴파일할 수 있습니다. 아직 Go를 설치하지 않았다면 먼저 Go를 설치하세요.
/beszel
에서 make
실행합니다. 그러면 바이너리가 포함된 build
디렉터리가 생성됩니다.
CD 베젤 && 만들기
다양한 플랫폼용으로 구축할 수도 있습니다.
OS=freebsd ARCH=arm64로 설정
go tool dist list
실행하여 유효한 옵션 목록을 확인하세요.
CD 베젤 && 모드 정리 모드로 이동
beszel/cmd/agent
로 이동하고 다음 명령을 실행하여 현재 디렉터리에 바이너리를 생성합니다.
CGO_ENABLED=0 go build -ldflags "-w -s" .
허브는 바이너리에 웹 UI를 포함하므로 먼저 웹사이트를 구축해야 합니다. 저는 Bun을 사용하지만 원하는 경우 Node.js를 사용해도 됩니다.
CD 베젤/사이트 롤빵 설치 롤빵 실행 빌드
그런 다음 beszel/cmd/hub
에서 다음을 수행합니다.
CGO_ENABLED=0 go build -ldflags "-w -s" .
GOOS
및 GOARCH
환경 변수를 사용하여 다양한 플랫폼에 대해 크로스 컴파일할 수 있습니다.
예를 들어, FreeBSD ARM64용으로 빌드하려면:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags "-w -s" .
go tool dist list
실행하여 유효한 옵션 목록을 확인하세요.
기여를 환영하지만 중요한 일을 할 계획이라면 토론/문제에서 먼저 우리에게 확인하는 것이 좋습니다.
우리는 Crowdin을 사용하여 번역을 관리합니다. 새로운 언어나 기존 번역의 개선에 감사드립니다!
가까운 시일 내에 Beszel 기여에 관한 더 유용한 정보를 제공해 드리겠습니다.
Beszel은 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
베젤은 컨테이너 정보를 읽기 위한 접근 권한만 필요합니다. linuxserver/docker-socket-proxy의 경우 CONTAINERS=1
로 설정합니다. ↩
사용된 메모리의 기본값은 gopsutil의 사용된 계산을 기반으로 하며 free
와 매우 밀접하게 일치해야 합니다. htop의 계산에 맞춰 MEM_CALC
htop
으로 설정합니다. ↩