红联Linux门户
Linux帮助

在RHEL5.4安装ndoutils 1.4.14

发布时间:2015-02-08 10:55:46来源:linux网站作者:zhumeng8337797

一、实验准备

1.安装好lamp构架,如果不想用源代码编译安装,就直接配置一个本地的yum源进行安装,这样就简单多了。

2.安装好nagios、GD库,让其可以正常运行。本实验旨在能正常提供nagios的机上进行安装ndoutils

3.准备好DBD-mysql-4.014.tar.gz、DBI-1.609.tar.gz,可以在http://search.cpan.org

4.准备好nagios-plugins-1.4.14.tar.gz,可以到http://www.nagios.org上去下载


二、实验环境:
 

主机

IP

描述

Node2.example.com

192.168.145.129

Nagios+ndoutils

Node3.example.com

192.168.145.130

Nagios+ndoutils+mysql 

三、实验目的:

两台机分别用nagios采集信息通过ndoutils存入192.168.145.130的mysql数据库


四、实验过程:

1.安装DBI

[root@node2 /]# tar xvf DBI-1.609.tar.gz -C /usr/src

[root@node2 /]# cd /usr/src/DBI-1.609/

[root@node2 DBI-1.609]# perl Makefile.PL

[root@node2 DBI-1.609]#make && make install

2.安装DBD-mysql

[root@node2 /]# tar xvf DBD-mysql-4.014.tar.gz -C /usr/src

[root@node2 src]# cd DBD-mysql-4.014/

[root@node2 DBD-mysql-4.014]# perl Makefile.PL --mysql_config=/usr/local/mysql/bin --with-mysql=/usr/local/mysql

[root@node2 DBD-mysql-4.014]# make && make install

3.Ndoutils安装:

1)关联mysql头文件和库

[root@node3 mysql]# ln -s /usr/local/mysql/include/* /usr/include/

[root@node3 mysql]# ln -s /usr/local/mysql/lib/* /usr/lib

2)安装NDOUtils

[root@node3 /]#cd /usr/src/ndoutils-1.4b9/

[root@node3 src]# ./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/usr/local/mysql/lib/mysql  --with-mysql-lib=/usr/local/mysql/lib/mysql --with-mysql=/usr/local/mysql

[root@node3 src]#make

3)在编译没有出错后,复制相应的配置文件与相关的执行文件,他们的主要作用就是做相关的配置与让nagios可以正确的调用。

[root@node3 src]# cd /usr/src/ndoutils-1.4b9/src/

[root@node3 src]# cp ndo2db-3x ndo2db-2x file2sock log2ndo /usr/local/nagios/bin/

[root@node3 config]# cp ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

[root@node3 config]# cp ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg

以上复制的文档中前两项是版本相关的,即假如您的nagios主版本号是2系列,则需要拷贝名为ndomod-2x.o和ndo2db-2x的两个文档。后两项是通用文档,随便复制过去就OK了。

4)为NDOUtils创建数据库

[root@node3 bin]# mysql5

mysql> create database ndodb;

Query OK, 1 row affected (0.00 sec)

mysql> grant all on ndodb.* to 'ndouser'@'localhost' identified by 'ndouser';

Query OK, 0 rows affected (0.00 sec)

mysql> grant all on ndodb.* to 'ndouser'@'%' identified by 'ndouser';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

下面两条命令用来生成ndoutils所需要的数据库表等,这些表默认以“nagios_”为前缀;install脚本命 令必须在db子目录内执行:# cd db# ./installdb -u ndouser -p 123456 -h localhost -d ndodb其中各选项的意义如下:-u用来指定导入时所用的mysql用户帐号-p表示前面mysql用户的密码-h表示mysql服务器地址,假如是 localhost,则能够省略-d表示目标数据库

以下关键的一句就是创建数据库的表信息,-u为访问数据库的用户名

5)建立数据库表信息,注意一定要进行编译软件的目录下的db目录里执行以下命令。

[root@node3 ndoutils-1.4b9]# cd db

[root@node3 db]# ./installdb -u ndouser -p ndouser -h localhost -d ndodb

