歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在RHEL5.4安裝ndoutils 1.4.14

在RHEL5.4安裝ndoutils 1.4.14

日期:2017/2/28 16:18:51   编辑:Linux教程

一、實驗准備

1.安裝好lamp構架,如果不想用源代碼編譯安裝,就直接配置一個本地的yum源進行安裝,這樣就簡單多了。

2.安裝好nagiosGD庫,讓其可以正常運行。本實驗旨在能正常提供nagios的機上進行安裝ndoutils

3.准備好DBD-mysql-4.014.tar.gzDBI-1.609.tar.gz,可以在http://search.cpan.org

4.准備好nagios-plugins-1.4.14.tar.gz,可以到http://www.nagios.org上去下載

二、實驗環境:

主機

IP

描述

Node2.example.com

192.168.145.129

Nagios+ndoutils

Node3.example.com

192.168.145.130

Nagios+ndoutils+mysql

三、實驗目的:

兩台機分別用nagios采集信息通過ndoutils存入192.168.145.130mysql數據庫

四、實驗過程:

1.安裝DBI

[root@node2 /]# tar xvf DBI-1.609.tar.gz -C /usr/src

[root@node2 /]# cd /usr/src/DBI-1.609/

[root@node2 DBI-1.609]# perl Makefile.PL

[root@node2 DBI-1.609]#make && make install

2.安裝DBD-mysql

[root@node2 /]# tar xvf DBD-mysql-4.014.tar.gz -C /usr/src

[root@node2 src]# cd DBD-mysql-4.014/

[root@node2 DBD-mysql-4.014]# perl Makefile.PL --mysql_config=/usr/local/mysql/bin --with-mysql=/usr/local/mysql

[root@node2 DBD-mysql-4.014]# make && make install

3.Ndoutils安裝:

1)關聯mysql頭文件和庫

[root@node3 mysql]# ln -s /usr/local/mysql/include/* /usr/include/

[root@node3 mysql]# ln -s /usr/local/mysql/lib/* /usr/lib

2)安裝NDOUtils

[root@node3 /]#cd /usr/src/ndoutils-1.4b9/

[root@node3 src]# ./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/usr/local/mysql/lib/mysql --with-mysql-lib=/usr/local/mysql/lib/mysql --with-mysql=/usr/local/mysql

[root@node3 src]#make

3)在編譯沒有出錯後,復制相應的配置文件與相關的執行文件,他們的主要作用就是做相關的配置與讓nagios可以正確的調用。

[root@node3 src]# cd /usr/src/ndoutils-1.4b9/src/

[root@node3 src]# cp ndo2db-3x ndo2db-2x file2sock log2ndo /usr/local/nagios/bin/

[root@node3 config]# cp ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

[root@node3 config]# cp ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg

以上復制的文檔中前兩項是版本相關的,即假如您的nagios主版本號是2系列,則需要拷貝名為ndomod-2x.o和ndo2db-2x的兩個文檔。後兩項是通用文檔,隨便復制過去就OK了。

4)為NDOUtils創建數據庫

[root@node3 bin]# mysql5

mysql> create database ndodb;

Query OK, 1 row affected (0.00 sec)

mysql> grant all on ndodb.* to 'ndouser'@'localhost' identified by 'ndouser';

Query OK, 0 rows affected (0.00 sec)

mysql> grant all on ndodb.* to 'ndouser'@'%' identified by 'ndouser';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

下面兩條命令用來生成ndoutils所需要的數據庫表等,這些表默認以“nagios_”為前綴;install腳本命 令必須在db子目錄內執行:# cd db# ./installdb -u ndouser -p 123456 -h localhost -d ndodb其中各選項的意義如下:-u用來指定導入時所用的mysql用戶帳號-p表示前面mysql用戶的密碼-h表示mysql服務器地址,假如是 localhost,則能夠省略-d表示目標數據庫

以下關鍵的一句就是創建數據庫的表信息,-u為訪問數據庫的用戶名

5)建立數據庫表信息,注意一定要進行編譯軟件的目錄下的db目錄裡執行以下命令。

[root@node3 ndoutils-1.4b9]# cd db

[root@node3 db]# ./installdb -u ndouser -p ndouser -h localhost -d ndodb

