分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口

本文介绍如何使用Zabbix批量添加主机进行监控,并实现自动发现端口功能。详细步骤包括批量安装zabbix_agent、配置自动发现规则及端口监控脚本。

一、Zabbix-3.0.3批量添加主机的配置如下:

0)被监控机上要安装zabbix_agent,并配置好zabbix_agentd.conf (如下172.29.8.50是zabbix_server机器的ip地址)

1
2
3
4
5
可批量修改zabbix_agentd.conf,如下:
sed -i 's/Server=127.0.0.1/Server=172.29.8.50/g' /etc/zabbix/zabbix_agentd.conf
sed -i 's/ServerActive=127.0.0.1/ServerActive=172.29.8.50/g' /etc/zabbix/zabbix_agentd.conf
grep "Server" /etc/zabbix/zabbix_agentd.conf | grep -v '^#'
service zabbix-agent restart

1)创建自动发现规则。"配置"->"自动发现"->"创建自动发现"

如下“检查”的配置为:选择“Zabbix agent”检测类型、端口10050、Key填写“system.uname”  (ip范围可以多种方式填写,比如:172.29.8.21-27,172.29.33.21-29,172.29.34.34)

2)创建Action动作(事件源是“自动发现”)

上面“操作”里的“默认接收人”和“默认信息”都是默认的配置,不用修改,只需要添加下面的操作即可

3)等一会儿,就会发现已批量添加了上面配置的网段的机器

上面采用"自动发现"批量添加主机后,显示的名称是主机的ip地址。即添加的客户端主机的Host name是以IP地址命名的,不够人性化。
要想实现自定义主机名,方法是:
在zabbix_server主机的/etc/hosts里面做好客户端的主机名和IP映射

1
2
3
4
5
6
7
8
[root@IDC-Admin-02 ~]# cat /etc/hosts
......
LX-DB-8_21-172.29.8.21    172.29.8.21
LX-DB-8_21-172.29.8.23    172.29.8.23
LX-DB-8_21-172.29.8.24    172.29.8.24
LX-DB-8_21-172.29.8.25    172.29.8.25
LX-DB-8_21-172.29.8.26    172.29.8.26
LX-DB-8_21-172.29.8.27    172.29.8.27

如上配置后,删除首次"自动发现"批量创建的主机,再次创建后,批量创建的主机的显示名称就是其主机名了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
------------------------------------批量添加主机到zabbix监控中---------------------------------
将新上线的172.29.32.0/24网段的服务器添加到zabbix监控中,zabbix_agent一键安装脚本为:https://pan.baidu.com/s/1o8wpFpo     提取密码:7qsi
 
操作步骤记录(下面是在zabbix server端操作的):
[root@zabbix ~]# nmap -sn 172.29.32.0/24
 
