概述
Zabbix Proxy 可以替代 Zabbix Server 收集主机设备的性能和可用性数据从而减轻 Zabbix Server 的压力。
Zabbix Proxy 可用于:
监控远端位置主机设备
监控通信不可靠的位置主机和设备
在大规模监控场景减轻 Zabbix Server 压力
简化分布式监控的维护
Zabbix Proxy 收集的所有数据在传输到服务器之前都存储在本地数据库。这样就不会因为与服务器的任何临时通信问题而丢失数据。代理配置文件中的ProxyLocalBuffer 和ProxyOfflineBuffer 参数控制数据在本地保存多长时间。
Proxy 从Zabbix Server数据库直接更新最新配置可能会比Zabbix Server新,而Zabbix Server的配置由于CacheUpdateFrequency的原因而无法快速更新。因此,Proxy收集发送Zabbix Server数据可能会被忽略。
Zabbix Server 缓存更新频率, 单位秒。默认60
CacheUpdateFrequency=60强制更新zabbix_server缓存
sudo zabbix_server-R config_cache_reloadUbuntu 系统优化
优化文件打开数和最大进程数
egrep -v "*#|^$" /etc/security/limits.conf* softnofile65536* hardnofile65536* softnproc 65536* hardnproc 65536优化系统交换分区,虚拟内存,端口最大监听队列,最大文件打开数等参数
vim /etc/sysctl.confvm.swappiness = 0vm.max_map_count = net.core.somaxconn = 65535fs.file-max = net.ipv4.ip_forward = 1执行 sysctl -p 生效优化内核参数
#查看打开最大文件描述符的数量ulimit -n#查看用户最大可用的进程数ulimit -u#查看vm.swappiness参数cat /proc/sys/vm/swappiness#查看vm.max_map_count参数sysctl -a|grep vm.max_map_count#查看net.core.somaxconn参数sysctl -a | grep net.core.somaxconn#查看fs.file-max参数 cat /proc/sys/fs/file-nr重启系统
安装Zabbix存储库
sudo wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.debsudo dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb更新可用软件包列表
sudo apt updateMySQL
支持字符集 utf8( utf8mb3)和 utf8mb4(分别使用 utf8_bin 和 utf8mb4_bin 排序规则),以便 Zabbix 服务器/代理与 MySQL 数据库正常工作。建议使用 utf8mb4 进行新安装。
安装Mysql
sudo apt install -y mysql-serverUbuntu 20.04 系统默认的存储库MYSQL 版本为8.0.28
初始化数据库
sudo mysql_secure_installation第一步:
Press y|Y for Yes, any other key for No: N(选择N,不会进行密码的强校验)
第二步:输入两遍你要设置的mysql 密码
New password:
Re-enter new password:
第三步:询问你是否删除匿名用户?
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N(选择N,不删除匿名用户)
第四步:是否取消远程链接?
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N(选择N,允许root远程连接)
第五步:是否删除test数据库?
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N(选择N,不删除test数据库)
第六步:修改的权限是否立即生效?
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y(选择Y,修改权限立即生效)
出现如下的提示,便是设置成功了.
Success.
All done!
创建zabbix库和用户并授权
#登陆数据库sudo mysql -uroot -p#创建zabbix 数据库mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;#创建zabbix 用户mysql>create user zabbix@% identified by zabbix@zabbix;#授权localhost 访问mysql> grant all privileges on zabbix.* to zabbix@%;#刷新策略flush privileges;#退出mysql> quit;mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;Query OK, 1 row affected (0.01 sec)mysql> create user zabbix@% identified by zabbix@zabbix;Query OK, 0 rows affected (0.03 sec)mysql> grant all privileges on zabbix.* to zabbix@%;Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)mysql> quitByeMYSQL数据库版本
ubuntu@zabbix-proxy01:~$ mysql-VmysqlVer 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))注意:Zabbix Server 和 Zabbix Proxy 不能使用同一个数据库。如果它们安装在同一主机上,则代理数据库必须具有不同的名称。
MYSQL 8.0 远程无法连接
MYSQL 只能本机登录,无法进行远程登录,ss -ntl |grep -w 3306 查看数据库默认监听的地址为127.0.0.1。
修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnfbind-address = 0.0.0.0 mysqlx-bind-address = 0.0.0.0重启数据库
sudo systemctlrestart mysql安装Zabbix-Proxy
sudo apt install zabbix-proxy-mysql zabbix-sql-scripts可选
sudo apt install zabbix-get zabbix-sender zabbix-agent2导入数据
导入初始架构:
sudo cat /usr/share/doc/zabbix-sql-scripts/mysql/proxy.sql | mysql -uzabbix -p zabbix
注意:新版本中 Server 和Proxy 数据库初始化文件名称做了区分,Server 为“server.sql ”,Proxy为“proxy.sql”,并且使用同一个名为“zabbix-sql-scripts”的安装包。
zabbix_proxy 配置文件
ubuntu@zabbix-proxy01:/$ sudoegrep -v"*#|^$" /etc/zabbix/zabbix_proxy.conf Server=192.168.99.185;192.168.99.186Hostname=Zabbixproxy01LogFile=/var/log/zabbix/zabbix_proxy.logLogFileSize=0PidFile=/run/zabbix/zabbix_proxy.pidSocketDir=/run/zabbixDBHost=127.0.0.1DBName=zabbixDBUser=zabbixDBPassword=zabbix@zabbixProxyOfflineBuffer=2ConfigFrequency=120DataSenderFrequency=2StartPollers=30StartPollersUnreachable=10StartPingers=1StartDiscoverers=1SNMPTrapperFile=/var/log/snmptrap/snmptrap.logCacheSize=512MTimeout=4FpingLocation=/usr/bin/fpingFping6Location=/usr/bin/fping6LogSlowQueries=3000StatsAllowedIP=127.0.0.1启动 Zabbix Proxy进程
# systemctl restart zabbix-proxy# systemctl enable zabbix-proxyZabbix Proxy 部分参数介绍
ConfigFrequency=60 #Zabbix Proxy从Zabbix Server取得配置数据的频率 DataSenderFrequency=2 #Zabbix Proxy发送监控到的数据给Zabbix Server的频率ProxyOfflineBuffer=2 # Proxy或者Server无法连接时,保留离线的监控数据的时间,单位小时StartPollers=10 #开启多线程数StartPollersUnreachable=1 #该线程用来单独监控无法连接的主机StartPingers=10 # fping线程数CacheSize=64M #用来保存监控数据的缓存数,根据监控主机数量适当调整Timeout=10 #超时时间,设定不要超过30s,否则会拖慢其他监控数据抓取时间Zabbix 前端配置
管理 → 代理点击→ 创建代理
Proxy 名称必须与配置文件中的Hostname参数相同
代理模式
主动- Proxy将连接到 Zabbix 服务器并请求配置数据(默认)
被动- Zabbix 服务器连接到Proxy
0 - proxy in the active mode
1 - proxy in the passive mode
官方文档