Triển khai Hệ thống Giám sát Zabbix từ Mã nguồn trên Linux

Zabbix là một nền tảng giám sát mã nguồn mở mạnh mẽ, cho phép thu thập dữ liệu từ nhiều nguồn khác nhau, theo dõi hiệu suất, phát hiện sự cố và gửi cảnh báo. Bài viết này hướng dẫn chi tiết quy trình cài đặt Zabbix Server và Agent từ mã nguồn trên các hệ điều hành dựa trên RHEL (như CentOS).

1. Chuẩn bị Môi trường và Cài đặt các Gói phụ thuộc

Để hoạt động, Zabbix Server yêu cầu một môi trường LAMP (Linux, Apache, MySQL/MariaDB, PHP) và nhiều thư viện hỗ trợ. Nếu có nhu cầu giám sát các ứng dụng dựa trên Java (ví dụ: Tomcat qua JMX), việc cài đặt Java Development Kit (JDK) là cần thiết.

1.1. Cài đặt Máy chủ Web Apache

Apache HTTP Server là thành phần máy chủ web cho giao diện Zabbix. Sử dụng lệnh sau để cài đặt:

sudo yum -y install httpd

1.2. Cài đặt Cơ sở dữ liệu MariaDB

MariaDB là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, thường được sử dụng thay thế cho MySQL. Cài đặt máy chủ MariaDB và các gói phát triển cần thiết:

sudo yum -y install mariadb-server mariadb mariadb-devel

Sau khi cài đặt, khởi động dịch vụ MariaDB và cấu hình để tự động chạy khi hệ thống khởi động. Đồng thời, chạy công cụ bảo mật để thiết lập mật khẩu root và các tùy chọn bảo mật cơ bản:

sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation

1.3. Cài đặt PHP và các Mô-đun mở rộng

Giao diện web của Zabbix được phát triển bằng PHP. Cài đặt PHP cùng với các mô-đun mở rộng bắt buộc để đảm bảo Zabbix hoạt động ổn định:

sudo yum -y install php php-mbstring php-mysqlnd php-bcmath php-gd php-xmlrpc php-ldap php-xml

1.4. Cài đặt Công cụ Biên dịch và Thư viện hỗ trợ

Quá trình biên dịch Zabbix từ mã nguồn yêu cầu các công cụ phát triển và một số thư viện hệ thống. Cài đặt chúng bằng lệnh sau:

sudo yum -y install gcc gcc-c++ make
sudo yum -y install libevent libevent-devel net-snmp net-snmp-devel libxml2 libxml2-devel curl-devel

1.5. Cài đặt Java Development Kit (JDK) (Tùy chọn)

Nếu hệ thống Zabbix của bạn sẽ giám sát các ứng dụng Java thông qua JMX, bạn cần cài đặt JDK. Ví dụ, để cài đặt OpenJDK 8:

sudo yum -y install java-1.8.0-openjdk-devel

Xác minh phiên bản Java đã được cài đặt thành công:

java -version

2. Biên dịch và Cài đặt Zabbix từ Mã nguồn

Sau khi chuẩn bị đầy đủ các gói phụ thuộc, bạn có thể tiến hành biên dịch Zabbix.

2.1. Tải về và Giải nén Mã nguồn Zabbix

Giả sử bạn đã tải tệp mã nguồn Zabbix (ví dụ: zabbix-6.0.x.tar.gz) và đặt trong thư mục làm việc. Thực hiện giải nén và di chuyển vào thư mục:

tar -xf zabbix-6.0.x.tar.gz
cd zabbix-6.0.x

(Lưu ý: Thay thế 6.0.x bằng phiên bản Zabbix thực tế bạn đang sử dụng.)

2.2. Biên dịch Zabbix Server và Agent

Sử dụng lệnh ./configure để cấu hình quá trình biên dịch với các thành phần mong muốn. Các tùy chọn điển hình bao gồm hỗ trợ cơ sở dữ liệu MySQL, IPv6, SNMP, thư viện cURL, libxml2 và cổng Java gateway:

