Nagios監控詳細配置

 

============監控端安裝配置Nagios
1、Nagios簡介
Nagios是一款遵循GPLv2的開源網絡監控軟件,可用來監控指定的多種系統的主機、服務,並可在它們的工作狀態發生變化時通知管理員。它的特性包括:
1)監控網絡服務(HTTP、POP3、SMTP、PING、MySQL等)
2)監控主機資源(磁盤空間利用率、內存利用率、CPU負載等)
3)簡潔的插件設計接口,使得用戶可以輕鬆開發所需的檢測腳本
4)並行服務模式
5)輕鬆描述網絡結構,並且能夠區辨“宕機”和“主機不可達”
6)通過郵件或用戶自定義的方式將主機或服務的工作狀態變化情況通知給管理員
7)自動日誌滾動
8)支持以冗餘方式進行主機監控
9)可以通過web方式直觀的查看當前網絡狀態、通知和問題歷史、日誌文件等等,此組件爲可選
Nagios通常由一個主程序(Nagios)、一個插件程序(Nagios-plugins)和四個可選的ADDON(NRPE、NSCA、NSClient++和NDOUtils)組成。Nagios的監控工作都是通過插件實現的,因此,Nagios和Nagios-plugins是服務器端工作所必須的組件。而四個ADDON中,NRPE用來在監控的遠程Linux/Unix主機上執行腳本插件以實現對這些主機資源的監控;NSCA用來讓被監控的遠程Linux/Unix主機主動將監控信息發送給Nagios服務器(這在冗餘監控模式中特別要用到);NSClient++是用來監控Windows主機時安裝在Windows主機上的組件;而NDOUtils則用來將Nagios的配置信息和各event產生的數據存入數據庫,以實現這些數據的快速檢索和處理。這四個ADDON(附件)中,NRPE和NSClient++工作於客戶端,NDOUtils工作於服務器端,而NSCA則需要同時安裝在服務器端和客戶端。
下圖是筆者根據自己的理解給出的Nagios各組件的關係圖,希望能幫助讀者理解。如果您對此構圖中的關係持有異議,歡迎通過各種方式跟筆者交流。

 
目前,Nagios只能安裝在Linux系統主機上,其編譯需要用到gcc。同時,如果打算使用web界面的管理工具的話,還需要有apache服務器和GD圖形庫的支持。
2、安裝前的準備工作
(1)解決安裝Nagios的依賴關係:
Nagios基本組件的運行依賴於httpd、gcc和gd。可以通過以下命令來檢查nagios所依賴的rpm包是否已經完全安裝:
# yum -y install httpd gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-server
對於缺少的rpm包,您可以掛載光盤直接使用rpm命令進行安裝。如果不想總是被rpm的依賴關係所困擾,您可以通過yum結合本地源來實現rpm包的管理。對於本地源的建立,可以參考筆者的另外一篇關於yum的文章。

