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.
Trước khi bắt đầu
MONITORING_COLLECTOR_ADMIN_URL và MONITORING_COLLECTOR_ADMIN_TOKENmonitoring.collector để collector gọi hubmonitoring.view để xem, monitoring.manage để tạo license, luật và silenceKiến trúc
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ần | Vai trò |
|---|---|
| Agent | Chạy trên máy chủ, thu thập số đo và gửi về collector |
| Collector | Giữ số đo thời gian thực, đánh giá luật, báo cảnh báo về hub |
| Hub | Giữ 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ền | Cho phép |
|---|---|
monitoring.view | Xem mọi trang giám sát |
monitoring.manage | Thu hồi, gắn lại agent, xác nhận và đóng cảnh báo, tạo luật và silence |
monitoring.delete | Xóa agent, luật, silence |
monitoring.collector | Dà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ính | Chi tiết |
|---|---|
| Hiển thị một lần | Mã đầ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ùng | Mặc định hết hạn sau 7 ngày, dùng 1 lần (tối đa 1000) |
| Ràng buộc | Có thể gắn với một máy chủ hoặc một collector cụ thể |
| Trạng thái | active, 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:
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
- 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.
- Agent gửi license tới collector.
- Collector gọi
POST /api/v1/monitoring/collector/enrolltrên hub. - 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ác | Mô tả |
|---|---|
| Thu hồi | Collector 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óa | Chỉ á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_TOKEN | Token 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 CPU | Chỉ số cpu_cores |
| RAM | Chỉ số mem_total_bytes, từ 1 GB trở lên làm tròn về GB gần nhất |
| Ổ đĩa | Chỉ số disk_total_bytes (cộng các phân vùng), làm tròn về GB |
| Hệ điều hành | Thô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.
php artisan monitoring:sync-server-facts --dry-runLuậ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 |
|---|---|
threshold | So sánh một số đo với ngưỡng bằng >, >=, <, <=, ==, != |
agent_down | Agent 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_atvàends_atbằng giờ hiện tại và cấpsync_versionmới để collector nhận tombstone. - Collector kéo qua
GET /api/v1/monitoring/collector/silences?since=&limit=, phân trang theosync_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 |
|---|---|
open | Vừa phát sinh, chưa ai xử lý |
acknowledged | Có người nhận xử lý, vẫn còn hiệu lực |
resolved | Collector xác định điều kiện đã hết |
closed | Ngườ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ểu | 5 | Số máy chủ sập tối thiểu |
| Tỷ lệ tối thiểu | 0,30 | Tỷ lệ máy chủ sập trong phạm vi |
| Cửa sổ | 60 giây | Khoả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ối | Mô tả |
|---|---|
GET /servers/{server}/monitoring/health | Agent 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/series | Chuỗi thời gian của một số đo (metric, from, to, step, agg) |
GET /servers/{server}/monitoring/health/series/batch | Như 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
- Cài agent trên máy chủ: Agent.
- Dựng collector: Collector.
- Gọi API của giám sát: REST API v1.
- Vận hành hàng đợi và lịch chạy lệnh: Vận hành.