我遇到了 nagios 和 NRPE 的问题,无法解决。
我已经尝试过了。
# grep "nrpe_user=" /etc/nagios/nrpe.cfg
nrpe_user=nrpe
NRPE 以用户 nrpe 的身份运行。因此我在 visudo 中添加了以下几行:
Defaults:nrpe !requiretty
nrpe ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/check_jboss_files
我编辑了我的nagios nrpe.cfg:
command[check_jboss_files]=sudo /usr/lib64/nagios/plugins/check_jboss_files
但是如果我尝试从 Nagios 服务器运行该命令,我会得到以下结果:
# /usr/lib64/nagios/plugins/check_nrpe -H 1.2.3.4 -c check_jboss_files
NRPE: Unable to read output
该脚本在本地启动时按预期运行,即使以用户 nrpe 身份运行时也是如此:
# sudo sudo -s -u nrpe
bash-4.2$ sudo /usr/lib64/nagios/plugins/check_jboss_files
JBOSS Files: 2049
WARNING - JBOSS Files: 2049
没有 sudo,脚本可以在 nagios 服务器上运行,但必须使用 sudo 才能获得良好的结果。我错过了什么?我可能已经尝试了所有方法,我将不胜感激任何帮助。
答案1
我最近遇到了非常类似的情况,解决方案是配置 selinux 以允许 sudo 访问。
跟随这文章,你就会知道该怎么做。
对我来说这在 CentOS 7.4 上有效:
yum install -y setroubleshoot-server
- 在审计日志中搜索违规行为
- 使用 audit2why
- 按照其建议
我的违规行为:
$ grep -m 1 type=AVC.*sudo /var/log/audit/audit.log | audit2why
type=AVC msg=audit(1525359549.889:211763): avc: denied { getattr } for pid=127488 comm="check_d" path="/usr/bin/sudo" dev="dm-0" ino=67120340 scontext=system_u:system_r:nrpe_t:s0 tcontext=system_u:object_r:sudo_exec_t:s0 tclass=file
Was caused by:
The boolean nagios_run_sudo was set incorrectly.
Description:
Allow nagios to run sudo
Allow access by executing:
# setsebool -P nagios_run_sudo 1
运行建议的命令解决了我的问题。