API Chung#

Trang này chỉ còn 2 endpoint chung cho mọi worker server:

  • POST /worker/health — heartbeat + cập nhật server (metrics + max_threads).
  • POST /worker/logs — gửi log.

Tất cả endpoint đều yêu cầu header X-API-Key.

Các API xử lý task (pull / start / complete / fail) nằm trong từng service riêng: xem Entity Backlink, Social Backlink, Google Stacking, Blog 2.0, Podcast, Link Cloud, Blog Comment, Indexing.


Rule: Server phải online mới gọi được API “làm việc”#

Nếu server đang ở trạng thái offline (không gửi heartbeat 5 phút), mọi call pull task / start / complete / fail đều bị 403 server_not_online:

{
  "success": false,
  "code": "server_not_online",
  "message": "server '<tên>' hiện đang 'offline' — gọi /worker/health trước để khôi phục về online",
  "status": "offline"
}

Hồi phục: Worker gọi POST /worker/health (heartbeat) — endpoint này miễn trừ check, tự set status='online', sau đó mới pull task được. POST /worker/logs cũng miễn trừ (cho phép gửi log retroactive).


POST /worker/health — Heartbeat #

Gửi mỗi 30-60 giây để giữ server online + update metrics. Có thể gửi kèm max_threads để scale capacity runtime.

Body:

{
  "server_name": "server-01",
  "ip": "192.168.1.100",
  "cpu_usage": 45.5,
  "ram_usage": 60.2,
  "disk_usage": 30.0,
  "active_threads": 5,
  "active_tasks": 12,
  "max_threads": 20
}
FieldLoạiMô tả
server_namestringTuỳ chọn — update tên
ipstringTuỳ chọn — update IP ghi nhận được
cpu_usagefloat% CPU
ram_usagefloat% RAM
disk_usagefloat% Disk
active_threadsintThread đang chạy
active_tasksintTask đang xử lý
max_threadsintTuỳ chọn — cập nhật số luồng tối đa server chịu được (1-1000). Worker dùng khi scale up/down runtime. Giá trị ngoài khoảng sẽ bị ignore, giữ nguyên giá trị cũ.

Response:

{
  "success": true,
  "server_id": "uuid",
  "server_time": "2026-04-24T08:00:00+07:00"
}

Lưu ý: Assign tính live count active_tasks trực tiếp từ DB khi dispatch, không phụ thuộc servers.active_tasks column — nên heartbeat chỉ để giữ server online + metrics cho admin UI. Dispatcher luôn thấy load thật.

Gửi max_threads trong heartbeat để scale runtime mà không cần endpoint riêng. Thay đổi có hiệu lực ngay với dispatcher tick kế tiếp (3s).


POST /worker/logs — Gửi logs #

Tối đa 500 entries / request. Lưu vào bảng server_logs.

Body:

{
  "logs": [
    { "level": "INFO",  "message": "Starting task uuid-123" },
    { "level": "ERROR", "message": "Failed to solve captcha" }
  ]
}
FieldLoạiMô tả
levelstringDEBUG, INFO, WARN, ERROR (mặc định INFO)
messagestringNội dung log