./configure --prefix=/opt/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java \
&& make -j$(nproc) \
&& sudo make install
  • --prefix=/opt/zabbix: Chỉ định thư mục cài đặt Zabbix.
  • --enable-server: Kích hoạt thành phần Zabbix Server.
  • --enable-agent: Kích hoạt thành phần Zabbix Agent (để giám sát chính máy chủ cài đặt).
  • --with-mysql: Bật hỗ trợ cho cơ sở dữ liệu MySQL/MariaDB.
  • --enable-java: Bật cổng Java gateway, cần thiết cho giám sát JMX.
  • -j$(nproc): Tối ưu hóa thời gian biên dịch bằng cách sử dụng tất cả các lõi CPU có sẵn.

Nếu bạn chỉ muốn cài đặt Zabbix Agent trên một máy chủ bị giám sát, bạn có thể bỏ qua tùy chọn --enable-server:

./configure --prefix=/opt/zabbix --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java \
&& make -j$(nproc) \
&& sudo make install

3. Cấu hình Cơ sở dữ liệu cho Zabbix

3.1. Tạo Cơ sở dữ liệu và Người dùng Zabbix

Đăng nhập vào MariaDB với quyền root và tạo một cơ sở dữ liệu riêng biệt cùng với người dùng được ủy quyền cho Zabbix. Hãy đảm bảo đặt mật khẩu mạnh và an toàn:

mysql -u root -p
-- Nhập mật khẩu root của MariaDB khi được yêu cầu

CREATE DATABASE zabbix_db CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix_user'@'localhost' IDENTIFIED BY 'MatKhauBaoMat123!';
GRANT ALL PRIVILEGES ON zabbix_db.* TO 'zabbix_user'@'localhost';
FLUSH PRIVILEGES;
quit;

(Hãy thay thế zabbix_db, zabbix_user và MatKhauBaoMat123! bằng thông tin cấu hình của bạn.)

3.2. Nhập Schema Cơ sở dữ liệu Zabbix

Điều hướng đến thư mục mã nguồn Zabbix đã giải nén và nhập các tệp schema vào cơ sở dữ liệu mới tạo. Đảm bảo tuân thủ đúng thứ tự nhập:

cd ~/zabbix-6.0.x/database/mysql/
mysql -u zabbix_user -p zabbix_db < schema.sql
mysql -u zabbix_user -p zabbix_db < images.sql
mysql -u zabbix_user -p zabbix_db < data.sql

(Nhập mật khẩu zabbix_user khi được yêu cầu.)

4. Cấu hình Hệ thống cho Zabbix

4.1. Tạo Người dùng và Thư mục Zabbix

Tạo một người dùng hệ thống đặc quyền thấp (không đăng nhập) và các thư mục cần thiết để Zabbix Server và Agent chạy một cách an toàn:

sudo useradd --system --no-create-home -s /sbin/nologin zabbix
sudo mkdir -p /opt/zabbix/logs
sudo chown -R zabbix:zabbix /opt/zabbix

4.2. Cấu hình Zabbix Server

Tệp cấu hình chính của Zabbix Server là zabbix_server.conf. Sao lưu tệp gốc và chỉnh sửa:

cd /opt/zabbix/etc
sudo cp zabbix_server.conf{,.bak}
sudo vim zabbix_server.conf

Tìm và cập nhật các tham số sau để Zabbix Server có thể kết nối với cơ sở dữ liệu của nó và ghi nhật ký:

LogFile=/opt/zabbix/logs/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix_db
DBUser=zabbix_user
DBPassword=MatKhauBaoMat123!
# Nếu đường dẫn MySQL socket khác /tmp/mysql.sock, hãy chỉ định chính xác:
# DBSocket=/var/lib/mysql/mysql.sock

4.3. Cấu hình Zabbix Agent

Tệp cấu hình cho Zabbix Agent là zabbix_agentd.conf. Sao lưu tệp gốc và chỉnh sửa:

sudo cp zabbix_agentd.conf{,.bak}
sudo vim zabbix_agentd.conf