此外,要想完整的安裝關運行本文中所描述的環境,您得準備一個功能完備的LAMP運行環境。
說明:以上軟件包您也可以通過編譯源代碼的方式安裝,只是後面許多要用到的相關文件的路徑等需要按照您的源代碼安裝時的配置逐一修改。此外,您還得按需啓動必要的服務,如httpd,mysqld等。
(2)添加nagios運行所需要的用戶和組:
# groupadd nagcmd
# useradd -m nagios
# usermod -a -G nagcmd nagios
把apache加入到nagcmd組,以便於在通過web Interface操作nagios時能夠具有足夠的權限:
# usermod -a -G nagcmd apache
3、編譯安裝nagios:
# tar zxf nagios-3.1.2.tar.gz 
# cd nagios-3.1.2
# ./configure --prefix=/usr/local/nagios --with-command-group=nagcmd --enable-event-broker
# make all
# make install
# make install-init
# make install-config
# make install-commandmode
爲email指定您想用來接收nagios警告信息的郵件地址,默認是本機的nagios用戶:
# vi /usr/local/nagios/etc/objects/contacts.cfg 
email        nagios@localhost       #這個是默認設置
在httpd的配置文件目錄(conf.d)中生成創建Nagios的Web程序配置文件:
# cd nagios-3.1.2
# make install-webconf
創建一個登錄認證nagios web程序的用戶,這個用戶帳號在以後通過web登錄nagios認證時所用:
# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
提示輸入密碼:ipanel
#編輯httpd.conf配置文件,創建虛擬目錄。
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
#  SSLRequireSSL
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</Directory>
以上過程配置結束以後需要重新啓動httpd:
# service httpd restart
=========編譯、安裝nagios-plugins
nagios的所有監控工作都是通過插件完成的,因此,在啓動nagios之前還需要爲其安裝官方提供的插件。
# tar zxf nagios-plugins-1.4.13.tar.gz 
# cd nagios-plugins-1.4.13
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install
5、配置並啓動Nagios
(1)把nagios添加爲系統服務並將之加入到自動啓動服務隊列:
# chkconfig --add nagios
# chkconfig nagios on
(2)檢查其主配置文件的語法是否正確:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
(3)如果上面的語法檢查沒有問題,接下來就可以正式啓動nagios服務了:
# service nagios start
(4)配置selinux
如果您的系統開啓了selinux服務,則默認爲拒絕nagios web cgi程序的運行。您可以通過下面的命令來檢查您的系統是否開啓了selinux:
#getenforce
如果上面命令的結果顯示開啓了selinux服務,您可以通過下面的命令暫時性的將其關閉:
#setenforce 0
如果您想在以後完全關閉selinux,可以通過編輯/etc/sysconfig/selinux文件,將其中的selinux後面的值“force”修改爲“disable”即可。
當然,您也可以通過以下方式將nagios的CGI程序運行於SELinux/targeted模式而不用關閉selinux:
# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
# chcon -R -t httpd_sys_content_t /usr/local/nagios/share
(5)通過web界面查看nagios:
http://your_nagios_IP/nagios
登錄時需要指定前面設定的web認證帳號和密碼。
注意:爲了nagios系統的安全,建議您使用信息摘要強認證模式(如MD5),強制使用web的TSL/SSL安全通訊模式,並且通過訪問控制列表設定能訪問nagios的web界面的客戶端地址。
==========Nagios的插件簡介
Nagios本身並不包含任何監控機制,其所有的監控工作都是通過插件(plugin)來實現的。這些插件通常是通過命令行方式監控主機或服務工作狀態的Perl腳本或Shell腳本(通常於/usr/local/nagios/libexec目錄),由Nagios進行按需調用,並把執行結果返回給Nagios。Nagios正是根據這些返回值來判斷是否“採取某種行動”(如運行事件句柄(event handlers),發送通知等)。下圖展示了插件相對於Nagios進程和被監控對象間的關係。
官方提供了一些用來監控系統基本資源(如CPU負載、磁盤利用率、Ping速率等)的插件。如果需要監控其它形式資源(如CPU電壓、CPU風扇轉速、網絡流量等)的狀態,您可以利用官方提供的其它插件或第三方提供的插件,當然,您也可以自己編寫所需要的插件。
以下是常用來獲得插件的地址:
Nagios插件項目:http://nagiosplug.sourceforge.net/
Nagios下載頁面:http://www.nagios.org/download/
NagiosExchange.org:http://www.nagiosexchange.org/
官方提供的插件通常都會提供簡單的使用幫助,可以在每個腳本後使用“-h”或“--help”來獲得這些幫助信息。如要想了解插件腳本check_nt的幫助信息,可以使用如下命令:
# ./check_nt  --help
==========Nagios配置文件概覽
Main Config File:主配置文件,通常爲nagios.cfg,包含許多指示Nagios守護進程工作屬性的指令。此配置文件會被Nagios Daemon和CGIs使用。
Resource  File(s):資源文件,常用來存儲用戶自定義的“宏(macro)”,如可用來存儲“密碼”等敏感性的信息,使之可以避免直接暴露在CGIs源文件中。
Object Definition Files:對象定義文件,常用來定義要監控對象以及如何監控這些對象,如主機、服務、主機組、服務組、聯繫人、聯繫人組、命令等。這些對象定義文件可以通過cfg_file指令包含於主配置文件中;如果對象定義文件有很多,則可以將它們存放於某一目錄中,而後使用cfg_dir指令一次性地由主配置文件讀取。這些文件通常位於/usr/local/nagios/etc/objects目錄中。
CGI Configure File:CGI配置文件,包含許多決定CGIs工作屬性的指令,以及一個指向主配置文件的引用。

