Hướng dẫn cài đặt Zabbix 7 trên CentOS Stream 9: Giám sát hạ tầng thực chiến

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

Nỗi ám ảnh mang tên “Server sập lúc rạng sáng”

Kịch bản này chắc hẳn không lạ với dân SysAdmin: 2 giờ sáng, điện thoại rung liên hồi. Hệ thống sập, khách hàng phàn nàn, và bạn mất cả tiếng đồng hồ chỉ để phát hiện ổ cứng bị đầy (disk full). Một lỗi cơ bản nhưng lại gây thiệt hại lớn nếu không được cảnh báo kịp thời.

Sau khi CentOS 8 dừng hỗ trợ (EOL), mình đã chuyển hướng sang CentOS Stream 9 và AlmaLinux. Tin vui là Zabbix 7 (bản LTS mới nhất) chạy cực kỳ mượt mà trên nền tảng này. Với khả năng xử lý hàng nghìn giá trị mỗi giây (NVPS), Zabbix 7 không chỉ giúp bạn theo dõi tài nguyên mà còn là “tai mắt” tin cậy để bạn yên tâm ngủ ngon hơn.

Quick Start: Triển khai nhanh trong 5 phút

Nếu bạn đã quen với dòng lệnh và cần hệ thống chạy ngay, hãy thực thi chuỗi lệnh dưới đây. Lưu ý: Hãy chạy với quyền root hoặc sudo.

# 1. Thêm repository Zabbix 7 chính thức
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/release/centos/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm
dnf clean all

# 2. Cài đặt các gói thành phần cần thiết
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2 -y

# 3. Cài đặt và kích hoạt MariaDB
dnf install mariadb-server -y
systemctl enable --now mariadb
mysql_secure_installation

Chi tiết các bước cấu hình hệ thống

Bước 1: Khởi tạo Database chuyên dụng

Zabbix cần một cơ sở dữ liệu mạnh mẽ để lưu trữ hàng triệu bản ghi metric. Mình chọn MariaDB vì tính ổn định cao trên hệ sinh thái RHEL. Lưu ý quan trọng: Zabbix yêu cầu collation utf8mb4_bin để đảm bảo phân biệt chữ hoa, chữ thường trong các item giám sát.

mysql -u root -p

create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'MatKhauCuaBan';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

Tiếp theo, hãy import dữ liệu mẫu. Quá trình này thường mất khoảng 30-60 giây tùy vào tốc độ đọc ghi của ổ cứng SSD:

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

Sau khi hoàn tất, bạn đừng quên tắt quyền tạo function để bảo mật hệ thống:

mysql -u root -p
set global log_bin_trust_function_creators = 0;
quit;

Bước 2: Cấu hình Zabbix Server

Bây giờ, chúng ta cần khai báo thông tin database cho Zabbix Server. Hãy mở file cấu hình:

vi /etc/zabbix/zabbix_server.conf

Tìm đến dòng DBPassword= và điền mật khẩu bạn đã tạo ở bước trước. Các thông số khác như DBUser mặc định đã là zabbix nên bạn không cần thay đổi.

Bước 3: Cài đặt Nginx làm Web Server

Thay vì Apache cồng kềnh, mình ưu tiên Nginx để tiết kiệm RAM. Zabbix 7 cung cấp sẵn file cấu hình mẫu cho Nginx, bạn chỉ cần điều chỉnh một chút:

vi /etc/nginx/conf.d/zabbix.conf

Hãy bỏ comment dòng listen 80; và thay đổi server_name thành địa chỉ IP hoặc domain của bạn. Điều này giúp Nginx biết chính xác nơi tiếp nhận yêu cầu truy cập.

Vượt qua rào cản SELinux và Firewall

Nhiều bạn thường chọn cách tắt hoàn toàn SELinux. Tuy nhiên, trong môi trường Production, đây là rủi ro bảo mật lớn. Thay vào đó, hãy cấp quyền cụ thể cho Zabbix:

# Cho phép Nginx và Zabbix kết nối mạng nội bộ
setsebool -P httpd_can_network_connect 1
setsebool -P zabbix_can_network 1

# Mở các cổng dịch vụ cần thiết trên Firewall
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port={10050,10051}/tcp
firewall-cmd --reload

Cuối cùng, khởi động toàn bộ dịch vụ để áp dụng thay đổi:

systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm

Thiết lập cảnh báo Email tự động

Để không phải ngồi canh dashboard cả ngày, bạn cần cấu hình SMTP. Hãy truy cập giao diện web tại http://your-ip (User: Admin / Pass: zabbix).

  1. Vào mục Alerts → Media types và chọn Email.
  2. Điền thông số SMTP (ví dụ: smtp.gmail.com, port 587).
  3. Tại tab Users, hãy thêm địa chỉ email cá nhân vào User Admin để nhận tin nhắn khi có sự cố xảy ra.

Tại sao nên dùng Zabbix Agent 2?

Zabbix Agent 2 là một bước tiến lớn khi được viết hoàn toàn bằng ngôn ngữ Go. Nó hỗ trợ thu thập dữ liệu song song (multi-threading), giúp giảm tải cho server mục tiêu đáng kể so với bản cũ. Nếu bạn đang giám sát các ứng dụng hiện đại như Docker hay Kubernetes, Agent 2 là lựa chọn bắt buộc.

Kinh nghiệm tối ưu cho hệ thống lớn

  • Quản lý User DB: Tuyệt đối không dùng user root cho database của Zabbix.
  • Tinh chỉnh PHP: Với hệ thống trên 100 node, hãy tăng memory_limit lên 512M trong file /etc/php-fpm.d/zabbix.conf.
  • Sử dụng Template: Zabbix 7 có thư viện template rất phong phú. Đừng tốn công tạo item thủ công khi đã có sẵn các mẫu chuẩn cho Cisco, Windows hay Linux.
  • Lưu ý về Disk I/O: Nếu số lượng thiết bị tăng lên trên 500, hãy cân nhắc sử dụng TimescaleDB để tối ưu hóa việc truy vấn dữ liệu lịch sử.

Việc làm chủ Zabbix 7 trên CentOS Stream 9 giúp bạn chủ động hoàn toàn với hạ tầng của mình. Từ kinh nghiệm của mình, hệ thống này giúp giảm tới 80% thời gian xử lý sự cố thụ động. Nếu gặp lỗi “Zabbix server is not running”, hãy kiểm tra ngay file log tại /var/log/zabbix/zabbix_server.log để xử lý kịp thời.

Share: