zabbix proxy: 安装 / ZBX数据采集 / JMX数据采集

本文介绍如何通过Zabbix Proxy实现分布式监控,减轻Zabbix Server的负载,包括安装配置步骤、MySQL数据库设置及Web端配置流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Zabbix proxy: 是一个数据收集器,它不计算触发器、不处理事件、不发送报警。为IT基础设施提供有效和可用的分布式监控,代替Zabbix Server采集数据,然后将数据报告给服务器zabbix server,从而分担Zabbix Server负载的进程

 zabbix proxy 使用场景:
监控远程区域设备      监控本地网络不稳定区域     简化分布式监控的维护
当 zabbix 监控上千设备时,使用它来减轻 server 的压力

 proxy 收集到数据之后,首先将数据缓存在本地,然后在一定得时间之后传递给 zabbix server,这样就不会因为服务器的任何临时通信问题而丢失数据。这个时间由 proxy配置文件中参数 ProxyLocalBuffer 和 ProxyOfflineBuffer 决定。

server1zabbix-server
server2zabbix-agent
server3zabbix-proxy

######1.安装######

###1.删除server3,停止agent###

[root@server3 ~]# systemctl stop zabbix-agent
[root@server3 ~]# systemctl disable zabbix-agent
Removed symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service.

###2.安装proxy###

###1.配置zabbix仓库###

因为proxy有依赖,直接安装要解决依赖,所以要配yum源

[root@server3 ~]# cd 4.0/
[root@server3 4.0]# ls
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
zabbix-agent-4.0.5-1.el7.x86_64.rpm
zabbix-get-4.0.5-1.el7.x86_64.rpm
zabbix-java-gateway-4.0.5-1.el7.x86_64.rpm
zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-sender-4.0.5-1.el7.x86_64.rpm
zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-web-4.0.5-1.el7.noarch.rpm
zabbix-web-mysql-4.0.5-1.el7.noarch.rpm
[root@server3 4.0]# yum install -y createrepo
[root@server3 4.0]# createrepo /root/4.0/

###2.配置yum源###

[root@server3 4.0]# cd /etc/yum.repos.d/
[root@server3 yum.repos.d]# ls
dvd.repo  redhat.repo
[root@server3 yum.repos.d]# vim zabbix.repo
[zabbix]
name=zabbix
baseurl=file:///root/4.0/
gpgcheck=0

###3.安装proxy###

[root@server3 ~]# yum install -y zabbix-proxy

修改主机名,配置本地解析(可做可不做)
[root@server3 ~]# hostnamectl set-hostname proxy
[root@server3 ~]# vim /etc/hosts
172.25.1.3      server3 proxy
[root@server3 ~]# logout
[kiosk@foundation1 ~]$ ssh root@172.25.1.3
[root@proxy ~]# 

[root@server2 ~]# vim /etc/hosts
172.25.1.3      server3 proxy
[root@server1 ~]# vim /etc/hosts
172.25.1.3      server3 proxy

###3.安装mysql###

对于zabbix-server和proxy守护进程而言,数据库是必须的;而运行zabbix-agent是不需要的

如果zabbix-server和zabbix-proxy安装在相同的主机上,它们必须创建不同名字的数据库。

