Zabbix---分布式监控proxy
Zabbix分布式监控
分布式主要适合于服务器数量特别大, 或是跨机房、跨地区监控。 每个分节点(proxy)收集数据并传送给server。
当业务不断壮大,机房越来越多,监控集群设备越来越庞大且复杂,多节点分配部署zabbix代理(proxy)减轻zabbix-server服务器的压力。
Zabbix通过Zabbix proxies为IT基础设施提供有效和可用的分布式监控
代理(proxies)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器
zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix server 的压力.
此外,当所有agents和proxies报告给一个Zabbix server并且所有数据都集中收集时,使用proxy是实现集中式和分布式监控的最简单方法。
zabbix proxy 使用场景:
• 监控远程区域设备
• 监控本地网络不稳定区域
• 当 zabbix 监控上千设备时,使用它来减轻 server 的压力
• 简化分布式监控的维护
实验: 布署zabbix分布式监控
实验准备
服务器
zabbix-server 192.168.10.11
zabbix-proxy 192.168.10.13
zabbix-agent1 192.168.10.12
zabbix-agent2 192.168.10.14
1. zabbix-server 直接监控 agent1
2. zabbix-server 通过 proxy 监控 agent2
所有服务器关闭防火墙, selinux
所有服务器同步好时间
布署过程
上面的第1点已经布署好了, 这里主要是布署通过 proxy 监控 agent2
在 zabbix-proxy 上操作
安装软件
# yum -y install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender mariadb-server
配置数据库
修改配置文件
# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON #跳过主机名解析
innodb_file_per_table = ON #
innodb_buffer_pool_size = 256M #缓存池大小
max_connections = 1000 #最大连接数
log-bin = logbin #开启二进制日志
初始化
# mysql_secure_installation #设置密码,删除匿名用户,禁止root远程登录,删除test库
创建数据库并授权用户
MariaDB [(none)]> create database zabbix-proxy character set 'utf8' collate utf8_bin;
MariaDB [(none)]> grant all on zabbix_proxy.* to 'zabbix_proxy'@'localhost' identified by 'zabbix_proxy';
MariaDB [(none)]> flush privileges;
导表
# cd /usr/share/doc/zabbix-proxy-mysql-4.4.0/
# zcat schema.sql.gz |mysql -u zabbixproxy -p -D zabbixproxy
导完注意验证一下导入成功没有
修改zabbix-proxy主配置文件
# egrep -v "^$|^#" /etc/zabbix/zabbix_proxy.conf
Server=192.168.10.11 # zabbix-server地址
Hostname=host3.qf.com # 自己的主机名
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
EnableRemoteCommands=1 # 允许执行远程命令
LogRemoteCommands=1
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBName=zabbixproxy
DBUser=zabbixproxy
DBPassword=123
ConfigFrequency=30 #代理从Zabbix服务器检索配置数据的频率(以秒为单位), 默认为3600. 这里为了实验效果设置为30
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
启动服务
[root@host3 ~]# vim /etc/zabbix/zabbix_proxy.conf
[root@host3 ~]# systemctl start zabbix-proxy
[root@host3 ~]# netstat -tlnp |grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 12047/zabbix_proxy
tcp6 0 0 :::10051 :::* LISTEN 12047/zabbix_proxy
在 agent2 上操作
安装软件
[root@host4 ~]# yum -y install zabbix-agent-4.4.0-1.el7.x86_64.rpm
配置 agent
[root@host4 ~]# egrep -v "^$|^#" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.13
ServerActive=192.168.10.13
Hostname=host4.qf.com
Include=/etc/zabbix/zabbix_agentd.d/*.conf
启动服务
[root@host4 ~]# systemctl start zabbix-agent
zabbix-proxy快速安装脚本
#!/bin/bash
#Zabbix-Proxy 5.0
Zabbix_Service=192.168.10.13
#安装zabbix源、aliyun YUM源
cd /etc/yum.repos.d/
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i.bak 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' zabbix.repo
sed -i 's#enabled=0#enabled=1#' zabbix.repo
#安装zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender
yum -y install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender
#安装启动 mariadb数据库
yum -y install mariadb mariadb-server
systemctl start mariadb.service
#初始化数据库
#mysql_secure_installation #设置密码,删除匿名用户,禁止root远程登录,删除test库
#创建数据库
mysql -e 'create database zabbix_proxy character set utf8 collate utf8_bin;'
mysql -e 'grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by "zabbix_proxy";'
mysql -e 'flush privileges;'
#导入数据
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.3/schema.sql.gz |mysql -uzabbix_proxy -pzabbix_proxy -D zabbix_proxy
#修改配置文件
cat >>/etc/my.cnf.d/server.cnf<<EOF
[mysqld]
skip_name_resolve = ON #跳过主机名解析
innodb_file_per_table = ON #
innodb_buffer_pool_size = 256M #缓存池大小
max_connections = 1000 #最大连接数
log-bin = logbin #开启二进制日志
EOF
#重启服务
systemctl restart mariadb.service
#配置zabbix-proxy
sed -i.bak "/^Server=/c Server=$Zabbix_Service" /etc/zabbix/zabbix_proxy.conf
sed -i "/^Hostname=/c Hostname=$(echo `hostname`)" /etc/zabbix/zabbix_proxy.conf
sed -i '/^DBName=/c DBName=zabbix_proxy' /etc/zabbix/zabbix_proxy.conf
sed -i '/^DBUser=/c DBUser=zabbix_proxy' /etc/zabbix/zabbix_proxy.conf
sed -i '/^# DBPassword=/i DBPassword=zabbix_proxy' /etc/zabbix/zabbix_proxy.conf
sed -i '/^# ConfigFrequency=/i ConfigFrequency=60' /etc/zabbix/zabbix_proxy.conf
echo "EnableRemoteCommands=1" >> /etc/zabbix/zabbix_proxy.conf
echo "LogRemoteCommands=1" >> /etc/zabbix/zabbix_proxy.conf
#启动服务并开机自启
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
#安装netsats等网络工具
yum -y install net-tools
#输出信息
echo -e "Now you can use \033[32mnetstat -tnlp\033[0m check \033[33mport:10051\033[0m"
在zabbix web上操作
把代理加入监控server,创建配置agent 代理
管理 --> agent代理程序 --> 创建代理
创建 agent2 主机,并采用代理监控
创建后查看主机列表
配置成功
接下来可以创建一个监控项测试一下
将前面保存的模板文件关联到 host4 上, 将UserParameter配置文件传到 host4 主机上并重启服务
[root@host2 ~]# scp /etc/zabbix/zabbix_agentd.d/data_file_no.conf 192.168.10.14:/etc/zabbix/zabbix_agentd.d/
[root@host4 ~]# systemctl restart zabbix-agent
将前面创建的模板关联到 host4
可以看到, 监控项和触发器都有了
在 host4 上创建文件测试数据是否正确
[root@host4 ~]# mkdir /data
[root@host4 ~]# touch /data/{a..g}
[root@host4 ~]# ls /data/|wc -l
7
在web上看最新数据
再创建几个
[root@host4 ~]# touch /data/{1..3}

浙公网安备 33010602011771号