如何让 Zabbix 报告过期的包?

如何让 Zabbix 报告过期的包?

如何配置 Zabbix 以报告具有过时软件包的 Linux 服务器?

以下 shell 命令报告是否有可用的软件包更新:

/usr/bin/yum --debuglevel 2 --security check-update 2>/dev/null \
    | grep -P '(?<! 0 packages) available$'

如果没有更新则返回空字符串。如果有更新则返回:

10 packages available

答案1

您应该创建一个内容类似于以下内容的用户参数:

UserParameter=yum.updates,/usr/bin/yum --debuglevel 2 --security check-update 2>/dev/null | grep -P '(?<! 0 packages) available$'

将此行放入 Zabbix 代理的主配置文件(zabbix_agentd.conf)或单独的文件中(如果您计划在许多服务器上分发此用户参数,这可能会更好)并使用Include指令包含它或其目录。

在当前表单中,您有一个返回字符串的用户参数,因此在 Zabbix 前端中,您将配置一个键yum.updates和类型为“字符”的项目。然后触发器将是:

{host:yum.updates.strlen()}#0

但是,字符串项的问题在于它们无法绘制图表。如果有一个项返回一个整数,其中包含可用更新的数量,那就太好了,如下所示(请注意尾部):

UserParameter=yum.updates,/usr/bin/yum --debuglevel 2 --security check-update 2>/dev/null | grep -P '...' || echo 0

您还必须更改正则表达式,以便grep它仅返回整数。

这种方法的好处是可以绘制可用更新的数量图表,并且还可以为触发器设置更高的阈值:

{host:yum.updates.last()}>10

也可以看看官方文档了解用户参数的完整详情。

答案2

我有一个用于此目的的 Zabbix 模板,适用于 yum 和 apt 包管理器。如果有人发现它有用,我会把它留在这里。repo README 中的说明:

yum 版本 (RHEL、CentOS...) ->https://github.com/AkuLink1/zabbix-template-yum-update-monitoring

apt 版本 (Debian、Ubuntu...) ->https://github.com/AkuLink1/zabbix-template-apt-upgrade-monitoring

相关内容