Zabbix 分布式监控架构搭建操作步骤
一、架构规划
1.1 组件角色
- Zabbix Server:中央服务器,数据处理和告警中心
- Zabbix Proxy:分布式代理,负责数据收集和缓存
- Zabbix Agent:被监控主机代理
- 数据库:MySQL/PostgreSQL(主从可选)
- Web 界面:Nginx/Apache
1.2 推荐架构
被监控主机 → Zabbix Proxy → Zabbix Server
(多个区域) (中心)
二、环境准备
2.1 服务器规划
# 示例服务器分配
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 (可选分离)
2.2 系统要求
- 操作系统:CentOS 7+/Ubuntu 20.04+
- 内存:Server 4GB+,Proxy 2GB+
- 磁盘:SSD 推荐,根据监控量规划
三、Zabbix Server 安装
3.1 安装数据库
# 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
3.2 安装 Zabbix Server
# 添加 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
3.3 配置 Web 界面
# 配置 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
四、Zabbix Proxy 安装
4.1 Proxy 节点安装
# 每个 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
4.2 配置 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 # 秒
4.3 启动 Proxy
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
# 检查日志
tail -f /var/log/zabbix/zabbix_proxy.log
五、Web 界面配置
5.1 访问 Web 界面
http://server_ip/zabbix
# 初始登录:Admin / zabbix
5.2 添加 Proxy
管理 →
Agent 代理程序
点击
创建代理
配置:
- 代理名称:IDC-1-Proxy(与配置文件一致)
- 代理地址:192.168.2.10
- 代理模式:主动式(推荐)
六、主机配置
6.1 Agent 安装(被监控主机)
# 安装 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
6.2 Web 添加主机
配置 →
主机 →
创建主机
设置:
- 主机名称:与 agent.conf 一致
- 群组:选择分组
- Agent 代理程序:选择对应 Proxy
添加模板(如 Linux by Zabbix agent)
添加监控项、触发器
七、高可用配置(可选)
7.1 Proxy 高可用
# 使用 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
}
}
7.2 数据库主从
# 主库配置(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
八、性能调优
8.1 Server 调优
vim /etc/zabbix/zabbix_server.conf
# 调整参数:
StartPollers=100
StartPollersUnreachable=50
StartTrappers=50
StartPingers=50
CacheSize=256M # 根据内存调整
HistoryCacheSize=128M
TrendCacheSize=32M
ValueCacheSize=256M
8.2 Proxy 调优
vim /etc/zabbix/zabbix_proxy.conf
StartPollers=50
ProxyLocalBuffer=24 # 本地缓冲小时数
ProxyOfflineBuffer=48 # 离线缓冲小时数
九、监控验证
9.1 状态检查
# 检查 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;"
9.2 故障排查
# 常见问题排查
1. 检查网络连通性
2. 检查防火墙规则
3. 查看日志文件
4. 验证数据库连接
5. 检查时间同步
十、维护脚本示例
10.1 批量添加主机
#!/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 需要能访问 Server 的 10051 端口
- Server 需要能访问 Proxy 的 10051 端口(被动模式)
- Agent 需要能访问 Proxy 的 10051 端口
配置一致性:
- Proxy 名称在配置文件和 Web 界面必须一致
- 主机名称在 Agent 和 Web 界面必须一致
监控策略:
- 根据网络延迟调整超时时间
- 合理规划数据保存周期
- 设置适当的缓冲大小
安全建议:
- 使用 TLS 加密通信
- 定期更新密码
- 配置防火墙最小化开放端口
此架构可支持数千台服务器的监控,根据实际需求调整 Proxy 数量和配置参数。