Hướng dẫn cài đặt và cấu hình hệ thống giám sát Zabbix 3.4 trên CentOS

Giới thiệu về Zabbix

Trong môi trường doanh nghiệp hiện đại, phần mềm giám sát hệ thống là một thành phần không thể thiếu, và Zabbix nổi bật như một giải pháp mã nguồn mở hàng đầu, cung cấp khả năng giám sát phân tán mạnh mẽ cho cả hệ thống và mạng. Zabbix được thiết kế để theo dõi nhiều thông số mạng, đảm bảo hoạt động an toàn và ổn định của máy chủ. Nó cũng cung cấp một cơ chế cảnh báo linh hoạt, giúp quản trị viên nhanh chóng xác định và giải quyết các vấn đề phát sinh.

Zabbix hoạt động với hai thành phần chính: Zabbix ServerZabbix Agent (tùy chọn). Zabbix Server thu thập dữ liệu giám sát thông qua nhiều phương pháp như SNMP, Zabbix Agent, ping, và giám sát cổng, có thể chạy trên các nền tảng UNIX/Linux như Linux, Solaris, HP-UX, AIX, FreeBSD, OpenBSD, và macOS.

Zabbix Agent được cài đặt trên các máy chủ mục tiêu cần giám sát. Nhiệm vụ chính của nó là thu thập thông tin phần cứng và dữ liệu liên quan đến hệ điều hành như bộ nhớ, CPU. Agent hỗ trợ nhiều hệ điều hành, bao gồm Linux, Solaris, HP-UX, AIX, FreeBSD, OpenBSD, macOS, và Windows (NT4.0, 2000/2003/XP/Vista).

Zabbix Server có thể giám sát trạng thái dịch vụ từ xa một cách độc lập hoặc phối hợp với Zabbix Agent để chủ động truy vấn dữ liệu (polling) hoặc nhận dữ liệu do Agent gửi (trapping). Ngoài ra, Zabbix Server còn hỗ trợ SNMP (v1, v2), cho phép tích hợp với các công cụ SNMP khác như Net-SNMP.

Các tính năng nổi bật của Zabbix bao gồm:

  • Giám sát toàn diện: Bao gồm hiệu suất máy chủ, thiết bị mạng, cơ sở dữ liệu, và các giao thức phổ biến như FTP.
  • Cảnh báo đa dạng: Hỗ trợ nhiều phương thức cảnh báo và khả năng tạo báo cáo, biểu đồ chi tiết.
  • Tự động phát hiện: Có khả năng tự động tìm kiếm và thêm thiết bị mạng, máy chủ dựa trên các quy tắc cấu hình.
  • Giám sát động: Hỗ trợ tự động phát hiện cấp thấp (low-level discovery) cho các mục giám sát hàng loạt thông qua script.
  • Kiến trúc phân tán: Khả năng quản lý và hiển thị tập trung dữ liệu từ các điểm giám sát phân tán.
  • Mở rộng linh hoạt: Server cung cấp API cho phép tích hợp với các hệ thống khác và phát triển các plugin tùy chỉnh.
  • Thu thập dữ liệu: Kiểm tra tính sẵn sàng và hiệu suất, hỗ trợ SNMP (trapping và polling), IPMI, JMX, SSH, TELNET, cùng các kiểm tra tùy chỉnh với tần suất linh hoạt.
  • Trigger mạnh mẽ: Cho phép định nghĩa ngưỡng vấn đề linh hoạt dựa trên dữ liệu từ cơ sở dữ liệu backend.
  • Hệ thống cảnh báo tùy biến cao: Gửi thông báo với khả năng tùy chỉnh cấp độ cảnh báo, người nhận, và loại phương tiện, hỗ trợ biến macro.
  • Hành động tự động: Bao gồm thực thi lệnh từ xa.
  • Biểu đồ thời gian thực: Dữ liệu giám sát được vẽ trên biểu đồ ngay lập tức.
  • Giám sát Web: Mô phỏng các tương tác người dùng trên website để kiểm tra giá trị trả về và thời gian phản hồi.
  • API chức năng: Dễ dàng tích hợp với các hệ thống bên ngoài, bao gồm ứng dụng di động.

