Access Hub
Đồng bộ từ mã nguồn lúc 17:27, 02/10/2026
Skip to content

Giám sát máy chủ ​

Access Hub không tự thu thập số đo. Hub quản lý danh tính, quy tắc và cảnh báo, còn việc đo và đánh giá do hai thành phần riêng đảm nhận. Trang này mô tả cách ba bên phối hợp và cách vận hành từng phần trong giao diện hub.

12 phút đọcCập nhật 02/10/2026

Trước khi bắt đầu

Collector đã triển khai, hub có MONITORING_COLLECTOR_ADMIN_URL và MONITORING_COLLECTOR_ADMIN_TOKEN
Tài khoản loại Dịch vụ có quyền monitoring.collector để collector gọi hub
Quyền monitoring.view để xem, monitoring.manage để tạo license, luật và silence

Kiến trúc ​

text
Máy chủ                Collector                 Access Hub
+--------+  số đo     +-----------+  sự kiện,    +-----------+
| Agent  | ---------> | Collector | -----------> | Hub (API) |
+--------+            +-----------+  heartbeat   +-----------+
                            ^                          |
                            |   luật, silence, cài đặt |
                            +--------------------------+
                            |   gợi ý nạp lại (hub gọi API quản trị)
Thành phầnVai trò
AgentChạy trên máy chủ, thu thập số đo và gửi về collector
CollectorGiữ số đo thời gian thực, đánh giá luật, báo cảnh báo về hub
HubGiữ agent, cảnh báo, luật, silence và cài đặt trong CSDL, đọc số đo từ collector khi cần

Dữ liệu agent và cảnh báo nằm trong CSDL của hub. Số đo thời gian thực (CPU, RAM, đĩa, mạng) do collector giữ, hub chỉ đọc qua API quản trị nội bộ của collector.

Quyền ​

QuyềnCho phép
monitoring.viewXem mọi trang giám sát
monitoring.manageThu hồi, gắn lại agent, xác nhận và đóng cảnh báo, tạo luật và silence
monitoring.deleteXóa agent, luật, silence
monitoring.collectorDành cho tài khoản dịch vụ của collector

Tab Sức khỏe và dashboard cần thêm servers.view. Mọi dữ liệu bị giới hạn theo công ty (CompanyScope).

License ​

License là mã bí mật (tiền tố ahet_) mà bạn đưa cho một máy chủ để agent tự đăng ký với collector. Sau khi đăng ký, agent nhận một token riêng (tiền tố ahat_) để làm việc lâu dài, nên license chỉ dùng cho bước đăng ký ban đầu.

Thuộc tínhChi tiết
Hiển thị một lầnMã đầy đủ chỉ hiện ngay sau khi tạo. Hub chỉ lưu băm SHA-256 và một gợi ý ngắn
Hạn và số lần dùngMặc định hết hạn sau 7 ngày, dùng 1 lần (tối đa 1000)
Ràng buộcCó thể gắn với một máy chủ hoặc một collector cụ thể
Trạng tháiactive, expired, exhausted, revoked, tính tại thời điểm xem

Tạo license ở Giám sát, License (cần monitoring.manage). Hoặc dùng API:

bash
curl -X POST https://<your-hub-host>/api/v1/monitoring/licenses \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"name": "Triển khai tầng web", "server_id": "<server-id>", "max_uses": 1}'

Phản hồi 201 chứa khóa token ở cấp cao nhất, đó là mã đầy đủ và chỉ xuất hiện một lần.

Cảnh báo: Không gửi license qua chat hoặc ticket

Nếu nghi ngờ bị lộ, thu hồi ngay rồi tạo mới. Agent đã đăng ký bằng license đó vẫn tiếp tục chạy.