以上信息:

-u 访问ndodb数据库的用户名

-p 访问ndodb数据库的密码

-h 写入数据库的地址,因为现在我操作的是node3.example.com,因此,是在本地建立数据库localhost

-d 写入的数据库名称

4.配置ndo2db.cfg文件:

[root@node3 etc]# vim /usr/local/nagios/etc/ndo2db.cfg

lock_file=/usr/local/nagios/var/ndo2db.lock

ndo2db_user=nagios

ndo2db_group=nagios

socket_type=tcp

socket_name=/usr/local/nagios/var/ndo.sock

tcp_port=5668

use_ssl=0

db_servertype=mysql

db_host=localhost

db_port=3306

db_name=ndodb

db_prefix=nagios_

db_user=ndouser

db_pass=ndouser

max_timedevents_age=1440

max_systemcommands_age=10080

max_servicechecks_age=10080

max_hostchecks_age=10080

max_eventhandlers_age=44640

max_externalcommands_age=44640

debug_level=0

debug_verbosity=1

debug_file=/usr/local/nagios/var/ndo2db.debug

max_debug_file_size=1000000

5.配置ndomod.cfg文件

[root@node3 etc]# vim /usr/local/nagios/etc/ndomod.cfg

instance_name=node3

output_type=tcpsocket

output=127.0.0.1

tcp_port=5668

use_ssl=0

output_buffer_items=5000

buffer_file=/usr/local/nagios/var/ndomod.tmp

file_rotation_interval=14400

file_rotation_timeout=60

reconnect_interval=15

reconnect_warning_interval=15

data_processing_options=-1

config_output_options=2

6.配置nagios的配置文件

[root@node3 etc]# vim /usr/local/nagios/etc/nagios.cfg

添加以下两句,第二句如果没有才加上去,默认是有的。

broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg 大概在251行。

event_broker_options=-1   大概在224行

7. 启动ndo2db守护进程

[root@node3 etc]# /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

执行完以上这条命令,如果没有报错,就看看nagios.log的日志,如果出现以下提示:

nagios: ndomod: Could not open data sink!  I'll keep trying, but some output may get lost...

解决方法就是:

查看/usr/local/nagios/etc/ndo2db.cfg文件里的ndo2db_user=nagios ndo2db_group=nagios db_user=ndouser

db_pass=ndouser 这几项是否正确配置了,ndo2db_user就是你运行nagios的用户名;ndo2db_group是运行nagios的组,db_user表示的是你授权访问ndodb数据库的用户名,db_pass访问数据的密码。

如果在加载守护进程出现:

Failed to obtain lock on file /usr/local/nagios/var/ndo2db.lock: Permission denied  : Permission denied

解决方法是:确认你在/usr/local/nagios/etc/ndo2db.cfg里ndo2db_user与ndo2db_group这两项的填写的用户是否对目录/usr/local/nagios/var/有写入的权限。

8.启动nagios

[root@node3 etc]# /etc/init.d/nagios start

以上全是在node3.example.com的电脑上做的操作,也就是我们将要将数据存入数据库所在的那台机。下面进行分布式的另一台电脑node2.example.com上操作,可以理解为nagios的客户端。

9.同样是安装DBI和DBD-mysql,由于前面已经安装过,可以照着上面一台电脑上安装就可以了。

10.关联mysql头文件和库

[root@node2 mysql]# ln -s /usr/local/mysql/include/* /usr/include/

[root@node2 mysql]# ln -s /usr/local/mysql/lib/* /usr/lib

11.安装NDOUtils

[root@node2 /]#cd /usr/src/ndoutils-1.4b9/

[root@node2 src]# ./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/usr/local/mysql/lib/mysql  --with-mysql-lib=/usr/local/mysql/lib/mysql --with-mysql=/usr/local/mysql

[root@node2 src]#make

12.在编译没有出错后,复制相应的配置文件与相关的执行文件,他们的主要作用就是做相关的配置与让nagios可以正确的调用。

[root@node2 src]# cd /usr/src/ndoutils-1.4b9/src/