Nagios常見對象概覽

對象(Objects)是Nagios“監控”和“通知”機制的基本邏輯組件,其主要包括:
· Service
· Service Groups
· Hosts
· Host Groups
· Contacts
· Contact Groups
· Commands
· Time Periods
· Notification Escalations
Notification and Excution Dependenicies
主機和主機組:主機通常是網絡中的物理設備,至少有某個種類的訪問地址(主機名、IP地址或MAC地址);每個主機通常都提供一個到多個服務(service);主機彼此間可以形成父/子(parent/child)關係,用來描述主機間的“從屬”或“包含”關係(“網絡可達性”關係)。主機組通常指一到多個主機的組合。
服務和服務組(Service/Service groups):“服務”是Nagios監控邏輯的核心,通常從屬於某個主機,可以是主機的屬性(如CPU負載、磁盤空間、交換空間使用率等),也可以是由主機提供的某個“服務”(如POP3、HTTP、SSH等),甚至也可以是DNS資源記錄這樣的主機資源。服務組通常指一至多個服務定義的組合。
聯繫人和聯繫人組(Contacts/Contack Groups):“聯繫人”是指“通知(notification)”的接受對象。聯繫人通常有一個或多個“通知”方式(如移動電話、Email、即時通訊帳戶等),以接收其職責範圍內的主機或服務發來的通知。“聯繫人組”通常指一個或多個聯繫人的集合。
時段(Timeperiods):“時段”通常定義用來控制“主機和服務何時被監控”以及“聯繫人何時可以接收通知”的有效時間段。

命令(Commands):用來定義Nagios可以調用的程序、腳本等,還包括了這些程序或腳本的調用格式。
===========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/mysql --with-mysql-inc=/usr/include/mysql  --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 ALL PRIVILEGES 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
# chmod 644 /usr/local/nagios/etc/ndo*

注:以上config目錄中的ndo2db.cfg和ndomod.cfg在ndoutils-1.49b中是以ndo2db.cfg-sample和ndomod.cfg-sample命名的,如果您使用的是這個版本的ndoutils,請在複製時做出相應的修改;
# 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_name=ndodb
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庫文件位置的選項;
========安裝nrpe 插件
#對遠程一臺linux主機進行監控
#監控服務器上安裝設置
cd /opt
wget [url]http://www.mirrors.wiretapped.net/security/network-monitoring/nagios/nrpe-2.8.1.tar.gz[/url]
#監控主機上安裝方法
tar -zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure  #默認自動添加了openssl 
#因爲傳送過程要加密,如果後面make報錯,configure加如下參數
./configure --enable-ssl --with-ssl-lib=/lib/(當然前提要有openssl)
make all
make install 
make install-plugin    ---監控機需要安裝check_nrpe這個插件,被監控機並不需要
########################################################################被監控主機上安裝方法
cd /opt
useradd nagios -d /usr/local/nagios
chown nagios.nagios /usr/local/nagios/
tar -zxvf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure --enable-perl-modules --with-ping-command=ping
make
make install
cd /opt
tar -zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure
make all
make install
make install-plugin
make install-daemon
make install-daemon-config