以上信息:

-u 訪問ndodb數據庫的用戶名

-p 訪問ndodb數據庫的密碼

-h 寫入數據庫的地址,因為現在我操作的是node3.example.com,因此,是在本地建立數據庫localhost

-d 寫入的數據庫名稱

4.配置ndo2db.cfg文件:

[root@node3 etc]# vim /usr/local/nagios/etc/ndo2db.cfg

lock_file=/usr/local/nagios/var/ndo2db.lock

ndo2db_user=nagios

ndo2db_group=nagios

socket_type=tcp

socket_name=/usr/local/nagios/var/ndo.sock

tcp_port=5668

use_ssl=0

db_servertype=mysql

db_host=localhost

db_port=3306

db_name=ndodb

db_prefix=nagios_

db_user=ndouser

db_pass=ndouser

max_timedevents_age=1440

max_systemcommands_age=10080

max_servicechecks_age=10080

max_hostchecks_age=10080

max_eventhandlers_age=44640

max_externalcommands_age=44640

debug_level=0

debug_verbosity=1

debug_file=/usr/local/nagios/var/ndo2db.debug

max_debug_file_size=1000000

5.配置ndomod.cfg文件

[root@node3 etc]# vim /usr/local/nagios/etc/ndomod.cfg

instance_name=node3

output_type=tcpsocket

output=127.0.0.1

tcp_port=5668

use_ssl=0

output_buffer_items=5000

buffer_file=/usr/local/nagios/var/ndomod.tmp

file_rotation_interval=14400

file_rotation_timeout=60

reconnect_interval=15

reconnect_warning_interval=15

data_processing_options=-1

config_output_options=2

6.配置nagios的配置文件

[root@node3 etc]# vim /usr/local/nagios/etc/nagios.cfg

添加以下兩句,第二句如果沒有才加上去,默認是有的。

broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg 大概在251行。

event_broker_options=-1 大概在224行

7. 啟動ndo2db守護進程

[root@node3 etc]# /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

執行完以上這條命令,如果沒有報錯,就看看nagios.log的日志,如果出現以下提示:

nagios: ndomod: Could not open data sink! I'll keep trying, but some output may get lost...

解決方法就是:

查看/usr/local/nagios/etc/ndo2db.cfg文件裡的ndo2db_user=nagios ndo2db_group=nagios db_user=ndouser

db_pass=ndouser 這幾項是否正確配置了,ndo2db_user就是你運行nagios的用戶名;ndo2db_group是運行nagios的組,db_user表示的是你授權訪問ndodb數據庫的用戶名,db_pass訪問數據的密碼。

如果在加載守護進程出現:

Failed to obtain lock on file /usr/local/nagios/var/ndo2db.lock: Permission denied : Permission denied

解決方法是:確認你在/usr/local/nagios/etc/ndo2db.cfg裡ndo2db_user與ndo2db_group這兩項的填寫的用戶是否對目錄/usr/local/nagios/var/有寫入的權限。

8.啟動nagios

[root@node3 etc]# /etc/init.d/nagios start

以上全是在node3.example.com的電腦上做的操作,也就是我們將要將數據存入數據庫所在的那台機。下面進行分布式的另一台電腦node2.example.com上操作,可以理解為nagios的客戶端。

9.同樣是安裝DBI和DBD-mysql,由於前面已經安裝過,可以照著上面一台電腦上安裝就可以了。

10.關聯mysql頭文件和庫

[root@node2 mysql]# ln -s /usr/local/mysql/include/* /usr/include/

[root@node2 mysql]# ln -s /usr/local/mysql/lib/* /usr/lib

11.安裝NDOUtils

[root@node2 /]#cd /usr/src/ndoutils-1.4b9/

[root@node2 src]# ./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/usr/local/mysql/lib/mysql --with-mysql-lib=/usr/local/mysql/lib/mysql --with-mysql=/usr/local/mysql

[root@node2 src]#make

12.在編譯沒有出錯後,復制相應的配置文件與相關的執行文件,他們的主要作用就是做相關的配置與讓nagios可以正確的調用。

[root@node2 src]# cd /usr/src/ndoutils-1.4b9/src/