Starting Nmap 5.51 ( http://nmap.org ) at 2017-09-05 09:29 CST
Nmap scan report for 172.29.32.1
Host is up (0.0020s latency).
Nmap scan report for 172.29.32.2
Host is up (0.00071s latency).
Nmap scan report for 172.29.32.3
Host is up (0.00092s latency).
Nmap scan report for usercenter01.WANG.cn (172.29.32.21)
Host is up (0.00064s latency).
Nmap scan report for usercenter02.WANG.cn (172.29.32.22)
Host is up (0.00042s latency).
Nmap scan report for passport01.WANG.cn (172.29.32.23)
Host is up (0.00061s latency).
Nmap scan report for passport02.WANG.cn (172.29.32.24)
Host is up (0.00068s latency).
..........
 
[root@zabbix ~]# nmap -sn 172.29.32.0/24|grep 172.29.32|awk '{print $6}'|cut -d"(" -f2|cut -d ")" -f1
 
 
 
172.29.32.21
172.29.32.22
172.29.32.23
172.29.32.24
172.29.32.25
172.29.32.26
172.29.32.27
172.29.32.28
 
172.29.32.30
172.29.32.31
172.29.32.32
172.29.32.33
172.29.32.34
........
 
将ip读取到一个列表文件中/mnt/a.txt
[root@zabbix ~]# nmap -sn 172.29.32.0/24|grep 172.29.32|awk '{print $6}'|cut -d"(" -f2|cut -d ")" -f1 > /mnt/a.txt
[root@zabbix ~]# cat /mnt/a.txt
--------------------------------------------------------------------------------------------------------------------
或者这里也可以使用造数命令:
[root@localhost ~]# for i in `seq 21 64`;do echo 172.29.32.$i >> /mnt/a.txt;done
[root@localhost ~]# cat /mnt/a.txt 
--------------------------------------------------------------------------------------------------------------------
 
参考http://www.cnblogs.com/kevingrace/p/5900303.html,配置到这些被监控主机的信任关系
 
安装expect步骤这里省略~
[root@zabbix ~]# cd /mnt/
[root@zabbix mnt]# ls
a.txt  noscp.exp sshkey.exp  sshkey.sh
 
这些被监控主机的ssh端口都是22222,密码都是默认的WANG-@@@-12345(如果端口和密码是其他的,就按照实际情况进行脚本修改)
[root@zabbix mnt]# cat noscp.exp
#!/usr/bin/expect
 
#noscp.exp
 
if {$argc<4} {
puts stderr "Usage: $argv0 localfile remotefile user passwd "
exit 1
}
 
set localfile [ lindex $argv 0 ]
set remotefile [ lindex $argv 1 ]
set user [ lindex $argv 2 ]
set pwd [ lindex $argv 3 ]
 
set timeout 30
 
spawn scp -P 22222 ${localfile} ${user}@${remotefile}
 
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$pwd\r" }
}
 
expect eof
 
[root@zabbix mnt]# cat sshkey.exp
#!/usr/bin/expect
 
#sshkey.exp
 
if {$argc<3} {
puts stderr "Usage: $argv0 host user passwd "
exit 1
}
 
set host [ lindex $argv 0 ]
set user [ lindex $argv 1 ]
set pwd [ lindex $argv 2 ]
 
set timeout 30
 
#spawn ssh ${user}@${host} "rm -rf ~/.ssh/id_rsa*"
#
#expect {
# "*yes/no" { send "yes\r"; exp_continue }
# "*password:" { send "$pwd\r"; exp_continue }
#}
 
spawn ssh -p22222 ${user}@${host} "ssh-keygen -t rsa"
 
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$pwd\r"; exp_continue }
"Enter file in which to save the key*" { send "\n\r"; exp_continue }
"Overwrite*" { send "y\n"; exp_continue }
"Enter passphrase (empty for no passphrase):" { send "\n\r"; exp_continue }
"Enter same passphrase again:" { send "\n\r" }
}
 
spawn ssh -p22222 ${user}@${host} "cat ~/.ssh/id_rsa.pub"
 
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$pwd\r" }
}
 
expect eof
 
[root@zabbix mnt]# cat sshkey.sh
#!/bin/bash
for ip in `cat /mnt/a.txt`
do
/mnt/sshkey.exp $ip root WANG-@@@-12345 |grep ssh-rsa >> ~/.ssh/authorized_keys
/mnt/noscp.exp ~/.ssh/authorized_keys $ip:~/.ssh root WANG-@@@-12345
done
 
接着直接运行脚本进行信任关系设置:
[root@zabbix mnt]# sh -x sshkey.sh
 
执行完之后,验证下ssh无密码信任关系是否都成功设置了:
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i;ssh -p22222 $i "hostname";done
 
然后批量进行被监控主机的zabbix_agent安装及设置(使用zabbix_agent一键脚本)。
线上的话,我是把一键安装脚本放到内网下载地址里的
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i;ssh -p22222 $i "wget http://yum.wang-inc.com/software/zabbix_agentd_install.sh && sh -x zabbix_agentd_install.sh";done
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i;ssh -p22222 $i "lsof -i:10050";done
 
