Zabbix là hệ thống giám sát mã nguồn mở cấp doanh nghiệp. Hiện tại, Zabbix là một trong những hệ thống giám sát miễn phí phổ biến và mạnh mẽ nhất. Nhờ cài đặt và cấu hình đơn giản, Zabbix có thể dùng để giám sát hạ tầng lớn với hàng trăm host, cũng như cấu hình nhỏ. Trong bài viết này, chúng tôi sẽ chỉ cách cài đặt và cấu hình các tính năng cơ bản của Zabbix server 5.0 với giao diện web trên Linux Ubuntu và CentOS, cũng như cách cài đặt Zabbix agent trên máy chủ chạy Windows hoặc Linux và thêm host mới để giám sát.
Bạn có thể thấy giao diện dashboard Zabbix server trên ảnh chụp màn hình dưới đây.

Zabbix đơn giản, dễ cấu hình được viết bằng C (một server, một proxy và một agent) và PHP (frontend). Zabbix Server và Zabbix Proxy chỉ hoạt động trên hệ thống Linux. Zabbix agent có thể cài đặt trên nhiều hệ điều hành và nền tảng được hỗ trợ.
Cài đặt Zabbix server bao gồm:
- Binary zabbix_server (thường chạy như một dịch vụ);
- Cơ sở dữ liệu MySQL/MariaDB/PostgreSQL;
- Máy chủ web Apache2/Nginx với trình xử lý PHP;
- Tệp trang frontend (.php, .js, .css, v.v.).
Thông thường, sơ đồ hoạt động như sau:
- Zabbix agent gửi dữ liệu đến server;
- Zabbix server nhận và xử lý dữ liệu;
- Nếu dữ liệu nhận được đáp ứng điều kiện chỉ định, trigger được kích hoạt;
- Trigger kích hoạt cho thấy có vấn đề. Thông báo xuất hiện trong frontend (trên trang web), và tùy thuộc vào cấu hình, thông báo email được gửi hoặc một số hành động được thực hiện (ví dụ: khởi động lại dịch vụ được giám sát).
Zabbix có thể làm việc với tất cả các giao thức đã biết. Nhờ khả năng sử dụng script bên ngoài, Zabbix có thể thực thi và nhận dữ liệu từ bất kỳ script/thực thi nào.
Cách cài đặt Zabbix Server trên Linux (Ubuntu, CentOS)?
Trong hướng dẫn này, chúng tôi sẽ chỉ cách cài đặt Zabbix Server trên Linux (Ubuntu Server 18.4 và CentOS 8) bằng trình quản lý gói.
Đi đến trang tải xuống https://www.zabbix.com/download và chọn kho lưu trữ phù hợp với bản phân phối Linux của bạn. Có sẵn gói cho tất cả các bản phân phối Linux phổ biến.
Ví dụ, để cài đặt Zabbix trên Ubuntu 18.04, chọn lần lượt:
Zabbix Version (5.0 LTS) → OS Distribution (Ubuntu) → OS Version (18.04 Bionic) → Database (MySQL) → Web server (Nginx or Apache).

Tải xuống và thêm kho lưu trữ:
# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+bionic_all.deb
# dpkg -i zabbix-release_5.0-1+bionic_all.deb
# apt update
Sau đó bạn có thể cài đặt các gói cần thiết:
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent

