2-主动被动模式
1. 简介
主动模式与被动两种模式的主要区别在于数据的连接方向

被动模式下使用Zabbix Agent , 这意味着轮询器(内部Zabbix Serve进程)连接到端口10050/TCP上的代理并轮询某个值(例如 , 主机CPU负载)。轮询器等待 , 直到主机上的代理使用该值进行响应。最后Zabbix Server获得该值 , 接着连接关闭。
主动模式下 , 所有数据处理轮询都在Agent上执行 , 不受pollers的干扰。但是 , Agent又需要知道应该监视哪些指标 , 所以Agent每两分钟(默认情况下)连接一次Zabbix Server的主动( trapper) 端口10051/TCP。Agent请求有关项的信息 , 然后在Agent主机上执行监控程序 , 并通过相同的10051/TCP端口将数据推送到Zabbix Server。
第一个优势来自于安装Zabbix Agent的网络的拓扑结构。例如 , 一些使用者可能不希望在他们的环境中有任何传入的连接 , 甚至不希望有来自内部网络的连接 , 但是允许出站连接。在这样的场景下 , 不得不使用主动模式。
现在 , 假设您打算在您的主机上设置除监视之外的自动问题解决机制。Windows services的最简单示例是配置项和触发器 , 以检查特定服务的健康状况。但是在通知用户Windows服务已经停止之前 , 您需要尝试自动重新启动它。
在前端中 , Configuration > Actions > Steps > Remote Command.添加一个CMD远程命令:
net start <service_name>每次触发器触发时 , Zabbix代理将尝试启动服务。如果它没有这样做 , 那么将发送一个通知。但是这个远程命令只能在Agent被动模式下工作。

Zabbix Agent这二种模式 , 用通俗易懂的讲 :
主动模式 :
Zabbix Agent启动之后 , 把采集的数据主动发给Zabbix Server或者Zabbix Porxy。被动模式 :
Zabbix Server或者Zabbix Proxy被动找Zabbix Agent拿监控数据。

这二种模式在使用过程中有所不同 , 各有优势 , 主要有以下区别
2. 性能优势
被动Agent模式 , 轮询器连接到主机 , 请求数据 , 然后等待 , 直到它收到数据或超时。

超时值存储在zabbix_server.conf中的超时变量中。最大值是30秒 , 如果在生产中使用这个值( 30s) 那么轮询等待时间则太长。

超时值也可以在Zabbix Agent配置文件中设置。zabbix_agentd.conf。如果设置3秒 , 那么这个进程会等待3秒或者规定时间内拿到了返回值 , 进程关闭。
一般此值设置多长时间呢?通过下面的命令就可以知道你的可以设置的值。
time zabbix_get -s 127.0.0.1 -k system.cpu.load
它只需要0.002秒。
现在 , 有一个自定义参数 , 它执行一个Bash脚本 , 该脚本每分钟运行15秒。然后轮询器将等待15秒 , 直到它获得该值 , 且不能在此期间处理任何其他项。Zabbix Server轮询器的等待时间将显著增加 , 这时增加这些进程的数量才能跟上监控项目的数量。
同样对于Agent , 如果您有一个具有大量脚本和用户参数的代理 , 并且这些脚本和用户参数相对较慢 , 那么代理将需要一定的时间来处理它们。默认内部代理进程的数量存储在StartAgents变量中。

有三个内部进程可以执行所需的检查 , 在默认情况下 , 代理可以同时处理三个项请求数据。如果有大量运行缓慢的检查 , 并且Agent进程处理达到瓶颈 , 则可以增加此参数。通过将StartAgents值增加到合适的值( 0-100) 范围 , 接着可以增加Zabbix服务器上的轮询器数量。需要注意 , 运行缓慢的检查会降低Zabbix Server的性能。
主动模式似乎更适合这个场景——Zabbix Server根本不进行干预 , 只接收已经收集的数据即可。处理都是在Agent上完成 , Agent它运行Bash脚本 , 等待15秒 , 然后获取数据。一旦收集了数据 , 代理就会立即向服务器发送响应 , 这样服务器就不必在脚本运行时等待。

主动模式也是有缺点的 , 缺点是 , 每个代理只能有一个这样的进程 , 并且不可能增加检查的进程数量。如果您有多个条目且每个运行15秒 , 并且主机上的更新间隔很短 , 并且您将所有这些条目配置为活动检查 , 那么就很大可能会有一些监控项未及时收到数据而被计算到队列中。
总而言之 , 在大多数情况下使用快速检查时 , 主动Agent在性能方面表现更好。缺点是不能使用远程命令( 前端的Action里的远程命令) 。
相反地 , 如果你有很多慢的项目 , 每项耗时30秒 , 并且你不能在Agent之外处理它们 , 那么被动模式是你唯一的选择。使用这些方法 , 可以增加代理端上的进程数量。
主动模式检查的另一个好处是 , Agent有一个用于这些检查的内存缓冲区。这意味着在出现网络问题时不会丢失数据。使用被动模式没有缓冲区。
3. agent配置
3.1基本配置
默认设置是被动的 , 这意味着即使是默认的Zabbix Server主机也将所有Zabbix Agent类型配置为被动的。
每个代理可以同时以两种模式运行。可以让一台机器在被动模式下运行10个监控项 , 在主动模式下运行10个监控项。这是使用相同的Agent完成的 , 不同之处在于配置文件。
被动模式