vi /usr/local/nagios/etc/nrpe.conf
allowed_hosts=192.168.8.150
#爲了監控swap在nrpe.cfg中添加
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda1
#sdb1可根椐實際情況更改,我這裏的硬盤類型是scsi
vi /etc/services 
#增加nrpe
nrpe            5666/tcp                        # nrpe
#啓動nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
netstat -at|grep nrpe
netstat -an|grep 5666
########################################################################再對監控服務器進行設置
#添加nrpe的定義
vi /usr/local/nagios/etc/objects/commands.cfg 
# 'check_nrpe ' command definition
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
vi /usr/local/nagios/etc/cgi.cfg
把use_authentication=1修改爲use_authentication=0如果出現頁面無法顯示之類的
authorized_for_system_commands=nagiosadmin,kerry    --kerry爲http訪問授權用戶
authorized_for_all_services=nagiosadmin,kerry
authorized_for_all_hosts=nagiosadmin,kerry
authorized_for_all_service_commands=nagiosadmin,kerry
authorized_for_all_host_commands=nagiosadmin,kerry
#測試NRPE是否則正常工作
/usr/local/nagios/libexec/check_nrpe -H localhost
killall nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d"  >> /etc/rc.local
echo "/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg" >>/etc/rc.local
#問題:notifications for this service have been disabled
#解決辦法:enable notifications for this service
#問題:Status Map頁面無法顯示
#解決方法:ln -s /usr/local/lib/libgd.so.2 /usr/lib/libgd.so.2
vi /usr/local/nagios/etc/nagios.cfg
#添加
cfg_file=/usr/local/nagios/etc/objects/emos-mailserver.cfg
#emos-mailserver.cfg這個文件名可以自定義
#對剛定義的emos-mailserver.cfg文件進行配置
vi /usr/local/nagios/etc/objects/emos-mailserver.cfg
define host{
           use          linux-server
          host_name     emos-mailserver
          alias         emos-mailserver
          address       192.168.8.151
        }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     HTTP
        check_command     check_http
       }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     SSH
        check_command   check_ssh
       }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     SMTP
        check_command   check_smtp
       }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     POP3
        check_command   check_pop
       }
#define service{
#        use             generic-service
#        host_name       emos-mailserver
#        service_description     mysql
#        check_command   check_mysql
#       }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     check-swap
        check_command           check_nrpe!check_swap
        }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     check-load
        check_command           check_nrpe!check_load
        }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     check-disk
        check_command           check_nrpe!check_sda1
 }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     zombie_procs
        check_command           check_nrpe!check_zombie_procs
        }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     check-users
        check_command           check_nrpe!check_users
        }