接着就可以在zabbix的web界面里批量添加主机了(自动发现)。为了自动发现后能识别出主机名,先提前在zabbix server端做host。
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i >> /opt/ip.list;done
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do ssh -p22222 $i "hostname" >> /opt/hostname.list;done
[root@zabbix mnt]# paste /opt/ip.list /opt/hostname.list >> /etc/hosts
 
最后就安装上面"自动发现"实现批量添加主机.......

二、Zabbix-3.0.3自动发现端口的配置如下:

1)编写自动发现端口的脚本discovertcpport.sh。配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@IDC-Admin-02 ~]# cd /data/zabbix/monitor_scripts/
[root@IDC-Admin-02 monitor_scripts]# cat discovertcpport.sh
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
  do
     printf '\n\t\t{'
     printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
     if [ $i -lt $[$length-1] ];then
                printf ','
     fi
  done
printf  "\n\t]\n"
printf "}\n"
 
脚本说明:
使用netstat命令输出端口号;-tnlp=Tcp协议+不显示别名+listen状态+显示程序名称;$1~$9表示输出的第几个参数;
awk {'print $4'}表示输出第4个参数(如0.0.0.0:80);awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}
表示截取冒号后面的值,且只能是0~9的数字;|sort|uniq表示排序和去重。
 
[root@IDC-Admin-02 monitor_scripts]# chmod 755 discovertcpport.sh
[root@IDC-Admin-02 monitor_scripts]# cd /data/zabbix/etc/zabbix_agentd.conf.d/
[root@IDC-Admin-02 zabbix_agentd.conf.d]# cat discovertcp.conf
UserParameter=tcpportlisten,/bin/bash /data/zabbix/monitor_scripts/discovertcpport.sh "$1"
 
[root@IDC-Admin-02 zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd restart

==========在端口自动发现脚本中,也可以自定义发现哪些应用端口,如下===========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@IDC-Admin-02 monitor_scripts]# cat discovertcpport.sh
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "tns|java|php|httpd|xen|mysqld"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
  do
     printf '\n\t\t{'
     printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
     if [ $i -lt $[$length-1] ];then
                printf ','
     fi
  done
printf  "\n\t]\n"
printf "}\n"

===============================================================

2)服务端测试,如下测试的返回结果是正常的

1
2
3
4
5
6
7
8
9
10
[root@zabbix_server ~]# /data/zabbix/bin/zabbix_get -s 172.29.16.22 -p10050 -k "tcpportlisten"     //其中的172.20.16.22是被监控机的ip
{
   "data":[
      {"{#TCP_PORT}":"10050"},
      {"{#TCP_PORT}":"22222"},
      {"{#TCP_PORT}":"3306"},
      {"{#TCP_PORT}":"443"},
      {"{#TCP_PORT}":"80"}
   ]
}

3)在zabbix监控界面中创建端口自动发现规则

 

注意下面的“键值”要和被监控主机里的监控脚本定义的一致!

接着创建Item监控项原型

接着创建触发器原型:

注意上面“添加”里面的选择项如下

最后就是创建图像原型

查看自动发现的端口监控情况

到此,自动发现端口的监控设置已经完成。下面说下可能遇到的问题:
添加完自动发现规则之后,发现在对应主机的监控图里没有显示端口的监控项,然后发现自动发现规则的后面有问题提示:Value should be a JSON object 
这个错误的解决办法如下:
解决办法是 vim /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
#Defaults requiretty                                                                //如果有这个配置项,那么就注释掉这个。如果没有,就忽略

-----------------------------------------------------------------------------------------------------------------------------

顺便说下开启zabbix监控界面里报警声音的功能

--------------------------------------------------------------------------定制化自动发现端口-----------------------------------------------------------------
上面在自动发现端口的时候,都是默认发现被监控机上所有开启的端口。如果我们要对端口进行过滤发现,即只发现我们想要的端口,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
如下,只发现mysql、java、php-fpm、httpd、redis、mongo、oracle、node、zookeeper这些程序端口
 