Để cài đặt Zabbix trên CentOS 8/RHEL 8, kết nối kho lưu trữ với phiên bản Zabbix mới nhất (bạn có thể cài đặt Zabbix từ nhánh 4.0/5.0 LTS hoặc Zabbix 5.2 mới nhất):
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
Giả sử nginx, MySQL/MariaDB, php và php-fpm đã được cài đặt trên server. Sử dụng trình quản lý gói dnf (yum) để cài đặt Zabbix Server và agent:
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent
Sau đó tạo cơ sở dữ liệu cho Zabbix trong MySQL (bạn có thể dùng PostgreSQL thay vì MySQL, chỉ cần thay 'mysql' bằng 'pgsql' trong các lệnh trước).
Tạo database và cấp quyền cho tài khoản người dùng, dưới tài khoản đó Zabbix sẽ truy cập DB:
mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'ZabbixP@$$w0rd';
mysql> quit;
Nhập cơ sở dữ liệu Zabbix. Nhập mật khẩu bạn chỉ định khi tạo người dùng.
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix
Chỉnh sửa /etc/zabbix/zabbix_server.conf, chỉ định mật khẩu của người dùng bạn đã tạo.
DBPassword=Zabbix_User_Password
Vì trong trường hợp của tôi nginx được dùng làm web server, hãy chỉnh nginx.conf bằng cách bỏ comment các dòng sau:
# listen 80; # server_name example.com;
Xóa # và thay example.com bằng hostname Zabbix server. Trong trường hợp của tôi là test.zabbix.local.
Đối với Apache, chỉnh sửa /etc/httpd/conf.d/zabbix.conf.
Đặt múi giờ trong PHP. Bỏ comment dòng sau trong /etc/zabbix/php-fpm.conf:
php_value[date.timezone] = Canada/Pacific
Đảm bảo thời gian trên Zabbix server của bạn được đồng bộ với nguồn NTP tin cậy.
Bạn cũng có thể đặt các tham số PHP này trong /etc/php.ini:
memory_limit 128M upload_max_filesize 8M post_max_size 16M max_execution_time 300 max_input_time 300 max_input_vars 10000
Thêm dịch vụ zabbix-server vào khởi động và chạy nó:
# systemctl enable zabbix-server zabbix-agent nginx php7.2-fpm
# systemctl restart zabbix-server zabbix-agent nginx php7.2-fpm
Cấu hình giao diện web Zabbix
Bây giờ bạn phải cấu hình Zabbix frontend (giao diện web). Mở URL Zabbix server đã chỉ định trước đó trong trình duyệt. Trong trường hợp của tôi, là test.zabbix.local (hoặc domain bạn đã chỉ định. Nhớ đăng ký nó trong file hosts hoặc trên DNS server). Đảm bảo OK hiển thị bên cạnh tất cả yêu cầu của trình cài đặt.

Chỉ định tham số kết nối database và thông tin đăng nhập để kết nối đến DB. Sử dụng username và password tạo trước đó.

Chỉ định tên Zabbix server của bạn. Tôi khuyên nên giữ cổng mặc định – TCP 10051.
Theo mặc định, Zabbix sử dụng hai cổng mạng:
- TCP 10050 — cổng agent thụ động, Zabbix server dùng để polling client;;
- TCP 10051 — cổng Zabbix server nhận dữ liệu từ client (active agents).
Nhớ mở các cổng này trên tường lửa. Ví dụ, trên Zabbix server chạy CentOS bạn có thể mở cổng trong firewalld bằng firewall-cmd:
# firewall-cmd --add-service={http,https} --permanent
firewall-cmd --add-port={10051/tcp,10050/tcp} –permanent
Đủ mở cổng 10050 trên agent:
# firewall-cmd --permanent --add-port=10050/tcp
Khởi động lại firewalld:
# firewall-cmd –reload

Sau đó nhấp Next Step và Finish. Sau cài đặt, bạn sẽ được nhắc đăng nhập. Đăng nhập mặc định là Admin, mật khẩu mặc định là zabbix (hãy thay đổi nó).

Cài đặt Zabbix Server hoàn tất.
Bạn có thể tìm hướng dẫn từng bước cài đặt Zabbix Server trên các OS khác và hướng dẫn cách build zabbix-server từ source code hoặc chạy nó trong docker container tại https://www.zabbix.com/download.
Bạn có thể cấu hình Zabbix để xác thực người dùng bằng Active Directory LDAP.
Cách cài đặt Zabbix Agent trên Windows?
Hãy thử cài đặt Zabbix agent trên máy chủ chạy Windows và thêm nó vào Zabbix monitoring server của chúng ta. Bạn có thể tải phiên bản Zabbix agent cho Windows tại đây: https://www.zabbix.com/download_agents. 
Chọn phiên bản agent bạn cần. Tôi sẽ chọn msi (amd64) (không có OpenSSL). Nếu bạn định cài đặt Zabbix Agent trên máy chủ/máy tính miền bằng GPO hoặc SCCM, bạn có thể tải file ZIP chứa binary và tệp cấu hình.
Chạy trình cài đặt, chấp nhận thỏa thuận giấy phép và chỉ định cài đặt kết nối đến Zabbix server. Lưu ý rằng trong trường "Server or Proxy for active checks" tôi đã nhập địa chỉ IP theo định dạng IP:PORT. Vì tôi giữ cổng mặc định, tôi nhập 192.168.20.30:10051.

