前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >官方博文|Zabbix Agent: 主动模式 VS 被动模式

官方博文|Zabbix Agent: 主动模式 VS 被动模式

作者头像
Zabbix
发布2021-01-29 17:34:33
3.3K0
发布2021-01-29 17:34:33
举报
文章被收录于专栏:Zabbix中国官方Zabbix中国官方

Zabbix 4.0 高级认证专家

(点击查看如何认证?)

  • 长期从事Zabbix相关监控工作,3年Zabbix实施经验,参与过国内多家银行、保险客户的Zabbix监控实施项目。
  • Zabbix社区优质内容创作者,发表多篇技术文章。
  • Zabbix社区在线课程讲师。

简介

当涉及到Zabbix Agent模式时,可以在主动模式和被动模式之间进行选择。每次在前端添加新项或主机时,您都需要选择项类型。

项目类型下拉

这是必需的,因为项类型决定了项的工作方式和收集数据的方式。对于Zabbix代理,可以在“Zabbix Agent(主动)”和“Zabbix Agent(被动)"之间进行选择。

主动 VS 被动

在介绍之前您可能已经知道这两种模式之间的区别,但是您知道这两种选择的实际好处吗? 主要的区别在于数据连接的方向。

主动和被动 Agent 连接方式

被动模式下使用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服务已经停止之前,您需要尝试自动重新启动它。

这就需要一个远程命令。通过观看视频Zabbix Email Notifications And Actions,您可以了解关于设置远程命令的更多信息(https://www.youtube.com/watch?v=Y3O6-X-Zb18)。

在前端中,Configuration > Actions > Steps > Remote Command. 添加一个 CMD 远程命令:

代码语言:javascript
复制
net start <service_name>

每次触发器触发时,Zabbix代理将尝试启动服务。如果它没有这样做,那么将发送一个通知。但是这个远程命令只能在Agent被动模式下工作。

性能优势

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

服务器超时值

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

Agent超时值

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

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

代码语言:javascript
复制
time zabbix_get -s 127.0.0.1 -k system.cpu.load

为项目请求计时

它只需要0.002秒。

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

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

默认启动的Agent进程

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

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

在Agent主动检查

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

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

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

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

Agent 配置

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

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

被动检查

更改被动Server列表

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

主动检查

更改主动动Server列表

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

更改主机名

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

前端主机名

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

HostnameItem参数

在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主机的项将从两个不同的服务器接收它们的值。

您将会在最新的历史图形值中看到差异。例如,空闲磁盘空间可以在两个不同的值之间反复变化,每个值对于其各自的服务器都是有效的,从而导致错误的报告。这强调了为每个代理分配唯一主机名的重要性。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档