使用NDOUtils将Nagios监控信息存入mysql

  1. 1.NDOUtils安装需求
    nagios
    mysql
    cpan DBI #非必需
    cpan DBD::mysql #非必需
    2.关联mysql头文件和库
    不做关联可能在config或make时出错
    ln -s /opt/mysql/include/* /usr/include/
    ln -s /opt/mysql/lib/* /usr/lib/
    echo '/usr/lib' >> /etc/ld.so.conf
    ldconfig -v
    3.安装ndoutils
    http://sourceforge.net/project/showfiles.php?group_id=26589
    wget -c http://nchc.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz
    tar zxvf ndoutils-1.4b7.tar.gz
    cd ndoutils-1.4b7
    ./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/opt/mysql/lib --with-mysql-inc=/opt/mysql/include/mysql --with-mysql-lib=/opt/mysql/lib/mysql
    *config时使用以下mysql参数
    --with-mysql-inc=/opt/mysql/include --with-mysql-lib=/opt/mysql/lib
    #config成功
    #make出错
    *config时使用以下mysql参数
    --with-mysql-inc=/opt/mysql/include/mysql --with-mysql-lib=/opt/mysql/lib/mysql
    #config出错
    #make成功并生成文件
    #启动ndo2db会出错
    *没有LDFLAGS=-L/opt/mysql/lib
    <del datetime="2009-05-27T06:58:24+00:00">LDFLAGS=-L/opt/mysql/lib </del>
    #ndo2db不能导入到数据库
    相关错误
    In file included from io.c:10:
    ../include/config.h:261:25: mysql/mysql.h: 没有那个文件或目录
    ../include/config.h:262:26: mysql/errmsg.h: 没有那个文件或目录
    make[1]: *** [io.o] 错误 1
    checking for mysql/mysql.h... no
     
    *** MySQL include file could not be located... **********************
     
    You chose to compile NDBXT with MySQL support, but I was unable to
    locate on your system. If the include file is
    installed, use the --with-mysql-inc argument to specify the location
    of the MySQL include file.
    make
    ll ./src
    看看是否有以下文件
    ndo2db-2x
    ndo2db-3x
    ndomod-2x.o
    ndomod-3x.o
    4.拷贝文件
    # 我的Nagios是3.0.6,所以拷贝的是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/ndo* /usr/local/nagios/etc/
    chown nagios:nagios /usr/local/nagios/etc/*
    6.创建ndo的mysql 数据库及用户
    CREATE DATABASE `nagios` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    GRANT select,insert,update,delete ON nagios.* TO nagiosndo@localhost identified by 'password123';
    FLUSH PRIVILEGES ;
    7.导入数据库结构
    使用db/installdb脚本
    需要以下支持
    cpan DBI
    cpan DBD::mysql
    cd ./db/
    ./installdb -u root -p 123456 -h localhost -d nagios
    用命令导入(其实和用脚本是一回事,也可以用phpmyadmin来导入)
    /opt/mysql/bin/mysql -u root -p -D nagios -h localhost < ./db/mysql.sql
    输入密码
    成功导入59张表
    8.修改配置文件
    vi /usr/local/nagios/etc/ndo2db.cfg
    db_user=nagiosndo
    db_pass=password123
    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
    9.启动ndo2db
    /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
    echo '/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg' >> /etc/rc.local
    #开机启动
    Support for the specified database server is either not yet supported, or was not found on your system.
    /usr/local/nagios/bin/ndo2db-3x: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
    出现以上错误请执行第2步
    10.重启动nagios
    /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    service nagios restart
    一般情况下到此已完成安装,可以去数据库里看下记录有无增加
    11.检查安装是否正确
    tail -20 /usr/local/nagios/var/nagios.log
    [1242971625] ndomod: Successfully flushed 80 queued items to data sink.
    [1242971625] ndomod: Error writing to data sink! Some output may get lost...
    貌似有点问题
    参考:
    http://www.nagios.net.cn/blog/blog.php?do-showone-itemid-62-type-blog.html
    先改成输出成文件
    #vi ndomod.cfg
    instance_name=default
    #output_type=tcpsocket
    #output=127.0.0.1
     
    output_type=file
    output=/usr/local/nagios/var/ndo.dat
    service nagios restart
    看看有没有/usr/local/nagios/var/ndo.dat文件,ok,发现文件,说明第一步可以生成文件
    查看文件内容
    cd /usr/local/nagios/var/
    head -30 ndo.dat
     
    HELLO
    PROTOCOL: 2
    AGENT: NDOMOD
    AGENTVERSION: 1.4b7
    STARTTIME: 1243393299
    DISPOSITION: REALTIME
    CONNECTION: FILE
    CONNECTTYPE: INITIAL
    INSTANCENAME: default
    STARTDATADUMP
     
     
    202:
    1=300
    2=0
    3=0
    4=1243393292.450675
    73=1243393292
    74=262144
    72=ndomod: Error writing to data sink!  Some output may get lost...
    999
     
     
     
    201:
    1=205
    2=0
    使用file2sock尝试socket方式
    ../bin/file2sock -s /usr/local/nagios/var/ndo.dat -d /usr/local/nagios/var/ndo.sock -t unix -p 5668
    Error while writing to destination socket: Connection reset by peer
    尝试tcp方式
    vi ndo2db.cfg
    #socket_type=unix
    socket_type=tcp
    重新载入ndo2db
    ps aux|grep ndo2db
    kill $pid
    /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
     
    ../bin/file2sock -s ndo.dat -d localhost -t tcp -p 5668
    Error while writing to destination socket: Connection reset by peer
    依然不行,重新编译ndoutils并加上 LDFLAGS=-L/opt/mysql/lib
    参考
    http://www.itnms.net/discuz/viewthread.php?tid=1357&extra=pageD1&page=1
    ./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/opt/mysql/lib --with-mysql-inc=/opt/mysql/include/mysql --with-mysql-lib=/opt/mysql/lib/mysql
    make
    #再执行一下安装过程后,通过
    =================
    200912-07 更新
    tail /var/log/messages
    Dec  7 14:09:13 localhost nagios: ndomod: Still unable to connect to data sink.  10547 items lost, 5000 queued items to flush.
    Dec  7 14:09:29 localhost nagios: ndomod: Still unable to connect to data sink.  10746 items lost, 5000 queued items to flush.
    连接不到mysql,重启一下
    /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
    Could not bind socket: Address already in use
    ps aux|grep ndo2db
    没有
    查看套接字文件是否存在,删除之
    ll /usr/local/nagios/var/ndo.sock
    rm /usr/local/nagios/var/ndo.sock
    重启
    /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
    tail /var/log/messages
    Dec  7 14:09:45 localhost nagios: ndomod: Successfully connected to data sink.  10861 items lost, 5000 queued items to flush.
    Dec  7 14:09:45 localhost nagios: ndomod: Successfully flushed 5000 queued items to data sink.
    Dec  7 14:09:45 localhost ndo2db-3x: Successfully connected to MySQL database
    解决



你可能感兴趣的:(mysql,local,监控,include,信息)