define service{
        use             generic-service
        host_name       emos-mailserver
        service_description     total_procs
        check_command           check_nrpe!check_total_procs
#配置完後,重啓nagios
killall nagios
service nagios start
pstree |grep nagios
 

 
=========安裝  pnp==============
cd /opt
tar zxvf pnp-0.4.12.tar.gz 
cd pnp-0.4.12
./configure --with-nagios-user=nagios \ 
--with-nagios-group-nagios \ 
--with-rrdtool=/usr/local/rrdtool/bin/rrdtool \ 
--with-perfdata-dir=/usr/local/nagios/share/perfdata 
make 
make all 
make install 
make install-config 
make install-init
#錯誤提示:RRDs Perl Modules:                *** NOT FOUND ***
#解決方法:ln -sv /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/auto/RRDs/RRDs.so /usr/lib/perl5/5.8.8/i386-linux-thread-multi/
#要產生圖形數據還需在commands.cfg中重定義命令: 
define command{ 
command_name process-service-perfdata 
command_line /usr/local/nagios/libexec/process_perfdata.pl 
#產生圖形數據還要設定nagios.cfg文件: 
process_performance_data=1 
service_perfdata_command=process-service-perfdata 
 
 
=========監控遠程windows主機=====
#監控windows服務器
wget [url]http://nchc.dl.sourceforge.net/sourceforge/nscplus/NSClient++-Win32-0.3.5.zip[/url]
解壓nsclient++0.3.3.zip到c盤根目錄
解壓爲C:\NSClient++
 
#在nagios監控服務器上
vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg 去掉這句話的註釋
 
#到win服務器上,打開命令窗口,cd到剛纔解壓的目錄
#在命令行界面執行 nsclient++ /install
#然後 nsclient++  SysTray 如果出錯不用管!
#此時在“服務”裏面已經有了nsclient的服務
雙擊打開,點"登錄"標籤,在"允許服務與桌面交互"前打勾
#編輯NES.ini,在 [modules] 選項裏,去掉所有的註釋符號; 除了 
CheckWMI.dll和RemoteConfiguration.dll
#the [Settings] 選項裏
修改allowd_host=192.168.8.150(nagios服務器的ip) 
#[NSClient] 裏面,去掉port=12489的註釋!他靠端口12489偵聽,所以防火牆要打開這個端口!
[NSClient]有allowed_hosts的同 樣設置,不要設置錯了),最後不要忘記去掉前面的註釋符(;) 
在[Settings]部分設置'password'選項來設置密碼,作用是在nagios連接過來時要求提供密碼.這一步是可選的,我這裏方便起見跳過它,不要密碼.
#然後啓動nsclient
nsclient++ /start
#接下來我們開始配置nagios服務器裏面的內容
vi /usr/local/nagios/etc/objects/windows.cfg
#修改hostname和address,很重要!!
#定義要被監控的windows主機名與主機的IP地址
define host{
use             windows-server  
host_name       XXXX(自定義)
 
alias           My Windows Server
address         192.168.2.100     --windows服務器的IP地址 
}

#定義一個主機名組(可以不用管它默認)
define hostgroup{
hostgroup_name  windows-servers
alias           Windows Servers
}

#檢查windows主機是否已經安裝了NSClient++,及它的版本號
define service{
use                     generic-service
host_name               XXXX(自定義)

service_description     NSClient++ Version
check_command           check_nt!CLIENTVERSION
}

#監控 windows 主機的開機運作時間
define service{
use                     generic-service
host_name               XXXX(自定義)

service_description     Uptime
check_command           check_nt!UPTIME
}

#監控 windows 主機的 CPU 負載
define service{
use                     generic-service
host_name               XXXX(自定義)

service_description     CPU Load
check_command           check_nt!CPULOAD!-l 5,80,90    #CPU如果到達80%則報警,到達90%則警笛
}

#監控 windows 主機的內存使用狀況 
define service{
use                     generic-service
host_name               XXXX(自定義)
service_description     Memory Usage
check_command           check_nt!MEMUSE!-w 80 -c 90  #內存使用到達80%則warn,到達90%則Critical
}

#監控 windows 主機的 C:\ 的空間使用量 
define service{
use                     generic-service
host_name               XXXX(自定義)

service_description     C:\ Drive Space
check_command           check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}

#監控 windows主機的W3SVC設置的動作狀況
define service{
use                     generic-service
host_name               XXXX(自定義)

service_description     W3SVC
check_command           check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}

#監控 windows 主機的 Explorer.exe 執行程序的運作狀況,如程序終止了,則會發 CRITICA
define service{
use                     generic-service
host_name               XXXX(自定義)

service_description     Explorer
check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}

#監控 windows 主機的 MSSQLSERVER 服務的運作狀況,如服務終止了,則會發 CRITICAL 
define service{
use                     generic-service
host_name               XXXX(自定義)

service_description     MSSQL
check_command           check_nt!SERVICESTATE!-d SHOWALL -l MSSQLSERVER 
}

說明:如果有多臺的windows xp客戶端要監控,那麼就以上述這樣寫多個就可以了 
3、檢查nagios.cfg文件有沒有錯誤
#nagios -c  nagios.cfg
4、重新啓動一下nagios服務
#/etc/init.d/nagios restart
5、訪問頁面進行查看
   
如果啓動報錯:Starting nagios:CONFIG ERROR! Start aborted. Check your Nagios configuration
解決方法:
追蹤/etc/init.d/nagios啓動腳本內容
根據nagios啓動時的報錯信息“CONFIG ERROR!  Start aborted.  Check your Nagios configuration.”,說明在nagios執行過程中,/usr/bin/nagios -v /etc/nagios/nagios.cfg是錯誤的,去掉> /dev/null 2>&1,重新啓動nagios     詳細詳細見博客http://2358205.blog.51cto.com/2348205/811566 
=======安裝  sendEmail ============
#使用sendEmail發送報警郵件
cd /opt
wget [url]http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.55.tar.gz[/url]
tar -zxvf sendEmail-v1.55.tar.gz
cd sendEmail-v1.55
cp sendEmail /usr/local/bin
chmod +x /usr/local/bin/sendEmail
#sendEmail使用方法
/usr/local/bin/sendEmail –f [email protected] –t [email protected] –s mail.3aaa.com –u “from nagios” –xu[email protected] –xp 11111 –m happy
#解釋:-f 表示發送者的郵箱
     -t 表示接收者的郵箱
     -s 表示SMTP服務器的域名或者ip
     -u 表示郵件的主題
     -xu 表示SMTP驗證的用戶名
     -xp 表示SMTP驗證的密碼(注意,這個密碼貌似有限制,例如我用d!5neyland就不能被正確識別)
     -m 表示郵件的內容如果你不帶-m參數的話,就會提示你自行輸入
#編輯配置文件,nagios使用sendEmail來發警告郵件
vi /usr/local/nagios/etc/objects/commands.cfg
# 'notify-host-by-email' command definition
define command{
 command_name notify-host-by-email
 command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/bin/sendEmail –f [email protected] –t $CONTACTEMAIL$ –s mail.3aaa.com –u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" –xu[email protected] –xp 11111
 }
# 'notify-service-by-email' command definition
define command{
 command_name notify-service-by-email
 command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail –f [email protected] –t $CONTACTEMAIL$ –s mail.3aaa.com –u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" –xu[email protected] –xp 111111
 }
#注:在使用sendEmail的過程中無法發送報警郵件,不知是什麼原因,只好改用系統自帶的sendmail發郵件!!
============Nagios監控linux服務器
平臺及所用組件,
    監控服務器:RHEL5(192.168.0.20)+nagios-3.0.5+ nagios-plugins-1.4.11+ nrpe_2.8.1
    被監控端RHEL5 (192.168.0.21)+ nagios-plugins-1.4.11+ nrpe_2.8.1
內容簡介
    本文檔介紹nagios監控linux服務器, 因爲監控都是依靠插件去完成的,而監控linux主要使用NRPE插件,本文首先簡單介紹一下NRPE監控基礎,及監控過程,然後一步步的配置一個實例實現監控linux服務器
1.NRPE監控插件基礎
NRPE總共由兩部分組成:
    check_nrpe插件,運行在監控主機上。
    NRPE daemon,運行在遠程的linux主機上(通常就是被監控機)
整個的監控過程:(如下圖)
    當Nagios需要監控某個遠程linux主機的服務或者資源情況時:
    1).nagios運行check_nrpe插件,我們要在nagios配置文件中告訴它要檢查什麼.
    2).check_nrpe插件會通過SSL連接到遠程的NRPE daemon.
    3).NRPE daemon會運行相應的nagios插件來執行檢查本地資源或服務.
    4).NRPE daemon將檢查的結果返回給check_nrpe插件,插件將其遞交給nagios做處理.