在
zabbix_agentd中配置被动检查时.conf, 您只需要更改一个参数Server。它是一个以逗号分隔的IP地址和DNS名称列表 , 代理将从中接受传入的连接。Zabbix服务器连接到这个代理并轮询数据。如果需要彻底关闭被动模式, 需要修改这个参数的同时将
StartAgents设置为0,这个参数的主要目的是设置agent中用于检测被动模式的进程数量主动模式

主动模式需要更深入的配置。首先 , 您需要
ServerActive变量。这是Zabbix服务器或代理的IP地址和DNS名称列表 , 代理将每两分钟连接一次 , 以请求配置。在接收到配置之后 , 它启动所请求的监视并推送所收集的数据。

在同一个zabbix_agentd.conf文件中 , 还有一个名为Hostname的参数。此主机名必须与前端中指定的主机名(区分大小写)匹配。

要在前端查看主机名 , 请转到Configuration > Hosts。注意 , 这个值是区分大小写的。

在zabbix_agentd.conf , 还有HostnameItem参数。如果未设置主机名 , 则在主机上执行此处指定的项 , 并将该项的返回值作为主机名。默认Key是'system.hostname '。
当HostnameItem参数未设置时 , 将使用实际的系统主机名。然而 , 后者并不总是匹配预期的值。您可以通过运行以下Bash命令检查默认报告的主机名:
zabbix_get -s127.0.0.1 -k system.hostname假设您有一台Zabbix Server和一台名为“Zabbix Server”的Agent , 并且还有一台不同的服务器在运行具有相同主机名的Zabbix Server。然后 , 来自Zabbix Server主机的项将从两个不同的服务器接收它们的值。
您将会在最新的历史图形值中看到差异。例如 , 空闲磁盘空间可以在两个不同的值之间反复变化 , 每个值对于其各自的服务器都是有效的 , 从而导致错误的报告。这强调了为每个代理分配唯一主机名的重要性。
3.2 远程命令
在Zabbix Agent配置文件中开启
EnableRemoteCommands=1
LogRemoteCommands=1EnableRemoteCommands: 配置开启远程命令LogRemoteCommands: 在日志中记录远程命令
配置之后重启Zabbix Agent
由于zabbix执行命令默认是以zabbix 系统用户执行 , 因此需要在操作系统上为zabbix用户配置sudo。 输入visudo
添加zabbix ALL=NOPASSWD: ALL 配置为ALL , 这里也可以配置成具体的命令zabbix ALL=NOPASSWD: /etc/init.d/nginx restart
4. 配置实例
4.1 全克隆模板
这里主要是演示将模板中的被动模式调整为主动模式。zabbix版本为4,zabbix6操作与zabbix4类似
全克隆
Template OS Linux模板

命名全克隆后的名称,然后在下面点击添加

将全克隆后的模板的监控项改为主动模式

点进去之后点击上面的对号,将模式全部选中,然后在最下面选中批量更新

将
Zabbix默认的被动模式改为主动模式
修改完配置之后,点击更新即可。

4.2 主动模式
环境中默认配置了zabbix-agent
配置
zabbix-agent配置文件[root@centos8 ~]# grep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf #主动模式主要配置这两个参数, ServerActive表示需要主动连接的server或者proxy, hostname指定的主机名需要和配置主机的主机名对应 ServerActive=192.168.194.131 Hostname=192.168.194.135启动服务
[root@centos8 ~]# systemctl start zabbix-agentzabbix页面添加该主机
查看监控主机,这里需要注意, 由于主动模式 ,zabbix可用性图标是不会亮的,只有被动模式才会显示出来。需要单独调整模板中对应的监控项

进入对应模板的监控项中

往下划, 点击
agent ping选项 ,然后点击批量更新将类型调整为
Zabbix客户端,之后点击更新即可
更一段时间之后页面可用性图标自然变成绿色

参考链接
官方博文|Zabbix Agent: 主动模式 VS 被动模式 (qq.com)
【老张监控技术】详谈Zabbix Agent被动模式配置 (qq.com)
Zabbix之四---Zabbix主被动模式监控、主被动模式proxy使用以及主动模式tomcat监控 - 一叶知秋~~ - 博客园 (cnblogs.com)