Red Hat上的Nagios-配置NDOUtils
本文講述的是Red Hat上的Nagios:
安裝Nagios 、Nagios的插件 、Nagios配置文件 、Nagios對象 、配置NDOUtils
五、NDOUtils的安裝與設定:
1、NDOUtils簡介
NDOUTILS ADDON主要用來將Nagios的配置信息和event產生的數據存入數據庫(目前的beta版支持mysql和pgsql,穩定版只支持mysql),以方便實現數據的快速檢索和處理,并且為其它通過web接口程序來管理這些數據提供了保障。
在一個大型應用中,可能存在多個獨立的或分布式布置的Nagios服務器,這種環境中的每個Nagios服務器通常被稱為一個Nagios實例。在多Nagios實例的環境中,既可以把所有實例的數據存入到一個數據庫,也可以將各實例的數據分別存儲。
在只有一個Nagios實例環境中,其實例名稱通常為“default”;而在多實例的環境中,則需要為此些Nagios實例各自命名。
NDO Utils主要由以下四個部分組成:
1)NDOMOD Event Broker Module(NDOMOD.O):用來輸出Nagios進程產生的數據(data和logic),其前提是Nagios在編譯時開啟了Event broker的功能。同時,NDOMOD模塊還可以導出Nagios配置有關的信息(包括Nagios監控進程運行時環境產生的動態數據)至文件、Unix域套接字或者TCP套接字。NDO2DB將通過前面的這三種方式獲得Nagios的有關數據。
2)NDO2DB:用來接收由NDOMOD和LOG2NDO組件輸出的信息并將之存儲在數據庫中。啟動時,NDO2DB進程將創建一個TCP套接字或Unix域套接字以監聽客戶端(輸出端)的連接請求。目前僅支持MySQL數據庫。
多個客戶端可以同時向一個NDO2DB守護進程輸出數據,此時的NDO2DB將為每一個連接進來的客戶端(Nagios實例)建立一個連接進程,以實現每個客戶端數據的獨立存儲、檢索和處理。
3)LOG2NDO:用來將Nagios的歷史日志通過NDO2DB進程輸出至數據庫。LOG2NDO與NDO2DB進程通信的方法依然是標準文件、Unix域套接字或者TCP套接字三種。
4)FILE2SOCK:從標準文件或標準輸入讀入數據,并將之輸出至Unix域套接字或TCP套接字。當NDOMOD或LOG2NDO將數據輸出至標準文件時,此工具則可用來將這些標準文件中數據讀出并發送給NDO2DB進程監聽的TCP套接字或Unix域套接字。
2、安裝NDOUtils
- # tar zxf ndoutils-1.4b8.tar.gz
- # cd ndoutils-1.4b8
- # ./configure --enable-mysql --with-mysql-lib=/usr/lib --with-mysql-inc=/usr/include --disable-pgsql
- # make
- # cp -v src/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo} /usr/local/nagios/bin
以上復制的文件中前兩項是版本相關的,即如果您的nagios主版本號是2系列,則需要拷貝名為ndomod-2x.o和ndo2db-2x的兩個文件。后兩項是通用文件,無論哪個版本都需要復制。
3、為NDOUtils創建數據庫
- # mysql -uroot -p
- mysql> create database ndodb;
- mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON ndodb.* TO ndouser@localhost IDENTIFIED BY '123456';
- mysql> flush privileges;
下面兩條命令用來生成ndoutils所需要的數據庫表等,這些表默認以“nagios_”為前綴;install腳本命令必須在db子目錄內執行:
- # cd db
- # ./installdb -u ndouser -p 123456 -h localhost -d ndodb
其中各選項的意義如下:
-u用來指定導入時所用的mysql用戶帳號
-p表示前面mysql用戶的密碼
-h表示mysql服務器地址,如果是localhost,則可以省略
-d表示目標數據庫
說明:如果與cacti整合的話,npc插件會在cacti的數據庫自動生成ndoutils所需要表,這些表均以“npc_”為前綴。后面講到整合的文章中會繼續對些做出說明。
4、復制、編輯配置文件
- # cd ..
- # cp -v config/{ndo2db.cfg,ndomod.cfg} /usr/local/nagios/etc
- # vi /usr/local/nagios/etc/nagios.cfg
在文件中添加:
- broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
此外,請確保您的/usr/local/nagios/etc/nagios.cfg中有如下行出現,否則,請自行添加:
event_broker_options=-1 //為Nagios開啟event broker
5、編輯ndo2db守護進程和ndomod的配置文件
- # vi /usr/local/nagios/etc/ndo2db.cfg
- socket_type=tcp
- db_servertype=mysql
- db_host=localhost
- db_port=3306
- db_prefix=nagios_
- db_user=ndouser
- db_pass=123456
說明:
i) 以上"db_"開頭的選項用來指定連接數據庫的屬性;
ii)其默認用來接收數據的方式為Unix域套接字,這里修改成了TCP套接字;同時,ndomod.cfg配置文件中指定的輸出方式也應該做相應的修改;
接下來我們去編輯ndomod的配置文件,為其指定數據的輸出方式和輸出目標主機:
- # vi /usr/local/nagios/etc/ndomod.cfg
- output_type=tcpsocket
- output=127.0.0.1
6、啟動ndo2db守護進程
- # /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
建議此時查看系統日志(/var/log/messages)中是否有錯誤出現。
如果此時Nagios進程已啟動,則需要停止并重新啟動nagios:
- # killall -SIGHUP nagios
- # rm -f /usr/local/nagios/var/nagios.lock
- # /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
說明:
i)此處停止Nagios必須通過向Nagios發送SIGHUP信號的方式進行;
ii)建議此時查看nagios日志文件中是否表明ndomod的模塊加載是否正常,以及其是否能正常連接到data sink;查看日志,可以使用如下命令實現:# tail -30 /usr/local/nagios/var/nagios.log
排錯信息:
i) 如果ndomod模塊沒能正常加載的話,建議重新檢查nagios的配置文件中是否添加了所需的broker module條目;
ii) 同時,如果ndomod沒有正常連接到data sin,建議查看ndo2db.cfg文件中關于mysql連接項目的指定是否正確;
iii)確認一下在編譯NDOUtils時是否指定了關于mysql庫文件位置的選項;
【編輯推薦】