Zabbix6.0 LTS 分布式部署Proxy(五)

2022-04-15 09:14:59 浏览数 (1)

概述

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

代码语言:javascript复制
CacheUpdateFrequency=60

强制更新zabbix_server缓存

代码语言:javascript复制
sudo zabbix_server  -R config_cache_reload

Ubuntu 系统优化

优化文件打开数和最大进程数

代码语言:javascript复制
egrep -v "*#|^$" /etc/security/limits.conf
*               soft      nofile          65536
*               hard      nofile          65536
*               soft      nproc           65536
*               hard      nproc           65536

优化系统交换分区,虚拟内存,端口最大监听队列,最大文件打开数等参数

代码语言:javascript复制
vim /etc/sysctl.conf
vm.swappiness = 0
vm.max_map_count = 262144
net.core.somaxconn = 65535
fs.file-max = 655360
net.ipv4.ip_forward = 1

执行 sysctl -p 生效优化内核参数

代码语言:javascript复制
#查看打开最大文件描述符的数量
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存储库

代码语言:javascript复制
sudo wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1 ubuntu20.04_all.deb
代码语言:javascript复制
sudo dpkg -i zabbix-release_6.0-1 ubuntu20.04_all.deb

更新可用软件包列表

代码语言:javascript复制
sudo apt update

MySQL

支持字符集 utf8( utf8mb3)和 utf8mb4(分别使用 utf8_bin 和 utf8mb4_bin 排序规则),以便 Zabbix 服务器/代理与 MySQL 数据库正常工作。建议使用 utf8mb4 进行新安装。

安装Mysql

代码语言:javascript复制
sudo apt install -y mysql-server

Ubuntu 20.04 系统默认的存储库MYSQL 版本为8.0.28

初始化数据库

代码语言:javascript复制
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库和用户并授权

代码语言:javascript复制
#登陆数据库
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;
代码语言:javascript复制
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> quit
Bye

MYSQL数据库版本

代码语言:javascript复制
ubuntu@zabbix-proxy01:~$ mysql  -V
mysql  Ver 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。

修改配置文件

代码语言:javascript复制
/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0 
mysqlx-bind-address = 0.0.0.0

重启数据库

代码语言:javascript复制
sudo systemctl  restart   mysql

安装Zabbix-Proxy

代码语言:javascript复制
sudo apt install zabbix-proxy-mysql zabbix-sql-scripts

可选

代码语言:javascript复制
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 配置文件

代码语言:javascript复制
ubuntu@zabbix-proxy01:/$ sudo  egrep -v  "*#|^$" /etc/zabbix/zabbix_proxy.conf 
Server=192.168.99.185;192.168.99.186
Hostname=Zabbixproxy01
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix@zabbix
ProxyOfflineBuffer=2
ConfigFrequency=120
DataSenderFrequency=2
StartPollers=30
StartPollersUnreachable=10
StartPingers=1
StartDiscoverers=1
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=512M
Timeout=4
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

启动 Zabbix Proxy进程

代码语言:javascript复制
# systemctl restart zabbix-proxy
# systemctl enable zabbix-proxy

Zabbix Proxy 部分参数介绍

代码语言:javascript复制
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

官方文档

https://www.zabbix.com/documentation/6.0/en/manual/distributed_monitoring/proxies

0 人点赞