2-主动被动模式

熊 0 阅读 监控平台

1. 简介

主动模式与被动两种模式的主要区别在于数据的连接方向

zabbix-active-pasive-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-active-pasive-1

Zabbix Agent这二种模式 , 用通俗易懂的讲 :

  • 主动模式 : Zabbix Agent启动之后 , 把采集的数据主动发给Zabbix Server或者Zabbix Porxy。

  • 被动模式 : Zabbix Server或者Zabbix Proxy被动找Zabbix Agent拿监控数据。

zabbix-active-pasive-2

这二种模式在使用过程中有所不同 , 各有优势 , 主要有以下区别

模式

Server压力

远程命令

日志监控

主动

低

不支持

支持

被动

高

支持

不支持

2. 性能优势

被动Agent模式 , 轮询器连接到主机 , 请求数据 , 然后等待 , 直到它收到数据或超时。

zabbix-active-pasive-2

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

zabbix-active-pasive-3

超时值也可以在Zabbix Agent配置文件中设置。zabbix_agentd.conf。如果设置3秒 , 那么这个进程会等待3秒或者规定时间内拿到了返回值 , 进程关闭。

一般此值设置多长时间呢?通过下面的命令就可以知道你的可以设置的值。

time zabbix_get -s 127.0.0.1 -k system.cpu.load
zabbix-active-pasive-4

它只需要0.002秒。

现在 , 有一个自定义参数 , 它执行一个Bash脚本 , 该脚本每分钟运行15秒。然后轮询器将等待15秒 , 直到它获得该值 , 且不能在此期间处理任何其他项。Zabbix Server轮询器的等待时间将显著增加 , 这时增加这些进程的数量才能跟上监控项目的数量。

同样对于Agent , 如果您有一个具有大量脚本和用户参数的代理 , 并且这些脚本和用户参数相对较慢 , 那么代理将需要一定的时间来处理它们。默认内部代理进程的数量存储在StartAgents变量中。

zabbix-active-pasive-5

有三个内部进程可以执行所需的检查 , 在默认情况下 , 代理可以同时处理三个项请求数据。如果有大量运行缓慢的检查 , 并且Agent进程处理达到瓶颈 , 则可以增加此参数。通过将StartAgents值增加到合适的值( 0-100) 范围 , 接着可以增加Zabbix服务器上的轮询器数量。需要注意 , 运行缓慢的检查会降低Zabbix Server的性能。

主动模式似乎更适合这个场景——Zabbix Server根本不进行干预 , 只接收已经收集的数据即可。处理都是在Agent上完成 , Agent它运行Bash脚本 , 等待15秒 , 然后获取数据。一旦收集了数据 , 代理就会立即向服务器发送响应 , 这样服务器就不必在脚本运行时等待。

zabbix-active-pasive-6

主动模式也是有缺点的 , 缺点是 , 每个代理只能有一个这样的进程 , 并且不可能增加检查的进程数量。如果您有多个条目且每个运行15秒 , 并且主机上的更新间隔很短 , 并且您将所有这些条目配置为活动检查 , 那么就很大可能会有一些监控项未及时收到数据而被计算到队列中。

总而言之 , 在大多数情况下使用快速检查时 , 主动Agent在性能方面表现更好。缺点是不能使用远程命令( 前端的Action里的远程命令) 。

相反地 , 如果你有很多慢的项目 , 每项耗时30秒 , 并且你不能在Agent之外处理它们 , 那么被动模式是你唯一的选择。使用这些方法 , 可以增加代理端上的进程数量。

主动模式检查的另一个好处是 , Agent有一个用于这些检查的内存缓冲区。这意味着在出现网络问题时不会丢失数据。使用被动模式没有缓冲区。

3. agent配置

3.1基本配置

默认设置是被动的 , 这意味着即使是默认的Zabbix Server主机也将所有Zabbix Agent类型配置为被动的。

每个代理可以同时以两种模式运行。可以让一台机器在被动模式下运行10个监控项 , 在主动模式下运行10个监控项。这是使用相同的Agent完成的 , 不同之处在于配置文件。

  • 被动模式

    zabbix-active-pasive-7

    在zabbix_agentd中配置被动检查时.conf , 您只需要更改一个参数Server。它是一个以逗号分隔的IP地址和DNS名称列表 , 代理将从中接受传入的连接。Zabbix服务器连接到这个代理并轮询数据。

    如果需要彻底关闭被动模式, 需要修改这个参数的同时将StartAgents设置为0,这个参数的主要目的是设置agent中用于检测被动模式的进程数量

  • 主动模式

    zabbix-active-pasive-8

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

zabbix-active-pasive-9

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

zabbix-active-pasive-10

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

zabbix-active-pasive-12

在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=1
  • EnableRemoteCommands : 配置开启远程命令

  • 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类似

  1. 全克隆Template OS Linux模板

    zabbix-active-pasive-14
    zabbix-active-pasive-15
  2. 命名全克隆后的名称,然后在下面点击添加

    zabbix-active-pasive-16
  3. 将全克隆后的模板的监控项改为主动模式

    zabbix-active-pasive-17
  4. 点进去之后点击上面的对号,将模式全部选中,然后在最下面选中批量更新

    zabbix-active-pasive-18
  5. 将Zabbix默认的被动模式改为主动模式

    zabbix-active-pasive-19
  6. 修改完配置之后,点击更新即可。

    zabbix-active-pasive-20

4.2 主动模式

环境中默认配置了zabbix-agent

  1. 配置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
  2. 启动服务

    [root@centos8 ~]# systemctl start  zabbix-agent
  3. zabbix页面添加该主机

    image-20240315131320580
  4. 查看监控主机,这里需要注意, 由于主动模式 ,zabbix可用性图标是不会亮的,只有被动模式才会显示出来。需要单独调整模板中对应的监控项

    image-20240315131717289
  5. 进入对应模板的监控项中

    image-20240315131830241

    往下划, 点击agent ping选项 ,然后点击批量更新

    将类型调整为Zabbix客户端,之后点击更新即可

    image-20240315132118832

    更一段时间之后页面可用性图标自然变成绿色

    image-20240315132549164


参考链接

官方博文|Zabbix Agent: 主动模式 VS 被动模式 (qq.com)

【老张监控技术】详谈Zabbix Agent被动模式配置 (qq.com)

Zabbix之四---Zabbix主被动模式监控、主被动模式proxy使用以及主动模式tomcat监控 - 一叶知秋~~ - 博客园 (cnblogs.com)