[root@node2 src]# cp ndo2db-3x ndo2db-2x file2sock log2ndo /usr/local/nagios/bin/

[root@node2 config]# cp ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

[root@node2 config]# cp ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg

以上复制的文档中前两项是版本相关的,即假如您的nagios主版本号是2系列,则需要拷贝名为ndomod-2x.o和ndo2db-2x的两个文档。后两项是通用文档,随便复制过去就OK了。

13.配置node2.example.com上的ndo2db.cfg

[root@node2 etc]# vim /usr/local/nagios/etc/ndo2db.cfg

lock_file=/usr/local/nagios/var/ndo2db.lock

ndo2db_user=nagios

ndo2db_group=nagios

socket_type=tcp

socket_name=/usr/local/nagios/var/ndo.sock

tcp_port=5668

use_ssl=0

db_servertype=mysql

db_host=192.168.145.130

db_port=3306

db_name=ndodb

db_prefix=nagios_

db_user=ndouser

db_pass=ndouser

max_timedevents_age=1440

max_systemcommands_age=10080

max_servicechecks_age=10080

max_hostchecks_age=10080

max_eventhandlers_age=44640

max_externalcommands_age=44640

debug_level=0

debug_verbosity=1

debug_file=/usr/local/nagios/var/ndo2db.debug

max_debug_file_size=1000000

14.配置/usr/local/nagios/etc/ndomod.cfg文件

[root@node2 etc]# vim /usr/local/nagios/etc/ndomod.cfg

instance_name=node2

output_type=tcpsocket

output=127.0.0.1

tcp_port=5668

use_ssl=0

output_buffer_items=5000

buffer_file=/usr/local/nagios/var/ndomod.tmp

file_rotation_interval=14400

file_rotation_timeout=60

reconnect_interval=15

reconnect_warning_interval=15

data_processing_options=-1

config_output_options=2

15.编辑nagios配置文件

[root@node2 etc]# vim /usr/local/nagios/etc/nagios.cfg

broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg

event_broker_options=-1

16.启动守护进程,重启nagios。

[root@node2 etc]# /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

[root@node2 etc]#/etc/init.d/nagios restart

至此已经全部配置完成,下面确认我们已经安装成功,回到node3.example.com的机上,进入mysql看看我们创建的数据表里是否有两台机的数据。

[root@node3 etc]# mysql5

mysql> use ndodb;

mysql> select host_id,instance_id,display_name,address from nagios_hosts;

+---------+-------------+----------------+-----------------+

| host_id | instance_id | display_name   | address         |

+---------+-------------+----------------+-----------------+

|      10 |           1 | winserver       | 192.168.1.2     |

|       9 |           1 | windows-server  | 192.168.145.1   |

|       8 |           1 | localhost       | 127.0.0.1       |

|       7 |           1 | linux-server2   | 192.168.145.128 |

|       6 |           1 | linux-server1  | 192.168.145.130 |

|      11 |           2 | linux-server1  | 192.168.145.130 |

|      12 |           2 | linux-server2  | 192.168.145.128 |

|      13 |           2 | localhost      | 127.0.0.1       |

|      14 |           2 | windows-server | 192.168.145.1   |

|      15 |           2 | winserver      | 192.168.1.2     |

+---------+-------------+----------------+-----------------+

10 rows in set (0.00 sec)

从以上可以看到instance id列可以看到1和2,这说明我们两台机的信息已经被写到mysql数据库中,大功告成。


五、实验总结

通过以上的实验,我在实验过程中遇到很多问题,主要是安装ndoutils的时候,郁闷得很,一会儿配置过了,编译不,编译过了,配置不过,其根本原因就是我们的头文件关联,只要用关联头文件那一步做了就很少出问题,另外在配置的过程中,一定要加mysql的选项,我上面都写上了。

其次说明一点,我的系统是RedHat5.4,nagios是3.2版本,mysql是7.0.6的集群版,也可以用5.1的版本。其他的都写上的相应版本。

以上在我的配置中OK,如果有什么错误,请读者指出,多谢!