注意:NRPE daemon需要nagios插件安裝在遠程被監控linux主機上,否則,daemon不能做任何的監控. 別外因爲它們間的通信是加密的SSL,所以在編譯安裝時都要加上選項, ./configure --enable-ssl --with-ssl-lib=/lib/,否則也會出錯. 
2.配置監控端
1.安裝nagiosrpm -qa |grep gd
rpm -ql gd-devel-2.0.28-5.4E.el4_6.1
cd nagios-3.0.5
./configure --prefix=/usr/local/nagios --with-command-group=nagcmd --with-gd-lib=/usr/lib --with-gd-inc=/usr/include
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf        #可以自動配置httpd.conf
2.安裝nagios-pluginscd nagios-plugins-1.4.11
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround
make
make install
3.安裝NRPEcd nagios-nrpe_2.8.1
./configure   #默認自動添加了openssl
#因爲傳送過程要加密,如果後面make報錯,加如下參數
rpm -qa| grep ssl 
openssl-devel-0.9.7a-43.17.el4_6.1
rpm -ql openssl-devel-0.9.7a-43.17.el4_6.1 | more
./configure --enable-ssl --with-ssl-lib=/lib/(當然前提要有openssl)
make all
make install-plugin
4.commands.cfg定義外部構件nrpevi /usr/local/nagios/etc/objects/commands.cfg
#添加
#check nrpe
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
5.配置要監控的linux主機vi /usr/local/nagios/etc/nagios.cfg
#中間添加
cfg_file=/usr/local/nagios/etc/objects/mylinux.cfg
6.新建mylinux.cfg 設置監控內容vi /usr/local/nagios/etc/objects/mylinux.cfg
define host{
           use             linux-server
          host_name     mylinux
          alias            mylinux
          address        192.168.0.21(客戶端IP既被監控的IP)
        }
