FaceHub là phần mềm dạng Cloud server, cung cấp API nhận diện khuôn mặt. FaceHub được triển khai trên PC chạy Ubuntu tại trụ sở của khách hàng.
Để tiện lợi cho khách hàng trong quá trình sử dụng và vận hành, chúng tôi có tạo ứng dụng FaceHubMgr . Đây là phần mềm desktop được xây dựng để theo dõi tài nguyên máy tính và quản lý các service thường được sử dụng trong hệ thống FaceHub như FaceHub Service, Nginx, MongoDB, Firewall… trên một giao diện duy nhất.
Phần mềm hiện hỗ trợ Ubuntu và Windows, trong đó bài viết này tập trung vào Ubuntu 24.04 – môi trường thường được sử dụng để triển khai FaceHub.
Mục lục
- Giới thiệu FaceHubMgr
- Tại sao cần FaceHubMgr khi có thể sử dụng command?
- Công nghệ xây dựng FaceHubMgr
- Build FaceHubMgr trên Ubuntu
- Cài đặt và kiểm tra
- Lưu ý khi sử dụng
1. Giới thiệu FaceHubMgr
Thông thường, để quản lý server không chỉ theo dõi riêng chương trình FaceHub mà còn bao gồm nhiều thành phần khác như:
- Nginx
- MongoDB
- Firewall
- NVIDIA Driver/GPU
- CPU, RAM và ổ cứng
- Network
Khi quản trị trực tiếp trên Ubuntu, chúng ta thường phải sử dụng nhiều command khác nhau để kiểm tra từng thành phần.
Ví dụ kiểm tra service:
systemctl status facehub
systemctl status nginx
systemctl status mongod
Kiểm tra GPU:
nvidia-smi
Kiểm tra RAM:
free -h
Kiểm tra ổ cứng:
df -h
Kiểm tra firewall:
sudo ufw status
Với người quen sử dụng Linux thì các lệnh trên không có gì phức tạp. Tuy nhiên khi cần kiểm tra thường xuyên hoặc khi bàn giao hệ thống cho người vận hành, việc phải nhớ nhiều command sẽ khá bất tiện.
FaceHubMgr gom các chức năng này vào một giao diện desktop duy nhất.
Thông qua Dashboard, người dùng có thể nhanh chóng quan sát:
- Trạng thái các service
- CPU Usage
- RAM Usage
- Disk Usage
- NVIDIA GPU Usage
- VRAM Usage
- GPU Model
- NVIDIA Driver
- Network
- Log hệ thống
Ngoài việc giám sát, FaceHubMgr còn có thể thực hiện một số thao tác quản trị như Start, Stop hoặc Restart service.
2. Tại sao cần FaceHubMgr khi có thể sử dụng command?
Có thể đặt câu hỏi rằng nếu Ubuntu đã có đầy đủ systemctl, ufw, nvidia-smi, journalctl… thì tại sao cần thêm FaceHubMgr?
FaceHubMgr không được tạo ra để thay thế Terminal.
Command line vẫn là công cụ phù hợp nhất khi cần debug sâu hoặc xử lý một vấn đề đặc biệt. Mục đích của FaceHubMgr là đơn giản hóa những thao tác quản trị lặp đi lặp lại hằng ngày.
Quản lý tập trung
Thay vì mở nhiều terminal và chạy nhiều command, các thông tin quan trọng được hiển thị ngay trên một Dashboard.
Ví dụ khi kiểm tra một server FaceHub, kỹ thuật viên có thể nhanh chóng thấy:
|
1 2 3 4 5 6 7 8 9 |
FaceHub Running Nginx Running MongoDB Running CPU 18 % RAM 42 % Disk 36 % GPU 12 % VRAM 24 % |
Việc này đặc biệt hữu ích khi cần kiểm tra nhanh tình trạng của nhiều máy.
Hạn chế thao tác command sai
Một thao tác đơn giản như restart service thường được thực hiện bằng:
sudo systemctl restart facehub.service
Đối với kỹ thuật viên Linux đây là thao tác bình thường.
Tuy nhiên với người vận hành không thường xuyên sử dụng Terminal, việc nhập sai service name, sai command hoặc thao tác nhầm service hoàn toàn có thể xảy ra.
FaceHubMgr chỉ cung cấp những action đã được định nghĩa sẵn trong ứng dụng.
Dễ bàn giao hệ thống
Không phải người sử dụng FaceHub nào cũng là Linux administrator.
Khi triển khai tại khách hàng, người vận hành chỉ cần mở FaceHubMgr để xem hệ thống có hoạt động bình thường hay không.
Nếu FaceHub bị dừng chẳng hạn, lúc này người dùng có thể đơn giản gửi ảnh màn hình lỗi hoặc nhấn Copy diagnostics và gửi cho administrator do trạng thái có thể được nhìn thấy trực tiếp trên UI với giao diện trực quan thay vì yêu cầu người dùng mở Terminal rồi gửi kết quả của:
systemctl status facehub
Theo dõi nhiều thông tin cùng lúc
Command line thường trả về từng loại thông tin riêng.
FaceHubMgr cho phép xem trạng thái service và tài nguyên hệ thống cùng lúc. Điều này giúp xác định nhanh các trường hợp như:
|
1 2 3 4 |
FaceHub Running CPU 95 % RAM 91 % GPU 0 % |
Service vẫn Running nhưng hệ thống đang có dấu hiệu bất thường về tài nguyên.
Command line vẫn cần thiết
FaceHubMgr chủ yếu phục vụ:
- Giám sát nhanh
- Các thao tác quản trị thường xuyên
- Bàn giao hệ thống
- Hạn chế thao tác sai
Khi cần phân tích sâu, Terminal và các công cụ tiêu chuẩn của Linux vẫn là lựa chọn phù hợp hơn.
3. Công nghệ xây dựng FaceHubMgr
FaceHubMgr được phát triển bằng C#/.NET 8 và Avalonia UI.
Avalonia là UI framework đa nền tảng dành cho .NET, cho phép cùng một codebase chạy trên Windows và Linux.
Cấu trúc project được chia thành nhiều thành phần:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
FaceHubManagement/ ├── src/ │ ├── FaceHubManagement.Core/ │ ├── FaceHubManagement.Agent/ │ ├── FaceHubManagement.Desktop/ │ └── FaceHubManagement.SmokeTest/ ├── config/ ├── packaging/ │ ├── linux/ │ └── windows/ ├── scripts/ └── FaceHubManagement.sln |
FaceHubManagement.Desktop
Đây là phần giao diện mà người dùng tương tác.
Desktop application không cần chạy toàn bộ chương trình với quyền root.
Đây là một điểm quan trọng vì các thao tác như đọc trạng thái hệ thống không nên yêu cầu toàn bộ giao diện chạy bằng:
|
1 |
sudo ... |
FaceHubManagement.Agent
Các chức năng cần quyền hệ thống được thực hiện bởi một privileged local agent.
Trên Ubuntu, Agent được cài thành systemd service:
facehub-management-agent.service
Desktop giao tiếp với Agent thông qua Unix Domain Socket:
/run/facehub-management/agent.sock
Nhờ đó có thể tách:
|
1 2 3 4 5 6 7 |
Desktop UI ↓ Local IPC ↓ FaceHub Management Agent ↓ systemd / UFW / OS / NVML |
thay vì chạy toàn bộ GUI bằng quyền root.
Systemd
FaceHubMgr sử dụng service manager có sẵn của Linux để quản lý các service.
Ví dụ:
|
1 2 3 |
nginx.service facehub.service mongod.service |
FaceHubMgr không chạy FaceHub hoặc Nginx thành process con của giao diện.
Các chương trình này vẫn hoạt động như những systemd service độc lập. Vì vậy việc đóng FaceHubMgr không làm FaceHub hoặc Nginx bị dừng.
NVIDIA Management Library
Thông tin NVIDIA GPU được lấy thông qua NVML – NVIDIA Management Library.
Các thông tin có thể bao gồm:
GPU Name
GPU Usage
VRAM Used
VRAM Total
Driver Version
CUDA Driver API
Nếu máy không có NVIDIA GPU hoặc NVML không khả dụng, các chức năng CPU, RAM và quản lý service vẫn có thể hoạt động bình thường.
Firewall
Trên Ubuntu, FaceHubMgr sử dụng UFW để quản lý các port cần thiết cho hệ thống.
Ví dụ:
|
1 2 3 4 |
80 443 8000 27017 |
Tùy hệ thống thực tế mà danh sách port có thể khác nhau.
4. Build FaceHubMgr trên Ubuntu
Phần này sử dụng Ubuntu 24.04 x64.
Cài đặt .NET SDK
FaceHubMgr hiện được xây dựng trên .NET 8.
Cài .NET SDK:
sudo apt update
sudo apt install -y dotnet-sdk-8.0 git
Kiểm tra:
dotnet --version
Source code hiện có global.json để cố định SDK được sử dụng bởi project. Vì vậy nên kiểm tra máy build có phiên bản SDK tương thích trước khi build.
Có thể xem các SDK đã cài bằng:
dotnet --list-sdks
Chuẩn bị source code
Di chuyển vào source FaceHubMgr:
cd FaceHubManagement
Cấp quyền execute cho các script Linux:
chmod +x scripts/publish-linux.sh
chmod +x packaging/linux/build-deb.sh
Restore project
dotnet restore FaceHubManagement.sln
Build Release
Có thể build solution trước để kiểm tra source:
dotnet build FaceHubManagement.sln -c Release
Nếu không có lỗi thì tiến hành tạo package Ubuntu.
Build file DEB
FaceHubMgr có sẵn script đóng gói:
./packaging/linux/build-deb.sh linux-x64
Script sẽ publish các component cần thiết và tạo package .deb.
Sau khi hoàn tất, package nằm trong:
artifacts/packages/
Ví dụ:
facehub-management_<version>_amd64.deb
FaceHubMgr được publish theo dạng self-contained, do đó máy dùng để chạy chương trình không cần cài riêng .NET Runtime giống như máy dùng để build.
5. Cài đặt FaceHubMgr
Nên cài package bằng apt:
sudo apt install ./artifacts/packages/facehub-management_<version>_amd64.deb
So với:
sudo dpkg -i ...
apt install ./package.deb thuận tiện hơn vì apt có thể xử lý dependency cần thiết cho package.
Sau khi cài đặt, kiểm tra Agent:
systemctl status facehub-management-agent.service
Nếu hoạt động bình thường sẽ thấy trạng thái:
Active: active (running)
Kiểm tra IPC socket:
ls -l /run/facehub-management/agent.sock
FaceHubMgr sử dụng group riêng:
facehub-management
Nếu user hiện tại vừa được thêm vào group trong quá trình cài đặt thì cần logout và login lại Ubuntu trước khi mở chương trình.
Sau đó FaceHubMgr có thể được mở từ Application Menu giống các desktop application thông thường.
6. Cấu hình FaceHubMgr
File cấu hình Agent trên Ubuntu nằm tại:
/etc/facehub-management/agentsettings.json
Nếu tên service trên máy thực tế khác với cấu hình mặc định thì cần sửa file này.
Ví dụ hệ thống có thể sử dụng:
|
1 2 3 |
nginx.service facehub.service mongod.service |
Sau khi thay đổi cấu hình, restart FaceHub Management Agent:
sudo systemctl restart facehub-management-agent.service
Sau đó kiểm tra lại:
systemctl status facehub-management-agent.service
7. Lưu ý
Không chạy Desktop bằng sudo nếu không cần thiết
FaceHubMgr được thiết kế theo mô hình Desktop và privileged Agent riêng biệt.
Do đó không nên sử dụng:
sudo FaceHubManagement.Desktop
cho việc sử dụng thông thường.
Các thao tác yêu cầu quyền quản trị sẽ do Agent xử lý.
FaceHubMgr không cài đặt FaceHub, Nginx hoặc MongoDB
FaceHubMgr là chương trình quản lý các service đã tồn tại.
Trước khi sử dụng nên kiểm tra:
|
1 2 3 |
systemctl status nginx.service systemctl status facehub.service systemctl status mongod.service |
Nếu một service chưa được cài đặt hoặc bản thân service đang lỗi, FaceHubMgr không thể tự sửa lỗi bên trong service đó.
Ví dụ trạng thái:
|
1 2 |
MongoDB Failed |
không nhất thiết là lỗi của FaceHubMgr. Cần kiểm tra tiếp bằng:
|
1 2 |
systemctl status mongod journalctl -u mongod |
Kiểm tra NVIDIA Driver trước khi kiểm tra GPU
FaceHubMgr lấy thông tin NVIDIA thông qua NVML, kiểm tra trước bằng:
nvidia-smi
Nếu nvidia-smi không hoạt động thì FaceHubMgr cũng không thể lấy đầy đủ thông tin GPU.
Không nhất thiết phải cài CUDA Toolkit chỉ để xem GPU Usage và VRAM. Thành phần quan trọng trong trường hợp này là NVIDIA Driver và NVML.
Cẩn thận khi thay đổi Firewall
Thay đổi firewall có thể khiến máy không thể truy cập từ bên ngoài.
Đặc biệt cần kiểm tra kỹ trước khi deny các port đang được sử dụng như:
|
1 2 3 4 5 |
22 SSH 80 HTTP 443 HTTPS 8000 FaceHub 27017 MongoDB |
Không nên thử chức năng firewall trên server production thông qua kết nối SSH nếu chưa chắc chắn rằng SSH port vẫn được Allow.
Kết luận
Toàn bộ chức năng của FaceHubMgr về cơ bản đều có thể thực hiện bằng các command Linux.
Điểm chính của FaceHubMgr không phải là thay thế command line mà là gom những thao tác quản trị FaceHub thường xuyên vào một giao diện trực quan và thống nhất.
Thay vì phải nhớ và thực hiện nhiều lệnh như:
|
1 2 3 4 5 6 7 |
systemctl journalctl ufw nvidia-smi free df ip |
người vận hành có thể nhanh chóng kiểm tra trạng thái hệ thống từ một ứng dụng duy nhất.
Đối với kỹ thuật viên, Terminal vẫn cần thiết cho quá trình debug chuyên sâu. Nhưng đối với việc kiểm tra hằng ngày, triển khai tại khách hàng hoặc bàn giao hệ thống cho người vận hành, FaceHubMgr giúp quá trình quản lý FaceHub đơn giản và ít phụ thuộc vào kiến thức Linux hơn.