Agent đăng ký như thế nào ​

  1. Bạn chạy lệnh enroll trên máy chủ. Lệnh không chứa token: token được nhập tại dấu nhắc hoặc đọc từ tệp.
  2. Agent gửi license tới collector.
  3. Collector gọi POST /api/v1/monitoring/collector/enroll trên hub.
  4. Hub băm mã, kiểm tra trạng thái, ghép agent với máy chủ trong cùng công ty (theo máy chủ gắn sẵn, nếu không thì theo IP rồi hostname) và trả về token riêng của agent.

Nhập sai license nhiều lần bị giới hạn theo IP của agent (mặc định 10 lần thất bại mỗi phút, biến MONITORING_ENROLL_FAILURES_PER_MINUTE).

Agent ​

Một agent có ba trạng thái: pending, active, revoked. Cột kết nối tính tại thời điểm xem: online nếu agent đang active và báo cáo trong vòng ngưỡng (mặc định 180 giây, biến MONITORING_ONLINE_THRESHOLD_SECONDS), offline nếu quá ngưỡng, inactive nếu không ở trạng thái hoạt động.

Thao tácMô tả
Thu hồiCollector từ chối agent, agent không tự kích hoạt lại, cần cài lại với license mới
Gắn lại máy chủChuyển agent sang máy chủ khác cùng công ty, dùng khi máy chủ được dựng lại
XóaChỉ áp dụng cho agent đã thu hồi

Trang chi tiết agent gom định danh, nền tảng, kết nối (collector đang nhận dữ liệu, license đã dùng, chỉ hiện tên và 4 ký tự cuối), sức khỏe của chính tiến trình agent và các cảnh báo đang mở của máy chủ.

Collector ​

Collector dùng chung cho mọi công ty, không thuộc công ty nào, nên chỉ super admin thấy mục Collector. Danh sách cho biết trạng thái, phiên bản, heartbeat gần nhất, số agent, tốc độ nhận vào và độ sâu hàng chờ gửi. Một collector là online khi heartbeat gần nhất nằm trong ngưỡng (mặc định 180 giây, biến MONITORING_COLLECTOR_ONLINE_THRESHOLD_SECONDS).

Kết nối từ hub tới collector ​

Hub gọi API quản trị của collector ({admin.url}/internal/v1) bằng một bearer token tĩnh. Cấu hình trong .env:

BiếnÝ nghĩa
MONITORING_COLLECTOR_ADMIN_URLĐịa chỉ API quản trị của collector
MONITORING_COLLECTOR_ADMIN_TOKENToken quản trị
MONITORING_COLLECTOR_PUBLIC_URLĐịa chỉ https agent kết nối, chỉ dùng để dựng lệnh cài đặt hiển thị cạnh license

Thiếu URL hoặc token thì client ở trạng thái "chưa cấu hình": hub bỏ qua việc đẩy registry và các trang báo "chưa có dữ liệu". Sau 5 lần lỗi liên tiếp (lỗi truyền tải hoặc 5xx), client ngắt mạch trong 30 giây rồi cho một lần thử. Trang chi tiết collector có thao tác nạp lại luật, silence, cài đặt; đồng bộ lại danh sách agent; và đặt lại cầu dao.

Tài khoản của collector ​

Collector gọi hub bằng API token của một tài khoản giữ vai trò collector (quyền monitoring.collector). Tài khoản này phải là loại Dịch vụ (hệ thống từ chối gán vai trò này cho tài khoản Người dùng), nên nó không bị lệnh khóa 2FA khóa nhầm và không đăng nhập web được. Các endpoint của collector được mô tả ở REST API v1.

Mẹo: Khi collector không khả dụng

Hub không trả lỗi chỉ vì collector gặp sự cố. Phần dữ liệu lấy từ collector luôn mang cờ available. Khi cờ là false, trang hiện thông báo thay cho biểu đồ, còn dữ liệu trong CSDL (agent, cảnh báo) vẫn hiển thị.

Đồng bộ thông số máy chủ tự động ​

