標籤:serve 設定警示 inux memory window iges 發送 安全配置 ase
Nagios是一款開源的免費網路監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換器,路由器等網路裝置,印表機等。
在系統或服務狀態異常時發出郵件或簡訊警示第一時間通知網站營運人員,在狀態恢複後發出正常的郵件或簡訊通知。
網路監視工具 NAGIOS
定義
Nagios是一個監視系統運行狀態和網路資訊的監視系統。
Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。
Nagios可運行在Linux/Unix平台之上,
同時提供一個可選的基於瀏覽器的WEB介面以方便系統管理人員查看網路狀態,各種系統問題,以及日誌等。
功能介紹
Nagios 可以監控的功能有:
1、監控網路服務(SMTP、POP3、HTTP、NNTP、PING等);
2、監控主機資源(處理器負荷、磁碟利用率等);
3、簡單地外掛程式設計使得使用者可以方便地擴充自己服務的檢測方法;
4、並行服務檢查機制;
5、具備定義網路分層結構的能力,
用"parent"主機定義來表達網路主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;
6、當服務或主機問題產生與解決時將警示發送給連絡人(通過EMail、簡訊、使用者定義方式);
7、可以定義一些處理常式,使之能夠在服務或者主機發生故障時起到預防作用;
8、自動的日誌滾動功能;
9、可以支援並實現對主機的冗餘監控;
10、可選的WEB介面用於查看當前的網路狀態、通知和故障曆史、記錄檔等;
11、可以通過手機查看系統監控資訊;
12、可指定自訂的事件處理控制器;
系統需求
Nagios所需要的運行條件是機器必須可以運行Linux(或是Unix變種)並且有C語言編譯器。
你必須正確地配置TCP/IP協議棧以使大多數的服務檢測可以通過網路得以進行。
你需要但並非必須正確地配置Nagios裡的CGIs程式,而一旦你要使用CGI程式時,
你必須要安裝以下這些軟體...一個WEB服務(最好是Apache)
系統安裝
1.安裝基礎支援套件和添加使用者
nagios需要一些基礎支援套件才能運行,如apache,gcc,glibc,gd庫等。
添加一個名為nagios的使用者用以專門跑nagios
設定密碼
添加nagcmd使用者組,用以通過web頁面提交外部控制命令
將nagios使用者加入nagcmd組
將apache使用者加入nagcmd組
2.安裝nagios
這時nagios基本已經安裝完成,預設安裝後的設定檔用於啟動nagios是沒有問題的。
修改nagiosadmin這行其中的郵件地址為你的email地址,以將警示郵件發到你的郵箱
安裝nagios的web介面
設定登陸web介面時HTTP驗證的帳號密碼
3. 安裝nagios-plugins
nagios-plugins是nagios官方提供的一套外掛程式程式,
nagios監控主機的功能其實都是通過執行插NAGIOS件程式來實現的。
4.安裝nagios-snmp-plugins
nagios-snmp-plugins是一套用Perl編寫的通過SNMP方式監控主機的外掛程式程式。
配置這些外掛程式的使用時需要配置cpan,CPAN是Comprehensive Perl Archive Network的縮寫.。
它是一個巨大的Perl軟體收藏庫,收集了大量有用的Perl模組(modules)及其相關的檔案。
這裡主要是使用Perl-Net-SNMP模組。有兩種方式安裝:
A)通過CPAN來安裝
B) 手工安裝
首先去官方網站下載以下幾個模組
Crypt::DES
Digest::MD5
Digest::SHA1
Digest::HMAC
Net::SNMP
下載後對於每個模組依次按照下面的方式安裝
表示模組名,具體請按上面提到的模組替換
注意:Net::SNMP模組必須在最後安裝。至此Net::SNMP手動安裝完畢
執行nagios-snmp-plugins安裝指令碼,執行之後會將外掛程式命令安裝到/usr/local/nagios/libexec下
5.其他設定
至此nagios基本已經安裝完畢,但這時還不能馬上啟動nagios,需要以下設定。
將nagios添加到服務中
設定服務為自啟動
檢測nagios的配置是否正確,在後面配置nagios過程中我們為了檢測配置的是否正確需要不斷執行該命令來檢查設定檔。
#service nagios start 啟動nagios
需要注意的是,Centos預設開啟了selinux並且運行於強制安全模式,
這將導致在開啟nagios的web介面時會出現Internet Server Error的錯誤。
查看是否運行於強制模式,
結果為1表示是更改selinux運行於寬容模式
但是這個設定重啟後就會失效,
如需要重啟後保持該設定需要修改/etc/sysconfig/selinux,
將其中的SELINUX= enforcing更改為SELINUX= permissive並重啟系統。
當然你也可以改成disable禁用selinux。
也可以不更改selinux的運行模式,解決辦法為:
6.實現MSN警示
要實現MSN警示需要使用phpmsnclass,這是一個用php實現的msn機器人程式。
下載phpmsnclass,此檔案為7zip壓縮格式,
需要安裝7zphpmsnclass需要php支援,安裝php,
這裡為了方便就直接完成LAMP環境的安裝
安裝mysql資料庫,後面安裝cacti需要
由於安全原因請將mysql設定為只監聽在127.0.0.1上,
並刪除mysql庫中預設的除了外的所有使用者,相關設定請見以前的關於postfix安裝中的設定。
安裝php相關模組
msn警示有2種方式,一種是直接使用php進行登陸驗證發送訊息,另外一個是以msn機器人的形式發送,將訊息儲存在目錄內。
這裡採用第二種。
下面把msnbot.php, config.php和msn.class.php拷貝到/var/spool/msnbot/
這個機器人的工作原理是如果要發送訊息,
就調用php產生訊息檔案到 /var/spool/msnbot/spool目錄中,
發送程式檢查到該目錄有新檔案就會類比msn登陸和發信將資訊發送出去。
在設定檔中設定MSN的帳號和密碼(以後警示通過這個MSN發出)
加上執行許可權
在啟動函數裡執行的php檔案前要加上php (php後有空格)
啟動MSN機器人
下面發個訊息測試一下
如果成功接收到資訊說明配置正確,此步驟到此結束,後面的能讓Nagios使用MSN進行警示的功能需要到Nagios裡設定了。
如果需要支援離線訊息即當你在離線狀態下也能接收到機器人的資訊,需要使用MSNP15協議,修改相關發信的php檔案將聲明新類的地方new MSN的第一個參數改為MSNP15
系統配置
nagios目錄結構比較清晰,安裝後下面一共有bin etc libexec sbin share var幾個目錄,其中設定檔都存放在etc目錄下,bin下存放的是nagios的相關命令,
sbin下存放的是通過web方式外部執行的cgi,libexec存放的是所有外掛程式,
而var則存放的是log和pid檔案等。而實現監控都是依靠執行外掛程式來實現的。
要實現監控,需要在nagios中定義一個service,在這個service中指定監控對象和監控命令以及警示機制等。Nagios的配置關係可以按照來做說明:
nagios的配置也比較清晰明了,etc目錄下預設有objects目錄和一些設定檔,其中objects裡放的是主設定檔nagios.cfg包含進去的設定檔。
在nagios.cfg中既可以指定單獨包含一個cfg,也可以指定一個包含目錄,即該目錄下所有的cfg檔案都會包含進來。
首先我們配置下主設定檔,為了目錄的清晰我們自己建立一些目錄來存放相關的設定檔,
比如建立commands目錄存放命令,建立services目錄存放服務,建立hosts目錄存放主機,在nagios.cfg檔案中找到cfg_file的部分,下面是一個樣本,實際部署的時候可以按照你自己的情況去設定:
NAGIOS cfg_file=/usr/local/nagios/etc/objects/commands.cfg 包含設定檔,
下同
這裡先說明一下,監控都是依靠外掛程式去完成的,
舉個例子說明,如我們要監控60.222.111.83這台伺服器的虛擬記憶體,當達到70%的時候狀態為警告,達到90%的時候為嚴重。這個依靠這個外掛程式來完成。
-
其中-H參數表示主機地址,-C參數表示SNMP團體名稱,-2表示使用SNMP v2協議,-w為warning(警告)狀態的閾值,-c表示為critical(嚴重)狀態的閾值
要用nagios實現監控某主機,就是要實現用nagios調用這樣的命令即可。
配置resource.cfg,檔案內容:
[[email protected] etc]# cat resource.cfg |grep -v ‘#‘| sed /^$/d //查看resource.cfg配置
$USER1$=/usr/local/nagios/libexec
$USER7$=-C mypublic -2
這裡其實是定義兩個變數$USER1$和$USER7$,因為在後面定義command的時候外掛程式的路徑是絕對路徑,
為了節省輸入直接可以用$USER1$代替/usr/local/nagios/libexec。
而SNMP外掛程式的命令列中的參數需要設定SNMP相關的資訊,
為節省輸入這裡用$USER7$來代替-C mypublic -2。
大家可對照上面檢測60.222.111.83的虛擬記憶體的例子結合來加以理解。
下面我們來定義一個command用以監控,仍然以在nagios中實現監控60.222.111.83這台主機的虛擬記憶體為例說明。
為了目錄結構的清晰,我們將command的定義都放到commands目錄下。
在commands下建立一個cfg尾碼的檔案
其中的$USER1$和$USER7$即為我們在上面的resource.cfg中定義的兩個變數,
$HOSTADDRESS$為我們在下面要定義的主機。
這樣我們完成對一個service的定義,定義監控對象我們這裡是定義了3個組,
即屬於這3個組的所有主機都會檢測虛擬記憶體(注意:組必須在其他檔案中事先定義好)。
當然你也可以用host_name針對主機作為檢測對象(多主機用逗號分隔)。
監控周期和警示周期我們設定的都是24x7,這個會在後面去定義。
定義警示狀態中的w表示warning,u表示unknown,c表示critial,r表示recovery(即恢複後是否發送通知);
警示選項一般生產環境下設定w,c,r即可。
最後我們看到實現監控的主體部分
check_command check_snmp_storage!-m "^Virtual Memory$"!70!90
定義實現這個檢測的命令,check_snmp_storage即為我們上面在commands裡定義的命令名,
!表示帶入的參數,這裡有三個!表示帶入三個參數到command裡,每個參數之間用!分隔,這裡表示第一個參數為-m “^Virtual Memory$”,第二個參數為70,第三個參數為90。
這裡的$ARG1$即表示參數1,$ARG2即表示參數2,$ARG3$即表示參數3
而$HOSTADDRESS$是我們定義的檢測對象,它的值就是我們的主機IP地址;$USER1$和$USER7$為在resource.cfg裡的定義。
而這個命令就是我們實現監控83的虛擬記憶體的命令!
設定3個參數是為了靈活的針對不同主機的調用,如果你對不同的主機設定的閾值不同,只需要對不同的主機定義不同的service即可,command是可以通用的!
而這裡的參數1也是為了實現不同的功能而設定的,這個指令碼還可以檢測實體記憶體,
如果我們把參數1的值設定為”^Phisical Memory$”就可以針對實體記憶體進行檢測!
定義command的時候參數的個數的設定是你可以根據需要設定的。
只需要在後面service中能將參數值代到command中最終能實現你要檢測的命令即可。
到此為止你可以感受到nagios的靈活性了吧。
到這裡我們基本實現了nagios的監控功能,下面我們繼續來看看其他設定。
在定義host的時候我們有個主機模板的設定,這個設定的定義在object/template.cfg中定義的,這是一個系統內建的設定檔,關於我們所使用的Windows-Server的模板定義內容為:
上面我在該設定檔中增加了notify-service-by-msn和notify-service-by-msn的兩種警示命令
而關於警示的周期設定在objects下的timeperiods.cfg中,如我們上面在service裡定義的7x24的警示周期設定內容為
通過這裡我們可以靈活設定警示時間以和警示方式結合,如周末和休息時間設定警示為傳送簡訊和郵件,工作時間設定為發送郵件和MSN警示方式。
定義了4種警示命令,後面兩種msn警示是我添加的;郵件警示是使用系統內建的sendmail來發送郵件的(注意要啟動sendmail服務),而msn警示是使用我們上面所配置的msn機器人發送的警示資訊。
至此,整個nagios的監控和警示機制瞭解完畢。注意我們在配置過程中的任何改動都記得要去通過/usr/local/nagios/bin/nagios –c /usr/local/nagios/etc/nagios.cfg以檢查設定檔是否正確,如果正確則可以重啟nagios載入新配置(service nagios restart)
第三部分 安裝cacti
Cacti的運行需要AMP(Apache + MySQL + PHP), RRDTool , net-snmp , AMP環境我們在上面已經配置。
安裝rrdtool,rrdtool不能直接通過yum安裝,可以加入Dag RPM Repository以便讓yum能找到rrdtool
安裝cacti
下面開始匯入資料庫,mysql資料庫的基本安全配置這裡不做說明,請參考以前的postfix郵件安裝文檔中的mysql設定部分。
mysql>create databasecacti; // 建立一個資料庫供cacti使用
mysql>usecacti;
Mysql>source /usr/local/cacti/cacti.sql // 匯入mysql資料庫
Mysql>grant all privileges oncacti.* [email protected] by ‘cactipass’;
添加一個資料庫帳號cacti密碼為cactipass 用以訪問cacti庫
Mysql>flush privileges; //重新整理許可權資訊
Apache設定
#vi /etc/http/conf.d/cacti.conf //編輯cacti網站的設定檔,檔案內容如下:
Alias /cacti "/usr/local/wwwroot/cacti"
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
修改cacti的設定檔
修改其中的資料庫連接資訊,設定好資料庫主機地址,使用者,密碼資訊。
至此安裝完成,訪問根據提示安裝cacti(ip換成你對應的主機ip地址)
接下來安裝cacti的外掛程式管理
複製相關檔案到cacti下
第四部分 整合cacti和nagios
整合cacti和nagios是利用了cacti的一個外掛程式nagios for cacti,它的原理是將nagios的資料通過ndo2db匯入到mysql資料庫(cacti的庫中),然後cacti讀取資料庫資訊將nagios的結果展示出來。
1.安裝ndoutils
首先需要安裝ndoutils以將nagios的資料能匯入到mysql資料庫中。
修改nagios主設定檔
添加以下內容
check_external_commands=1
command_check_interval=-1
event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
process_performance_data=1
添加的內容至此結束
2.安裝php-json
npc展示部分用到json,需要在php中安裝php-json的支援,centos 5下的php 版本預設是5.1.6 不帶json支援,無法簡單地通過yum install php5-json方式來安裝。
#cd ~/downloads
編譯前初始化php環境
重啟apache
為了驗證是否成功可使用phpinfo查看是否已支援json
3.安裝npc
啟用cacti的外掛程式功能,以admin使用者登陸cacti,在console中的user management裡對admin的使用者權限進行編輯,勾選上Plugin Management,然後到外掛程式管理中心安裝並啟用NPC即可。至此完成nagios和cacti的整合。
備忘:隨筆中內容來源於網上資料整理,僅供參考。
NAGIOS(網路監視工具)