歡迎您光臨本站 註冊首頁

Nagios部署文檔

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0
一、Nagios簡介 What's the Nagios? Nagios是一款用於系統和網路監控的應用程序.它可以在你設定的條件下對主機和服務進行監控,在狀態變差和變好的時候給出告警信息. Nagios最初被設計為在Linux系統之上運行,然而它同樣可以在類Unix的系統之上運行. 官方網站:http://www.nagios.org 中文幫助文檔:http://nagios-cn.sourceforge.net/nagios-cn/index.html 二、伺服器端安裝 1、安裝環境需求; Apache PHP GCC compiler GD development libraries 需要root許可權,以上環境可以及編譯安裝,也可以yum安裝.具體可參考文章《構建LAMP環境》. 2、建立Nagios用戶和組 #useradd nagios #groupadd nagcmd #usermod -a -G nagcmd nagios #usermod -a -G nagcmd apache 3、軟體下載及安裝 因版本經常更新,在此只列出版本,請自行去Nagios官網下載最新穩定版本. nagios-3.3.1.tar.gz nagios-plugins-1.4.15.tar.gz nrpe-2.8.1.tar.gz 安裝Nagios 一般將所有源碼文件放置在/usr/local/src,下面所有源碼操作默認目錄為此目錄. #tar zxvf nagios-3.3.1.tar.gz #cd nagios #./configure --prefix=/usr/local/nagios --with-command-group=nagcmd #make all #make install #make install-init #make install-config #make install-commandmode 配置WEB介面 # 如果是yum安裝的apache,直接執行make install-webconf.如果是編譯安裝的apache,則將sample-config/httpd.conf拷貝到apache的配置文件目錄,或者參考該文件內容自行配置.本次配置方法為以下配置: #cp sample-config/httpd.conf /usr/local/apache/conf/extra/nagios.conf 並且編輯apache配置文件httpd.conf添加如下語句: Include conf/extra/nagios.conf 創建一個nagiosadmin的用戶用於Nagios的WEB介面登錄. #/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 以上配置完成後重啟apache是配置生效 #/usr/local/apache/bin/apachectl restart 去瀏覽器訪問http://$IP/nagios 測試WEB借口配置是否成功,如不能正常訪問,請檢查以上配置. 編譯並安裝Nagios插件 #tar zxvf nagios-plugins-1.4.15.tar.gz #cd nagios-plugins #./configure --with-nagios-user=nagios --with-nagios-group=nagios #make && make install 啟動Nagios 首先將Nagios加入到服務列表,以便在系統啟動時自動啟動 #chkconfig --add nagios #chkconfig nagios on 驗證nagios配置樣例文件 #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 如果沒有報錯,可以啟動Nagios服務 #service nagios start 此時,Nagios安裝基本完畢.登錄WEB借口測試安裝結果.如果出現“http 500”內部伺服器錯誤,請檢查SELinux是否關閉,以及相關apache配置. 三、Nagios配置 1、Nagios默認配置文件介紹 Nagios安裝完畢后,默認的配置文件在/usr/local/nagios/etc目錄下,每個文件或目錄含義如下所示: 文件名 用途 cgi.cfg 控制cgi訪問的配置文件 htpasswd.user 由htpasswd生成的訪問控制文件 nagios.cfg Nagios主配置文件 resource.cfg 變數配置文件,或者叫資源文件,通過在此文件中定義的變數,以便讓其他配置文件引用,如$USER1$ objects/ objects是一個目錄,在此目錄下有很多配置文件模板.用於定義Nagios對象 objects/commands.cfg 命令定義配置文件,裡面定義的命令可以被其他配置文件引用 objects/contacts.cfg 定義聯繫人和聯繫人組的配置文件 objects/localhost.cfg 定義監控本地主機的配置文件 objects/printer.cfg 定義監控印表機的一個配置文件模板,默認沒有啟用此文件 objects/switch.cfg 定義監控路由器的一個配置文件模板,默認沒有啟用此文件 objects/templates.cfg 定義主機、服務的一個模板配置文件,可以在其他配置文件中引用 objects/timeperiods.cfg 定義Nagios監控時間段的配置文件 objects/windows.cfg 監控Windows主機的一個配置文件,默認沒有啟用此文件 2、Nagios配置文件之間的關係 在nagios的配置過程中涉及到的幾個定義有:主機、主機組,服務、服務組,聯繫人、聯繫人組,監控時間,監控命令等,從這些定義可以看出,nagios各個配置文件之間是互為關聯,彼此引用的. 成功配置出一台nagios監控系統,要弄清楚每個配置文件之間依賴與被依賴的關係,最重要的有四點: 第一:定義監控哪些主機、主機組、服務和服務組 第二:定義這個監控要用什麼命令實現, 第三:定義監控的時間段, 第四:定義主機或服務出現問題時要通知的聯繫人和聯繫人組. 3、開始配置Nagios 為了維護方便,我們將Nagios各個定義對象創建獨立的配置文件,文件列表及說明如下: /internal-servers/host.cfg 定義主機和主機組 /internal-servers/services.cfg 定義服務 /objects/contacts.cfg 使用默認的聯繫人和聯繫人祖定義文件 /objects/commands.cfg 使用默認的命令定義文件 /objects/timeperiods.cfg 使用默認的時間段定義文件 /objects/templates.cfg 使用默認的資源引用文件 在配置之前,先理清一個思路.根據上文所列出的“Nagios配置文件之間的關係”可以有一個基本的思想, 首先,要確定我們要進行監控的主機、服務等; 其次,是怎麼去監控,用什麼命令去監控,這個就是在commands.cfg文件中定義了,當然默認的配置文件中基本的命令都有了; 再次,監控的服務或者主機需要在什麼時間去監控?7x24的監控?這個是在timeperiods.cfg文件中定義的; ,當被監控的服務或狀態發生變化的時候需要通知誰?這個可以再contacts.cfg文件中來指定. 有了以上思路,我們就可以開始配置了,本文檔以監控一台CentOS主機的常規狀態和Web服務為例; 1)templates.cfg文件詳情 以下主要列出 generic-contact、generic-host、linux-server、generic-service的參數情況,其他暫不做討論. define contact{ name generic-contact ; 定義聯繫人模板名稱 service_notification_period 24x7 ; 當服務出現異常時,發送通知的時間段,這個時間段“7x24"在timeperiods.cfg文件中定義 host_notification_period 24x7 ; 當主機出現異常時,發送通知的時間段,這個時間段“7x24"在timeperiods.cfg文件中定義 service_notification_options w,u,c,r,f,s ; 這個定義的是“通知可以被發出的情況”w即warn,表示警告狀態,u即unknown,表示不明狀態,c即criticle,表示緊急狀態,r即recover,表示恢復狀態 host_notification_options d,u,r,f,s ; 定義主機在什麼狀態下需要發送通知給使用者,d即down,表示宕機狀態,u即unreachable,表示不可到達狀態,r即recovery,表示重新恢復狀態. service_notification_commands notify-service-by-email ; 服務故障時,發送通知的方式,可以是郵件和簡訊,這裡發送的方式是郵件,其中“notify-service-by-email”在commands.cfg文件中定義 host_notification_commands notify-host-by-email ; 主機故障時,發送通知的方式,可以是郵件和簡訊,這裡發送的方式是郵件,其中“notify-host-by-email”在commands.cfg文件中定義 register 0 ; 不註冊,這裡是在定義一個模板 } define host{ name generic-host ; 主機模板名稱 notifications_enabled 1 ; 開啟通知 event_handler_enabled 1 ; 事件處理開啟 flap_detection_enabled 1 ; 擺動檢測開啟 failure_prediction_enabled 1 ; Failure prediction is enabled process_perf_data 1 ; 是否啟用進程性能數據記錄、Nagios的數據輸出功能 retain_status_information 1 ; 重啟時保留狀態信息 retain_nonstatus_information 1 ; Retain non-status information across program restarts notification_period 24x7 ; 異常時通知時間段 register 0 ; 不註冊 } define host{ name linux-server ; 主機模板名稱 use generic-host ; 引用templates.cfg文件中定義的generic-host check_period 24x7 ; 告訴nagios檢查主機的時間段 check_interval 5 ; 檢測主機時間間隔 retry_interval 1 ; 主機檢查重試間隔1分鐘 max_check_attempts 10 ; 主機異常到發送警報的時間,10個時間單位 check_command check-host-alive ; 默認的檢測linux主機命令 notification_period workhours ; 主機故障時,發送通知的時間範圍,其中“workhours”在timeperiods.cfg中進行了定義 notification_interval 120 ; 在主機出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間.單位是分鐘.如果你覺得,所有的事件只需要一次通知就夠了,可以把這裡的選項設為0 notification_options d,u,r ; 定義主機在什麼狀態下可以發送通知給使用者,d即down,表示宕機狀態,u即unreachable,表示不可到達狀態,r即recovery,表示重新恢復狀態. contact_groups admins ; 指定聯繫人組,這個“admins”在contacts.cfg文件中定義 register 0 ; 不註冊 } define service{ name generic-service ; 服務模板名稱 active_checks_enabled 1 ; 開啟主動服務檢查 passive_checks_enabled 1 ; 被動服務檢查 parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems) obsess_over_service 1 ; We should obsess over this service (if necessary) check_freshness 0 ; 默認服務狀態為未檢查 notifications_enabled 1 event_handler_enabled 1 flap_detection_enabled 1 failure_prediction_enabled 1 process_perf_data 1 retain_status_information 1 retain_nonstatus_information 1 is_volatile 0 ; The service is not volatile check_period 24x7 max_check_attempts 3 normal_check_interval 10 ; 硬態重新檢測的時間間隔,默認為3個時間單位 retry_check_interval 2 ; 每隔兩分鐘重新檢測服務直到可以確定為硬狀態 contact_groups admins notification_options w,u,c,r notification_interval 120 ; 在主機出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間 notification_period 24x7 ; 在主機出現異常后,Nagios通知聯繫人的時間段 register 0 } 其他幾個模板基本類似,在此不做過多解釋. 2)創建host.cfg文件 #192.168.1.100 #註釋 define host { use linux-server #use表示引用,也就是將主機linux-server的所有屬性引用到本host定義中來,在nagios配置中,很多情況下會用到引用. host_name server_name #定義主機名稱,可以根據被監控主機的情況進行命名 alias server_alias #主機別名 address 192.168.1.100 #主機IP地址 } define hostgroup { hostgroup_name MyServer #定義主機組名稱 alias My_Server #定義主機組別名 members server_name #成員列表 } 3)修改contacts.cfg文件 define contact{ contact_name nagiosadmin #Short name of user use generic-contact #引用templates.cfg文件中generic-contact對象定義 alias Nagios Admin #Full name of user email ****@139.com #報警需要通知的郵件地址,本例為使用139郵箱轉發郵件到手機的報警方式 } define contactgroup{ contactgroup_name admins #聯繫人組名稱 alias Nagios Administrators #別名 members nagiosadmin #成員 } 4)創建services.cfg文件 define service { use generic-service #引用templates.cfg文件中generic-service服務對象定義 hostgroup_name MyServer #指定對主機組MyServer進行該服務監控 service_description Disk Partition #服務名稱 check_command check_nrpe!check_disk #監控命令,這裡使用的是nrpe方式監控磁碟使用狀況,稍後討論nrpe的使用和配置 } 其他服務監控類似,不一一詳解了. 5)檢測配置並啟動Nagios Nagios可以檢查配置文件的正確性,使用以下命令; #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 如果有錯誤,我們可以通過錯誤提示很快定位錯誤配置位置進行修改; 沒有錯誤后,就可以啟動nagios了! #service nagios start 還有reload restart stop 操作. 6)Nagios發送郵件報警配置 Nagios發送報警有比較多的方式,如飛信、MSN、簡訊貓和139郵箱等.本文使用139郵箱方式,139郵箱的簡訊通知可以方便的實現手機通知. 配置主機hosts文件,在127.0.0.1后添加nagios-test.com;nagios-test.com可以自己定義 配置/etc/sysconfig/network文件,將hostname更改為nagios-test.com,可以自己定義,但是這兩處保持一致,然後重啟network服務使配置生效. 使用以下命令測試是否可以發送郵件; #printf “This is a test mail” | mail -s “My test mail” 15800000000@139.com 在這個過程中,如果沒有收到郵件,可以去查看/var/log/maillog,是否發送郵件,以及是否拒絕接收,決絕原因等. 如果以上方式可以發送郵件之後,Nagios默認配置及可以發送郵件報警.轉發到手機的配置請在139郵箱里進行設置. 四、客戶端安裝及配置 1)下載並安裝NRPE NRPE是Nagios的客戶端,NRPE的設計初衷是允許我們在遠程Linux/Unix上執行Nagios-plugins.這樣做的主要原因是為了讓Nagios監控遠程Linux/Unix主機就像監控“本地主機”資源.更詳盡的情況可參考:http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf 在Nagios官網可以下載到最新穩定版NRPE,本文檔使用的版本為nrpe-2.8.1.tar.gz. 添加nagios用戶 #useradd nagios 安裝nagios-plugins #tar zxvf nagios-plugins-1.4.15.tar.gz #cd nagios-pulgins-1.4.15 #./configure #make && make install 安裝NRPE #tar zxvf nrpe-2.8.1.tar.gz #cd nrpe-2.8.1 #./configure #make all #make install-plugin #make install-daemon #make install-daemon-config 以上沒有錯誤的話,NRPE就安裝完成了. 2)NRPE配置 NRPE只有一個配置文件 #/usr/local/nagios/etc/nrpe.cfg 一般配置文件只需要更改允許的IP就可以使用了.編輯nrpe.cfg; 修改allowed_hosts=127.0.0.1為我們的Nagios_Server_IP即可. 3)啟動NRPE #/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d 將這條命令添加到/etc/rc.local文件,在系統啟動時啟動. #echo ‘/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d’ >> /etc/rc.local 4)檢測NRPE啟動情況 #netstat -ap | grep nrpe 正常的話應該顯示 tcp 0 0 *:5666 *:* LISTEN 2561/nrpe 監聽埠5666,nrpe啟動正常.如果沒有以上結果,請檢查你的iptables配置. 5)檢查NRPE是否允許服務端訪問 在Nagios服務端執行 #/usr/local/nagios/libexec/check_nrpe -H nrpe_host_IP 如果返回NRPE的版本信息,證明nrpe客戶端安裝成功. 五、關於Nagios與NRPE的關係的一些經驗 Nagios在使用NRPE進行監控時,是Nagios服務端主動去被監控端檢測,服務端使用的是check_nrpe -H nrpe_host_ip -c command進行的請求,在被監控端,NRPE收到後會在nrpe配置文件nrpe.cfg中查找定義的command,如果找不到,會告訴服務端沒有定義該命令.找到該命令后,會按照nrpe.cfg定義的命令所指向的本地命令去檢測本機相關狀態,檢測完成後將檢測結果返回給Nagios服務端. 參考資料: http://nagios-cn.sourceforge.net/nagios-cn/index.html http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf http://www.nagios.org/documentation

本文出自 「放逐天涯」 博客,請務必保留此出處http://andy2018.blog.51cto.com/3690563/868159


[火星人 ] Nagios部署文檔已經有677次圍觀

http://coctec.com/docs/linux/show-post-45958.html