我正在尝试运行一些第三方和我自己的自定义检查。
当前测试设置包括一台 icinga(web)2 CentOS 7 服务器和一台 CentOS 7 客户端,其中 NRPE 安装在同一网络内,并且已禁用firewalld。
我尝试运行的 check_service 插件使用 systemctl is-active。
在客户端运行检查会返回正确的结果:
[root@localhost ~]# sudo -u nrpe /usr/lib64/nagios/plugins/check_service -s docker
OK: Service docker is running!
从 Icinga2 服务器运行时,即使服务正在客户端上运行,也会导致“服务未运行”消息:
[root@icinga2 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.100.153 -c check_docker_service
CRITICAL: Service docker is not running!
从 Icinga2 调用时,所有标准测试均正确运行。
客户:
/etc/sudoers
[...]
nrpe ALL=NOPASSWD:/bin/systemctl is-active docker,/usr/lib64/nagios/plugins/check_service
nagios ALL=NOPASSWD:/bin/systemctl is-active docker,/usr/lib64/nagios/plugins/check_service
[...]
/etc/nagios/nrpe.cfg
log_facility=daemon
debug=0
pid_file=/var/run/nrpe/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=127.0.0.1,::1,192.168.100.151
dont_blame_nrpe=0
allow_bash_command_substitution=0
command_timeout=60
connection_timeout=300
[...some working default checks...]
command[check_docker_service]=/usr/lib64/nagios/plugins/check_service -s docker
include_dir=/etc/nrpe.d/
服务器:
/etc/icinga2/conf.d/hosts/test.conf
object Host "Host 1" {
import "generic-host"
address = "192.168.100.153"
vars.os = "Linux"
vars.sla = "24x7"
}
object Service "Docker" {
import "generic-service"
host_name = "Host 1"
check_command = "nrpe"
vars.nrpe_command = "check_docker_service"
}
答案1
在nrpe端,selinux处于强制模式。
之后再次测试脚本:
# setenforce 0
在强制模式下启用 selinux 后,您需要配置文件上下文:
# semanage fcontext -a -t nagios_admin_plugin_exec_t check_service
# restorecon -R -v check_service
参见:nagios_selinux