有关已定义服务和主机的nagios.cfg的问题(由Nagiosql生成)

时间:2015-08-11 10:04:07

标签: nagios

Nagiosql生成的文件在预检检查中出现问题 - 但是每一件事似乎都没问题。

/etc/nagios/nagios.cfg

....
## Hosts
cfg_dir=/etc/nagiosql/hosts/
cfg_file=/etc/nagiosql/hosttemplates.cfg
cfg_file=/etc/nagiosql/hostgroups.cfg
cfg_file=/etc/nagiosql/hostextinfo.cfg
cfg_file=/etc/nagiosql/hostescalations.cfg
cfg_file=/etc/nagiosql/hostdependencies.cfg
## Services
cfg_dir=/etc/nagiosql/services/
cfg_file=/etc/nagiosql/servicetemplates.cfg
cfg_file=/etc/nagiosql/servicegroups.cfg
cfg_file=/etc/nagiosql/serviceextinfo.cfg
cfg_file=/etc/nagiosql/serviceescalations.cfg
cfg_file=/etc/nagiosql/servicedependencies.cfg
...

nagios -v /etc/nagios/nagios.cfg

....
Running pre-flight check on configuration data...

Checking services...
Error: There are no services defined!
        Checked 0 services.
Checking hosts...
Error: There are no hosts defined!
        Checked 0 hosts.

内容对我来说似乎没问题

[root@xxx services]# cd /etc/nagiosql/services/
[root@xxx services]# ls -alh
total 20K
drwsr-sr-x 2 apache nagios 4.0K Aug  7 10:46 .
drwsr-sr-x 5 apache nagios 4.0K Aug  7 12:17 ..
-rw-r--r-- 1 apache nagios 2.3K Aug  7 10:46 localhost.cfg
-rw-r--r-- 1 apache nagios 2.2K Aug  7 10:46 www.google.com.cfg
-rw-r--r-- 1 apache nagios 1.1K Aug  7 10:46 www.yahoo.com.cfg

[root@xxx hosts]# ls -alh
total 16K
drwsr-sr-x 2 apache nagios 4.0K Aug 11 07:12 .
drwsr-sr-x 5 apache nagios 4.0K Aug  7 12:17 ..
-rw-r--r-- 1 apache nagios  800 Aug 11 07:12 GIT.cfg
-rw-r--r-- 1 apache nagios  948 Aug 11 07:12 psm01.cfg

内容似乎也很好(由nagiosql生成):

[root@xxx hosts]# vi GIT.cfg
###############################################################################
#
# Host configuration file
#
# Created by: Nagios QL Version 3.2.0
# Date:       2015-08-11 07:12:54
# Version:    Nagios 3.x config file
#
# --- DO NOT EDIT THIS FILE BY HAND ---
# Nagios QL will overwite all manual settings during the next update
#
###############################################################################

define host {
        host_name                       GIT
        alias                           GIT Server
        address                         172.25.10.80
        register                        0
}

###############################################################################
#
# Host configuration file
#
# END OF FILE
#
###############################################################################
~

有人可以告诉我这个问题的解决方案在哪里吗?已经浪费了2个小时......

2 个答案:

答案 0 :(得分:0)

尝试从cfg_dir定义中的目录名称中删除最终的斜杠,看看是否无法识别该目录中的cfg文件。

例如,

变化:

cfg_dir=/etc/nagiosql/hosts/
...
cfg_dir=/etc/nagiosql/services/

要:

cfg_dir=/etc/nagiosql/hosts
...
cfg_dir=/etc/nagiosql/services

<强> 编辑:

好的,我认为目录权限可能导致cfg_dir评估失败。根据您列出的ls -alh输出,您的/etc/nagiosql/hosts//etc/nagiosql/services//etc/nagiosql/目录不会向{{1}授予写入权限}组。 Nagios需要获取这些目录的目录列表,并且需要组写权限才能完成。

补救:

nagios

重新启动nagios服务。

此外,您不需要从nagios chmod g+w /etc/nagiosql/hosts/ chmod g+w /etc/nagiosql/services/ 配置中的目录路径中删除斜杠。根据代码,Nagios将为您删除尾部斜杠(cfg_dir):

  

https://github.com/NagiosEnterprises/nagioscore/blob/eb8e83d5d05e572eb8c0d4d4764885c5427b4b69/xdata/xodtemplate.c#L327

/

编辑#2 :在您发布的主机定义中,您的 /* process all files in a config directory */ else if(!strcmp(var, "xodtemplate_config_dir") || !strcmp(var, "cfg_dir")) { if(config_base_dir != NULL && val[0] != '/') { asprintf(&cfgfile, "%s/%s", config_base_dir, val); } else cfgfile = strdup(val); /* strip trailing / if necessary */ if(cfgfile != NULL && cfgfile[strlen(cfgfile) - 1] == '/') cfgfile[strlen(cfgfile) - 1] = '\x0'; /* process the config directory... */ result = xodtemplate_process_config_dir(cfgfile, options); my_free(cfgfile); /* if there was an error processing the config file, break out of loop */ if(result == ERROR) break; } } 值设置为register。请尝试将其设置为01用于将继承的模板,但实际上不会显示在Nagios用户界面中。

变化:

register 0

要:

define host {
        host_name                       GIT
        alias                           GIT Server
        address                         172.25.10.80
        register                        0
}

另请为您的服务定义设置define host { host_name GIT alias GIT Server address 172.25.10.80 register 1 }

答案 1 :(得分:0)

尝试向目录添加可执行权限。某些程序和语言需要+ x权限才能实际打开目录。

如果这不起作用,请暂时将所有内容设置为0777权限,以查看问题是否与权限相关。

即使您使该部分正常工作,您也会遇到配置问题。您的主机和服务配置中没有使用指令,指示具有大多数默认值的模板。 寄存器指令隐含为1,除非您为模板专门设置为0。如果您需要参考,请参阅对象定义文档:https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html