[root@node2 src]# cp ndo2db-3x ndo2db-2x file2sock log2ndo /usr/local/nagios/bin/

[root@node2 config]# cp ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

[root@node2 config]# cp ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg

以上復制的文檔中前兩項是版本相關的,即假如您的nagios主版本號是2系列,則需要拷貝名為ndomod-2x.o和ndo2db-2x的兩個文檔。後兩項是通用文檔,隨便復制過去就OK了。

13.配置node2.example.com上的ndo2db.cfg

[root@node2 etc]# vim /usr/local/nagios/etc/ndo2db.cfg

lock_file=/usr/local/nagios/var/ndo2db.lock

ndo2db_user=nagios

ndo2db_group=nagios

socket_type=tcp

socket_name=/usr/local/nagios/var/ndo.sock

tcp_port=5668

use_ssl=0

db_servertype=mysql

db_host=192.168.145.130

db_port=3306

db_name=ndodb

db_prefix=nagios_

db_user=ndouser

db_pass=ndouser

max_timedevents_age=1440

max_systemcommands_age=10080

max_servicechecks_age=10080

max_hostchecks_age=10080

max_eventhandlers_age=44640

max_externalcommands_age=44640

debug_level=0

debug_verbosity=1

debug_file=/usr/local/nagios/var/ndo2db.debug

max_debug_file_size=1000000

14.配置/usr/local/nagios/etc/ndomod.cfg文件

[root@node2 etc]# vim /usr/local/nagios/etc/ndomod.cfg

instance_name=node2

output_type=tcpsocket

output=127.0.0.1

tcp_port=5668

use_ssl=0

output_buffer_items=5000

buffer_file=/usr/local/nagios/var/ndomod.tmp

file_rotation_interval=14400

file_rotation_timeout=60

reconnect_interval=15

reconnect_warning_interval=15

data_processing_options=-1

config_output_options=2

15.編輯nagios配置文件

[root@node2 etc]# vim /usr/local/nagios/etc/nagios.cfg

broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg

event_broker_options=-1

16.啟動守護進程,重啟nagios。

[root@node2 etc]# /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

[root@node2 etc]#/etc/init.d/nagios restart

至此已經全部配置完成,下面確認我們已經安裝成功,回到node3.example.com的機上,進入mysql看看我們創建的數據表裡是否有兩台機的數據。

[root@node3 etc]# mysql5

mysql> use ndodb;

mysql> select host_id,instance_id,display_name,address from nagios_hosts;

+---------+-------------+----------------+-----------------+

| host_id | instance_id | display_name | address |

+---------+-------------+----------------+-----------------+

| 10 | 1 | winserver | 192.168.1.2 |

| 9 | 1 | windows-server | 192.168.145.1 |

| 8 | 1 | localhost | 127.0.0.1 |

| 7 | 1 | linux-server2 | 192.168.145.128 |

| 6 | 1 | linux-server1 | 192.168.145.130 |

| 11 | 2 | linux-server1 | 192.168.145.130 |

| 12 | 2 | linux-server2 | 192.168.145.128 |

| 13 | 2 | localhost | 127.0.0.1 |

| 14 | 2 | windows-server | 192.168.145.1 |

| 15 | 2 | winserver | 192.168.1.2 |

+---------+-------------+----------------+-----------------+

10 rows in set (0.00 sec)

從以上可以看到instance id列可以看到1和2,這說明我們兩台機的信息已經被寫到mysql數據庫中,大功告成。

五、實驗總結

通過以上的實驗,我在實驗過程中遇到很多問題,主要是安裝ndoutils的時候,郁悶得很,一會兒配置過了,編譯不,編譯過了,配置不過,其根本原因就是我們的頭文件關聯,只要用關聯頭文件那一步做了就很少出問題,另外在配置的過程中,一定要加mysql的選項,我上面都寫上了。

其次說明一點,我的系統是RedHat5.4,nagios是3.2版本,mysql是7.0.6的集群版,也可以用5.1的版本。其他的都寫上的相應版本。

以上在我的配置中OK,如果有什麼錯誤,請讀者指出,多謝!

Copyright © Linux教程網 All Rights Reserved