Nagios-plugins-zypper
标准的 Nagios 插件
供应商: SUSE Linux Products GmbH
开发者:
许可证: BSD-4-Clause
网站: https://en.opensuse.net.cn/index.php?title=Nagios-plugins-zypper
关于
- 您想知道您的服务器场中哪些主机缺少安全更新吗?
- 您想知道 software.opensuse.org 上是否有可用的软件包更新吗?
- 您已经使用 来监控您的主机吗?
那么您想使用 Nagios 插件:“check_zypper”。
特性
- 检查具有更新级别“security”、“recommended”和“optional”的补丁
- 检查来自所有已启用仓库的软件包更新
- 可以根据补丁或软件包级别配置返回状态
- 可以配置在检查之前自动刷新仓库
- 检查非官方软件包(来自不受支持的仓库)
- 检查过时的基本系统(SLES/openSUSE)
选项
-c, --critical
A patch with this category result in critical status.
Default: security
-f, --releasefile
Use the given file to get informations about the distribution.
Default: /etc/SuSE-release
-h, --help
Print detailed help screen
-i, --ignore <file>
Ignore patches/packages that are mentioned in <file>
Just list one patch/package per line - example:
patch:libtiff-devel
# comment
package:libtiff3
package:libtiff-devel
-o, --ignore_outdated
Don't warn if a repository is outdated.
-r, --refresh_repos
Tries to refresh the repositories before checking for updates.
Note: this maybe needs an entry in /etc/sudoers like:
nagios ALL = NOPASSWD: /usr/bin/zypper ref
(and additional lines for the '-s' Option) if no check-zypp-wrapper is available.
-s, --use_sudo
Zypper needs root privileges on some distributions (known: 10.1 and SLE10).
You can enable the script to use /usr/bin/sudo to start zypper.
But don't forget to enable nopasswd sudo for the user starting check_zypper
Via lines like the two below on in /etc/sudoers:
nagios ALL = NOPASSWD: /usr/bin/zypper sl, \
/usr/bin/zypper --non-interactive --no-gpg-checks --terse list-updates
-t, --timeout
Just in case of problems, let's not hang Nagios and define a timeout.
Default value is: 120 seconds
-v, --verbose_output
Print more information (useful only with Nagios v3.x).
-w, --warning
A patch with this category result in warning status.
Default: recommended,optional
-V, --version
Print version information
检查本地主机
要检查运行 nagios 守护进程的本地机器,请添加一个命令定义,例如
define command {
command_name check_zypper
command_line $USER1$/check_zypper -v -t $ARG1$
}
并定义一个 服务定义 如下
define service{
use generic-service
host_name localhost
service_description Updates
normal_check_interval 1440 # once a day
display_name Updates for this machine
check_command check_zypper!300
}
检查远程主机
此示例使用 Nagios 远程插件执行器 - 您需要在要监控的机器上安装 nrpe-client 包,并在运行 nagios 守护进程的机器上安装 nrpe-server 包。
首先,在您的 nagios 服务器上定义一个命令定义,例如
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
和一个服务定义,例如
define service{
use generic-service
host_name my_client
service_description Updates
check_command check_nrpe!check_zypper -t 120
}
通常,您只想每天检查此服务一两次,因此定义一个额外的服务模板可能是一个好主意,例如
define service {
name one-day-service
use generic-service
normal_check_interval 1440 ; Check the service every day
retry_check_interval 240 ; Re-check every 6 hours
notification_interval 1440 ; Notify about a problem once a day
}
并在您的服务定义中使用此“一天服务”。
在客户端,将以下行添加到客户端机器上的/etc/nagios/nrpe.cfg
command[check_updates]=/usr/lib/nagios/plugins/check_zypper
到您的 nagios 配置。
刷新或忽略过时的仓库
在没有任何其他选项的情况下,如果一个或多个仓库已过时(因为它们可能包含更新的软件包),check_zypper 将返回警告状态。除了此警告消息之外,check_zypper 仍然会检查更新的软件包/补丁 - 但此运行的结果会发布在输出的第二行。
如果您想忽略过时的仓库(通常是 Build Service 仓库,而不是官方在线更新仓库),只需使用选项 '-o' 或 '--ignore_outdated'。
如果您想每次激活 check_zypper 时自动刷新所有仓库,请使用选项 '-r' 或 '--refresh_repos'。对于基于 SLES10、10.1 和 10.2 的主机,您需要在 sudoers 文件中添加一个额外的条目才能使其正常工作
nagios ALL = NOPASSWD: /usr/bin/zypper ref
对于基于 openSUSE 10.3 及更高版本(甚至 SLES11)的所有主机,这并非必要。为了避免混淆并节省带宽,如果要在所有发行版上自动刷新仓库,则必须手动启用选项 '-r'。
如果您在/etc/sysconfig/security 中使用 PERMISSION_SECURITY="secure local",check_zypper 将无法获得运行 /usr/sbin/zypp-refresh-wrapper 所需的权限 - 在这种情况下,请在/etc/permissions.local 中添加如下行
/usr/sbin/zypp-refresh-wrapper root.root 4755
并至少运行一次命令 SuSEconfig --module permissions 以设置刷新包装器的正确权限。(从 12.2 开始,/usr/sbin/zypp-refresh-wrapper 已消失,check_zypper 可以直接使用 /usr/sbin/zypp-refresh 而无需任何进一步的更改。)
在 SLE10 或 openSUSE 10.1 基于的主机上运行 zypper
在 SLE10 或 openSUSE 10.1 上运行 zypper 需要 root 权限。该插件以在/etc/nagios/nrpe.cfg(客户端)或/etc/nagios/nagios.cfg(服务器)中定义的用户的身份运行/usr/bin/zypper - 通常是用户 nagios - 因此需要此命令的 root 权限。
您可以启用脚本以使用命令/usr/bin/sudo 来启动 zypper。通过命令行选项“-s”启用使用。但请不要忘记为启动 check_zypper 的用户在 /etc/sudoers 中启用 nopasswd sudo,例如
nagios ALL = NOPASSWD: /usr/bin/zypper sl, \
/usr/bin/zypper --non-interactive --no-gpg-checks --terse list-updates
现在您可以启动和/或测试检查,例如
如果您还想自动刷新仓库,您的/etc/sudoers 应该如下所示
nagios ALL = NOPASSWD: /usr/bin/zypper ref, \
/usr/bin/zypper sl, \
/usr/bin/zypper --non-interactive --no-gpg-checks --terse list-updates
定义返回状态
您可以按补丁类别定义状态。可用的类别
- security
- 推荐
- 可选
使用逗号列出多个类别到状态。
忽略补丁/软件包更新
有时(出于任何原因)您想保持在软件包的特定版本上。但是,check_zypper 会在每次有此软件包的可用更新或包含此软件包的补丁时向您发出警告。要忽略此警告,只需创建一个包含您想要忽略的补丁/软件包的文件。您可以使用“#”来注释您禁用补丁/软件包警告的原因。
只需添加一行即可忽略有关名为“libtiff-devel”的补丁的警告
patch:libtiff-devel
并添加一行即可忽略名为“libtiff3”的更新软件包
package:libtiff3
您可以将每个补丁/软件包写入单独的行或用空格分隔 - 只有初始单词“patch:”和“package:”才需要定义。不包含其中一个单词的所有其他行将被忽略。
之后,使用选项 '-i' 或 '--ignore' <file> 来定义包含忽略的文件。
check_zypper 不会将 <file> 中的任何补丁/软件包计入其中,但命令的详细输出将包含如下行
Ignored Patches : libtiff-devel Ignored Packages: libtiff3
通知您 <file> 及其内容的存在。
详细输出
如果您想知道可用补丁和软件包的名称,请使用选项“-v”。
调试/错误报告
如果您遇到此插件的问题,请通过将选项“-d”或“--debug”添加到您的 check_zypper 命令行来打开调试输出。
注意:您可以使用与 Nagios 配置相同的选项通过命令行以 root 身份运行该命令。例如
但这可能无法帮助调试实际问题,因为像“zypper ref”这样的外部命令可能存在权限问题。因此,始终以用户nagios 运行该命令可能是一个好主意 - 但该用户在继续之前需要具有有效的 shell
chsh -s /bin/bash nagios su - nagios /usr/lib/nagios/plugins/./check_zypper --debug $your_options >> /tmp/check_zypper_output.txt 2>&1 exit chsh -s /bin/false nagios
请使用 https://bugzilla.opensuse.org/ 报告任何错误并将错误分配给 lrupp@suse.com(如果可能,将文件 /tmp/check_zypper_output.txt 附加到错误)。