NDOUtils插件实现将检测收集到的数据存储到MySQL数据库中进行管理,可选这不安装。它是基于Nagios正确安装的基础上进行的,Nagios的安装请移步到前面文章.



1.依赖包检测

#rpm -q mysql mysql-server mysql-devel

#yum install mysql mysql-server mysql-devel


2.编译安装

#tar xzf ndoutils-2.0.0.tar

#./configure \

--prefix=/usr/local/nagios \

--enable-mysql \

--disable-pgsql

默认情况下会自动寻找mysql信息,如果失败可以手动指定但要注意:

版本在2.0.0上用--with-mysql=/usr/bin/mysql_config来完成;

如果版本在2.0.0以前的需要明确指定mysql信息的用

--with-mysql-lib=/usr/lib \

--with-mysql-inc=/usr/include


#make 

(这里用make不用使用make install了)


3.服务配置

3.1 配置ndomod代理模块

注意:

ndomod模块具有Nagios 2.x和Nagios 3.x ....多个版本,具体根据使用的Nagios来用(我这里nagios-3.3.1的):

ndomod-2x.o = NDOMOD module for Nagios 2.x

ndomod-3x.o = NDOMOD module for Nagios 3.x


#cp -v src/ndomod-3x.0  /usr/local/nagios/bin/

#chown nagios.nagios /usr/local/nagios/bin/ndomod-3x.0


#cp -v config/ndomod.cfg-sample  /usr/local/nagios/etc/ndomod.cfg

#chown nagios.nagios /usr/local/nagios/etc/ndomod.cfg


3.2 修改nagios配置文件 

(通常在/usr/local/nagios/etc/nagios.cfg)。

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

config_file=/usr/local/nagios/etc/ndomod.cfg

(这两个在一行上,分两行Nagios就起不来了)

//为Nagios开启event broker

event_broker_options=-1


# cp -v src/{file2sock,log2ndo} /usr/local/nagios/bin

#chown nagios.nagios /usr/local/nagios/bin/{file2sock,log2ndo}


3.3 配置NDO2DB

NDO2DB daemon也模块具有Nagios 2.x和Nagios 3.x ....多个版本,具体根据使用的Nagios来用(我这里nagios-3.3.1的):

ndomod-2x.o = NDO2DB module for Nagios 2.x

ndomod-3x.o = NDO2DB module for Nagios 3.x


# cp -v src/ndo2db-3x /usr/local/nagios/bin/

# chown nagios.nagios /usr/local/nagios/bin/ndo2db-3x


# cp -v config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

# chown nagios.nagios /usr/local/nagios/etc/ndo2db.cfg 


3.4 修改NDOUtils配置文件ndo2db.cfg,这里主要修改数据库名、用户名和密码(db_name、db_user、db_pass),将其设置成我们之前在安装MySql时创建的数据库和用户。其余保持默认配置即可。

#vi /usr/local/nagios/etc/ndo2db.cfg

socket_type=tcp

db_servertype=mysql

db_host=localhost

db_port=3306

db_prefix=nagios_

db_name=nagiosdb

db_user=ndouser

db_pass=123456


注意:

i) 以上"db_"开头的选项用来指定连接数据库的属性;

ii)其默认用来接收数据的方式为Unix域套接字,这里修改成了TCP套接字;同时,ndomod.cfg配置文件中指定的输出方式也应该做相应的修改;


3.5 为NDOUtils创建数据库

# mysql -uroot -p

mysql> create database nagiosdb; 

mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON nagiosdb.* TO ndouser@localhost IDENTIFIED BY '123456'; 

mysql> flush privileges;


生成ndoutils所需要的数据库表等,这些表默认以“nagios_”为前缀;install脚本命令必须在db子目录内执行:

# cd db

# ./installdb -u ndouser -p 123456 -h localhost -d ndodb

(如果出现error 1142 (42000)错误是因为权限不足导致,改用root来执行就可以了)

说明:

其中各选项的意义如下:

-u用来指定导入时所用的mysql用户帐号

-p表示前面mysql用户的密码

-h表示mysql服务器地址,如果是localhost,则可以省略

-d表示目标数据库

如果与cacti整合的话,npc插件会在cacti的数据库自动生成ndoutils所需要表,这些表均以“npc_”为前缀。


3.6 编辑ndomod的配置文件,为其指定数据的输出方式和输出目标主机

# vi /usr/local/nagios/etc/ndomod.cfg

output_type=tcpsocket

output=127.0.0.1


4.启动ndo2db守护进程

# /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

建议此时查看系统日志(/var/log/messages)中是否有错误出现。

如果此时Nagios进程已启动,则需要停止并重新启动nagios,(必要时要用kill)还必须删除/usr/local/nagios/var下的ndo.sock,否则下次NDOUtils不能正常启动。

# killall -SIGHUP nagios

# rm -f /usr/local/nagios/var/nagios.lock

# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg


说明:

i)此处停止Nagios必须通过向Nagios发送SIGHUP信号的方式进行;

ii)建议此时查看nagios日志文件中是否表明ndomod的模块加载是否正常,以及其是否能正常连接到data sink;查看日志,可以使用如下命令实现:

# tail -30 /usr/local/nagios/var/nagios.log



鸣谢:本人参考了多篇文章后总结而得,在此感谢各位网络分享者!