![如何让 Zabbix 报告过期的包?](https://linux22.com/image/629207/%E5%A6%82%E4%BD%95%E8%AE%A9%20Zabbix%20%E6%8A%A5%E5%91%8A%E8%BF%87%E6%9C%9F%E7%9A%84%E5%8C%85%EF%BC%9F.png)
如何配置 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