当前位置:首页 > 技术 > 正文内容

Zabbix分布式监控架构部署指南

访客 技术 2026年7月28日 1

Zabbix分布式监控架构部署指南

1. 部署架构概述

本文介绍Zabbix分布式监控架构的部署方案,包含1个Zabbix Server和2个Zabbix Proxy节点。Proxy节点负责收集区域内被监控主机的数据,再统一上报给Server端。

当前环境配置:

  • Server节点: 192.168.1.112(root/123456, admin/123456, MySQL root/123456, zabbix/123456)
  • Proxy节点: 192.168.1.113(root/123456, admin/123456, MySQL root/123456, zabbix/123456)

2. 部署前准备工作

  • 关闭单机环境下的自动注册和自动发现功能
  • 原有Server服务保持正常运行
  • 确认防火墙和selinux已关闭

3. Zabbix Proxy服务部署

3.1 安装Proxy组件

配置Zabbix 5.0的yum源(与Agent端配置方法相同),然后修改为阿里云镜像源以提高下载速度:

yum install zabbix-proxy-mysql zabbix-get -y

3.2 数据库配置(MariaDB方案)

安装CentOS 7默认的MariaDB数据库:

yum install mariadb-server mariadb -y
systemctl start mariadb
netstat -tunlp | grep 3306

创建Proxy专用的数据库和用户:

mysql -uroot -p
MariaDB[(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB[(none)]> create user 'zabbix'@'localhost' identified by 'zabbix';
MariaDB[(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost';
MariaDB[(none)]> flush privileges;
MariaDB[(none)]> quit;

查找并导入Proxy数据库结构:

rpm -ql zabbix-proxy-mysql | grep schema.sql.gz
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.2/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy

验证导入结果:

mysql -uzabbix -pzabbix
MariaDB[(none)]> show databases;
MariaDB[(none)]> use zabbix_proxy;
MariaDB[(none)]> show tables;

3.3 数据库配置(MySQL 5.7方案)

下载并安装MySQL 5.7社区版:

cd /usr/local/src/
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server --nogpgcheck

启动MySQL服务:

systemctl start mysqld
systemctl status mysqld

获取初始密码并修改:

grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p'初始密码'
mysql> set password for root@localhost = password('123456');

创建Proxy数据库并授权:

mysql -uroot -p123456
mysql> create database zabbix_proxy character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost' identified by '123456';
mysql> grant all privileges on zabbix_proxy.* to 'zabbix'@'%' identified by '123456' with grant option;
mysql> flush privileges;
mysql> quit;

导入数据库结构:

zcat /usr/share/doc/zabbix-proxy-mysql-5.0.22/schema.sql.gz | mysql -uzabbix -p123456 zabbix_proxy

3.4 Proxy配置文件修改

备份原配置文件并添加数据库密码:

sed -i.ori '162a DBPassword=123456' /etc/zabbix/zabbix_proxy.conf

修改Server地址指向主节点:

sed -i 's#Server=127.0.0.1#Server=192.168.1.112#' /etc/zabbix/zabbix_proxy.conf

修改Proxy主机名:

sed -i 's#Hostname=Zabbix proxy#Hostname=zabbix-proxy1#' /etc/zabbix/zabbix_proxy.conf

验证关键配置项:

grep -E '^(Server|Hostname|DBPassword|DBName|DBUser)' /etc/zabbix/zabbix_proxy.conf

配置结果应包含:

Server=192.168.1.112
Hostname=zabbix-proxy1
DBPassword=123456
DBName=zabbix_proxy
DBUser=zabbix

3.5 启动Proxy服务

systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

验证服务状态:

systemctl status zabbix-proxy
systemctl list-unit-files | grep zabbix-proxy

4. Web界面配置Proxy

在Zabbix Web管理界面完成以下操作:

  1. 进入「配置」→「Agent代理程序」
  2. 点击「创建代理」
  3. 填写代理参数:
    • 代理程序名称: 必须与Proxy服务器上zabbix_proxy.conf中的Hostname一致
    • 代理程序模式: 选择主动式(Proxy主动向Server推送数据)
    • 代理地址: 填写Proxy服务器的IP地址
  4. 保存后,在主机列表中启用该Proxy

在Server端查看连接状态:

tail -f /var/log/zabbix/zabbix_server.log

看到以下日志表示连接成功:

sending configuration data to proxy "zabbix-proxy1" at "192.168.1.113", datalen 3662

5. 配置被监控主机使用Proxy

5.1 添加受监控主机

在Web界面「配置」→「主机」中添加新主机:

  • 主机名称: 被监控主机的hostname
  • 可见名称: 自定义显示名称
  • Interfaces: 添加被监控主机的IP地址和端口10050
  • 由agent代理程序监测: 选择刚才创建的Proxy节点

5.2 修改Agent配置

在被监控主机的Agent配置文件中指定Proxy地址:

grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf

关键配置项说明:

  • Server: Zabbix Server或Proxy的地址
  • ServerActive: Zabbix Server或Proxy的地址
  • Hostname: 必须与Web界面配置的主机名一致
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.1.113
ServerActive=192.168.1.113
Hostname=client-node-01
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

重启Agent服务:

systemctl restart zabbix-agent2

6. 故障排查

如发现数据未正常上报,可按以下顺序排查:

  1. 检查Proxy服务运行状态:
    systemctl status zabbix-proxy
  2. 查看Proxy日志:
    tail -f /var/log/zabbix/zabbix_proxy.log
  3. 查看Agent日志:
    tail -f /var/log/zabbix/zabbix_agent2.log
  4. 重启Proxy服务:
    systemctl restart zabbix-proxy
  5. 检查防火墙规则和SELinux状态

确认Web界面「监控」→「最新数据」中已正常显示被监控主机的指标数据。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。