次のスクリプトを使用してgluster FSマウントを監視していますが、NRPEを介してスクリプトを実行する際に問題が発生します。
これがリモートボックスの私のスクリプトです。 /usr/lib64/nagios/plugins/check_gluster.pl
#!/usr/bin/Perl
@output=`/usr/sbin/gluster volume heal static info split-brain | egrep "Number of entries"`;
if($output[0] !~ m/0/){
print "CRITICAL: Possible m4_2b split brain issues - $output[0]";
}elsif($output[0] !~ m/0/) {
print "CRITICAL: Possible m4_2c split brain issues";
}else {
print "OK";
}
私のNRPEでは、次の構成があります
command[check_glusterfs]=/usr/bin/Sudo /usr/lib64/nagios/plugins/check_gluster.pl
Nagiosでcheck_nrpeを実行すると、次のようになります。
# /usr/lib/nagios/plugins/check_nrpe -t 60 -H myhost.domain.com -c check_glusterfs
NRPE: Unable to read output
リモートボックスで、次のエラーが発生します。
type=AVC msg=audit(1397547577.720:1183140): avc: denied { execute } for pid=20524 comm="sh" name="Sudo" dev=xvde ino=11029 scontext=unconfined_u:system_r:nrpe_t:s0 tcontext=system_u:object_r:Sudo_exec_t:s0 tclass=file
type=SYSCALL msg=audit(1397547577.720:1183140): Arch=c000003e syscall=59 success=no exit=-13 a0=89f800 a1=89ecd0 a2=89e1f0 a3=7fff72151910 items=0 ppid=20523 pid=20524 auid=512 uid=497 gid=498 euid=497 suid=497 fsuid=497 egid=498 sgid=498 fsgid=498 tty=(none) ses=120914 comm="sh" exe="/bin/bash" subj=unconfined_u:system_r:nrpe_t:s0 key=(null)
type=AVC msg=audit(1397547577.720:1183141): avc: denied { execute } for pid=20524 comm="sh" name="Sudo" dev=xvde ino=11029 scontext=unconfined_u:system_r:nrpe_t:s0 tcontext=system_u:object_r:Sudo_exec_t:s0 tclass=file
type=SYSCALL msg=audit(1397547577.720:1183141): Arch=c000003e syscall=21 success=no exit=-13 a0=89f800 a1=1 a2=0 a3=7fff72151910 items=0 ppid=20523 pid=20524 auid=512 uid=497 gid=498 euid=497 suid=497 fsuid=497 egid=498 sgid=498 fsgid=498 tty=(none) ses=120914 comm="sh" exe="/bin/bash" subj=unconfined_u:system_r:nrpe_t:s0 key=(null)
[更新]これを解決する方法を誰かが知っていますか?残念ながら、ボックスでselinuxを無効にすることは許可されていません。
Cento6.5を実行しています
よろしく、アラン
問題は、SELinuxがSudoを使用するNagiosプラグインをブロックすることです。
これがSELinuxによって引き起こされていることを確認するには、SELinuxを無効にするか、permissiveに設定します。
/etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=permissive
ポリシーの変更は、次回の起動時に機能します。