Tài liệuVận hành và giám sát

Vận hành và giám sát

Cách ZoPanel giám sát server: watchdog dịch vụ, cảnh báo qua email, Telegram hoặc webhook, uptime, lịch sử tài nguyên, trang Tối ưu, doctor và log.

ZoPanel giám sát server thay bạn. Watchdog tự khởi động lại dịch vụ bị dừng hoặc bị treo. Kiểm tra uptime phát hiện website không còn phản hồi. Cảnh báo được gửi tới bạn qua email, Telegram hoặc webhook. Khi có sự cố, zopanel ctl doctor cho biết chỗ nào hỏng và cách sửa.

Watchdog dịch vụ

Agent của ZoPanel kiểm tra các dịch vụ đã cài mỗi phút. Nó chỉ theo dõi các unit đã cài và đang enabled (khởi động cùng hệ thống):

  • Dịch vụ không chạy sẽ được bật lại.
  • Dịch vụ vẫn chạy nhưng không phản hồi sẽ được khởi động lại khi bài kiểm tra sức khoẻ lỗi 3 lần liên tiếp. Cách này bắt được dịch vụ bị treo hoặc cạn file descriptor.
Dịch vụ Cách kiểm tra
nginx Kết nối TCP tới 127.0.0.1:80
mariadb Unix socket /run/mysqld/mysqld.sock
postfix Lời chào SMTP (220) trên 127.0.0.1:25
dovecot Lời chào IMAP (* OK) trên 127.0.0.1:143
rspamd TCP 127.0.0.1:11332
redis-server TCP 127.0.0.1:6379
pdns API của nó trên 127.0.0.1:8081
zopanel Health check /healthz của panel
pure-ftpd, postgresql, mongod, docker, fail2ban, cron, ssh, zp-webmail Chỉ kiểm tra trạng thái chạy

Các quy tắc an toàn:

  • Tối đa 3 lần khởi động lại mỗi dịch vụ mỗi giờ. Quá mức này, watchdog dừng can thiệp, để lại dịch vụ cho quản trị viên xử lý và gửi cảnh báo. Khi dịch vụ chạy lại bình thường, watchdog tiếp tục theo dõi nó.
  • nginx chỉ được khởi động lại khi nginx -t hợp lệ. Nếu cấu hình sai, bạn nhận cảnh báo kèm lỗi thay vì một lần restart thất bại.
  • Ưu tiên cập nhật gói. Watchdog tạm dừng khi apt hoặc dpkg đang chạy.
  • systemd tự khởi động lại daemon bị crash trong vài giây (ZoPanel thêm drop-in cho việc này, tối đa 5 lần trong 10 phút). Watchdog xử lý những trường hợp systemd không thấy, ví dụ dịch vụ bị treo.

Dịch vụ đang được giữ dừng

Dịch vụ bạn dừng ở trang Dịch vụ sẽ được watchdog để yên, kể cả sau khi agent khởi động lại. Khi bạn bật lại dịch vụ, từ panel hoặc bằng systemctl start, watchdog tiếp tục theo dõi nó. Muốn tắt hẳn một dịch vụ, hãy tắt Khởi động cùng hệ thống.

Mọi hành động của watchdog (khởi động lại, lỗi, bỏ cuộc, đã phục hồi) đều được ghi vào Nhật ký hoạt động.

Cảnh báo

Cấu hình cảnh báo tại Cài đặt → Cảnh báo. Bật một hoặc nhiều kênh:

Kênh Thông tin cần nhập
Telegram Bot token (tạo bot bằng @BotFather) và Chat ID (lấy từ @userinfobot)
Email (SMTP) SMTP host, cổng (mặc định 587; cổng 465 dùng TLS ngay từ đầu), tên đăng nhập, mật khẩu, Người gửi, Người nhận (cách nhau bởi dấu phẩy)
Webhook (Discord / Slack) Loại (Discord, Slack hoặc JSON) và URL https://

Chọn các sự kiện trong mục Sự kiện và đặt ngưỡng. Bấm Lưu, rồi bấm Gửi thử để kiểm tra. Sau khi lưu, bot token, mật khẩu SMTP và URL webhook không bao giờ hiển thị lại.

Sự kiện Khi nào được gửi
Website không truy cập được Website lỗi hai lần kiểm tra liên tiếp. Có thêm thông báo khi website hoạt động lại.
Dịch vụ ngừng hoặc được khởi động lại Watchdog đã restart một dịch vụ, restart thất bại hoặc đã bỏ cuộc
CPU quá tải / RAM quá tải Mức trung bình trong phút gần nhất chạm ngưỡng CPU % hoặc RAM % (mặc định 90%)
Ổ đĩa sắp đầy Phân vùng gốc chạm ngưỡng ổ đĩa % (mặc định 90%), hoặc dự báo sẽ đạt 90% trong vòng 14 ngày
SSL sắp hết hạn / Gia hạn SSL thất bại Chứng chỉ hết hạn trong vòng 14 ngày, hoặc gia hạn bị lỗi
Sao lưu thất bại Một bản sao lưu bị lỗi, hoặc có tài khoản lâu chưa được sao lưu tự động
Hàng đợi mail tăng bất thường Có từ 300 thư trở lên đang chờ trong hàng đợi
IP máy chủ bị đưa vào blacklist Kiểm tra mỗi ngày một lần
Tài khoản chạm giới hạn gửi mail Một tài khoản dùng hết hạn mức email theo giờ
Cập nhật panel lỗi hoặc đã tự lùi bản Bản cập nhật lỗi, đã tự rollback hoặc không kiểm tra được
Tên miền sắp hết hạn 30, 7 và 1 ngày trước khi tên miền hết hạn đăng ký
Máy chủ trong fleet mất kết nối Một server ở trang Máy chủ không còn phản hồi
Đăng nhập từ IP mới, Đăng nhập panel thất bại Sự kiện đăng nhập
Phát hiện mã độc, Deploy thất bại, Có bản cập nhật Như tên gọi

