Supervisord là một hệ thống client/server mạnh mẽ cho phép người dùng theo dõi và kiểm soát các tiến trình trên hệ điều hành Linux. Nó đảm bảo các ứng dụng luôn chạy ngầm và tự động khởi động lại nếu xảy ra sự cố lỗi hoặc hệ thống bị reboot.
1. Cài đặt Supervisord
Trên CentOS 7, Supervisord có sẵn trong kho lưu trữ EPEL. Trước tiên, bạn cần cài đặt EPEL release, sau đó tiến hành cài đặt gói supervisor.
yum install epel-release -y
yum install supervisor -y
2. Quản lý dịch vụ Supervisord bằng Systemd
Để đảm bảo Supervisord tự khởi động cùng hệ thống và có thể quản lý được trạng thái của nó, chúng ta sử dụng các lệnh systemctl chuẩn:
# Kích hoạt khởi động cùng hệ thống
systemctl enable supervisord
# Các lệnh quản lý cơ bản
systemctl start supervisord # Khởi chạy dịch vụ
systemctl stop supervisord # Dừng dịch vụ
systemctl status supervisord # Kiểm tra trạng thái
systemctl restart supervisord # Khởi động lại dịch vụ
systemctl reload supervisord # Tải lại cấu hình
3. Cấu hình giao diện quản lý Web
Supervisord cung cấp một giao diện web trực quan để theo dõi trạng thái các tiến trình. Bạn cần chỉnh sửa tệp cấu hình chính để kích hoạt tính năng này.
Mở tệp cấu hình: vi /etc/supervisord.conf
Tìm và chỉnh sửa đoạn mã tương ứng với [inet_http_server] (bỏ dấu chấm phẩy ở đầu dòng để kích hoạt):
[inet_http_server]
port=0.0.0.0:9001 ; Cho phép truy cập từ mọi IP qua cổng 9001
username=admin ; Tên đăng nhập tùy chọn
password=yourpassword ; Mật khẩu bảo mật
Lưu ý: Nếu bạn đang chạy trên server có tường lửa, hãy mở cổng 9001 bằng lệnh:
firewall-cmd --permanent --add-port=9001/tcp
firewall-cmd --reload
4. Tạo tiến trình cần giám sát (Ví dụ mẫu)
Giả sử chúng ta có một kịch bản Python cần chạy liên tục để thực hiện nhiệm vụ kiểm tra hệ thống. Tạo tệp /opt/app_monitor.py:
import time
import sys
while True:
print("System is running normally...")
sys.stdout.flush()
time.sleep(5)
5. Thêm cấu hình tiến trình vào Supervisord
Thay vì sửa trực tiếp tệp cấu hình chính, Supervisord được thiết lập để đọc các tệp cấu hình riêng lẻ trong thư mục /etc/supervisord.d/. Hãy tạo một tệp mới cho ứng dụng của bạn:
Tạo tệp: vi /etc/supervisord.d/app_monitor.ini
[program:app_monitor]
command=python /opt/app_monitor.py
autostart=true
autorestart=true
startsecs=5
startretries=3
user=root
redirect_stderr=true
stdout_logfile=/var/log/app_monitor.out.log
stderr_logfile=/var/log/app_monitor.err.log
Giải thích các tham số cơ bản:
- command: Lệnh thực thi ứng dụng.
- autostart: Tự động chạy khi Supervisord khởi động.
- autorestart: Tự động khởi động lại nếu tiến trình bị tắt đột ngột.
- stdout_logfile: Đường dẫn lưu trữ log đầu ra của ứng dụng.
6. Cập nhật và kiểm tra
Sau khi thêm cấu hình mới, bạn cần thông báo cho Supervisord quét lại thư mục cấu hình và áp dụng thay đổi:
supervisorctl reread
supervisorctl update
Bây giờ bạn có thể truy cập vào địa chỉ http://IP_CUA_BAN:9001 để quản lý tiến trình app_monitor thông qua giao diện đồ họa hoặc sử dụng lệnh supervisorctl status để kiểm tra trực tiếp từ terminal.