Môi trường cài đặt Zabbix và công tác chuẩn bị

1. Yêu cầu về phần cứng và phần mềm

Dưới đây là một số cấu hình phần cứng tham khảo. Cấu hình cụ thể phụ thuộc vào số lượng Active Item và tần suất polling. Đối với các triển khai quy mô lớn, việc tách cơ sở dữ liệu ra một máy chủ độc lập là rất khuyến nghị.

Tên Nền tảng CPU/Bộ nhớ Cơ sở dữ liệu Số lượng host giám sát
Nhỏ CentOS Ứng dụng ảo hóa MySQL InnoDB 100
Trung bình CentOS 2 CPU cores/2GB MySQL InnoDB 500
Lớn RedHat Enterprise Linux 4 CPU cores/8GB RAID10 MySQL InnoDB hoặc PostgreSQL >1000
Rất lớn RedHat Enterprise Linux 8 CPU cores/16GB RAID10 MySQL InnoDB hoặc PostgreSQL tốc độ cao >10000

Các nền tảng được hỗ trợ:

Với yêu cầu về bảo mật và tính ổn định, UNIX là hệ điều hành ưu việt cho Zabbix. Zabbix đã được thử nghiệm và hoạt động tốt trên các phiên bản sau:

  • Linux
  • IBM AIX
  • FreeBSD
  • NetBSD
  • OpenBSD
  • HP-UX
  • Mac OS X
  • Solaris
  • Windows: Tất cả các phiên bản desktop và server từ Windows 2000 trở lên (chỉ Zabbix agent).

Yêu cầu phần mềm:

Zabbix được xây dựng dựa trên máy chủ web Apache, các công cụ cơ sở dữ liệu hàng đầu và ngôn ngữ kịch bản PHP.

Hệ quản trị cơ sở dữ liệu:

Phần mềm Phiên bản Ghi chú
MySQL 5.0.3 trở lên Sử dụng InnoDB engine.
Oracle 10g trở lên
PostgreSQL 8.1 trở lên Khuyến nghị PostgreSQL 8.3 trở lên để có hiệu suất VACUUM tốt hơn.
SQLite 3.3.5 trở lên Không khuyến nghị cho Zabbix server; chỉ nên dùng cho Zabbix proxy.
IBM DB2 9.7 trở lên Hỗ trợ thử nghiệm.

2. Môi trường thực hành

Môi trường được sử dụng trong hướng dẫn này như sau:

Hệ điều hành Địa chỉ IP Tên máy chủ Phần mềm cài đặt Phiên bản Zabbix Phiên bản MySQL
CentOS 7.3 192.68.0.20 zabbix Zabbix-server Zabbix 3.4.10 MySQL 5.7.22
CentOS 6.5 192.168.0.157 Test02 zabbix-agent zabbix-agent 3.4.10 /
Windows Server 2008 R2 192.168.0.10 SERVERDC zabbix-agent-wind zabbix-agent 3.0.4 /

3. Bắt đầu cài đặt Zabbix Server

3.1) Cài đặt kho lưu trữ Zabbix Yum trên máy chủ giám sát

Để bắt đầu, bạn cần thêm kho lưu trữ Zabbix vào hệ thống:

[root@zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

3.2) Cài đặt các gói Zabbix Server và Zabbix Agent

Sử dụng trình quản lý gói yum để cài đặt các thành phần Zabbix cần thiết:

[root@zabbix ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

3.3) Tải và cài đặt kho lưu trữ MySQL

Nếu chưa có MySQL, bạn cần thêm kho lưu trữ MySQL Community:

[root@zabbix ~]# rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

3.4) Kiểm tra các kho lưu trữ MySQL khả dụng

Xác minh kho lưu trữ MySQL đã được thêm thành công:

[root@zabbix ~]# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64   MySQL Connectors Community              51
mysql-tools-community/x86_64        MySQL Tools Community                   63
mysql57-community/x86_64            MySQL 5.7 Community Server              267

3.5) Cài đặt MySQL Server

Tiến hành cài đặt máy chủ MySQL:

[root@zabbix ~]# yum -y install mysql-community-server