Lệnh monitoring:sync-server-facts điền các ô còn trống của máy chủ từ những gì agent báo về, để không phải nhập tay. Lệnh chạy mỗi giờ (phút 15) qua scheduler, và quản trị viên chạy tay được ở trang Lệnh chạy nền.

Thông sốNguồn
Số nhân CPUChỉ số cpu_cores
RAMChỉ số mem_total_bytes, từ 1 GB trở lên làm tròn về GB gần nhất
Ổ đĩaChỉ số disk_total_bytes (cộng các phân vùng), làm tròn về GB
Hệ điều hànhThông tin agent báo lúc enroll, chỉ ghi khi khớp một mục đang bật của danh sách "Hệ điều hành"

Quy tắc: chỉ điền ô trống. Giá trị nhập tay hoặc khai báo qua IaC không bao giờ bị ghi đè. Hostname và địa chỉ IP không bao giờ bị đổi. Mỗi lần điền được ghi vào nhật ký thay đổi. Chạy từ dòng lệnh với --dry-run để chỉ xem trước, không lưu.

bash
php artisan monitoring:sync-server-facts --dry-run

Luật cảnh báo ​

Luật cho collector biết khi nào mở cảnh báo. Mỗi luật thuộc một công ty, có phạm vi máy chủ, điều kiện và mức độ.

Loại luậtĐiều kiện
thresholdSo sánh một số đo với ngưỡng bằng >, >=, <, <=, ==, !=
agent_downAgent ngừng báo cáo, thời gian giữ tối thiểu 30 giây

Các tham số quan trọng: for_seconds (thời gian giữ để giảm báo nhầm), recover_threshold kèm recover_for_seconds (độ trễ chống chập chờn), cách xử lý khi mất dữ liệu (bỏ qua, báo động, tự đóng) và chu kỳ nhắc lại. Phạm vi là toàn công ty hoặc hợp của máy chủ chọn tay, thẻ, môi trường, vai trò, trung tâm dữ liệu.

Hub có sẵn bộ 11 luật mặc định, tạo bằng nút Tạo luật mặc định hoặc POST /api/v1/monitoring/rules/defaults. Thao tác lặp lại không tạo trùng.

Đồng bộ luật tới collector ​

Mỗi lần lưu, tắt hoặc xóa luật đều cấp version mới. Collector kéo luật bằng GET /api/v1/monitoring/collector/rules?since=&limit= và nhận cả luật đã tắt hoặc xóa dưới dạng tombstone. Phản hồi có data.rules, data.next_since và data.more. Ngoài ra hub gửi gợi ý POST /internal/v1/reload/rules tới collector để áp dụng nhanh. Gợi ý thất bại thì luật vẫn tới collector ở lần đồng bộ định kỳ kế tiếp.

Khoảng im lặng (silence) ​

Silence là cửa sổ bảo trì đã lên kế hoạch. Trong lúc có hiệu lực, collector vẫn phát hiện sự cố nhưng gắn cờ chặn thông báo với lý do silence, nên không ai bị báo. Trang nằm ở Giám sát, Khoảng im lặng.

  • Trạng thái tính tại thời điểm xem: scheduled, active, expired.
  • Một khoảng dài tối đa 90 ngày (monitoring.silences.max_days). Khoảng đã hết không sửa được, hãy tạo khoảng mới.
  • Kết thúc ngay đặt cancelled_at và ends_at bằng giờ hiện tại và cấp sync_version mới để collector nhận tombstone.
  • Collector kéo qua GET /api/v1/monitoring/collector/silences?since=&limit=, phân trang theo sync_version. Hub gửi gợi ý POST /internal/v1/reload/silences.

Cảnh báo bị chặn vẫn được ghi lại nhưng im lặng. Lý do chặn gồm maintenance, silence và decommissioned. Máy chủ ở trạng thái Bảo trì hoặc Ngừng sử dụng luôn bị chặn dù collector không gắn cờ.

Cảnh báo và gom sự cố ​