[test@ ~]$ cat /data/zabbix/monitor_scripts/discovertcpport.sh
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "mysql|java|php-fpm|httpd|redis|mongo|oracle|node|zookeeper"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
  do
     printf '\n\t\t{'
     printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
     if [ $i -lt $[$length-1] ];then
                printf ','
     fi
  done
printf  "\n\t]\n"
printf "}\n"
 
 
[test@ ~]$ cat /data/zabbix/etc/zabbix_agentd.conf.d/discovertcp.conf
UserParameter=tcpportlisten[*],/data/zabbix/monitor_scripts/discovertcpport.sh "$1"
 
 
在zabbix server端进行检查(192.168.1.30是被监控机)。
如下说明该被监控机在定制的自动发现端口中只有3829和3830端口在其中
[root@zabbix ~]# /data/zabbix/bin/zabbix_get -s 192.168.1.30 -p10050 -k "tcpportlisten"
{
        "data":[
                {"{#TCP_PORT}":"3829"},
                {"{#TCP_PORT}":"3830"}
        ]
}
 
然后在zabbix 的web界面里添加监控配置,配置和上面一模一样!这样就能按照我们自己定制的端口进行自动发现了!
***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/6003433.html,如需转载请自行联系原作者
<think>我们被要求回答如何在Zabbix中实现分布式监控,并陈述具体实现方式细节。根据引用内容,特别是引用[4]引用[5],我们可以知道Zabbix Proxy是分布式监控的关键组件。同时,用户之前的问题是关于监控30台服务器,但这次明确指向分布式监控的实现。 分布式监控架构通常用于跨地域、大规模设备的监控,通过部署Proxy来分担Server的压力。引用[4]指出,Zabbix proxy是一个或多个从监控设备收集数据并发送到Zabbix server的进程,它可以将数据暂存然后转发给server,这样可以减轻server的负载。 实现步骤细节如下: 1. **架构规划**: - 确定Zabbix Server的位置,以及需要部署Zabbix Proxy的区域(例如不同机房、不同网络分区)。 - 每个Proxy负责一个区域的监控数据采集,然后将数据转发给Server。 2. **部署Zabbix Proxy**: - 在选定的机器上安装Zabbix Proxy。安装方式类似Server,但需要选择Proxy包。 ```bash # 以RHEL为例 rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm dnf install zabbix-proxy-mysql # 如果使用MySQL作为Proxy的本地数据库 ``` - Proxy需要自己的数据库(如SQLite,MySQL等)来暂存数据。对于较大的环境,建议使用MySQL或PostgreSQL。 3. **配置Zabbix Proxy**: - 编辑Proxy配置文件 `/etc/zabbix/zabbix_proxy.conf`: ```ini Server=192.168.1.100 # Zabbix Server的IP Hostname=Proxy-01 # Proxy的名称,在Server端添加Proxy时要一致 DBName=zabbix_proxy # 数据库名 DBUser=zabbix # 数据库用户 DBPassword=password # 数据库密码 # 其他配置,如数据同步时间等 ``` - 注意:Proxy的数据库需要单独创建初始化(使用Zabbix提供的schema)。 4. **在Zabbix Server上配置Proxy**: - 在Web界面中,进入`管理` → `代理程序` → 创建代理: - 输入Proxy名称(与配置文件中的Hostname一致) - 选择代理模式(主动或被动,通常主动模式性能更好) - 填写Proxy的IP地址(确保Server能访问该地址,如果是主动模式则Proxy会连接Server,所以只需Proxy能访问Server) - 设置代理的监控数据缓存时间(如1小时) 5. **将主机分配给Proxy**: -添加主机或修改主机配置时,在“代理程序”选项中选择对应的Proxy(而不是直接选择Server)。 - 这样,该主机的监控数据将通过Proxy传输到Server。 6. **调整监控项的采集模式**: - 引用[5]提到,如果使用主动模式(即Agent主动将数据发送给Proxy/Server),需要在Proxy或Server端调整参数,并修改监控项类型。 - 在Proxy上,如果Agent配置为主动模式,则监控项类型应改为“Zabbix客户端(主动式)”。 - 同时,在Proxy配置文件中,可能需要调整: ```ini StartPollers=10 # 主动收集数据的进程数(被动模式用) StartTrappers=200 # 处理主动发送过来的数据的进程数(主动模式用) ``` - 在Server端,如果Proxy以主动模式连接,则Server的`StartTrappers`参数需要足够大以处理多个Proxy的连接。 7. **数据同步机制**: - Proxy会定期从Server获取配置更新(包括监控项、触发器、主机等),然后根据配置去采集数据。 - 采集的数据先存储在Proxy本地数据库,然后按一定时间间隔(如1秒到1小时,可配置)批量发送给Server。这样即使网络中断,数据也不会丢失(在缓存时间内)。 8. **注意事项**: - **网络连接**:确保Proxy可以访问Zabbix Server(默认端口10051),并且被监控主机可以访问Proxy(主动模式)或Proxy可以访问被监控主机(被动模式)。 - **Proxy高可用**:Zabbix Proxy本身不支持高可用,但可以通过在同一个区域部署两个Proxy并手动分配主机来实现冗余(需要避免主机同时分配给两个Proxy)。 - **性能调优**:Proxy的数据库性能会影响监控效率,建议定期清理历史数据或使用性能较好的数据库- **版本匹配**:Proxy的版本最好与Server保持一致,避免兼容性问题。 9. **验证**: -Zabbix Server的Web界面中,查看`管理` → `代理程序`,检查Proxy的“状态”是否为“已启用”且“最后访问”时间在更新。 - 检查被Proxy代理的主机的监控数据是否正常。 通过以上步骤,即可实现Zabbix分布式监控架构。这种架构特别适用于监控服务器数量多、分布在不同地理位置的环境,可以有效减轻中心Server的压力,并提高监控系统的稳定性扩展性。 根据引用内容,我们还可以参考引用[3]中关于Zabbix Server的配置,但注意Proxy的配置与Server类似,只是角色不同。 最后,引用[4]强调,部署Proxy是可选的,但对于分担单个Zabbix服务器的负载是非常有益的。如果仅在proxies上收集数据,那么将减轻服务器上的进程对CPU资源磁盘I/O的消耗。 因此,对于30台服务器,如果它们分布在不同的网络区域(例如多个机房),则建议部署Proxy;如果都在同一局域网,则不一定需要,但若考虑到未来扩展,也可以提前规划。 相关问题: 1. Zabbix Proxy的数据库应该选择什么类型? 2. 如何监控Zabbix Proxy自身的运行状态? 3. 在Zabbix分布式监控中,如何确保ProxyServer之间的数据一致性?</think>### Zabbix 分布式监控实现步骤与细节 #### **一、分布式架构原理** Zabbix 分布式监控通过 **Proxy 代理层**实现,架构如下: ``` [被监控设备] → [Zabbix Proxy] → [Zabbix Server] → [Web 界面] ``` - **核心组件**: - **Proxy**:本地数据收集与缓存(引用4) - **Server**:集中数据处理与告警 - **优势**(引用1,4): - 减轻 Server 负载(CPU/磁盘I/O) - 跨地域网络优化 - 数据本地缓存(断网不丢数据) --- #### **二、部署步骤** ##### **1. Proxy 节点部署** ```bash # 在 Proxy 节点安装(RHEL/CentOS 示例) rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm dnf install zabbix-proxy-mysql zabbix-sql-scripts ``` ##### **2. Proxy 数据库配置** ```bash # 创建专用数据库(Proxy 本地) mysql> CREATE DATABASE zabbix_proxy CHARACTER SET utf8; mysql> GRANT ALL ON zabbix_proxy.* TO 'zproxy'@'localhost' IDENTIFIED BY 'password'; mysql> FLUSH PRIVILEGES; # 导入初始 Schema zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql -uzproxy -p zabbix_proxy ``` ##### **3. Proxy 关键配置** ```ini # /etc/zabbix/zabbix_proxy.conf Server=192.168.1.100 # Zabbix Server IP Hostname=NYC-Proxy-01 # 唯一标识(需与 Server 配置一致) DBName=zabbix_proxy DBUser=zproxy DBPassword=password ProxyLocalBuffer=12h # 本地缓存时间(引用4) ProxyOfflineBuffer=48h # 断网缓存时间 StartPollers=50 # 并发采集进程数(引用5) ``` ##### **4. Server 端配置 Proxy** ```ini # /etc/zabbix/zabbix_server.conf StartPollers=10 # 减少主动轮询(引用5) StartTrappers=200 # 增加代理数据处理进程(引用5) ``` ##### **5. Web 界面配置** 1. `管理` → `代理程序` → 创建代理 - **代理名称**:与 `Hostname` 一致(如 `NYC-Proxy-01`) - **代理模式**:主动式(推荐) - **访问IP**:Proxy 节点的公网/IP 2. 将目标主机分配给 Proxy: ```mermaid graph LR A[主机-纽约机房] --> B(NYC-Proxy-01) B --> C[Zabbix Server] ``` --- #### **三、关键细节与优化** 1. **网络隔离场景** - Proxy 部署在 DMZ 区,Server 在内网 - 仅开放 Proxy → Server `10051/TCP`(单向通信) 2. **主动式监控配置**(引用5) 在 Agent 端: ```ini ServerActive=192.168.10.20 # Proxy IP Hostname=web-nyc-01 # 与 Server 注册名一致 ``` 3. **数据同步机制** - 配置同步:Server → Proxy(每 1 分钟) - 数据上传:Proxy → Server(每 5 秒批量发送) 4. **性能调优参数** ```ini # Proxy 端 CacheSize=1G # 值缓存大小 StartDBSyncers=8 # 数据库写入进程 HistoryCacheSize=512M # 历史数据缓存 # Server 端 CacheSize=2G # 总缓存大小 HistoryCacheSize=1G ``` 5. **高可用方案** - 同区域部署双 Proxy(Nginx 负载均衡 Agent 连接) - Proxy 数据库定期备份: ```bash mysqldump -u zproxy zabbix_proxy | gzip > /backup/proxy_$(date +%F).sql.gz ``` --- #### **四、故障排查要点** 1. **状态检查** ```bash # Proxy 日志检查 tail -f /var/log/zabbix/zabbix_proxy.log | grep -E 'error|failed' # Server 端验证 Proxy 连接 zabbix_get -s 192.168.10.20 -k agent.ping ``` 2. **常见错误** - **数据延迟**:检查 `ProxyLocalBuffer` 网络带宽 - **配置不同步**:验证 Proxy `Hostname` 与 Server 一致 - **数据库锁表**:优化 Proxy 的 `StartDBSyncers` 参数 3. **监控 Proxy 自身** 为每个 Proxy 添加监控项: - `zabbix[proxy,NYC-Proxy-01,lastaccess]`:检测心跳 - `zabbix[proxy,NYC-Proxy-01,history]`:数据积压量 --- #### **五、适用场景分析** | **场景** | **推荐方案** | **优势** | |------------------------|----------------------|--------------------------| | 跨地域多机房 | 每机房部署 Proxy | 降低跨地域带宽消耗 | | 监控设备 > 500 台 | 分层 Proxy 架构 | 避免 Server 单点瓶颈 | | 安全隔离区域 | 专用 Proxy 穿透 | 无需开放 Agent 到 Server | | 移动/物联网设备 | Proxy + 本地缓存 | 容忍网络波动 | > **最佳实践**:当监控设备超过 300 台或跨 3 个以上网络分区时,必须部署分布式架构[^4][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值