3.6) Khởi động dịch vụ MySQL và cấu hình tự động khởi động

Sau khi cài đặt, khởi động MySQL và đảm bảo nó sẽ tự động chạy khi khởi động hệ thống:

[root@zabbix ~]# systemctl start mysqld
[root@zabbix ~]# systemctl enable mysqld

3.7) Truy cập MySQL và thay đổi mật khẩu root

Lấy mật khẩu tạm thời từ log MySQL, sau đó đăng nhập và thay đổi mật khẩu:

[root@zabbix ~]# cat /var/log/mysqld.log | grep password
[root@zabbix ~]# mysql -uroot -pRir.*sJUX6M* # Sử dụng mật khẩu tạm thời tìm được
mysql> ALTER USER USER() IDENTIFIED BY 'Pass123!';

Nếu bạn muốn sử dụng mật khẩu đơn giản hơn, trước tiên hãy thay đổi chính sách xác thực mật khẩu toàn cục:

mysql> set global validate_password_policy=0;
mysql> ALTER USER USER() IDENTIFIED BY '12345678';

Nếu không thay đổi chính sách, MySQL sẽ yêu cầu mật khẩu phức tạp.

3.8) Tạo cơ sở dữ liệu và người dùng Zabbix, sau đó cấp quyền

Tạo cơ sở dữ liệu zabbix và người dùng zabbix với mật khẩu và cấp các quyền cần thiết:

mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (10.03 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Pass123!';
Query OK, 0 rows affected, 1 warning (0.00 sec)

3.9) Nhập lược đồ cơ sở dữ liệu và dữ liệu ban đầu

Các gói Zabbix cung cấp một tập tin SQL chứa cấu trúc và dữ liệu ban đầu. Bạn cần giải nén và nhập nó vào cơ sở dữ liệu Zabbix vừa tạo:

[root@zabbix ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.10/
[root@zabbix zabbix-server-mysql-3.4.10 ~]# zcat create.sql.gz | mysql -uzabbix -pPass123! -D zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.

3.10) Xác minh dữ liệu đã được nhập

Đăng nhập vào MySQL và kiểm tra các bảng trong cơ sở dữ liệu zabbix:

mysql> show tables from zabbix;

Hoặc kiểm tra số lượng bảng:

mysql> select count(*) tables,table_schema from information_schema.tables where table_schema ="zabbix";

4. Cấu hình và khởi động Zabbix Server

4.1) Sửa đổi tệp cấu hình Zabbix Server

Bạn cần chỉnh sửa tệp cấu hình zabbix_server.conf để Zabbix Server biết cách kết nối với cơ sở dữ liệu MySQL. Hãy sao lưu tệp cấu hình trước khi chỉnh sửa.

[root@zabbix ~]# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf

Chỉnh sửa hoặc thêm các dòng sau:

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Pass123!
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

4.2) Cấp quyền cho thư mục cấu hình Zabbix

Đảm bảo người dùng Zabbix có quyền truy cập vào các tệp cấu hình:

[root@zabbix ~]# chown -R zabbix:zabbix /etc/zabbix/
[root@zabbix ~]# chmod -R 755 /etc/zabbix/

4.3) Khởi động dịch vụ Zabbix Server

Khởi động Zabbix Server và cấu hình nó tự động chạy khi khởi động hệ thống:

[root@zabbix ~]# systemctl start zabbix-server
[root@zabbix ~]# systemctl enable zabbix-server

Lưu ý quan trọng: Đôi khi, Zabbix Server có thể không khởi động thành công với lỗi "Job for zabbix-server.service failed". Một nguyên nhân phổ biến trên một số phiên bản CentOS 7 là do xung đột với phiên bản cao của gnutls (ví dụ: gnutls-3.3). Để khắc phục, bạn có thể thực hiện các bước sau:

  1. Gỡ bỏ phiên bản gnutls hiện tại:
    [root@zabbix ~]# rpm -e gnutls-3.3.24-1.el7.x86_64 --nodeps
    
  2. Tải và cài đặt phiên bản gnutls 3.1:
    [root@zabbix ~]# rpm -Uvh --force gnutls-3.1.18-8.el7.x86_64.rpm # Tải phiên bản này từ kho lưu trữ phù hợp
    

