|
|
使用NDOUtils将Nagios监控信息存入MySQL9 j3 S: K, S( m$ ^9 o9 M
1.NDOUtils安装需求) a2 v; F; J, s
nagios
4 [; F8 [! b3 Wmysql: h# H0 B; a" h: x* h2 S
cpan DBI #非必需
# B) v- e# ^( k! B3 V+ e6 U! Zcpan DBD::mysql #非必需+ r* K0 ?: ^ |4 U, n7 j0 w
2.关联mysql头文件和库* g# C- C) a: B( S; ?: f2 M: S
不做关联可能在config或make时出错
1 `9 i' l# d0 Y K7 y2 v5 nln -s /opt/mysql/include/* /usr/include/
3 d' t+ `4 F' G6 ?6 s0 F2 Rln -s /opt/mysql/lib/* /usr/lib/+ Q ]4 h r: {: q
echo ‘/usr/lib’ >> /etc/ld.so.conf, }/ v- {! d3 A5 p& S
ldconfig -v
: \9 p7 }0 P" B l- e6 R9 o3.安装ndoutils
}. P5 i. S4 @http://sourceforge.net/project/showfiles.php?group_id=26589
" {8 c: ^6 a: | c$ |wget -c http://nchc.dl.sourceforge.net/s ... outils-1.4b7.tar.gz
) P9 ?0 i, u: _# z+ i4 etar zxvf ndoutils-1.4b7.tar.gz
; M2 W& J9 L- H, o& j; _. t; acd ndoutils-1.4b74 j" i4 N _% p4 B4 f, h
./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
+ i$ K: Z4 F4 h" E0 m6 y0 `*config时使用以下mysql参数2 j0 T! d7 e4 M4 i+ P, w! ^
–with-mysql-inc=/opt/mysql/include –with-mysql-lib=/opt/mysql/lib
. `7 H9 t* |% d, Q9 o9 T#config成功! Q p1 X o$ ^1 J0 g! x( {
#make出错
. i# }, C. b' I$ E% ?) R# z, ~*config时使用以下mysql参数
! K3 h3 W4 } M/ i–with-mysql-inc=/opt/mysql/include/mysql –with-mysql-lib=/opt/mysql/lib/mysql' `0 f' Q* A+ s6 H1 a4 \, F
#config出错
$ T1 t G7 Y+ m, n#make成功并生成文件0 P8 t1 v8 O! I. O/ a% z w0 O
#启动ndo2db会出错
5 s6 o7 h) `& f& K*没有LDFLAGS=-L/opt/mysql/lib9 d1 M9 N% L8 U* o
<del datetime="2009-05-27T06:58:24+00:00">LDFLAGS=-L/opt/mysql/lib </del>2 S! F$ J) V7 `. ^7 |2 [& b
#ndo2db不能导入到数据库
' s0 u( U. g6 o' X. t. `相关错误
2 @. R) {2 {9 M4 b, ^- ~In file included from io.c:10:1 C- z0 \6 ^& r. M/ A% j0 ]
../include/config.h:261:25: mysql/mysql.h: 没有那个文件或目录
$ K- R- s' f* M- W0 O! D../include/config.h:262:26: mysql/errmsg.h: 没有那个文件或目录
e$ D0 _4 ~) w3 |% s% Y/ Emake[1]: *** [io.o] 错误 1; m: H9 C6 w6 p7 ?# E" o
checking for mysql/mysql.h… no! _5 `8 M( R/ J, M
t# x- K+ d$ d1 H
*** MySQL include file could not be located… **********************- h0 | |" J- r+ b0 j
# x7 j/ p% H6 k' ?/ K
You chose to compile NDBXT with MySQL support, but I was unable to. D8 f" a! V0 c7 v* F
locate on your system. If the include file is( O' ]- B9 r3 }
installed, use the –with-mysql-inc argument to specify the location0 [5 r1 @7 y5 f6 W3 @
of the MySQL include file.
- I/ S; B! |) k$ v8 V& h0 ]make
/ a7 N& h& a' all ./src( t( T; F) N; o5 b1 ~7 R
看看是否有以下文件: V6 T7 k( a7 k2 l R
ndo2db-2x
2 q$ v) B3 w) I. K% I, \9 Gndo2db-3x2 x3 Y9 ~0 n9 Q |% h# U
ndomod-2x.o
( r4 g5 ?& M/ l3 I. ^ndomod-3x.o) F3 ~) U6 R7 i+ T; l* N* c
4.拷贝文件
% u" R1 T$ E _0 k3 s+ P# 我的Nagios是3.0.6,所以拷贝的是ndomod-3x.o、ndo2db-3x,如果你的是2.X.x请拷贝ndomod-2x.o、ndo2db-2x
" ~8 |3 L3 V C# o* I2 ]cp ./src/ndomod-3x.o /usr/local/nagios/bin
. v5 m9 a& ]" p" _4 Q: zcp ./src/ndo2db-3x /usr/local/nagios/bin
- G' M s( s) W! X/ u1 Y' i0 X0 B" a; f4 wcp ./src/log2ndo /usr/local/nagios/bin
2 s V. S" F% q) E* fcp ./src/file2sock /usr/local/nagios/bin; a, M0 y, f9 F
chown nagios:nagios /usr/local/nagios/bin/*
; l5 S8 {: H' v, ^2 \5.拷贝配置文件4 K/ Z) ^) a5 m% x1 e q( N4 n8 {
cp ./config/ndo* /usr/local/nagios/etc/
w' S8 ]. Q& V+ a" l9 S8 ~chown nagios:nagios /usr/local/nagios/etc/*- R' S2 H( M9 ^0 K) X! K6 O
6.创建ndo的mysql 数据库及用户1 U& k( N3 ^ {9 x- M% d* s
CREATEDATABASE`nagios`DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;+ S/ U. M v1 u$ M: m2 d
GRANT select,insert,update,deleteONnagios.*TOnagiosndo@localhostidentifiedby’password123′;! v1 M' O5 Y5 M: K2 h+ H' m4 n
FLUSH PRIVILEGES;- {& B! @+ j# B" ?, @5 T- S `: T
7.导入数据库结构
5 ^, f) X9 i- x4 O# U0 w: }使用db/installdb脚本
) u+ P# C+ f/ P$ Q) {& K% W需要以下支持( r! P7 K2 ^$ V0 z8 `
cpan DBIcpan DBD::mysql9 i! g ?, [( ^
cd ./db/
2 W; i2 \2 d/ F/ q P6 t! X./installdb -u root -p 123456 -h localhost -d nagios
2 n4 t" J4 B" I$ e% J% F用命令导入(其实和用脚本是一回事,也可以用phpmyadmin来导入). p0 C2 o4 y* Z$ t# s, [6 C
/opt/mysql/bin/mysql -u root -p -D nagios -h localhost < ./db/mysql.sql {) r, J6 ~. Q6 m0 ]0 S
输入密码
; i7 Q( h' `: y9 q成功导入59张表$ {8 p" ]; D! m: N' U
8.修改配置文件- X( z/ M* d: O) _+ G
vi /usr/local/nagios/etc/ndo2db.cfg
4 U; g& z+ L0 b4 L' E/ _db_user=nagiosndo
3 ]1 O' ]" E7 i5 C. X9 Hdb_pass=password123
6 O, U, r( U0 |/ [vi /usr/local/nagios/etc/nagios.cfg
" \3 I3 u2 ]: _2 C" f" Q) B# 修改下面参数的值为-1(一般默认如此)。# e c% J/ y) \. y0 E
event_broker_options=-1
q- k1 ^9 S+ {7 I, j5 r# 复制下面内容粘贴到#broker_module=…下面。
7 y4 z( |8 E$ z" W/ D* o# 注意broker_module= 和config_file是在一行上& {1 a0 N# W3 k# s1 P: u0 Y
# Uncomment the line below if you’re running Nagios 3.x# d* u) Z4 b5 h! \5 S0 U8 D7 D9 U. z
broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
2 [1 o7 M4 y2 o$ `9.启动ndo2db
* H3 T# g/ e; U# L& Z/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg. @9 x) d4 B- t4 B* G8 S
3 K, i- J8 _, q4 V1 Q) G9 r* P( Hecho ‘rm -f /usr/local/nagios/var/ndo.sock’ >> /etc/rc.local
" T" \( x: n& t0 u! `echo ‘/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg’ >> /etc/rc.local
: L/ B+ a# k. G( g: F6 W#开机启动
7 e9 G0 S0 S' kSupport for the specified database server is either not yet supported, or was not found on your system.
# G# m% v2 f4 N j3 x/usr/local/nagios/bin/ndo2db-3x: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory: m5 K7 q. ~% h9 n% E* e
出现以上错误请执行第2步
4 J. E) P- J7 u8 B# Y' s: l3 r q8 ~10.重启动nagios, @1 L/ L0 x1 X9 ^3 r( q( ~
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg" |. u2 p2 |( V( o
service nagios restart
/ s8 x* N3 Z% _% c一般情况下到此已完成安装,可以去数据库里看下记录有无增加
$ Y5 m e+ v( K11.检查安装是否正确# Z6 N# K" h3 x5 O
tail -20 /usr/local/nagios/var/nagios.log
+ @" V# \6 v% b2 N' \2 V& V[1242971625] ndomod: Successfully flushed 80 queued items to data sink.[1242971625] ndomod: Error writing to data sink! Some output may get lost…
6 k4 W9 B: N3 j! M貌似有点问题% O/ v# Q! Y w( s0 E0 [
先改成输出成文件#vi ndomod.cfg9 M& ?# E# k C- Z- q
instance_name=default
5 R$ P# l& P# y#output_type=tcpsocket2 S$ g8 S* k2 g* Y! e5 v
#output=127.0.0.1! A# h1 P* E/ R) u+ L& Q
3 c. k2 F3 s0 x( A6 A# loutput_type=file& v6 t+ G! ?+ M
output=/usr/local/nagios/var/ndo.dat
) Z2 A( N0 N# ~! rservice nagios restart: U0 g1 I6 u5 f2 Q8 r" s8 O# L4 {
看看有没有/usr/local/nagios/var/ndo.dat文件,ok,发现文件,说明第一步可以生成文件查看文件内容
. P) ?/ t: m! } acd /usr/local/nagios/var/& T6 J$ R8 q. h& E
head -30 ndo.dat) J" Q# i, u* }- Z
" E8 L* {6 W8 `. e+ o9 P0 IHELLO2 p" `% p% C& I% d$ o- U7 ^/ x
PROTOCOL: 2
6 J. x( j# h+ u4 aAGENT: NDOMOD+ [% J# p, p2 Y" J, T& J" t# a
AGENTVERSION: 1.4b76 V9 \! g9 m9 P" Z& \/ U
STARTTIME: 1243393299
, ?: k' _6 C) N( E; K7 T( x lDISPOSITION: REALTIME
3 [$ Y3 F4 _3 iCONNECTION: FILE
6 o X) u* d) YCONNECTTYPE: INITIAL
& r* ?, ` R( _" DINSTANCENAME: default4 [; r8 X0 g6 a U3 t. U
STARTDATADUMP
( [ _ x; e5 m) m* p . H( {7 B/ U3 d7 b" y
6 {' n2 c k6 }/ n5 v202:
8 Z# r* }; D u: V; W9 A! ~$ m, A" u1=300
, R6 K/ M8 }+ M( ]7 g+ g" l" c4 q; w2=06 M6 z; u y; T1 Z
3=0) a t; s& {6 A4 q0 H
4=1243393292.450675
u4 [7 }3 q8 T/ F/ h73=1243393292
$ z5 z; k4 }6 z74=262144
/ f3 w1 V% g' {6 @) v% \. S72=ndomod: Error writing to data sink! Some output may get lost…& ?/ ^/ f' a& `3 S v! W- t
9994 N( A( N% H+ s) h1 Y
L! m+ B& a( f
# j) o; {7 I% ?/ d9 t
7 g6 v9 k; w3 c201:
- t5 l& Q! Z- s! c. P9 ?9 z1=205
! x9 C6 c: i g( L2 S6 V2=0& |2 Y: D5 s5 x! c
使用file2sock尝试socket方式
d9 p$ ]. `9 Q+ F7 n; g../bin/file2sock -s /usr/local/nagios/var/ndo.dat -d /usr/local/nagios/var/ndo.sock -t unix -p 5668
8 w! a1 r* y% T( Q. ~Error while writing to destination socket: Connection reset by peer
3 C7 c6 I- i+ ?: n( _尝试tcp方式
0 t6 Y' |* q' s0 d }4 J" l5 o zvi ndo2db.cfg
/ w% q8 G- K' b. F& ^% N$ C# R& c0 L#socket_type=unix7 |" c- E0 c0 e# v
socket_type=tcp( U( l e# g8 [ P8 N: ]) {
重新载入ndo2db* o7 J6 R+ o9 n( y
ps aux|grep ndo2db, h, A; u3 E; @! {* {' p1 w
kill $pid( Q- i- B: E) x
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
/ X( O9 V6 z/ l- U0 E/ P; `+ n% h$ b
" T+ g5 {1 p) }+ H& N../bin/file2sock -s ndo.dat -d localhost -t tcp -p 5668
& w& q* n0 _% {% t0 D$ P) O" @Error while writing to destination socket: Connection reset by peer) g3 N1 N' v4 R7 M* ~- o
依然不行,重新编译ndoutils并加上 LDFLAGS=-L/opt/mysql/lib% Y7 C2 F6 u& ^' K
./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/mysql7 ~9 G* J/ x: ^/ H! N; [
make: K( Z7 X7 ]! E. z! q$ ^/ J/ j- E
#再执行一下安装过程后,通过# O0 B. A& m) L1 e* Z% J" [
=================200912-07 更新; ]( k/ U. n) D" L, W# r
tail /var/log/messages
6 }$ p1 _% J9 ^. p! t/ K& NDec 7 14:09:13 localhost nagios: ndomod: Still unable to connect to data sink. 10547 items lost, 5000 queued items to flush.- ?& G, r f1 v( \' |) p
Dec 7 14:09:29 localhost nagios: ndomod: Still unable to connect to data sink. 10746 items lost, 5000 queued items to flush.
2 X0 e) @; h' y! D: e% j3 [连接不到mysql,重启一下' W5 l9 W3 _# ], U
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg0 u6 v8 N) ]! W: ]) O
Could not bind socket: Address already in use
6 s& `" `+ T# _. w+ I5 c3 I2 {ps aux|grep ndo2db没有1 Z8 O0 f# d2 W# B5 f
查看套接字文件是否存在,删除之
/ q8 q/ L4 a! d' E3 mll /usr/local/nagios/var/ndo.sock( N& E$ ~( E; h
rm /usr/local/nagios/var/ndo.sock
* o% r4 c6 d6 d) k: }' {! z重启/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg. i, f: z. l( ?" J6 c
tail /var/log/messages. `$ I& P8 t3 U# c0 I
Dec 7 14:09:45 localhost nagios: ndomod: Successfully connected to data sink. 10861 items lost, 5000 queued items to flush.7 M& E/ q6 W- `
Dec 7 14:09:45 localhost nagios: ndomod: Successfully flushed 5000 queued items to data sink.
) R$ r, \+ u" s2 qDec 7 14:09:45 localhost ndo2db-3x: Successfully connected to MySQL database |
|