Skip to content

Supervisor ​

Tổng quan ​

Supervisor là công cụ giám sát và điều khiển tiến trình (process) trên Linux. Nó giữ cho các tiến trình chạy liên tục và tự động khởi động lại nếu chúng bị dừng đột ngột. Bạn có thể dùng Supervisor để chạy queue worker, websocket, laravel-echo-server và các tiến trình chạy lâu dài khác. FlashPanel dùng Supervisor để quản lý các tiến trình này và đảm bảo chúng hoạt động ổn định.

Chọn công cụ nào?

  • Ứng dụng Node.js: nên dùng PM2.
  • Chương trình cần chạy như một dịch vụ hệ thống, tự khởi động cùng máy chủ: dùng Service.
  • Lệnh chạy theo lịch (mỗi phút, mỗi ngày…) thay vì chạy liên tục: dùng CronJob.

Cấu hình Supervisor ​

Bạn có thể thiết lập một tiến trình Supervisor thông qua menu Supervisor của máy chủ. Các bước thực hiện:

  1. Chọn máy chủ, bấm menu Supervisor rồi bấm nút Thêm mới

  2. Trong hộp thoại Thêm mới Supervisor, điền thông tin tiến trình:

    • Tên: Tên program, ví dụ queue-worker. Chỉ gồm chữ thường, số, gạch ngang và gạch dưới, tối đa 32 ký tự. Đây cũng là tên file cấu hình trong /etc/supervisor/conf.d và không đổi được sau này (muốn đổi tên thì Sao Chép rồi Xóa)
    • Description (Optional): Mô tả ngắn gọn về tiến trình
    • Command: Câu lệnh cần chạy. Ví dụ: php artisan queue:work. Nếu dùng đường dẫn tương đối như ví dụ này, hãy điền Directory là thư mục website (ví dụ /home/flashpanel/example.com), hoặc viết đường dẫn đầy đủ: php /home/flashpanel/example.com/artisan queue:work
    • User: Người dùng hệ thống dùng để chạy lệnh, mặc định là flashpanel
    • Directory (Optional): Thư mục chạy lệnh, có thể chọn từ gợi ý. Để trống nếu lệnh đã dùng đường dẫn đầy đủ
    • Number Processes: Số bản sao (instance) của tiến trình chạy song song
    • Start Seconds: Số giây tiến trình cần chạy liên tục để được coi là khởi động thành công
  3. Bấm Lưu

Bảng được đọc trực tiếp từ máy chủ mỗi lần mở trang: liệt kê mọi program trong /etc/supervisor/conf.d, kể cả program bạn tự tạo qua SSH, bấm Làm mới để đọc lại. FlashPanel không giữ bản sao cấu hình, nên bạn thấy đúng những gì đang có trên máy chủ. Cột Trạng thái hiển thị trạng thái đọc từ Supervisor trên máy chủ, tự làm mới mỗi 30 giây khi trang đang mở (bấm Làm mới để đọc ngay; thời điểm đọc gần nhất hiện cạnh nút):

  • Đang chạy: Mọi tiến trình đều đang chạy. Khi Number Processes lớn hơn 1, cột hiện thêm số tiến trình đang chạy, ví dụ 2/2
  • Đang khởi động, Đang dừng: Tiến trình đang chuyển trạng thái
  • Đang thử lại: Tiến trình thoát trước Start Seconds và Supervisor đang khởi động lại
  • Đã dừng: Tiến trình đã bị dừng
  • Đã thoát: Tiến trình thoát sau khi đã khởi động thành công
  • Không khởi động được: Supervisor đã bỏ cuộc sau nhiều lần khởi động thất bại. Xem Xem nhật ký để tìm nguyên nhân
  • Chưa được nạp: Supervisor trên máy chủ không có tiến trình này, ví dụ khi cài cấu hình bị lỗi. Hãy sửa và lưu lại để cài lại cấu hình

Khi một nhóm có nhiều tiến trình ở các trạng thái khác nhau, cột hiện trạng thái nghiêm trọng nhất. Rê chuột vào trạng thái để xem trạng thái của từng tiến trình.

Bấm vào tiêu đề cột Tên, Description, User hoặc Number Processes để sắp xếp theo cột đó.

Tìm kiếm và lọc ​

Thanh phía trên bảng giúp tìm nhanh khi máy chủ có nhiều tiến trình:

  • Nhập vào ô Tìm Kiếm để lọc theo tên, mô tả, câu lệnh, thư mục hoặc người dùng.
  • Bấm Trạng thái rồi chọn Đang chạy, Thất bại (gồm Không khởi động được và Đang thử lại), Đã dừng (gồm Đã thoát) hoặc Chưa được nạp. Mỗi lựa chọn hiện kèm số lượng tiến trình, giúp bạn thấy ngay tiến trình nào đang lỗi.
  • Bấm Sở hữu để chỉ hiện tiến trình cấp Máy chủ hoặc tiến trình của một website.
  • Bấm User để lọc theo người dùng chạy tiến trình.
  • Bấm Cấu hình rồi chọn Sửa được hoặc Chỉ đọc để tách tiến trình do FlashPanel quản lý với tiến trình có file cấu hình viết tay.
  • Các bộ lọc dùng được cùng lúc. Giá trị đang lọc hiện ngay trên nút bộ lọc. Bấm Xóa bộ lọc để xoá ô tìm kiếm và mọi bộ lọc.

