[i=s] 本帖最后由 惊鸿浪子 于 2012-5-1 10:14 编辑 [/i]
ndoutils 将nagios采集的信息存入mysql数据库中
参考文章http://mysql.nagiostutorial.com/19
1.NDOUtils安装需求
nagios
mysql //我的是直接解压就可以用的
cpan DBI #非必需
cpan DBD::mysql #非必需
2.关联mysql头文件和库
不做关联可能在config或make时出错
ln -s /usr/local/mysql/include/* /usr/include/
ln -s /usr/local/mysql/lib/* /usr/lib/
echo ‘/usr/lib’ >> /etc/ld.so.conf
ldconfig -v
3.安装ndoutils
cd ndoutils
./configure --prefix=/usr/local/nagios
--enable-mysql --disable-pgsql
LDFLAGS=-L/usr/local/mysql/lib
--with-mysql-inc=/usr/local/mysql/include
--with-mysql-lib=/usr/local/mysql/lib
出现错误:
*** MySQL include file could not be located… **********************
原因:我没有安装mysql-devel
安装:yum install mysql-devel
然后:
./configure --prefix=/usr/local/nagios
--enable-mysql --disable-pgsql
LDFLAGS=-L/usr/local/mysql/lib
--with-mysql-inc=/usr/local/mysql/include
--with-mysql-lib=/usr/local/mysql/lib
没有错误
make
在src目录下看看是否有
ndo2db-2x
ndo2db-3x
ndomod-2x.o
ndomod-3x.o
有的话说明安装成功。
4.拷贝文件
# 我的Nagios是3系列,所以拷贝的是ndomod-3x.o、ndo2db-3x,如果你的是2.X.x请拷贝ndomod-2x.o、ndo2db-2x
cp ./src/ndomod-3x.o /usr/local/nagios/bin
cp ./src/ndo2db-3x /usr/local/nagios/bin
cp ./src/log2ndo /usr/local/nagios/bin
cp ./src/file2sock /usr/local/nagios/bin
chown nagios:nagios /usr/local/nagios/bin/*
5.拷贝配置文件
cp /config/ndo2db.cfg /usr/local/nagios/etc/ndo2db.cfg
cp /config/ndomod.cfg /usr/local/nagios/etc/ndomod.cfg
以上config目录中的ndo2db.cfg和ndomod.cfg在ndoutils-1.49b中是以ndo2db.cfg-sample和ndomod.cfg-sample命名的,
如果您使用的是这个版 本的ndoutils,请在复制时做出相应的修改;
cp /config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
cp /config/ndomod.cfg -sample /usr/local/nagios/etc/ndomod.cfg
注意还要修改权限
chown nagios:nagios /usr/local/nagios/etc/ndo2db.cfg
chown nagios:nagios /usr/local/nagios/etc/ndomod.cfg
如果不修改,最终在 tail -30 /var/log/messages
1 10:10:49 localhost nagios: ndomod: Still unable to connect to data sink. 3549 items lost, 5000 queued items to flush.
May 1 10:11:05 localhost nagios: ndomod: Still unable to connect to data sink. 3646 items lost, 5000 queued items to flush.
会出现如下错误
6:为nagios创建数据库
mysql> create database ndodb;
Query OK, 1 row affected (0.08 sec)
mysql> grant all privileges on ndodb.* to ndouser@localhost identified by '111111' //把数据库ndodb 让用户ndouser 使用,以后可以用
-> ; ndouser登录数据库,使用ndodb数据库
Query OK, 0 rows affected (0.09 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)
mysql>
7:导入数据库结构
使用db/installdb脚本
需要以下支持
cpan DBI
cpan DBD::mysql
cd ./db/
./installdb -u root -p 111111 -h localhost -d ndodb
用命令导入(其实和用脚本是一回事,也可以用phpmyadmin来导入)
/usr/local/mysql/bin/mysql -u root -p -D ndodb -h localhost < ./db/mysql.sql //注意仍然在ndoutils的安装文件目录下
输入密码 //其目录下有db文件夹和src文件夹
成功导入59张表
进入数据库看看如下
[attach]37493[/attach]
8.修改配置文件
vi /usr/local/nagios/etc/ndo2db.cfg
db_user=nagiosndo
db_pass=password123
sock_type=tcp
vi /usr/local/nagios/etc/nagios.cfg
# 修改下面参数的值为-1(一般默认如此)。
event_broker_options=-1
# 复制下面内容粘贴到#broker_module=…下面。
# 注意broker_module= 和config_file是在一行上
# 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 必须在一行
vi /usr/local/nagios/etc/ndomod.cfg
output_type=tcpsocket
output=127.0.0.1
9.启动ndo2db
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
echo ‘rm -f /usr/local/nagios/var/ndo.sock’ >> /etc/rc.local
echo ‘/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg’ >> /etc/rc.local
#开机启动
查错:tail -20 /usr/local/nagios/var/nagios.log
[1227766166] ndomod: NDOMOD 1.4b7 (10-31-2007) Copyright (c) 2005-2007 Ethan Galstad (nagios@nagios.org)
[1227766166] ndomod: Successfully connected to data sink. 0 queued items to flush.
[1227766166] Event broker module ‘/usr/local/nagios/bin/ndomod-3x.o’ initialized successfully.
[1227766166] Finished daemonizing… (New PID=18848)
表示正常
tail -30 /var/log/messages
我出现如下错误
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
原因是我用的是二进制解压包,mysql.sock 在/tmp 目录下 编译的mysql应该也在该目录下
解决办法有两个,一是修改/etc/my.cnf文件中sock的位置,
二是创建一个软链接到/var/lib/mysql下面
重启ndo2db
ps aux |grep ndo2db 找到该进程
nagios 17539 0.0 0.0 10308 592 ? Ss 15:52 0:00 /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
nagios 17585 0.6 0.2 19528 1560 ? S 15:52 0:17 /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
nagios 17586 0.1 0.2 19528 1560 ? S 15:52 0:05 /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
root 18436 0.0 0.1 4588 800 pts/3 S+ 16:39 0:00 grep --color=auto ndo2db
kill pid 号 如17539 和17585
然后重启ndo2db
此时tail -30 /var/log/messages
我出现了Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
但是我没有管。
10.重启动nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios restart
这样就可以了。
最终我的结果如下
mysql> select host_id,address,display_name from nagios_hosts;
+---------+-----------+---------------+
| host_id | address | display_name |
+---------+-----------+---------------+
| 4 | 127.0.0.1 | Nagios-Server |
| 5 | 127.0.0.1 | localhost |
| 6 | 127.0.0.1 | unixserver |
+---------+-----------+---------------+
3 rows in set (0.01 sec)
总结:
如果数据库中还是没有数据,则可以重启ndo2db 然后重启nagios 多尝试一下重启,如果还不行可能就是安装的有问题
数据库得到数据花费的时间叫长,耐心等待。
并且我也是很久才得到数据的,然后修改了nagios.cfg 文件后,有时ndoutils能感应到数据的变化,有时不行。
然后我又重启ndo2db 和nagios ,我不知道是不是在objects目录下是否必须有hosts.cfg services.fg 和contactgroups.cfg
我试验了一下, 这几个文件是非必须的,但是当我又修改nagios.cfg 文件时,数据库又监测不到了,不知道为什么
反正不是很好弄
经过几天的学习,对于
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
Apr 7 15:52:34 localhost ndo2db-3x: Error: queue send error.
有了新的认识,其实这是因为ndoutils1.5版本本身的问题,外文网站说是message queue队列满了。
改用低版本的ndoutils-1.4b9.tar.gz就可以了,安装步骤一样。
并且网上有一个关于异步数据库的ndoutils补丁网址如下
http://exchange.nagios.org/directory/Patches/NDOUtils/ndoutils-2Dasync/details
在ndoutils1.49b中我没有安装这个补丁,其实也不知道具体有什么用。只是介绍一下
惊鸿浪子 于 2012-04-10 12:19:33发表:
2# juanbic
谢了啊!
juanbic 于 2012-04-07 21:19:43发表:
严重支持