Hướng dẫn cài đặt và quản lý tiến trình bằng Supervisord trên CentOS 7

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.

Thẻ: CentOS 7 Supervisord systemd Linux Administration python

Đăng vào ngày 19 tháng 5 lúc 09:15