5. Cấu hình PHP cho giao diện Web của Zabbix

5.1) Sửa đổi tệp cấu hình Apache cho Zabbix

Tệp cấu hình Apache cho giao diện Zabbix thường nằm tại /etc/httpd/conf.d/zabbix.conf. Bạn cần đặt múi giờ PHP phù hợp.

[root@zabbix ~]# vim /etc/httpd/conf.d/zabbix.conf

Tìm thẻ <IfModule mod_php5.c> và thêm dòng sau:

php_value date.timezone Asia/Shanghai

(Hoặc thay Asia/Shanghai bằng múi giờ phù hợp với vị trí của bạn, ví dụ Asia/Ho_Chi_Minh).

5.2) Khởi động dịch vụ Apache và cấu hình tự động khởi động

Khởi động máy chủ web Apache để giao diện Zabbix có thể truy cập được và thiết lập tự động khởi động:

[root@zabbix ~]# systemctl start httpd
[root@zabbix ~]# systemctl enable httpd

Truy cập giao diện Web và thêm máy chủ Linux

1. Đăng nhập giao diện Web của Zabbix

Mở trình duyệt và truy cập địa chỉ IP của máy chủ Zabbix: http://192.168.0.20/zabbix/. (Trong trường hợp gặp lỗi quyền truy cập, bạn có thể thử cấp quyền chmod -R 777 /etc/zabbix/web/, nhưng đây là giải pháp tạm thời và không được khuyến nghị trong môi trường sản phẩm). Bạn sẽ được đưa đến màn hình đăng nhập. Tên người dùng mặc định là: Admin Mật khẩu mặc định là: zabbix

2. Thêm một máy chủ Linux (Agent)

Ở đây, chúng ta sẽ thêm một máy chủ Linux có IP 192.168.0.157 chạy CentOS 6.5.

2.1) Cài đặt kho lưu trữ Zabbix Agent trên CentOS 6

Trên máy chủ client (Test02):

[root@Test02 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.rpm

2.2) Cài đặt phần mềm Zabbix Agent

[root@Test02 ~]# yum -y install zabbix-agent

2.3) Sửa đổi tệp cấu hình Zabbix Agent

Bạn cần chỉnh sửa tệp /etc/zabbix/zabbix_agentd.conf để chỉ định Zabbix Server và tên máy chủ client:

