欢迎光临中国护送网
详情描述

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 数量和配置参数。