[root@proxy ~]# yum install -y mariadb-server
[root@proxy ~]# systemctl start mariadb
[root@proxy ~]# systemctl enable mariadb
[root@proxy ~]# mysql_secure_installation 
[root@proxy ~]# mysql -p
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'redhat';
导入数据:
[root@proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.5/schema.sql.gz | mysql -p zabbix_proxy      
Enter password: 

###4.开启proxy###

1.编辑配置文件
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf  
 30 Server=172.25.1.1
 39 ServerPort=10051
 49 Hostname=proxy
162 DBHost=localhost
173 DBName=zabbix_proxy
188 DBUser=zabbix
196 DBPassword=redhat

2.开启服务
[root@proxy ~]# systemctl start zabbix-proxy
[root@proxy ~]# systemctl enable zabbix-proxy

 

######2.配置web端######

###1.创建代理程序###

(点击管理----->agent代理程序----->创建代理)

(填写名称,代理地址)

###2.设置proxy采集server2:ZBX的数据###

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf 
 98 Server=172.25.1.3         ##被动采集数据
139 ServerActive=172.25.1.3    ##主动提交数据
[root@server2 ~]# systemctl restart zabbix-agent

(点击配置----->主机----->server2)

(将“由agent代理程序监测”设置为proxy----->更新)

(server2变为proxy:server2,后面的可用性全部没有亮灯)

###3.server端和proxy端同步数据###

[root@server1 ~]# zabbix_server -R config_cache_reload   ##同步数据
[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log  ##查看日志

 

###4.设置proxy采集server2:JMX的数据###

[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf 
328 JavaGateway=172.25.1.1
336 JavaGatewayPort=10052
344 StartJavaPollers=5
[root@proxy ~]# systemctl restart zabbix-proxy

(server2的可用性JMX灯亮起)

 

 

 

更多zabbix-proxy内容请见官网:https://www.zabbix.com/documentation/4.0/zh/manual/distributed_monitoring

 

 

services: zabbix-web-nginx-mysql: image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest restart: always environment: - DB_SERVER_HOST=zabbix-mysql - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=zabbix - MYSQL_ROOT_PASSWORD=root - ZBX_SERVER_HOST=zabbix-server-mysql ports: - 8080:8080 volumes: - /etc/localtime:/etc/localtime - /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf networks: - zbx_net depends_on: - zabbix-server-mysql - zabbix-mysql zabbix-mysql: image: mysql:8.0.23 restart: always ports: - 3306:3306 environment: - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=zabbix - MYSQL_ROOT_PASSWORD=root command: - mysqld - --default-authentication-plugin=mysql_native_password - --character-set-server=utf8 - --collation-server=utf8_bin volumes: - /etc/localtime:/etc/localtime - /data2/zabbix/db:/var/lib/mysql networks: - zbx_net zabbix-java-gateway: image: zabbix/zabbix-java-gateway:centos-5.2-latest restart: always volumes: - /etc/localtime:/etc/localtime networks: - zbx_net zabbix-server-mysql: image: zabbix/zabbix-server-mysql:centos-5.2-latest restart: always volumes: - /data2/zabbix/zabbix-server:/etc/zabbix - /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts - /etc/localtime:/etc/localtime ports: - 10052:10051 environment: - DB_SERVER_HOST=zabbix-mysql - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=zabbix - MYSQL_ROOT_PASSWORD=root - ZBX_JAVAGATEWAY=zabbix-java-gateway - ZBX_JAVAGATEWAY_ENABLE=true - ZBX_JAVAGATEWAYPORT=10052 depends_on: - zabbix-mysql networks: - zbx_net zabbix-agent: image: zabbix/zabbix-agent:centos-5.2-latest restart: always ports: - 10050:10050 environment: - ZBX_HOSTNAME=Zabbix server - ZBX_SERVER_HOST=zabbix-server-mysql - ZBX_SERVER_PORT=10052 networks: - zbx_net networks: zbx_net: driver: bridge 这个脚本什么意思
最新发布
03-15
<think>嗯,用户给了一个Docker Compose的脚本,想要了解这个脚本的意思。首先,我需要确认这个脚本的结构,里面包含了多个服务,每个服务都有各自的配置。可能用户正在部署Zabbix监控系统,使用Docker来容器化各个组件。 首先,我应该逐个分析每个服务的作用。比如,zabbix-web-nginx-mysql应该是Zabbix的Web前端,使用Nginx和MySQL。接下来是zabbix-mysql,显然是数据库服务。然后还有zabbix-java-gateway,zabbix-server-mysql,和zabbix-agent。这些服务之间应该有关联,比如依赖关系,网络配置等等。 用户可能不太清楚每个服务的功能以及它们如何协作。需要解释每个服务的角色,比如Zabbix Server负责处理监控数据,Web前端提供用户界面,MySQL存储数据,Java Gateway用于监控Java应用,Agent部署在被监控的主机上。 另外,环境变量、端口映射、卷挂载这些配置项也需要逐一解释。比如,DB_SERVER_HOST指向数据库服务,端口映射8080:8080让外部可以访问Web界面,卷挂载可能用于持久化数据或配置。 用户可能还关心网络部分,zbx_net是一个自定义的桥接网络,让这些服务在同一个网络内通信。depends_on确保服务启动顺序,但需要注意Docker的depends_on只是控制启动顺序,不检查服务是否真正可用。 另外,用户可能在实际部署中遇到问题,比如数据库初始化、字体替换解决中文乱码,或者Java Gateway的配置是否正确。这些潜在的问题点也需要在解释中提及,帮助用户理解可能的注意事项。 最后,总结整个脚本的作用,即通过Docker Compose一键部署Zabbix的各个组件,包括前端、后端、数据库、Java网关和代理,并配置它们之间的连接和依赖,确保系统正常运行。</think>好的,我将分步解释这个Docker Compose配置文件的组成部分和功能: #### 1️⃣ **整体结构** 这是一个完整的Zabbix监控系统容器化部署方案,包含以下核心组件: - Zabbix Web前端(Nginx+MySQL版) - MySQL数据库 - Zabbix Server(核心服务) - Zabbix Java Gateway - Zabbix Agent #### 2️⃣ **网络配置** ```yaml networks: zbx_net: driver: bridge ``` 创建名为`zbx_net`的桥接网络,所有服务通过此网络互联,实现内部通信隔离 #### 3️⃣ **核心服务解析** ##### ① Zabbix Web前端 (`zabbix-web-nginx-mysql`) ```yaml environment: - DB_SERVER_HOST=zabbix-mysql # 连接数据库 - ZBX_SERVER_HOST=zabbix-server-mysql # 连接Zabbix Server ports: - 8080:8080 # 映射Web访问端口 volumes: - /data2/.../DejaVuSans.ttf # 解决中文乱码的字体替换 ``` 关键功能:提供Web管理界面,通过8080端口访问 ##### ② MySQL数据库 (`zabbix-mysql`) ```yaml environment: - MYSQL_ROOT_PASSWORD=root # 设置root密码 volumes: - /data2/zabbix/db:/var/lib/mysql # 数据持久化存储 command: - --default-authentication-plugin=mysql_native_password # 兼容旧版认证 ``` 存储所有监控数据、配置信息的数据库服务 ##### ③ Zabbix Server (`zabbix-server-mysql`) ```yaml environment: - ZBX_JAVAGATEWAY=zabbix-java-gateway # 连接Java网关 ports: - 10052:10051 # 监控数据传输端口 volumes: - /data2/zabbix/alertscripts # 自定义告警脚本目录 ``` 核心监控服务,处理数据收集、告警触发等核心逻辑 ##### ④ Zabbix Java Gateway 专用于监控JMX应用的中间件,通过10052端口与Server通信 ##### ⑤ Zabbix Agent ```yaml environment: - ZBX_HOSTNAME=Zabbix server # 本机标识 - ZBX_SERVER_PORT=10052 # 上报数据端口 ``` 部署在被监控主机上的代理程序(此处配置的是监控Zabbix Server自身) #### 4️⃣ **关键配置点** 1. 数据持久化: - MySQL数据目录:`/data2/zabbix/db` - Zabbix Server配置:`/data2/zabbix/zabbix-server` 2. 中文支持: ```yaml volumes: - /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf ``` 替换默认字体解决图形化报表中文乱码问题 3. 时间同步: ```yaml volumes: - /etc/localtime:/etc/localtime ``` 保证容器与宿主机时区一致 #### 5️⃣ **启动顺序控制** ```yaml depends_on: - zabbix-server-mysql - zabbix-mysql ``` 通过依赖声明确保: 1. 数据库先启动 2. Server在数据库就绪后启动 3. Web前端最后启动 #### 6️⃣ **使用建议** 1. 访问方式: - Web界面:http://宿主机IP:8080 - 默认账号:Admin/zabbix 2. 安全建议: - 修改默认密码(特别是MySQL root密码) - 生产环境建议使用独立数据库实例 3. 扩展监控: - 在其他主机部署Agent时,需要修改`ZBX_SERVER_HOST`指向Zabbix Server地址 这个配置实现了一个完整的Zabbix监控系统部署方案,适合中小型监控场景,具备高可用性和易维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值