ndoutils(ndo2db)安装难点
2015-08-11 09:40
302 查看
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.1、不能加载数据库
出现如下的报错:
“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
另外,在ndoutils编译的时候,如果./configure这步提示找不到mysql.h,在前面这些都已正确安装之后,可以从别处将libmysql的库和头文件目录考来,并指定为./configure –with-mysql-lib和—with-mysql-lib的目录即可。
注意:在重新./configure之后,在make之前千万记住要先make clean,否则最后会发生让你郁闷好几天的事情!
2.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添加。
当万事具备,开始要编译安装的时候,仍需要注意三点:
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.1、不能加载数据库
出现如下的报错:
“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
另外,在ndoutils编译的时候,如果./configure这步提示找不到mysql.h,在前面这些都已正确安装之后,可以从别处将libmysql的库和头文件目录考来,并指定为./configure –with-mysql-lib和—with-mysql-lib的目录即可。
注意:在重新./configure之后,在make之前千万记住要先make clean,否则最后会发生让你郁闷好几天的事情!
2.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添加。
相关文章推荐
- UITableview 的自适应高度
- javascript弹出拖动窗口
- escape 和 encodeURI 编码传参
- extjs 4 checkboxgroup Panel的简单用法
- sql注入的一些整理
- C# Stream 和 byte[] 之间的转换,字符串可以转换成byte[]
- (!)Python 各种测试框架简介
- 关于JWPLAYER播放MP4出现video not found or access denied
- 白话设计模式之--模板方法
- 程序员未来发展三大方向
- BBS死了?江湖永远都在,只是换个山头
- 线程池C++
- 养生习惯
- 17-集合框架-20-常用对象API(集合框架练习)
- 前言(必读)
- 关于程序员工作 交接的一些注意事项
- Java 多线程之内存一致性错误
- C++概念整理
- public, protected, private, internal, protected internal简析
- 安装 Graphviz