Cập nhật các tham số sau để Agent biết Zabbix Server nào sẽ gửi dữ liệu và tên máy chủ của nó:

PidFile=/tmp/zabbix_agentd.pid
LogFile=/opt/zabbix/logs/zabbix_agentd.log
Server=127.0.0.1,DIA_CHI_IP_SERVER_ZABBIX # Địa chỉ IP của Zabbix Server.
ServerActive=127.0.0.1,DIA_CHI_IP_SERVER_ZABBIX # Địa chỉ Zabbix Server cho các kiểm tra chủ động.
Hostname=TenMayChuCuaBan # Tên máy chủ (phải khớp với tên được cấu hình trong giao diện web Zabbix).

(Thay thế DIA_CHI_IP_SERVER_ZABBIX và TenMayChuCuaBan bằng thông tin phù hợp với môi trường của bạn.)

4.4. Khởi động các Dịch vụ Zabbix

Sau khi hoàn tất cấu hình, khởi động Zabbix Server và Agent:

sudo /opt/zabbix/sbin/zabbix_server
sudo /opt/zabbix/sbin/zabbix_agentd

Để xác minh rằng các dịch vụ đang lắng nghe trên các cổng mặc định, sử dụng lệnh netstat:

netstat -lntp | grep -E '10050|10051'

Zabbix Server thường lắng nghe trên cổng 10051, trong khi Zabbix Agent lắng nghe trên cổng 10050.

5. Cấu hình Giao diện Web Zabbix

5.1. Triển khai Frontend Zabbix

Sao chép các tệp giao diện web Zabbix vào thư mục gốc của Apache và thiết lập quyền sở hữu, phân quyền phù hợp:

sudo cp -r ~/zabbix-6.0.x/frontends/php /var/www/html/zabbix
sudo chown -R apache:apache /var/www/html/zabbix
sudo find /var/www/html/zabbix -type d -exec chmod 755 {} \;
sudo find /var/www/html/zabbix -type f -exec chmod 644 {} \;

5.2. Điều chỉnh Cấu hình PHP

Chỉnh sửa tệp php.ini để đáp ứng các yêu cầu về thời gian thực thi, giới hạn bộ nhớ và các mô-đun mở rộng của Zabbix. Điều này quan trọng cho hiệu suất và khả năng hoạt động của giao diện web:

sudo vim /etc/php.ini

Cập nhật hoặc thêm các giá trị sau:

date.timezone = Asia/Ho_Chi_Minh
max_execution_time = 300
max_input_time = 300
post_max_size = 32M
memory_limit = 128M
# Đảm bảo các extension sau đã được bật hoặc thêm vào nếu cần:
extension=bcmath
extension=gd
extension=mysqlnd # hoặc mysqli tùy thuộc vào phiên bản PHP

Sau khi thay đổi php.ini, khởi động lại dịch vụ Apache để áp dụng các cấu hình mới:

sudo systemctl restart httpd

6. Hoàn tất Cài đặt qua Giao diện Web

Mở trình duyệt web và truy cập vào địa chỉ http://DIA_CHI_IP_MAY_CHU_CUA_BAN/zabbix. Trình cài đặt web của Zabbix sẽ hướng dẫn bạn qua các bước kiểm tra yêu cầu hệ thống, cấu hình kết nối cơ sở dữ liệu và tạo người dùng quản trị để hoàn tất quá trình cài đặt.

Khắc phục sự cố: Lỗi quyền truy cập "Permission Denied"

Nếu bạn gặp thông báo lỗi "You don't have permission to access /zabbix/ on this server." hoặc các vấn đề tương tự liên quan đến quyền truy cập, nguyên nhân phổ biến có thể là do SELinux. Bạn có thể tạm thời vô hiệu hóa SELinux để kiểm tra:

sudo setenforce 0

Để khắc phục triệt để và an toàn hơn, bạn nên cấu hình các chính sách SELinux phù hợp thay vì vô hiệu hóa hoàn toàn.

Thẻ: zabbix server monitoring linux CentOS mariadb

Đăng vào ngày 29 tháng 9 lúc 07:41