Việc thiết lập một hệ thống giám sát hiệu quả đòi hỏi sự kết hợp giữa cấu hình agent, tích hợp dịch vụ ứng dụng và tối ưu hóa kiến trúc để đáp ứng quy mô mở rộng. Dưới đây là hướng dẫn chi tiết về cách triển khai Zabbix 4.0 trên môi trường Linux, tích hợp giám sát Tomcat qua JMX, cũng như xây dựng lớp proxy phân tán để giảm tải cho máy chủ trung tâm.
1. Triển khai Zabbix Agent trên các nút Linux
Để thu thập dữ liệu từ các máy chủ Linux, cần cài đặt và cấu hình zabbix_agentd với quyền hạn phù hợp và cơ chế khởi động chuẩn hóa.
Cài đặt phụ thuộc và biên dịch từ mã nguồn
yum install -y gcc libxml2-devel net-snmp-devel curl-devel php-bcmath php-mbstring mariadb-devel libevent-devel java-1.8.0-openjdk-devel
tar -xf zabbix-4.0.30.tar.gz
cd zabbix-4.0.30
./configure --prefix=/opt/zabbix --enable-agent
make -j$(nproc) && make installTạo tài khoản và unit systemd
useradd -r -s /sbin/nologin zabbix
cat > /etc/systemd/system/zabbix-agent.service << 'EOF'
[Unit]
Description=Zabbix Agent Daemon
After=network.target
[Service]
Type=forking
User=zabbix
Group=zabbix
Environment="CONF=/opt/zabbix/etc/zabbix_agentd.conf"
ExecStart=/opt/zabbix/sbin/zabbix_agentd -c $CONF
Restart=always
RestartSec=10
PIDFile=/var/run/zabbix/zabbix_agentd.pid
[Install]
WantedBy=multi-user.target
EOF
mkdir -p /var/run/zabbix
chown zabbix:zabbix /var/run/zabbix
systemctl daemon-reload
systemctl enable --now zabbix-agentCấu hình agent cơ bản
sed -i 's/^Server=.*/Server=192.168.100.155/' /opt/zabbix/etc/zabbix_agentd.conf
sed -i 's/^Hostname=.*/Hostname=192.168.100.160/' /opt/zabbix/etc/zabbix_agentd.conf
sed -i 's/^StartAgents=.*/StartAgents=3/' /opt/zabbix/etc/zabbix_agentd.conf
sed -i 's/^LogFile=.*/LogFile=\/var\/log\/zabbix\/agent.log/' /opt/zabbix/etc/zabbix_agentd.conf
mkdir -p /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix
systemctl restart zabbix-agent2. Giám sát Tomcat bằng giao thức JMX
Zabbix không thể trực tiếp đọc chỉ số JVM nếu không có cầu nối. Giải pháp phổ biến là kích hoạt JMX trên Tomcat và sử dụng zabbix_java_gateway làm bộ chuyển đổi.
Kích hoạt JMX trong Tomcat
echo 'CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=192.168.100.160"' >> /usr/local/tomcat/bin/setenv.sh
systemctl restart tomcat
ss -tlnp | grep ':12345'Cấu hình Java Gateway
# Chỉnh sửa file cấu hình gateway (không bắt buộc thay đổi giá trị mặc định)
sed -i 's/^START_POLLERS=.*/START_POLLERS=8/' /opt/zabbix/sbin/zabbix_java/settings.sh
sed -i 's/^TIMEOUT=.*/TIMEOUT=45/' /opt/zabbix/sbin/zabbix_java/settings.sh
# Khởi động dịch vụ gateway
/opt/zabbix/sbin/zabbix_java/startup.sh
ss -tlnp | grep ':10052'Cập nhật cấu hình Zabbix Server
sed -i 's/^JavaGateway=.*/JavaGateway=192.168.100.160/' /opt/zabbix/etc/zabbix_server.conf
sed -i 's/^StartJavaPollers=.*/StartJavaPollers=8/' /opt/zabbix/etc/zabbix_server.conf
sed -i 's/^JavaGatewayPort=.*/JavaGatewayPort=10052/' /opt/zabbix/etc/zabbix_server.conf
systemctl restart zabbix-server3. Phân biệt chế độ chủ động (Active) và bị động (Passive)
Zabbix hỗ trợ hai cơ chế truyền dữ liệu chính — mỗi loại có ưu nhược điểm riêng tùy vào kiến trúc mạng và nhu cầu mở rộng.
- Chế độ bị động: Máy chủ Zabbix chủ động kết nối tới cổng
10050của agent để yêu cầu dữ liệu. Phù hợp với môi trường nhỏ, dễ cấu hình nhưng gây áp lực lên máy chủ khi số lượng agent tăng. - Chế độ chủ động: Agent tự khởi tạo kết nối TCP tới cổng
10051của máy chủ hoặc proxy để đăng ký và nhận danh sách item cần thu thập. Giảm tải đáng kể cho máy chủ nhờ tránh việc mở nhiều socket đồng thời.
Chuyển agent sang chế độ chủ động
sed -i 's/^Server=.*/Server=192.168.100.155/' /opt/zabbix/etc/zabbix_agentd.conf
sed -i 's/^ServerActive=.*/ServerActive=192.168.100.155/' /opt/zabbix/etc/zabbix_agentd.conf
sed -i 's/^Hostname=.*/Hostname=web-node-01/' /opt/zabbix/etc/zabbix_agentd.conf
systemctl restart zabbix-agent4. Thiết lập Zabbix Proxy để mở rộng kiến trúc giám sát
Zabbix Proxy đóng vai trò trung gian thu thập dữ liệu từ các agent trong vùng mạng con, sau đó đẩy dữ liệu lên máy chủ trung tâm. Đây là giải pháp thiết yếu khi triển khai giám sát ở quy mô doanh nghiệp.
Cài đặt và cấu hình cơ sở dữ liệu cho Proxy
yum install -y mariadb-server
systemctl enable --now mariadb
mysql -e "CREATE DATABASE zbx_proxy_active CHARACTER SET utf8 COLLATE utf8_bin;"
mysql -e "CREATE DATABASE zbx_proxy_passive CHARACTER SET utf8 COLLATE utf8_bin;"
mysql -e "GRANT ALL ON zbx_proxy_active.* TO 'zbxproxy'@'localhost' IDENTIFIED BY 'P@ssw0rd123';"
mysql -e "GRANT ALL ON zbx_proxy_passive.* TO 'zbxproxy'@'localhost' IDENTIFIED BY 'P@ssw0rd123';"
mysql -e "FLUSH PRIVILEGES;"
# Nhập lược đồ cơ sở dữ liệu
mysql -uzbxproxy -p'P@ssw0rd123' zbx_proxy_active < /root/zabbix-4.0.30/database/mysql/schema.sql
mysql -uzbxproxy -p'P@ssw0rd123' zbx_proxy_passive < /root/zabbix-4.0.30/database/mysql/schema.sqlCấu hình Proxy ở chế độ bị động
cat > /opt/zabbix_proxy/etc/zabbix_proxy.conf << 'EOF'
ProxyMode=1
Server=192.168.100.155
Hostname=proxy-passive
ListenPort=10051
LogFile=/var/log/zabbix/proxy.log
DBHost=localhost
DBName=zbx_proxy_passive
DBUser=zbxproxy
DBPassword=P@ssw0rd123
DBPort=3306
ConfigFrequency=30
StartPollers=15
CacheSize=1G
HistoryCacheSize=512M
Timeout=30
EOF
mkdir -p /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix
systemctl enable --now zabbix-proxyCập nhật cấu hình agent để gửi dữ liệu qua Proxy
sed -i 's/^Server=.*/Server=192.168.100.140/' /opt/zabbix/etc/zabbix_agentd.conf
systemctl restart zabbix-agent5. Kiểm tra kết nối và xác thực dữ liệu
Sử dụng công cụ dòng lệnh để kiểm tra tính khả dụng của agent và tính đúng đắn của item:
/opt/zabbix/bin/zabbix_get -s 192.168.100.160 -p 10050 -k "system.cpu.util[,idle]"
/opt/zabbix/bin/zabbix_get -s 192.168.100.160 -p 10050 -k "jmx["java.lang:type=Memory","HeapMemoryUsage.used"]"Các bước trên đảm bảo rằng hệ thống giám sát được cấu hình ổn định, có khả năng mở rộng và duy trì hiệu suất cao ngay cả khi số lượng thiết bị cần theo dõi tăng lên đáng kể.