Solaris10
下NDOUtils的安装
1.
资源准备
1.1.
数据库
NDOUtils
目前仅支持MySql数据库,对于
PostgreSQL
数据库支持还在开发中,未来可能会支持更多的、众所关注的数据库。
可以从MySql的官方网站(
[url]www.mysql.com[/url]
)获得一个稳定的MySql数据库版本,同时也下载一个MySql客户端mysql-gui-tools,方便对于MySql数据库操作。
我的操作系统是Solaris10,我选择下载源码进行编译安装,下载mysql-5.0.51b.tar.gz源码,同时下载MySql的官方参考文档。
1.2.
NDOUtils
NDOUtils
源码可以从Nagios的官方网站获得,同时可以下载一份NDOUTILS的官方文档(NDOUtils.pdf)。该文档介绍了NDOUtils的设计目的,实现原理,和安装过程。
源码:ndoutils-1.4b7.tar.gz
2.
MySql
的安装
MySql
的安装方法已经在MySql官方文档中有详细的讲解,在这里我不做过的介绍,仅给出简单的安装过程。
2.1.
创建MySql的用户和用户组
用户和用户组分别为mysql和mysql
# groupadd mysql
# useradd -g mysql mysql
|
2.2.
Configure
首先要解压下载的源码包,然后运行源码中的Configure命令完成安装前的配置工作。
# gunzip ./mysql-5.0.51b.tar.gz
# tar xvf ./mysql-5.0.51b.tar
# cd ./mysql-5.0.51b
# CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
-fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
|
这里指定安装路径是/usr/local/mysql。
2.3.
编译、安装
不改变路径。
# make
# make install
# cp support-files/my-medium.cnf /etc/my.cnf
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql var
# chgrp -R mysql .
# bin/mysqld_safe --user=mysql &
# cd bin
# ./mysql -u root -p -h localhost
|
使用mysql命令登录数据库检查是否安装成功(root用户密码为空)。
2.4.
创建NDOUtils后台数据库以及登录用户
根据NDOUtils的设计实现原理,其将Nagios监控程序收集到的信息(信息以文本方式存在)导入到后台数据库中,以便后续使用这些历史数据进行分析、预测以及实现其他具体业务功能。
此处创建的数据库和登录用户就是为NDOUtils程序保存监控信息所使用的。我们在这里创建数据库名为nagiosdb,登录用户和密码均为nagiosmysql。当然也可以使用其他数据库名和用户名,但是要记录下来,因为在后续的NDOUtils数据库初始化,以及NDOUtils配置文件中都要用到这些信息。
具体的操作如下:
//
进入MySql的安装目录
# cd /usr/local/mysql
//
进入bin目录
# cd ./bin
//
运行mysql,使用root用户登录数据库,密码为空
# ./mysql -u root -p -h localhost
mysql> CREATE DATABASE nagiosdb;
mysql> GRANT ALL ON nagiosdb.* TO 'nagiosmysql'@'localhost' IDENTIFIED BY "nagiosmysql";
mysql> exit
//
退出登录,使用刚刚创建的用户登录刚刚创建的数据库
# ./mysql -u nagiosmysql -p -h localhost -D nagiosdb
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.51b-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
|
3.
NDOUtils
安装
3.1.
安装前准备
图3.1.1
|
图3.1.1展示了一个NDOUtils各组件之间是如何协同工作的。该图仅仅是NDOUtils的一个最简单的配置实现方式,但它包含了所有必需的要素,同时也非常明晰的展示出各组件之间的关系。
Nagios
主监控实例是必不可少的,一个用于存放信息的后台数据库也是必须的。Nagios主监控实例与NDOUtils进程之间通过TCP或Unix Domain Socket进行通信,具体实现是Nagios通过NDOUtils提供的NDOMOD模块完成与NDOUtils进程的通信。
通过对于NDOUtils实现原理的了解,我们可以知道在安装NDOUtils之前有哪些准备工作需要完成,首先需要有Nagios软件,一个后台数据库,目前只有MySql可用。另外还有一些NDOUtils用到的一些类库,如OpenSSL、Perl、DBI等。
这里用到的NDOUtils版本是ndoutils-1.4b7,Nagios是3.0.3。其余的软件包如下
Data-Dumper-2.121
|
DBI-1.607
|
DBD-mysql-4.007
|
perl-5.8.8-sol10-x86-local
|
3.2.
安装
NDOUtils
首先解压源代码包,释放到某一目录,将此目录表示为NDOUTILS_DIR(便于后续描述安装过程)。
3.2.1.
Configure
#
cd $NDOUTILS_DIR
# ./configure --prefix=/usr/local/nagios --enable-mysql \
--with-mysql-lib=/usr/local/mysql/lib/mysql \
--with-mysql-inc=/usr/local/mysql/include
|
这里需要指定MySql的include文件和lib文件路径。
3.2.2.
Make
# cd /usr/local/include
# ln -s /usr/local/mysql/include/mysql ./mysql
# cd /usr/local/lib
# ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so \
./libmysqlclient.so
# ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.15\
./libmysqlclient.so.15
|
需要将
/usr/local/lib
添加到LD_LIBRARY_PATH变量中。
# cd $NDOUTILS_DIR
# vi ./src/Makefile
ndo2db-2x: ndo2db.c $(NDO_INC) $(NDO_OBJS) $(COMMON_INC) $(COMMON_OBJS) dbhandlers-2x.o
$(CC) $(CFLAGS) $(DBCFLAGS) -D BUILD_NAGIOS_2X -o ndo2db-2x ndo2db.c dbhandlers-2x.o ../common/snprintf.o \
$(COMMON_OBJS) $(NDO_OBJS) $(LDFLAGS) $(DBLDFLAGS) $(LIBS) $(SOCKETLIBS) $(DBLIBS) $(MATHLIBS) $(OTHERLIBS)
ndo2db-3x: ndo2db.c $(NDO_INC) $(NDO_OBJS) $(COMMON_INC) $(COMMON_OBJS) dbhandlers-3x.o
$(CC) $(CFLAGS) $(DBCFLAGS) -D BUILD_NAGIOS_3X -o ndo2db-3x ndo2db.c dbhandlers-3x.o ../common/snprintf.o \
$(COMMON_OBJS) $(NDO_OBJS) $(LDFLAGS) $(DBLDFLAGS) $(LIBS) $(SOCKETLIBS) $(DBLIBS) $(MATHLIBS) $(OTHERLIBS)
|
其中Makefile文件被标出的部分为所需添加的内容,如果不引入该文件ndo2db-3x和ndo2db-2x将编译失败,因为这两个C文件中都用了asprintf方法,而没有定义该方法,这个方法是在Nagios的 common/snprintf.c文件中定义的。可以将snprintf.c编译好的snprintf.o文件直接拷贝过来,并引入Makefile文件中。这样编译才能通过。
# cd $NDOUTILS_DIR
# cp -R ../nagios-3.0.3/common ./ #
拷贝
snprintf.o
文件
# make
|
编译完成,请注意在这之后不要运行make install。
3.2.3.
设置
# cd $NDOUTILS_DIR/src
# cp ndomod-3x.o ndo2db-3x log2ndo file2sock \
/usr/local/nagios/bin
# cd $NDOUTILS_DIR/config
# cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc
|
将编译后的可执行文件和配置文件拷贝到Nagios的相应目录下。
并修改配置文件。
# cd /usr/local/nagios/etc
# vi ./ndo2db.cfg
db_name=nagiosdb
db_user=nagiosmysql
db_pass=nagiosmysql
|
修改NDOUtils配置文件ndo2db.cfg,这里主要修改数据库名、用户名和密码(db_name、db_user、db_pass),将其设置成我们之前在安装MySql时创建的数据库和用户。其余保持默认配置即可。
# cd /usr/local/nagios/etc
# vi ./nagios.cfg
# Uncomment the line below if you're running Nagios 2.x
#broker_module=/usr/local/nagios/bin/ndomod-2x.o config_file=/usr/local/nagios/etc/ndomod.cfg
# Uncomment the line below if you're running Nagios 3.x
broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
|
修改Nagios配置文件,追加上述各行,并确认event_broker_options=-1。
event_broker_options=-1
|
这样配置工作基本完成,下一步就可以初始化数据库了,但在初始化数据库之前先要安装
Perl
以及
DBI
,因为
NDOUtils
的数据库初始化脚本
installdb
中需要
BDI
与数据库建立连接。
3.3.
安装Perl及DBI、DBD
Perl
的安装可以参考官方文档,这里仅列出简要的安装过程。
Perl
:
# gunzip ./perl-5.8.8-sol10-x86-local.gz
# pkgadd -d ./perl-5.8.8-sol10-x86-local
# cd /usr/bin
# ln -sf /usr/local/bin/perl ./perl
# perl -v
This is perl, v5.8.8 built for i86pc-solaris
Copyright 1987-2006, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at [url]http://www.perl.org/[/url], the Perl Home Page.
|
Data-Dumper:
# gunzip ./Data-Dumper-2.121.tar.gz
# tar xvf ./Data-Dumper-2.121.tar
# cd ./Data-Dumper-2.121
# perl ./Makefile.PL
# make
# make install
|
DBI
:
# gunzip ./DBI-1.607.tar.gz
# tar xvf ./DBI-1.607.tar
# cd ./DBI-1.607
# perl ./Makefile.PL
# make
# make install
|
DBD-mysql
:
# gunzip ./DBD-mysql-4.007.tar.gz
# tar xvf ./DBD-mysql-4.007.tar
# cd ./DBD-mysql-4.007
# perl Makefile.PL \
--libs="-L/usr/local/mysql/lib/mysql -lmysqlclient -lz" \
--cflags=-I/usr/local/mysql/include/mysql \
--testhost=localhost
# make
# make test
# make install
|
Make test
中如果没有出现问题则表明安装成功。
3.4.
初始化NDOUtils后台数据库
在NDOUtils的源代码中有个db目录,其中存放了用于初始化数据的sql脚本和一个建库初始化shell脚本。
# cd $NDOUTILS_DIR
# export PATH=$PATH:/usr/local/mysql/bin
# cd ./db
# ./installdb -u nagiosmysql -p nagiosmysql \
-h localhost -d nagiosdb
|
运行installdb脚本,这里需要指定用户名、密码、主机、数据库。可以登录MySql查看nagiosdb下是否已经生成NDOUtils的数据表。
3.5.
运行NDOUtils
此时所有的初始化、配置工作已经完成,下一步就是要启动NDOUtils程序检验是否成功安装了。
对于不同Nagios版本,NDOUtils有不同的启动程序,ndo2db-2x对应Nagios的2.X版本,ndo2db-3x对应Nagios的3.X版本,我安装时Nagios3.0.3版,所以选用ndo2db-3x。
# cd /usr/local/nagios/bin
# ./ndo2db-3x -c ../etc/ndo2db.cfg
|
运行上述命令启动NDOUtils,查看后台日志看是否有问题。
注意,如果要停止ndo2db-3x进程,再使用kill命令杀掉对应的进程号后,还必须删除/usr/local/nagios/var下的ndo.sock,否则下次NDOUtils不能正常启动。
重启Nagios,并观察Nagios的后台日志,观察是否有异常。
登录MySql使用nagiosdb数据库查看其中表的内容是否被更新。如可以查看nagios_hosts表中的主机信息是否与Nagios的配置文件一致;可以查询nagios_servicechecks表,查看监测内容的最新状态是否已经更新到数据库中。如果信息正常则表示安装配置完成。
4.
结语
以上是我在solaris10x86安装NDOUtils的过程。NDOUtils可以将Nagios的监控信息保存于数据库中,备查询分析,但NDOUtils本身并不提供数据展示层的功能实现,你可能需要其他手段来使用这些收集好数据。