Cảnh báo do collector phát hiện và gửi về qua API. Mỗi cảnh báo có mức độ (nghiêm trọng, cảnh báo, thông tin) và một trong bốn trạng thái:

Trạng tháiÝ nghĩa
openVừa phát sinh, chưa ai xử lý
acknowledgedCó người nhận xử lý, vẫn còn hiệu lực
resolvedCollector xác định điều kiện đã hết
closedNgười vận hành đóng thủ công

Khi nhiều máy chủ cùng subnet hoặc cùng datacenter ngừng báo cáo gần như cùng lúc, collector gửi một cảnh báo nhóm thay vì mỗi máy một thông báo. Cảnh báo con của từng máy chủ được gắn vào nhóm và không gửi thông báo riêng. Trong danh sách, cảnh báo nhóm có nhãn "Nhóm N máy chủ" và cảnh báo con có nhãn "Đã gom nhóm".

Ba tham số quyết định khi nào một nhóm mở, chỉnh ở Giám sát, Cài đặt giám sát cho từng công ty:

Tham sốMặc địnhÝ nghĩa
Số máy chủ tối thiểu5Số máy chủ sập tối thiểu
Tỷ lệ tối thiểu0,30Tỷ lệ máy chủ sập trong phạm vi
Cửa sổ60 giâyKhoảng thời gian tính

Để trống ô nào thì dùng giá trị mặc định do collector sở hữu. Collector đọc cài đặt qua GET /api/v1/monitoring/collector/settings/{companyId}.

Cảnh báo dao động (flapping) được đánh dấu riêng trong dòng thời gian sự kiện của cảnh báo.

Tab Sức khỏe ​

Trong trang chi tiết máy chủ, tab Sức khỏe hiển thị tình trạng và biểu đồ số đo (CPU, bộ nhớ, mạng, đĩa, áp lực PSI). Nội dung chỉ tải khi bạn mở tab, qua các điểm cuối JSON của phiên đăng nhập:

Điểm cuốiMô tả
GET /servers/{server}/monitoring/healthAgent gắn với máy chủ, trạng thái, giá trị mới nhất, cảnh báo đang mở
GET /servers/{server}/monitoring/health/seriesChuỗi thời gian của một số đo (metric, from, to, step, agg)
GET /servers/{server}/monitoring/health/series/batchNhư trên cho nhiều số đo (metrics[])

Giới hạn: khoảng thời gian tối đa 31 ngày, tối đa 40 chuỗi mỗi số đo (vượt thì truncated là true), tối đa 16 số đo mỗi lần gọi batch, hàm gộp avg, min, max, last. Bản REST tương đương: GET /api/v1/servers/{server}/health/series/batch.

Dashboard chỉ số theo người dùng ​

Giám sát, Dashboard gom các chỉ số bạn quan tâm vào một trang. Mỗi người dùng có dashboard riêng, tối đa 20 dashboard, mỗi dashboard tối đa 24 biểu đồ, mỗi biểu đồ tối đa 8 chỉ số.

  • Loại biểu đồ: đường, vùng, vùng xếp chồng, thanh ngang, đồng hồ, con số, dòng thời gian trạng thái, bảng, tròn, cảnh báo đang mở.
  • Dashboard chỉ lưu bố cục. Số liệu vẫn lấy từ điểm cuối chuỗi thời gian của tab Sức khỏe, nên quyền và phạm vi công ty được kiểm tra ở đó.
  • Mỗi biểu đồ có thể chọn máy chủ riêng để so sánh nhiều máy trên cùng một trang.
  • Khoảng thời gian: 1 giờ, 6 giờ, 24 giờ, 7 ngày, 31 ngày. Làm mới thủ công hoặc mỗi 30 giây, 1 phút, 5 phút.
  • Thay đổi chỉ được lưu khi bấm Lưu.

Bước tiếp theo ​

Trang này có giúp được bạn không?

Tài liệu Access Hub, cập nhật 02/10/2026. Khi tài liệu và mã khác nhau, mã thắng.