define service{
        use                      generic-service
        host_name             mylinux
        service_description     check-swap
        check_command        check_nrpe!check_swap
               }
define service{
        use                      generic-service
        host_name             mylinux
        service_description     check-load
       check_command         check_nrpe!check_load
               }
define service{
        use                      generic-service
        host_name             mylinux
       service_description     check-disk
       check_command        check_nrpe!check_had1
       }
define service{
        use                      generic-service
        host_name             mylinux
       service_description     check-users
       check_command        check_nrpe!check_users
               }
define service{
        use                    generic-service
        host_name           mylinux
        service_description  otal_procs
        check_command     check_nrpe!check_total_procs
}
6.其它設置chkconfig --add nagios    #配置機器啓動時自動啓動Nagios
chkconfig nagios on
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg #檢查Nagios配置文件
vi /etc/selinux/config      #關閉SELinux
SELINUX=disabled
service iptables stop  #關閉SELinux,或打開80,5666端口
service nagios start
3.配置被監控端
1.安裝nagios-pluginuseradd nagios
passwd nagios
tar -zxvf nagios-plugins-1.4.12.tar.gz
cd nagios-plugins-1.4.12
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround
Make
make install
2.改變主目錄權限chown –R  nagios.nagios /usr/local/nagios
[root@client nagios]# ll
drwxr-xr-x  2 nagios nagios 4096 Jun  1 00:07 libexec
drwxr-xr-x  3 nagios nagios 4096 Jun  1 00:07 share
3.安裝客戶端的nrpetar -zxvf nagios-nrpe_2.8.1.orig.tar.gz
cd nagios-nrpe_2.8.1
./configure  (會自動加載SSL)
#如果後面make報錯,加如下參數
./configure --enable-ssl --with-ssl-lib=/usr/lib/(當然前提要有openssl)
make all
make install-plugin
make install-daemon
make install-daemon-config
4.配置nrpe信息vi /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=192.168.0.20,127.0.0.1,192.168.0.99
5.啓動nrpe/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
#或
vi /etc/rc.d/rc.local
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
6.驗證nrpenetstat -an | grep 5666
tcp      0    0 0.0.0.0:5666             0.0.0.0:*         LISTEN 
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.8.1
#服務端測試
/usr/local/nagios/libexec/check_nrpe -H l92.168.0.21
NRPE v2.8.1
#常見錯誤
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
CHECK_NRPE: Error - Could not complete SSL handshake.
配置allowed_hosts=192.168.0.20,127.0.0.1,192.168.0.99,然後kill進程再重啓就OK了
2./usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
Connection refused by host
Nrpe進程沒有啓動
7.配置監控對像(關鍵)
    由監控原理可知被監控端做監控然後傳給監控服務器繪總,設置監控詳細參數主要是設置被監控端的nrpe.cfg文件
    可以看到裏面監控對象vi /usr/local/nagios/etc/nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
    這一步是關鍵,如果nagios服務器想要監控客戶機swap分區,但客戶機nrpe.cfg文件沒有swap監控對像,這時監控服務器就是報錯(NRPE command ‘check_swap’no defined).如下圖:其實平時自己寫腳本,也是主要配這個地方
    到此,就可以監控linux客戶機的Disk,swap,users,memory了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章