Zabbix 分布式监控架构搭建操作步骤
被监控主机 → Zabbix Proxy → Zabbix Server
(多个区域) (中心)
# 示例服务器分配
Zabbix Server: 192.168.1.10
Zabbix Proxy 1: 192.168.2.10 (IDC-1)
Zabbix Proxy 2: 192.168.3.10 (IDC-2)
数据库服务器: 192.168.1.11 (可选分离)
# CentOS 7 - MySQL
yum install mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb
# 创建数据库
mysql -uroot -p
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
exit
# 添加 Zabbix 仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum clean all
# 安装 Server 组件
yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy
# 导入初始数据
zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
# 配置数据库连接
vim /etc/zabbix/zabbix_server.conf
# 修改以下参数:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=your_password
# 配置 PHP(示例)
vim /etc/php.ini
# 调整参数:
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
# 启动服务
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
# 每个 Proxy 节点执行
yum install zabbix-proxy-mysql zabbix-sql-scripts
# 创建 Proxy 数据库
mysql -uroot -p
CREATE DATABASE zabbix_proxy CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix_proxy'@'localhost' IDENTIFIED BY 'proxy_password';
GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix_proxy'@'localhost';
FLUSH PRIVILEGES;
exit
# 导入 Proxy 数据结构
zcat /usr/share/doc/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql -uzabbix_proxy -p zabbix_proxy
vim /etc/zabbix/zabbix_proxy.conf
# 关键配置:
Server=192.168.1.10 # Zabbix Server IP
Hostname=IDC-1-Proxy # Proxy 唯一名称,与 Web 配置一致
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=proxy_password
# 缓存配置
ProxyLocalBuffer=12 # 小时
ProxyOfflineBuffer=72 # 小时
HeartbeatFrequency=60 # 秒
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
# 检查日志
tail -f /var/log/zabbix/zabbix_proxy.log
http://server_ip/zabbix
# 初始登录:Admin / zabbix
# 安装 Agent
yum install zabbix-agent2 # 或 zabbix-agent
# 配置 Agent
vim /etc/zabbix/zabbix_agent2.conf
# 关键配置:
Server=192.168.2.10 # 指向所属 Proxy
ServerActive=192.168.2.10 # 主动模式指向 Proxy
Hostname=web-server-01 # 主机唯一名称
# 启动 Agent
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
# 使用 Keepalived 实现 VIP 浮动
yum install keepalived
# 配置 /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER # 另一台为 BACKUP
interface eth0
virtual_router_id 51
priority 100 # BACKUP 设为 90
virtual_ipaddress {
192.168.2.100
}
}
# 主库配置(my.cnf)
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=zabbix
# 从库配置
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read_only=1
vim /etc/zabbix/zabbix_server.conf
# 调整参数:
StartPollers=100
StartPollersUnreachable=50
StartTrappers=50
StartPingers=50
CacheSize=256M # 根据内存调整
HistoryCacheSize=128M
TrendCacheSize=32M
ValueCacheSize=256M
vim /etc/zabbix/zabbix_proxy.conf
StartPollers=50
ProxyLocalBuffer=24 # 本地缓冲小时数
ProxyOfflineBuffer=48 # 离线缓冲小时数
# 检查 Server 状态
zabbix_server -R config_cache_reload
# 检查 Proxy 连接
tail -100 /var/log/zabbix/zabbix_proxy.log | grep "sending"
# 查看监控项数据
mysql -uzabbix -p -e "SELECT COUNT(*) FROM history;"
# 常见问题排查
1. 检查网络连通性
2. 检查防火墙规则
3. 查看日志文件
4. 验证数据库连接
5. 检查时间同步
#!/bin/bash
# bulk_add_hosts.sh
PROXY="IDC-1-Proxy"
TEMPLATE="Linux by Zabbix agent"
for IP in $(cat host_list.txt); do
# 使用 API 添加主机
curl -s -X POST -H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'${IP}'",
"interfaces": [{
"type": 1,
"main": 1,
"useip": 1,
"ip": "'${IP}'",
"dns": "",
"port": "10050"
}],
"groups": [{"groupid": "2"}],
"templates": [{"templateid": "10001"}]
},
"auth": "'${AUTH_TOKEN}'",
"id": 1
}' http://zabbix-server/api_jsonrpc.php
done
网络要求:
配置一致性:
监控策略:
安全建议:
此架构可支持数千台服务器的监控,根据实际需求调整 Proxy 数量和配置参数。