Mọi sự kiện đều bật sẵn, trừ Đăng nhập panel thất bại và Có bản cập nhật. Cùng một cảnh báo chỉ được gửi tối đa một lần mỗi 30 phút.

Khách hàng và đại lý có thể tự nhận cảnh báo của mình qua email hoặc Telegram tại Tài khoản của tôi → Thông báo. Các cảnh báo này gồm website sập, SSL, sao lưu, giới hạn gửi mail, mã độc và dung lượng đĩa.

Để kết nối hệ thống billing và tự động hoá, dùng Cài đặt → Hook. Mục này gửi webhook JSON có chữ ký khi tài khoản, website, database, mail hoặc chứng chỉ thay đổi, và tách biệt với cảnh báo.

Uptime và lịch sử tài nguyên

Uptime. Mỗi phút, ZoPanel gửi request tới từng website đang hoạt động qua nginx trên chính server. Lỗi 5xx hoặc không có phản hồi được tính là sập. Website chỉ bị đánh dấu sập sau hai lần lỗi liên tiếp. Tab Tên miền của website hiển thị uptime 24 giờ, 7 ngày, 30 ngày và một cột cho mỗi ngày trong 90 ngày gần nhất.

Kiểm tra uptime không đánh thức website đang ngủ: website có PHP đã dừng vì rảnh sẽ không bị kiểm tra, và lượt kiểm tra không được tính là lượt truy cập. Khi RAM dành cho khách đang thiếu, việc kiểm tra tạm dừng; bạn nhận cảnh báo RAM thay vào đó.

Lịch sử tài nguyên. Cứ 5 phút, ZoPanel ghi lại CPU (% của một nhân) và RAM của từng tài khoản. Biểu đồ có giá trị trung bình và đỉnh cho 24 giờ, 7 ngày, 30 ngày hoặc 1 năm.

  • Quản trị viên: vào Tài khoản, chọn Lịch sử tài nguyên trong menu của tài khoản.
  • Khách hàng và đại lý: trang Tài nguyên.

Trang Tối ưu

Trang Tối ưu (menu quản trị) đưa ra gợi ý dựa trên số liệu đo trên chính server này, tính toán tại chỗ:

  • PHP-FPM: tổng số PHP worker được phép có vừa RAM hay không;
  • kích thước buffer pool của MariaDB (khoảng 20% RAM là hợp lý cho server shared hosting);
  • thiếu swap;
  • OPcache đang tắt ở một phiên bản PHP;
  • nén bộ nhớ, kèm lệnh nâng kernel để bật được (xem Hiệu năng và sức chứa);
  • worker_processes của nginx so với số nhân CPU, và tải CPU cao;
  • website WordPress chưa bật page cache;
  • dung lượng đĩa, kèm dự báo khi đã có đủ số liệu 5 ngày.

Một số gợi ý có nút Áp dụng:

  • buffer MariaDB: MariaDB khởi động lại, database tạm gián đoạn vài giây;
  • tạo file swap;
  • nginx worker: nginx tải lại, không gián đoạn;
  • bật page cache cho các website WordPress.

zopanel ctl doctor

Chạy lệnh này đầu tiên khi thấy có gì bất thường. Lệnh chỉ kiểm tra và không thay đổi gì:

zopanel ctl doctor

Doctor kiểm tra:

  • zopanel-agent, zopanel, nginx và mariadb đang chạy;
  • agent và health check của panel phản hồi (mặc định cổng 8888);
  • database của panel còn nguyên vẹn;
  • /, /home và /var còn ít nhất 10% dung lượng trống;
  • RAM khả dụng trên 200 MB;
  • chứng chỉ panel còn hạn trên 14 ngày;
  • đồng hồ đã đồng bộ NTP;
  • kết quả lần cập nhật gần nhất;
  • nhật ký hoạt động không bị sửa.

Mỗi dòng [FAIL] kèm lệnh hoặc trang trong panel để khắc phục. Lệnh trả mã thoát 1 khi phát hiện lỗi, nên có thể dùng trong script.

zopanel ctl support-bundle

zopanel ctl support-bundle

Lệnh tạo file /root/zopanel-support-YYYYMMDD-HHMMSS.tar.gz, chỉ root đọc được. File gồm:

  • báo cáo doctor và phiên bản phần mềm;
  • các unit bị lỗi, mức dùng RAM và đĩa;
  • 500 dòng log gần nhất của zopanel, zopanel-agent, nginx, MariaDB, Postfix, Dovecot và /var/log/nginx/error.log;
  • cấu hình panel, đã loại bỏ mật khẩu, secret, token và khoá.

Log

Nội dung Vị trí
Panel và agent journalctl -u zopanel -u zopanel-agent -n 200
Đăng nhập panel thất bại (fail2ban dùng) /var/log/zopanel/auth.log
Access log và error log của website /var/log/zopanel/sites/<domain>.access.log, <domain>.error.log; hoặc tab Nhật ký của website
Lỗi PHP của một tài khoản ~/logs/php<phiên bản>_errors.log trong thư mục home của tài khoản
Pool PHP-FPM /var/log/zopanel/php/<user>-<phiên bản>.log
nginx /var/log/nginx/error.log
Thao tác trong panel Nhật ký hoạt động

Trong tab Nhật ký của website, mục Chẩn đoán (Chạy chẩn đoán) phân tích lỗi gần đây và gợi ý cách sửa. Xem Xử lý sự cố cho các lỗi thường gặp.


← Fleet và nhiều máy chủ Hiệu năng và sức chứa →