大量收集大量发现的物品

(这是Zabbix 2.2.2 。)

我有一个发现规则 ,可以返回100多个项目,我想监视。 每个项目的数据可以通过调用一个单独的可执行文件的UserParameter来收集。

将这些作为被动检查来执行,会激活zabbix代理,为每个项目产生一个外部进程。

所有项目的数据可以很容易地一次收集,并批量发送到Zabbix服务器(通过zabbix_sender )。 我不知道如何正确实施。 文档不回答我(有可能是愚蠢的)的问题。

我如何让Zabbix代理对我的自定义数据收集脚本进行一次外部调用,并为100个以上发现的项目批量发回所有数据,以及不为每个项目调用客户端操作? 我想避免的是让Zabbix代理尝试单独收集每个项目。

发现规则必须创build项目。 据我所知,每个项目将导致zabbix代理试图做一些事情来收集其数据。 有没有一种方法可以防止这种情况,或将一组项目与一个客户端主动检查关联?

我不明白的部分是如何主动检查应该实施。 如果一个活动支票可以发回一批物品的数据, 那么该物品将如何定义 (因此代理商不会单独收集该物品的数据), 以及将定义哪个物品来调用活动支票 (或任何项目types应该使用),将做实际的数据收集(但不保存任何数据本身)? 这是文档没有回答的真正问题。 Zabbix如何实现主动检查或使用zabbix_sender发送项目的批量更新(代理将尝试自行收集)。

基本的Zabbix概念 – 一个项目(支票)=一个值。 Zabbix服务器不提供parsing器function来parsing多个值,所以它必须始终只有一个值。

如果要返回更多值,则必须使用一些变通方法,请参阅zabbix UserParameter返回2个或更多值

Zabbix发件人示例:

允许在zabbix-agent中执行命令并创build项目(主动或被动)来运行你的脚本:

system.run["myscript.sh > output_for_zabbix_sender.txt; zabbix_sender -s <host_name> -z <zabbix_server> -i output_for_zabbix_sender",nowait] 

它会在nowait模式下执行命令。 myscript.sh以格式产生输出:

 hostname key1 value1 hostname key2 value2 ... 

这个输出被zabbix_sender处理(发送)到zabbix服务器。 在这种情况下,物品types必须是Zabbix捕手(zabbix_sender)。 最终你不需要system.run项目,你可以使用zabbix_sender作为cron作业执行脚本。

如果您需要完善的监控解决scheme,请不要忘记处理错误,尽量减lessIOP,…

您也可以使用zabbix_sender进行发现 – 只需遵循有关所需格式的文档,例如:

 hostname discovery_key {"data":[{"{#ID}": "/"},{"{#ID}":"/usr"},{"{#ID}":"/var"}]}