[root@Test02 ~]# grep -v '^$' /etc/zabbix/zabbix_agentd.conf |grep -v '^#'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.0.20           # Địa chỉ IP của Zabbix Server
ServerActive=192.168.0.20:10050 # Địa chỉ IP và cổng của Zabbix Server (dành cho chế độ active check)
Hostname=Test02               # Tên máy chủ (phải khớp với tên trên Zabbix Server)
Include=/etc/zabbix/zabbix_agentd.d/*.conf

2.4) Cấp quyền cho tệp cấu hình Agent

[root@Test02 ~]# chmod 775 /etc/zabbix/zabbix_agentd.conf

2.5) Khởi động dịch vụ Agent và kiểm tra trạng thái

[root@Test02 ~]# /etc/init.d/zabbix-agent start
[root@Test02 ~]# netstat -lntup |grep zabbix_agent

3. Thêm máy chủ trên giao diện Web Zabbix

3.1) Điều hướng đến "Cấu hình" -> "Máy chủ" -> "Tạo máy chủ"

3.2) Nhập thông tin chi tiết máy chủ

  • Tên máy chủ: Test02 (Phải khớp với Hostname trong cấu hình Agent)
  • Tên hiển thị: Test02 Linux Server (Tên hiển thị trong giao diện Zabbix)
  • Nhóm: Linux Servers (Chọn hoặc tạo nhóm phù hợp)
  • Giao diện: Thêm giao diện "Agent", nhập địa chỉ IP: 192.168.0.157, cổng: 10050.

3.3) Gán các mẫu giám sát (Template)

Chọn tab "Mẫu" và thêm các mẫu phù hợp, ví dụ: Template OS Linux.

Sau khi hoàn tất, nhấp vào "Thêm". Chờ vài phút, biểu tượng Zabbix sẽ chuyển sang màu xanh lá cây, xác nhận rằng máy chủ đã được thêm và giám sát thành công.

Thêm máy chủ Windows vào hệ thống giám sát

Tiến hành thêm một máy chủ Windows (ví dụ: máy chủ domain controller có IP 192.168.0.10) để giám sát.

1. Tải và cài đặt Zabbix Agent cho Windows

Tải Zabbix Agent cho Windows từ trang web chính thức của Zabbix (phiên bản 3.4 hoặc gần đó, hoặc phiên bản 3.0.4 như trong ví dụ gốc). Sau khi tải, giải nén tệp vào một thư mục trên ổ đĩa D: (ví dụ: D:\zabbix_agent). Thư mục này thường chứa bin (với win32win64) và conf.

2. Sửa đổi tệp cấu hình Agent cho Windows

Điều hướng đến thư mục conf và sửa đổi tệp zabbix_agentd.win.conf (hoặc tương tự):

LogFile=D:\zabbix_agentd.log
Server=192.168.0.20             # Địa chỉ IP của Zabbix Server
ServerActive=192.168.0.20:10051 # Địa chỉ IP và cổng của Zabbix Server (dành cho chế độ active check)
Hostname=SERVERDC               # Tên máy chủ Windows (phải khớp với tên trên Zabbix Server)

3. Cài đặt và khởi động dịch vụ Zabbix Agent trên Windows

Mở cửa sổ Command Prompt (CMD) với quyền Administrator. Sử dụng các lệnh sau để cài đặt và khởi động Agent:

Lệnh cài đặt:

D:\zabbix_agent\bin\win64\zabbix_agentd.exe -c D:\zabbix_agent\conf\zabbix_agentd.win.conf -i
zabbix_agentd.exe [252]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [252]: event source [Zabbix Agent] installed successfully

Lệnh khởi động:

D:\zabbix_agent\bin\win64\zabbix_agentd.exe -c D:\zabbix_agent\conf\zabbix_agentd.win.conf -s
zabbix_agentd.exe [4796]: service [Zabbix Agent] started successfully

(Các tham số khác: -x để dừng, -d để gỡ cài đặt).

4. Cấu hình tường lửa Windows

Trên máy chủ Windows, bạn cần mở cổng 10050 để Zabbix Server có thể giao tiếp với Agent.

  1. Mở "Windows Firewall with Advanced Security".
  2. Chọn "Inbound Rules" và "New Rule...".
  3. Chọn loại quy tắc "Port".
  4. Chọn giao thức "TCP" và nhập "10050" vào "Specific local ports".
  5. Chọn "Allow the connection".
  6. Chọn các hồ sơ mạng phù hợp (Domain, Private, Public).
  7. Đặt tên cho quy tắc (ví dụ: "Zabbix Agent Inbound") và mô tả.

5. Thêm máy chủ Windows trên giao diện Web Zabbix

5.1) Điều hướng đến "Cấu hình" -> "Máy chủ" -> "Tạo máy chủ"

5.2) Nhập thông tin chi tiết máy chủ

  • Tên máy chủ: SERVERDC (Phải khớp với Hostname trong cấu hình Agent)
  • Tên hiển thị: Windows DC Server (Tên hiển thị trong giao diện Zabbix)
  • Nhóm: Windows Servers (Chọn hoặc tạo nhóm phù hợp)
  • Giao diện: Thêm giao diện "Agent", nhập địa chỉ IP: 192.168.0.10, cổng: 10050.

5.3) Gán các mẫu giám sát (Template)

Chọn tab "Mẫu" và thêm các mẫu phù hợp, ví dụ: Template OS Windows.

Sau khi hoàn tất, nhấp vào "Thêm". Chờ vài phút, biểu tượng Zabbix sẽ chuyển sang màu xanh lá cây, xác nhận rằng máy chủ Windows đã được thêm và giám sát thành công.

Thẻ: zabbix Zabbix 3.4 monitoring CentOS mysql

Đăng vào ngày 16 tháng 7 lúc 08:29