Các nút ở cuối dòng:

  • Khởi động, Dừng, Khởi động lại: Điều khiển tiến trình. Lệnh chạy nền và hiện trong Sự kiện; khi xong, trạng thái được đọc lại từ máy chủ. Nếu tiến trình không khởi động được, sự kiện hiện lỗi do Supervisor trả về. Nút Khởi động bị làm mờ khi mọi tiến trình đang chạy, nút Dừng bị làm mờ khi không tiến trình nào chạy. Mọi nút bị làm mờ khi tiến trình đang được cài, xoá, đang chuyển trạng thái hoặc Chưa được nạp.
  • Xem nhật ký: Xem đầu ra nhật ký của tiến trình. Log mở trong cửa sổ nổi, bạn có thể di chuyển, đổi kích thước hoặc thu nhỏ cửa sổ, màu sắc do chương trình ghi ra được giữ nguyên. Chọn Số dòng cần xem, bật Tự động làm mới để tải lại mỗi 5 giây, hoặc bấm nút làm mới để tải lại một lần.
  • Menu ⋮:
    • Chỉnh sửa: Sửa cấu hình tiến trình. File cấu hình được ghi lại từ biểu mẫu; tiến trình chỉ khởi động lại khi thiết lập chạy thay đổi (chỉ đổi mô tả thì không khởi động lại). Các directive bạn tự thêm vào file, ví dụ environment, được giữ nguyên
    • Sao Chép: Tạo tiến trình mới từ cấu hình hiện có, với tên mới
    • Xoá nhật ký: Xóa nội dung file nhật ký của tiến trình
    • Xóa: Xóa cấu hình Supervisor (cần bấm Xác nhận để hoàn tất)

Điều khiển nhiều tiến trình cùng lúc ​

  1. Đánh dấu ô chọn ở đầu các dòng cần điều khiển, hoặc ô chọn trên tiêu đề bảng để chọn mọi dòng đang hiện. Một thanh hiện số tiến trình đã chọn sẽ xuất hiện ở cuối màn hình.
  2. Bấm một trong các nút trên thanh đó: Khởi động, Dừng, Khởi động lại, Xoá nhật ký hoặc Xóa mục đã chọn. Rê chuột vào nút để xem tên. Bấm nút đóng ở bên trái để bỏ chọn tất cả.

Mỗi nút chỉ tác động lên các tiến trình đã chọn mà nút đó hợp lệ, giống như bấm nút trên từng dòng: Khởi động bỏ qua tiến trình đang chạy hết, Dừng bỏ qua tiến trình không chạy, Xoá nhật ký bỏ qua tiến trình không có file nhật ký, Xóa mục đã chọn bỏ qua tiến trình có cấu hình viết tay. Nút không hợp lệ với tiến trình nào thì không hiện. Các lệnh chạy nền và hiện trong Sự kiện; nếu có lệnh gửi không thành công, một thông báo liệt kê các tiến trình lỗi.

Xóa mục đã chọn mở hộp xác nhận kèm tên các tiến trình sẽ bị xoá. Tiến trình bị bộ lọc ẩn đi thì tự bỏ chọn, nên thao tác hàng loạt không đụng tới dòng bạn không nhìn thấy.

Tiến trình của website

Tiến trình tạo ở trang Supervisor của website cũng hiện ở đây, cột Website cho biết website sở hữu. Khi sửa, ô User và Directory bị khoá vì tiến trình của website luôn chạy bằng người dùng và trong thư mục của website.

Cấu hình viết tay

File cấu hình chứa nhiều program, hoặc có tên program khác tên file, hiện biểu tượng ổ khoá cạnh tên. Bạn vẫn khởi động, dừng, khởi động lại và xem nhật ký được, nhưng Chỉnh sửa và Xóa bị làm mờ: hãy sửa qua SSH. Program có cấu hình không ghi output ra file thì không có nhật ký để xem.

File nhật ký ​

FlashPanel tự động cấu hình để mỗi tiến trình Supervisor ghi nhật ký ra file riêng. File nhật ký nằm trong thư mục /home/flashpanel/.flashpanel/ và được đặt tên theo dạng <tên>.log, trong đó <tên> là giá trị ở cột Tên trên bảng. Nếu tiến trình chạy với người dùng root, file nhật ký nằm tại /root/.flashpanel/. Tiến trình tạo trước phiên bản này vẫn giữ file daemon-<ID>.log; đường dẫn luôn được đọc từ file cấu hình nên Xem nhật ký vẫn tìm đúng file.

Tiến trình của website luôn ghi nhật ký vào /root/.flashpanel/<tên>.log, dù chạy bằng người dùng nào. Bấm Xem nhật ký để đọc.

WARNING

Nếu bạn dùng tính năng cách ly người dùng của FlashPanel, file nhật ký nằm trong thư mục .flashpanel thuộc thư mục home của người dùng đã chọn ở trường User (ví dụ /home/<tên người dùng>/.flashpanel/).