1、ndoutils的编译
当万事具备,开始要编译安装的时候,仍需要注意三点:
1
、要指明使用的数据库类型,数据库的
lib
库,数据库的头文件。
./configure –enable-mysql --with-mysql-inc=… –with-mysql-lib=…
2
、编译时如出现类似于
”xxxxxx ceil”
的错误,请在
src
下的
Makefile
中修改
CFLAGS
的值,增加
-lm
参数。注意,
Makefile
中有两个
CFLAGS
,需修改第二个,因为它会把第一个给覆盖了。或者把其中一个
mark
掉也可以。
3
、
installdb
这一步必须进入
db
目录下执行
./installdb
因为程序需要读取该目录下的脚本。按要求执行这一步之后,
如出现未能生成相应的数据库,请确认数据库用户的权限是否正确;
如果出现类似于
”…./mysqld/mysqld.sock”
的错误,请察看
mysql
的配置文件
my.cnf
确认
mysql
的连接池在该目录下,若不是,请使用
ln –s
与之建立连接;
若出现数据库表已存在报告,可
drop
该数据库然后重新
create
再执行
installdb(
这时要确保以存在的数据库不再使用
)
。
2、ndoutils的db中有表没数据
按照安装文档正确编译
ndoutils
,将可执行文件和配置文件拷贝到指定目录并正确配置后。使用以下命令启动
ndoutils
:
/usr/local/nagios/bin/ndo2db –c /usr/local/nagios/etc/ndo2db.cfg
这时,可能出现两个比较棘手的问题:
2、不能加载数据库
出现如下的报错:
"Support for the specified database server is either not yet supported, or was not found on your system."
请察看
./configure
的结果,应该是没找到
mysql.h
等头文件,请确保所必须的库已安装
,
并在
./configure
时指定头文件目录
(
参考
ndoutils
的编译
)
。
Ndoutils需要用到mysql,然而前段时间很多问题出现在对mysql本身的使用上,我自己也在这儿跌了不少跟斗。
屡次碰到类似于”Support for the specified database server is either not yet supported, or was not found on your system.”是由于mysql的库不全或者路径不对,而导致ndoutils找不到mysql相应的头文件和库造成。
解决办法就是上来把mysql和perl的库装上。
libmysql++-dev - mysql C++ library bindings (development)
libmysql++2c2a - mysql C++ library bindings (runtime)
libmysqlclient15-dev - mysql database development files
libmysqlclient15off - mysql database client library
libclass-dbi-mysql-perl -Class::DBI::mysql-Extensions to Class::DBI for MySQL
libdatetime-format-mysql-perl - Parse and format MySQL dates and times
libdbd-mysql-perl -A Perl5 database interface to the MySQL database
libtime-piece-mysql-perl -Time::Piece::MySQL - Adds MySQL-specific methods to Time::Piece
libpam-mysql -PAM module allowing authentication from a MySQL server
libpam-modules - Pluggable Authentication Modules for PAM
libpam-runtime - Runtime support for the PAM library
libpam0g - Pluggable Authentication Modules library
libpam0g-dev - Development files for PAM
kaffe-pthreads - A POSIX threads enabled version of the Kaffe VM
注意:在重新./configure之后,在make之前千万记住要先make clean,否则最后会发生让你郁闷好几天的事情!
2、ndo2db正常启动,表中却没有数据
首先,请确保数据库中的表已生成。
执行改名之后如果没有出现任何提示信息,说明
ndo2db
已正常启动,并向数据写数据。
如果此时从数据库察看表信息,正常的话应该是已经有了
nagios
的信息。如果此时仍没有数据。那原因只有一个,就是数据库的权限问题:请察看前配置文件中指定的
db_user
在
db_name
,在保证
db_pass
正确的前提下,察看数据库
mysql
中
db
表中的信息,并确保
db_user
对
db_name
具有
update,insert,select
和
delete
的权限。
可参考
mysql
权限系统和
mysql
文档。
以
root
身份登陆
mysql
mysql>use mysql;
mysql>select * from db;
将看到
db_user
对
db_name
的权限详情,可用
update
修改。
如果没有
db_user
对应
db_name
的授权,可用
insert
添加。