ฮับการตรวจสอบทรัพยากรเซิร์ฟเวอร์น้ำหนักเบาพร้อมข้อมูลประวัติ สถิตินักเทียบท่า และการแจ้งเตือน
น้ำหนักเบา : เล็กกว่าและใช้ทรัพยากรน้อยกว่าโซลูชันชั้นนำ
ง่าย : ติดตั้งง่าย ไม่จำเป็นต้องเปิดเผยอินเทอร์เน็ตสาธารณะ
สถิตินักเทียบท่า : ติดตาม CPU, หน่วยความจำ และประวัติการใช้งานเครือข่ายสำหรับแต่ละคอนเทนเนอร์
การแจ้งเตือน : การแจ้งเตือนที่กำหนดค่าได้สำหรับ CPU, หน่วยความจำ, ดิสก์, แบนด์วิธ, อุณหภูมิ และสถานะของระบบ
ผู้ใช้หลายคน : ผู้ใช้แต่ละคนจัดการระบบของตนเอง ผู้ดูแลระบบสามารถแชร์ระบบระหว่างผู้ใช้ได้
OAuth / OIDC : รองรับผู้ให้บริการ OAuth2 หลายราย การตรวจสอบรหัสผ่านสามารถปิดใช้งานได้
การสำรองข้อมูลอัตโนมัติ : บันทึกและกู้คืนข้อมูลจากดิสก์หรือที่เก็บข้อมูลที่เข้ากันได้กับ S3
REST API : ใช้หรืออัปเดตข้อมูลของคุณในสคริปต์และแอปพลิเคชันของคุณเอง
Beszel ประกอบด้วยสององค์ประกอบหลัก: ฮับและเอเจนต์
ฮับ: เว็บแอปพลิเคชันที่มีแดชบอร์ดสำหรับการดูและจัดการระบบที่เชื่อมต่อ สร้างขึ้นบน PocketBase
เอเจนต์: ทำงานบนแต่ละระบบที่คุณต้องการตรวจสอบ โดยสร้างเซิร์ฟเวอร์ SSH ขั้นต่ำเพื่อสื่อสารการวัดระบบไปยังฮับ
หากไม่ได้ใช้นักเทียบท่า ให้ข้ามขั้นตอนที่ 4-5 และรันเอเจนต์โดยใช้ไบนารี
เริ่มต้นฮับ (ดูการติดตั้ง)
เปิด http://localhost:8090 และสร้างผู้ใช้ที่เป็นผู้ดูแลระบบ
คลิก "เพิ่มระบบ" ป้อนชื่อและโฮสต์ของระบบที่คุณต้องการตรวจสอบ
คลิก "คัดลอกนักเทียบท่าเขียน" เพื่อคัดลอกไฟล์ docker-compose.yml ของตัวแทนไปยังคลิปบอร์ดของคุณ
บนระบบเอเจนต์ ให้สร้างไฟล์เขียนและรัน docker compose up
เพื่อเริ่มต้นเอเจนต์
กลับมาที่ฮับ คลิกปุ่ม "เพิ่มระบบ" ในกล่องโต้ตอบเพื่อสิ้นสุดการเพิ่มระบบ
หากทุกอย่างเป็นไปด้วยดี ระบบควรพลิกเป็นสีเขียว หากเปลี่ยนเป็นสีแดง ให้ตรวจสอบหน้าบันทึกและดูเคล็ดลับการแก้ปัญหา
เรียนภาษาฝรั่งเศส ปรึกษา https://belginux.com/installer-beszel-avec-docker/
คุณสามารถติดตั้งฮับและเอเจนต์เป็นไบนารีเดี่ยวหรือใช้ Docker
Hub : ดูตัวอย่างไฟล์ docker-compose.yml
Agent : ฮับจัดเตรียมเนื้อหาการเขียนสำหรับเอเจนต์ แต่คุณยังสามารถอ้างอิงไฟล์ตัวอย่าง docker-compose.yml ได้ด้วย
เอเจนต์ใช้โหมดเครือข่ายโฮสต์เพื่อเข้าถึงสถิติอินเทอร์เฟซเครือข่าย ซึ่งจะเปิดเผยพอร์ตโดยอัตโนมัติ เปลี่ยนพอร์ตโดยใช้ตัวแปรสภาพแวดล้อมหากจำเป็น
หากคุณไม่ต้องการสถิติเครือข่าย ให้ลบบรรทัดนั้นออกจากไฟล์เขียนและแมปพอร์ตด้วยตนเอง
เคล็ดลับ
หากใช้ Linux โปรดดูคำแนะนำ/systemd.md สำหรับสคริปต์ในการติดตั้งฮับหรือเอเจนต์เป็นเซอร์วิสของระบบ สิ่งนี้มีอยู่ใน UI ของเว็บด้วย
ดาวน์โหลดและรันไบนารีล่าสุดจากหน้าเผยแพร่ หรือใช้คำสั่งด้านล่าง
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 ฝา | ที ./beszel >/dev/null && chmod +x beszel && ls beszel
ใช้งานฮับโดยตรง:
./เบสเสิร์ฟ
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 beszel-agent | ที ./beszel-agent >/dev/null && chmod +x beszel-agent && ls beszel-agent
เรียกใช้ตัวแทนโดยตรง:
PORT=45876 คีย์ = "{PASTE_YOUR_KEY}" ./beszel-agent
ใช้ ./beszel update
และ ./beszel-agent update
เพื่ออัปเดตเป็นเวอร์ชันล่าสุด
ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|
CSP | ไม่ได้ตั้งค่า | เพิ่มส่วนหัว Content-Security-Policy ด้วยค่านี้ |
DISABLE_PASSWORD_AUTH | เท็จ | ปิดใช้งานการรับรองความถูกต้องด้วยรหัสผ่าน |
ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|
DOCKER_HOST | ไม่ได้ตั้งค่า | แทนที่โฮสต์นักเทียบท่า (docker.sock) หากใช้พรอกซี 1 |
EXTRA_FILESYSTEMS | ไม่ได้ตั้งค่า | โปรดดูที่การมอนิเตอร์ดิสก์ พาร์ติชัน หรือการเมาท์เพิ่มเติมแบบรีโมต |
FILESYSTEM | ไม่ได้ตั้งค่า | อุปกรณ์ พาร์ติชัน หรือจุดต่อเชื่อมเพื่อใช้สำหรับสถิติรูทดิสก์ |
KEY | ไม่ได้ตั้งค่า | คีย์ SSH สาธารณะเพื่อใช้สำหรับการตรวจสอบสิทธิ์ มีให้ในฮับ |
LOG_LEVEL | ข้อมูล | ระดับการบันทึก ค่าที่ถูกต้อง: "debug", "info", "warn", "error" |
MEM_CALC | ไม่ได้ตั้งค่า | แทนที่การคำนวณหน่วยความจำเริ่มต้น 2 |
NICS | ไม่ได้ตั้งค่า | รายการที่อนุญาตของอินเทอร์เฟซเครือข่ายเพื่อตรวจสอบแผนภูมิแบนด์วิธ |
PORT | 45876 | พอร์ตหรือที่อยู่:พอร์ตที่จะฟัง |
SENSORS | ไม่ได้ตั้งค่า | รายการที่อนุญาตของเซ็นเซอร์อุณหภูมิที่จะตรวจสอบ |
SYS_SENSORS | ไม่ได้ตั้งค่า | แทนที่เส้นทาง sys สำหรับเซ็นเซอร์ ดู #160. |
Beszel รองรับ OpenID Connect และผู้ให้บริการตรวจสอบสิทธิ์ OAuth2 จำนวนมาก (ดูรายการด้านล่าง)
ไปที่หน้า "ผู้ให้บริการการตรวจสอบสิทธิ์" เพื่อเปิดใช้งานผู้ให้บริการของคุณ URL การเปลี่ยนเส้นทาง / โทรกลับควรเป็น
แอปเปิล
บิทบัคเก็ต
ความไม่ลงรอยกัน
เฟสบุ๊ค
กีเทีย
กีตี
GitHub
GitLab
อินสตาแกรม
คาเคา
แชทสด
ไปรษณีย์
ไมโครซอฟต์
เชื่อมต่อ OpenID
Patreon (v2)
สปอทิฟาย
สตราวา
ชัก
ทวิตเตอร์
วีเค
ยานเดกซ์
วิธีการเพิ่มดิสก์เพิ่มเติมจะแตกต่างกันไปขึ้นอยู่กับวิธีการปรับใช้ของคุณ
ใช้ 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/เครือข่ายแชร์"
เนื่องจาก Beszel สร้างขึ้นบน PocketBase คุณจึงสามารถใช้ PocketBase web API และ SDK ฝั่งไคลเอ็นต์เพื่ออ่านหรืออัปเดตข้อมูลจากภายนอก Beszel ได้
ฮับและตัวแทนสื่อสารผ่าน SSH ดังนั้นพวกเขาจึงไม่จำเป็นต้องเปิดเผยต่ออินเทอร์เน็ต แม้ว่าคุณจะวางเกตเวย์การรับรองความถูกต้องภายนอก เช่น Authelia ไว้ที่ด้านหน้าฮับ ก็จะไม่รบกวนหรือทำลายการเชื่อมต่อระหว่างฮับและเจ้าหน้าที่
เมื่อฮับสตาร์ทเป็นครั้งแรก ฮับจะสร้างคู่คีย์ ED25519
เซิร์ฟเวอร์ SSH ของตัวแทนได้รับการกำหนดค่าให้ยอมรับการเชื่อมต่อโดยใช้คีย์นี้เท่านั้น ไม่มีเทอร์มินัลหลอกหรือยอมรับอินพุต ดังนั้นจึงเป็นไปไม่ได้ที่จะดำเนินการคำสั่งบนเอเจนต์ แม้ว่าคีย์ส่วนตัวของคุณจะถูกบุกรุกก็ตาม
ผู้ดูแลระบบสามารถเข้าถึงลิงก์เพิ่มเติมในฮับ เช่น การสำรองข้อมูล การตั้งค่า SMTP ฯลฯ ผู้ใช้คนแรกที่สร้างขึ้นจะเป็นผู้ดูแลระบบโดยอัตโนมัติและสามารถเข้าสู่ระบบ PocketBase ได้
การเปลี่ยนบทบาทของผู้ใช้ไม่ได้สร้างบัญชีผู้ดูแลระบบ PocketBase สำหรับพวกเขา ในการทำเช่นนั้น ไปที่การตั้งค่า > ผู้ดูแลระบบใน PocketBase และเพิ่มด้วยตนเอง
ผู้ใช้สามารถสร้างระบบและการแจ้งเตือนของตนเองได้ ลิงก์ไปยังการตั้งค่า PocketBase จะไม่แสดงในฮับ
ผู้ใช้แบบอ่านอย่างเดียวไม่สามารถสร้างระบบได้ แต่สามารถดูระบบใดๆ ที่ผู้ดูแลระบบแชร์กับพวกเขา และสร้างการแจ้งเตือนได้
สมมติว่าเอเจนต์กำลังทำงานอยู่ การเชื่อมต่ออาจถูกบล็อกโดยไฟร์วอลล์ คุณมีสองทางเลือก:
เพิ่มกฎขาเข้าให้กับไฟร์วอลล์ของระบบตัวแทนเพื่ออนุญาตการเชื่อมต่อ TCP กับพอร์ต ตรวจสอบไฟร์วอลล์ที่ใช้งานอยู่ เช่น iptable และการตั้งค่าไฟร์วอลล์ของผู้ให้บริการคลาวด์ของคุณ หากมี
หรือใช้ซอฟต์แวร์เช่น Cloudflare Tunnel, WireGuard หรือ Tailscale เพื่อเลี่ยงผ่านไฟร์วอลล์ของคุณอย่างปลอดภัย
คุณสามารถทดสอบการเชื่อมต่อได้โดยการรัน telnet
หากใช้โหมดเครือข่ายโฮสต์สำหรับเอเจนต์ แต่ไม่ใช่ฮับ ให้เพิ่มระบบของคุณโดยใช้ชื่อโฮสต์ host.docker.internal
ซึ่งแก้ไขเป็นที่อยู่ IP ภายในที่โฮสต์ใช้ ดูตัวอย่าง docker-compose.yml
หากใช้โหมดเครือข่ายโฮสต์สำหรับทั้งคู่ คุณสามารถใช้ localhost
เป็นชื่อโฮสต์ได้
มิฉะนั้น ให้ใช้ container_name
ของเอเจนต์เป็นชื่อโฮสต์ หากทั้งสองอยู่ในเครือข่าย Docker เดียวกัน
ระบุระบบไฟล์/อุปกรณ์/พาร์ติชันสำหรับสถิติดิสก์รูทโดยใช้ตัวแปรสภาพแวดล้อม FILESYSTEM
หากไม่ได้ตั้งค่า เอเจนต์จะพยายามค้นหาพาร์ติชันที่ติดตั้งบน /
และใช้สิ่งนั้น ซึ่งอาจทำงานไม่ถูกต้องในคอนเทนเนอร์ ดังนั้นจึงแนะนำให้ตั้งค่านี้ ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อค้นหาระบบไฟล์ที่ถูกต้อง:
เรียกใช้ lsblk
และเลือกตัวเลือกภายใต้ "NAME"
เรียกใช้ df -h
และเลือกตัวเลือกภายใต้ "ระบบไฟล์"
เรียกใช้ sudo fdisk -l
และเลือกตัวเลือกภายใต้ "อุปกรณ์"
หากแผนภูมิคอนเทนเนอร์แสดงข้อมูลว่างหรือไม่ปรากฏเลย คุณอาจต้องเปิดใช้งานการบัญชีหน่วยความจำ cgroup หากต้องการตรวจสอบ ให้รัน docker stats
หากแสดงการใช้หน่วยความจำเป็นศูนย์ ให้ทำตามคำแนะนำนี้เพื่อแก้ไขปัญหา:
https://akashrajpurohit.com/blog/reulating-missing-memory-stats-in-docker-stats-on-raspberry-pi/
ลองอัปเกรดเวอร์ชัน Docker ของคุณบนระบบตัวแทน ปัญหานี้พบได้ในเครื่องที่ใช้งานเวอร์ชัน 24 และแก้ไขได้ด้วยการอัปเกรดเป็นเวอร์ชัน 27
บันทึกสำหรับช่วงเวลาที่นานขึ้นจะถูกสร้างขึ้นโดยการเฉลี่ยสถิติจากช่วงเวลาที่สั้นกว่า เอเจนต์ต้องทำงานอย่างต่อเนื่องเพื่อให้ชุดข้อมูลทั้งหมดเติมบันทึกเหล่านี้
การหยุดชั่วคราว/ยกเลิกการหยุดตัวแทนเป็นเวลานานกว่าหนึ่งนาทีจะส่งผลให้ข้อมูลไม่สมบูรณ์ โดยรีเซ็ตระยะเวลาสำหรับช่วงเวลาปัจจุบัน
ทั้งฮับและเอเจนต์เขียนด้วยภาษา Go ดังนั้นคุณสามารถสร้างมันเองได้อย่างง่ายดาย หรือคอมไพล์ข้ามแพลตฟอร์มสำหรับแพลตฟอร์มต่างๆ โปรดติดตั้ง Go ก่อน หากคุณยังไม่ได้ติดตั้ง
วิ่ง make
in /beszel
สิ่งนี้จะสร้างไดเร็กทอรี build
ที่มีไบนารี
กรอบซีดี && ทำ
คุณสามารถสร้างสำหรับแพลตฟอร์มต่างๆ ได้:
ให้ OS=freebsd ARCH=arm64
ดูรายการตัวเลือกที่ถูกต้องโดยการรัน go tool dist list
cd beszel && go mod เป็นระเบียบเรียบร้อย
ไปที่ beszel/cmd/agent
และรันคำสั่งต่อไปนี้เพื่อสร้างไบนารีในไดเร็กทอรีปัจจุบัน:
CGO_ENABLED=0 ไป build -ldflags "-w -s"
ฮับฝัง UI ของเว็บไว้ในไบนารี่ ดังนั้นคุณต้องสร้างเว็บไซต์ก่อน ฉันใช้ Bun แต่คุณสามารถใช้ Node.js ได้หากต้องการ:
กรอบซีดี / ไซต์ ติดตั้งขนมปัง สร้างบุญวิ่ง
จากนั้นใน beszel/cmd/hub
:
CGO_ENABLED=0 ไป build -ldflags "-w -s"
คุณสามารถคอมไพล์ข้ามแพลตฟอร์มสำหรับแพลตฟอร์มต่างๆ ได้โดยใช้ตัวแปรสภาพแวดล้อม GOOS
และ GOARCH
ตัวอย่างเช่น การสร้างสำหรับ FreeBSD ARM64:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 ไป build -ldflags "-w -s"
ดูรายการตัวเลือกที่ถูกต้องโดยการรัน go tool dist list
เรายินดีให้การสนับสนุน แต่คุณควรตรวจสอบกับเราก่อนในการสนทนา/ประเด็นต่างๆ หากคุณวางแผนที่จะทำอะไรที่สำคัญ
เราใช้ Crowdin เพื่อจัดการการแปล ขอขอบคุณภาษาใหม่หรือการปรับปรุงการแปลที่มีอยู่!
เราจะมีข้อมูลที่เป็นประโยชน์เพิ่มเติมเกี่ยวกับการมีส่วนร่วมใน Beszel ในอนาคตอันใกล้นี้
Beszel ได้รับอนุญาตภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับรายละเอียดเพิ่มเติม
Beszel ต้องการการเข้าถึงเพื่ออ่านข้อมูลคอนเทนเนอร์เท่านั้น สำหรับ linuxserver/docker-socket-proxy คุณจะตั้งค่า CONTAINERS=1
ค่าเริ่มต้นสำหรับหน่วยความจำที่ใช้จะขึ้นอยู่กับการคำนวณ Used ของ gopsutil ซึ่งควรสอดคล้องกับ free
ตั้งค่า MEM_CALC
เป็น htop
เพื่อให้สอดคล้องกับการคำนวณของ htop