Yêu cầu của agent
Bảng dưới là yêu cầu của agent (AFR chức năng, ANFR phi chức năng). Yêu cầu của Collector và Access Hub do các nhóm đó giữ, agent chỉ phụ thuộc vào hợp đồng ở 10-wire-contract.md.
Yêu cầu chức năng
Cài đặt và danh tính
| Mã | Yêu cầu | GĐ |
|---|---|---|
| AFR-01 | Enroll bằng License, nhận và lưu token riêng | 1 |
| AFR-02 | License nhận qua biến môi trường, tệp hoặc stdin, không bắt buộc qua argv | 1 |
| AFR-03 | Lưu thông tin đăng nhập với quyền tối thiểu (Linux 0600 root, Windows ACL hoặc DPAPI) | 1 |
| AFR-04 | Xoay token định kỳ tự động, an toàn khi ghi thất bại | 2 |
| AFR-05 | Phát hiện lệnh enroll khi đã enroll và từ chối trừ khi có --force | 1 |
| AFR-06 | Cài, gỡ, khởi động, dừng dịch vụ bằng CLI (`service install | uninstall |
Thu thập
| Mã | Yêu cầu | GĐ |
|---|---|---|
| AFR-10 | CPU: sử dụng tổng và theo chế độ chính, tải 1/5/15 phút, số lõi (Linux) | 1 |
| AFR-11 | RAM và swap: tổng, dùng, khả dụng, phần trăm | 1 |
| AFR-12 | Đĩa: dung lượng, inode (Linux), phần trăm dùng, theo điểm gắn, lọc loại hệ thống tệp ảo | 1 |
| AFR-13 | Mạng: tốc độ nhận, gửi, lỗi, gói rơi theo giao diện, lọc giao diện ảo | 1 |
| AFR-14 | Uptime, thời điểm khởi động | 1 |
| AFR-15 | Toàn bộ AFR-10 đến AFR-14 tương đương trên Windows | 2 |
| AFR-16 | Kiểm tra port lắng nghe, kết nối TCP, HTTP(S), hạn chứng chỉ TLS, trạng thái dịch vụ | 2 |
| AFR-17 | Kiểm kê: OS, kernel, CPU, RAM, đĩa, IP, thời điểm khởi động | 2 |
| AFR-18 | Chỉ số tự thân agent_* | 1 |
| AFR-19 | Giới hạn số series, danh sách nhãn trắng, cắt nhãn | 1 |
Truyền và độ bền
| Mã | Yêu cầu | GĐ |
|---|---|---|
| AFR-20 | Gửi lô định kỳ với jitter theo agent_id, nén, protobuf | 1 |
| AFR-21 | Backoff full jitter, tôn trọng Retry-After, xử lý đúng từng mã trạng thái | 1 |
| AFR-22 | WAL trên đĩa, giới hạn dung lượng và tuổi, phục hồi sau mất điện | 1 |
| AFR-23 | Gửi bù có giới hạn tốc độ | 1 |
| AFR-24 | Gói rỗng vẫn được gửi làm heartbeat | 1 |
| AFR-25 | Điều chỉnh độ lệch đồng hồ theo server_time | 2 |
| AFR-26 | Xác minh TLS bắt buộc, tùy chọn ghim CA | 1 |
Cấu hình và điều khiển
| Mã | Yêu cầu | GĐ |
|---|---|---|
| AFR-30 | Cấu hình cục bộ YAML, kiểm tra hợp lệ (check-config) | 1 |
| AFR-31 | Cấu hình từ xa có ETag, kéo định kỳ và khi config_etag đổi | 2 |
| AFR-32 | Khóa cấu hình từ xa (allow_remote_config: false) | 2 |
| AFR-33 | Đổi collector qua cấu hình từ xa (collector_url) | 3 |
| AFR-34 | status, diag, version | 1 |
| AFR-35 | Cập nhật tự động có chữ ký, quay lui | 3 |
Yêu cầu phi chức năng
| Mã | Yêu cầu | Số đo |
|---|---|---|
| ANFR-01 | CPU trung bình | Không quá 1% một lõi ở cấu hình chuẩn (70 series, 30 giây) |
| ANFR-02 | Bộ nhớ | RSS không quá 50 MB, giới hạn cứng qua GOMEMLIMIT mặc định 64 MiB |
| ANFR-03 | Kích thước binary | Không quá 20 MB (đã nén trong gói nhỏ hơn) |
| ANFR-04 | Đĩa | WAL tối đa 50 MB mặc định, log xoay vòng tối đa 20 MB |
| ANFR-05 | Băng thông | Không quá 10 KB mỗi lô sau nén ở cấu hình chuẩn |
| ANFR-06 | Khởi động | Sẵn sàng thu thập trong dưới 3 giây |
| ANFR-07 | Độ bền | Mất điện đột ngột không làm hỏng WAL, mất tối đa lô đang ghi |
| ANFR-08 | Không lắng nghe | Không mở cổng nào |
| ANFR-09 | Phụ thuộc hệ thống | Binary tĩnh, không cần thư viện, chạy trên glibc cũ và musl, kernel Linux từ 3.10 |
| ANFR-10 | Cách ly lỗi | Panic ở một bộ thu không làm dừng agent |
| ANFR-11 | Tắt êm | Dừng trong 10 giây khi nhận tín hiệu |
| ANFR-12 | Tương thích giao thức | Hỗ trợ giao thức N và N-1 |
| ANFR-13 | Không đặc quyền khi có thể | Linux chạy tài khoản riêng (không root) nếu bộ thu cho phép, Windows dùng virtual service account |
| ANFR-14 | Nhật ký | Log JSON hoặc văn bản có cấp độ, không bao giờ ghi token |
Ma trận hệ điều hành
Tóm tắt:
| Nền tảng | Hỗ trợ |
|---|---|
| Ubuntu 18.04+, Debian 10+, RHEL/CentOS/Rocky/Alma 7+, Amazon Linux 2+ | Chính thức (amd64, arm64) |
| SUSE, openSUSE | Best-effort |
| Windows 10 1809+, 11, Server 2016+ | Chính thức (amd64, arm64 tùy chọn) |
| Server 2012 R2 trở xuống, Windows 7 và 8 | Không hỗ trợ mặc định |
| Container, Kubernetes, macOS, BSD | Ngoài phạm vi |
Chạy không đặc quyền trên Linux: hầu hết chỉ số đọc được từ /proc và /sys mà không cần root. Đọc dung lượng đĩa của mọi điểm gắn dùng statfs, không cần đặc quyền. Kiểm tra dịch vụ (systemd) dùng D-Bus hoặc systemctl tùy quyền, đánh giá ở GĐ 2.