当zabbix_server端主机数量过多的时候,虽然可以通过增加代理的方式来进行数据收集,但是需要增加proxy机,所以还是得通过zabbix_agent主动往Server端去发生数据来解决,否则,Zabbix会出现严重的性能问题,主要表现如下:
1、当被监控端主机过多时,web操作很卡,容易出现502,以及数据库等方面的问题。
2、容易造成图层断裂。
3、开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题
所以下面主要往两个优化方向考虑:
1、添加Proxy节点做分布式监控
2、调整Agentd为主动模式
以下操作为调整Agentd为主动模式的优化方式:
1.新建主机server3(ip为172.25.17.3),并在server3端安装zabbix-agent:
[root@server3 mnt]# rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm
warning: zabbix-agent-3.4.6-1.el6.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ########################################### [100%]
1:zabbix-agent ########################################### [100%]
2在Zabbix管理界面修改模板作为主动模式的模板:
找到模板Template OS Linux:
点击模板进入模板内部界面,点击最下方‘全克隆’用来克隆一个主动模式的模板:
全克隆之后,在新的模板页输入新模板的名字Template OS Linux-active,之后点击添加:
在模板夜里找到刚才新建的模板,点击监控项:
进入模板页选中全部监控项:
选中之后最下方点击批量更新:
接下来在类型里选择主动式:
到此模板就制作完成了。
3.新建被监控agent:
编辑agent的配置文件:
[root@server3 mnt]# vim /etc/zabbix/zabbix_agentd.conf
设定Server为zabbix-server服务端的ip:
95 # Server=
96
97 Server=172.25.17.11
设定客户端agent模式:
120 # Range: 0-100
121 # Default:
122 StartAgents=3 #设定客户端agent模式,0表示禁用被动模式
123
设定ServerActive为zabbix-server端ip:
137
138 ServerActive=172.25.17.11
139 ### Option: Hostname
设定主机名:
这里的主机名需要和本机主机名一致,并且在本机和server端的/etc/hosts文件中有相应解析:
147
148 Hostname=server3
149
150 ### Option: HostnameItem
配置文件设定完成之后开启zabbix-agent服务:
[root@server3 mnt]# /etc/init.d/zabbix-agent start
Starting Zabbix agent: [ OK ]
查看端口10050开启:
[root@server3 mnt]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 922/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 998/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2092/zabbix_agentd
tcp 0 0 172.25.17.3:22 172.25.17.250:33584 ESTABLISHED 1388/sshd
tcp 0 0 :::22 :::* LISTEN 922/sshd
tcp 0 0 ::1:25 :::* LISTEN 998/master
tcp 0 0 :::10050 :::* LISTEN 2092/zabbix_agentd
1.在server2(ip为172.25.17.2)端编辑zabbix-agent的配置文件:
[root@server2 bin]# vim /etc/zabbix/zabbix_agentd.conf
设定server3为server2的代理:
95 # Server=
96
97 Server=172.25.17.3
136 # ServerActive=
137
138 ServerActive=172.25.17.3
配置文件保存退出后重启zabbix-agent服务:
[root@server2 bin]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
2.在server3端停掉zabbix-agent服务并安装fping,用于linux redhat6版本的zabbix-proxy-mysql和mysql-server:
[root@server3 mnt]# /etc/init.d/zabbix-agent stop
Shutting down Zabbix agent: [ OK ]
[root@server3 mnt]# yum install fping-2.4b2-16.el6.x86_64.rpm zabbix-proxy-mysql-3.4.6-1.el6.x86_64.rpm mysql-server -y
开启数据库服务:
[root@server3 mnt]# /etc/init.d/mysqld start
3.配置数据库:
[root@server3 mnt]# mysql #进入数据库
mysql> create database zabbix_proxy character set utf8 collate utf8_bin; #创建代理数据库
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'westos'; #用户授权
Query OK, 0 rows affected (0.00 sec)
进入zabbix-proxy-mysql安装目录进行配置:
[root@server3 mnt]# cd /usr/share/doc/zabbix-proxy-mysql-3.4.6/
[root@server3 zabbix-proxy-mysql-3.4.6]# zcat schema.sql.gz | mysql -u zabbix -p zabbix_proxy
Enter password: #输入密码后会有一个等待时间但并不是卡住,只要等待就好。不要ctrl+c中断
[root@server3 zabbix-proxy-mysql-3.4.6]# /etc/init.d/zabbix-proxy start #开启服务
Starting Zabbix proxy: [ OK ]
配置zabbix-proxy:
进入/etc/zabbix目录编辑zabbix配置文件:
[root@server3 zabbix-proxy-mysql-3.4.6]# cd /etc/zabbix/
[root@server3 zabbix]# vim zabbix_proxy.conf
设定:
22 # Server=
23
24 Server=172.25.17.11 #设定server为zabbix-server端
41 # Hostname=
42
43 Hostname=server3 #设定主机名
190 DBPassword=westos #设定数据库密码
191
192 ### Option: DBSocket
193 # Path to MySQL socket.
194 #
195 # Mandatory: no
196 # Default:
197 DBSocket=/var/lib/mysql/mysql.sock #设定数据库socket
5.代理设置:
在“管理”项中选择"agent代理程序“:
点击右上角创建代理:
设定server3为server2(172.25.17.2)的代理:
添加成功:
结果:
主机页面server3成为172.25.17.2的代理:
在server3端查看日志:
[root@server3 mysql]# vim /var/log/zabbix/zabbix_proxy.log