NDOUtuils是基于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
鸣谢:本人参考了多篇文章后总结而得,在此感谢各位网络分享者!