Nconf在生成Nagios配置文件时报错问题

  • 内容
  • 评论
  • 相关

关于Nconf在生成nagios配置文件时报错,这个问题之前在网上找到过相关说明,说:出现后过一段时间可能会自己好,可能明天就可以生成 nagios配置文件了(之前确实有遇到过,也确实自己好了),具体什么原因不知道,也许是Nconf本身的一个Bug,也许……
不管怎么样,还是不会影响我们继续使用的Nconf来配置Nagios的,在添加完监控主机后,点击【Generate Nagios config】生成nagios配置文件时,出现报错无法生成Nagios配置文件,有报Error:Someone else is already generating the configuration,也有的是看不到错误提示只是一空白页面:

1、generate.lock 文件阻止生成Nagios配置文件导致错误:
排除/var/www/nconf/temp 目录下是否有generate.lock,如果有清空此目录;

2、IE8导致生成Nagios配置文件错误:
如果你用的是IE8的话,修改一下generate_config.php文件,应该可以解决(如果不是IE8不知道会不会也是因为此问题导致报错,你可以试试此方法,此法源自nconf官方论坛)

3、手动操作生成Nagios配置文件:
如果以上两种方法都无法解决你的问题,我们给你准备了手动操作的解决办法,就是自己一步步手动执行相关脚本,你也可以把它们写成sh脚本,执行一下就可以;
(1)确保正确添加各监控主机,确保/var/www/nconf/temp目录是空的
清空temp目录
[php]rm -rf /var/www/nconf/temp/*[/php]

(2)执行以下脚本生成配置文件
[php]/var/www/nconf/bin/generate_config.pl[/php]

(3)删除Nagios原来的旧配置文件

[php]
rm -rf /usr/local/nagios/etc/Default_collector
rm -rf /usr/local/nagios/etc/global

[/php]

(4)把新的Nagios配置剪切到Nagios配置文件目录下,并清空temp目录

[php]
mv /var/www/nconf/temp/Default_collector /usr/local/nagios/etc/
mv /var/www/nconf/temp/global /usr/local/nagios/etc/

[/php]

清空temp目录
[php]rm -rf /var/www/nconf/temp/*[/php]

(5)执行以下命令验证新的Nagios配置是否有问题
[php]/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg[/php]

如果最后看到以下结果 0个警告、0个错误,说明新的配置文件没问题
[php]Total Warnings: 0
Total Errors: 0[/php]

(6)重启Nagios服务使其新的配置文件生效
[php]>/etc/init.d/nagios restart[/php]

(7)好了,配置完了,登录看看吧
http://IP/nagios

这是没办法的办法,手动生成,你过一段时间再看看点击【Generate Nagios config】应该就会好的,也许第二天就会好,也许不会好,之前有好过自动好的例子.

注:如在执行以下脚本生成配置文件出现下面情况

20130913141127

[php]

[root@jiankong /]# /var/www/html/nconf/bin/generate_config.pl

[ Initializing NConf perl-API (library version 0.3, written by A. Gargiulo) ]
[ Copyright (c) 2006 - 2012 Sunrise Communications AG, Zurich, Switzerland ]

DBI connect('database=nagios;host=localhost','nconf',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at /var/www/html/nconf/bin/lib/NConf/DB.pm line 81
Compilation failed in require at /var/www/html/nconf/bin/generate_config.pl line 51.
BEGIN failed--compilation aborted at /var/www/html/nconf/bin/generate_config.pl line 51.
[root@jiankong /]# find . -name "mysql.sock"
./tmp/mysql.sock

[/php]

则:

1、先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.

2、确定你的mysql.sock是不是在那个位置,
[php]mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock[/php]

3、试试:service mysqld start

4、如果是权限问题,则先改变权限

[php]

#chown -R mysql:mysql /var/lib/mysql
[root@localhost ~]# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
[root@localhost ~]# mysql -uroot -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

[/php]

原因是,/var/lib/mysql 的访问权限问题。
[php]shell> chown -R mysql:mysql /var/lib/mysql[/php]

接着启动服务器
[php]shell> /etc/init.d/mysql start[/php]

服务器正常启动后察看 /var/lib/mysql 自动生成mysql.sock文件。
但是我的问题仍然没有得到解决。

问题终于解决:
方法: 修改/etc/my.conf:
[php]

[mysqld]
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/usr/local/mysql

If there is not currently a section called [client], add one at the bottom of the file and copy the socket= line under the [mysqld] section such as:

[client]
socket=/var/lib/mysql/mysql.sock
[/php]

发现依旧如此,运行/etc/init.d/mysql start报错:Starting MySQLCouldn't find MySQL manager or server
是mysqld服务没启,运行/usr/local/mysql/bin/mysqld_safe &

问题解决。

 

修改完成后记得一起修改修改 php.ini

[php]mysql.default_socket =/var/lib/mysql/mysql.sock [/php]

不然nconf可能会报

20130913141053

NConf has detected a possible database problem.
Check database connection settings, credentials and permissions.
For system requirements and installation instructions, please refer to the NConf documentation.

phpmyadmin也会报#2002 无法登录 MySQL 服务器

 

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注