Nhấp Next vài lần, sau đó nhấp Install.
Đảm bảo agent đã được cài đặt. Zabbix Agent phải xuất hiện trong danh sách dịch vụ.

Cho phép kết nối đến từ địa chỉ IP Zabbix server của bạn trong Windows Firewall trên host Windows:
New-NetFirewallRule -DisplayName "ZabbixMonitoring" –RemoteAddress 192.168.20.30 -Direction Inbound -Protocol TCP –LocalPort 10050 -Action Allow
Cách thêm Host mới trên Zabbix Server?
Để đảm bảo agent hoạt động, hãy thêm host testnode2 vào Zabbix server của bạn và gán một số kiểm tra (template) cho nó.
Lưu ý. Có 2 loại kiểm tra trong Zabbix:- Passive — Zabbix server yêu cầu dữ liệu từ agent;
- Active — agent gửi dữ liệu đến server.
Trong quá trình cài đặt agent, chúng tôi chỉ định server dưới dạng IP:PORT cho active checks.
Bạn có thể thêm host giám sát mới qua giao diện web Zabbix. Đi đến Configuration → Hosts.
Nhấp Create host và điền chi tiết. Lưu ý rằng Host name phải khớp chính xác với hostname thiết bị hoặc giá trị tham số Hostname trong file cấu hình agent.

Thêm template Windows tích hợp sẵn trong tab Templates. Template trong Zabbix là tập hợp các giá trị, trigger, biểu đồ và quy tắc discovery có thể gán cho một hoặc nhiều host.
Các template tích hợp có nhãn "active", nghĩa là active checks sẽ được sử dụng.

Nhấp Add. Để không phải đợi cho đến khi server và agent nhìn thấy nhau (thường mất vài phút), khởi động lại dịch vụ Zabbix Agent trên testnode2 và xem log agent (C:\Program Files\Zabbix Agent\zabbix_agentd.txt).


Thông báo "started [active checks #1]" có nghĩa là một số active checks cho host đã được tìm thấy trên server. Sau đó xem dữ liệu Zabbix server nhận được từ agent. Đi đến Monitoring → Latest Data và chọn host trong trường Hosts.

Phần này hiển thị dữ liệu mới nhất về host hoặc nhóm host đã chọn đến Zabbix server.
Lưu ý rằng trong trường hợp của tôi, Zabbix dashboard chứa thông báo rằng dịch vụ BITS không chạy. Thông báo xuất hiện vì chúng tôi gán template tích hợp cho host của mình. Một trong các template có kiểm tra BITS, và trigger tương ứng kích hoạt nếu dịch vụ BITS không ở trạng thái Running.

Agent cho Windows đã được cấu hình.
Cài đặt Zabbix Agent trên Linux
Hãy cài đặt Zabbix Agent trên Linux. Để cài đặt Zabbix Agent trên Ubuntu Server 18.04 bằng trình quản lý gói, tải xuống và cài đặt Zabbix repo. Sau đó cài đặt Zabbix Agent từ kho lưu trữ:
# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
# sudo dpkg -i zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
# sudo apt update
# sudo apt -y install zabbix-agent
Để thêm kho lưu trữ và cài đặt Zabbix Agent trên CentOS, dùng các lệnh này:
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-agent
Trước khi khởi động Zabbix agent, chỉnh sửa file cấu hình /etc/zabbix/zabbix_agentd.conf. Chỉ định địa chỉ IP Zabbix server của bạn cho active checks.
Server=IP ServerActive=192.168.20.30:10051 Hostname=testagent
Sau đó khởi động dịch vụ agent:
# service zabbix-agent start
Đảm bảo agent đã khởi động thành công.
# cat /var/log/zabbix/zabbix_agentd.log

Dòng "cannot parse list of active checks" nghĩa là không có active checks cho host trên server.
Giống như agent Windows, bạn phải thêm host Linux của mình vào Zabbix. Chú ý tham số Host name trong cài đặt host trên Zabbix server của bạn: nó phải khớp với tham số Hostname chúng ta đã chỉ định trong file cấu hình Zabbix Agent. Trong file config trên tôi đặt host name là testagent.

Khởi động lại Zabbix agent của bạn và kiểm tra log. Đảm bảo dữ liệu từ agent đã xuất hiện trên Zabbix server. Zabbix agent trên Linux đã được cấu hình.
Trong bài viết tiếp theo, chúng ta sẽ xem giám sát khả dụng host không cần agent trong Zabbix qua ICMP Ping.