防偽碼:世界的背面是憧憬,明天的明天是希望
第十章 Nagios監(jiān)控系統(tǒng)
前言:Nagios是一款開(kāi)源的免費(fèi)網(wǎng)絡(luò)監(jiān)視工具,可以監(jiān)控Windows、Linux和Unix的主機(jī)狀態(tài),交換機(jī)路由器等網(wǎng)絡(luò)設(shè)備,在系統(tǒng)或服務(wù)狀態(tài)異常時(shí)發(fā)出郵件或短信報(bào)警,第一時(shí)間通知網(wǎng)站運(yùn)維人員。流量監(jiān)控不是他的強(qiáng)項(xiàng),流量監(jiān)控建議使用cacti(可以繪制非常直觀的圖形)。
首先總結(jié)一下nagios主要可以監(jiān)控以下方面:
1、主機(jī)是否宕機(jī)(通過(guò)ping命令,如果ping不通會(huì)認(rèn)為主機(jī)屬于宕機(jī)狀態(tài),但不影響所監(jiān)控的其他服務(wù))
2、服務(wù)器資源(cpu使用率、硬盤(pán)剩余空間等)
3、網(wǎng)絡(luò)服務(wù)(smtp\pop3\http\)
4、監(jiān)控網(wǎng)絡(luò)設(shè)備(路由器、交換機(jī)等)
一、 需要了解的知識(shí)點(diǎn)
1、 nagios工作原理
Nagios本身不包括監(jiān)控主機(jī)和服務(wù)的功能。所有的監(jiān)控、監(jiān)測(cè)功能都是通過(guò)各種插件來(lái)完成的。安裝完nagios之后,在nagios主目錄下的/libexex里面放有nagios自帶的插件,如:check_disk是檢查磁盤(pán)空間的插件,check_load是檢查cpu負(fù)載的插件,每一個(gè)插件可以通過(guò)運(yùn)行./check_xxx -h命令來(lái)檢查其使用方法和功能。
1、 nagios的四種監(jiān)控狀態(tài)
Nagios可以識(shí)別四種狀態(tài)返回信息。0(OK)表示狀態(tài)正常(綠色顯示),1(WARNING)表示出現(xiàn)警告(黃色),2(CRITICAL)表示出現(xiàn)非常嚴(yán)重錯(cuò)誤(紅色),3(UNKNOWN)表示未知錯(cuò)誤(深黃色),nagios根據(jù)插件返回來(lái)的值來(lái)判斷監(jiān)控對(duì)象的狀態(tài),并通過(guò)web顯示出來(lái),以供管理員即時(shí)發(fā)現(xiàn)故障。
3、 nagios通過(guò)nrpe插件來(lái)遠(yuǎn)程管理服務(wù)的工作過(guò)程
1) Nagios執(zhí)行安裝在它里面的check_nrpe插件,并告訴check_nrpe去檢測(cè)哪些服務(wù)。
2) 通過(guò)ssl,check_nrpe連接遠(yuǎn)端機(jī)器上的NRPE daemon。
3) NRPE運(yùn)行本地的各種插件去檢測(cè)本地服務(wù)器和狀態(tài)(check_disk,...etc)。
4) NRPE把檢測(cè)的結(jié)果傳給主機(jī)端的check_nrpe,check_nrpe再把結(jié)果送到nagios狀態(tài)隊(duì)列中。
5) Nagios依次讀取隊(duì)列中的信息,再把結(jié)果顯示出來(lái)。
二、 實(shí)驗(yàn)環(huán)境
1、 實(shí)驗(yàn)拓?fù)?/span>
三、 實(shí)驗(yàn)步驟
1、 搭建nagios監(jiān)控系統(tǒng)
1) 關(guān)閉防火墻
2) 創(chuàng)建nagios用戶(hù)和用戶(hù)組
3) 編譯安裝nagios(需要提前配置yum)
安裝支持包:
配置:
編譯和安裝:
注意:
A、安裝install-webconf是為了生成配置文件,后面在/etc/httpd/conf/httpd.conf最后添加的信息就不用手工打了,可以到/etc/httpd/conf.d/nagios.conf文件中復(fù)制。
B、以上命令的解釋?zhuān)?/span>
make install //安裝主程序,CGI和HTML文件
make install-init //在/etc/rc.d/init.d安裝啟動(dòng)腳本
make install-commandmode //配置目錄權(quán)限
make install-config //安裝示例配置文件
make install-webconf //安裝nagios的web接口,會(huì)在/etc/httpd/conf.d目錄中創(chuàng)建nagios.conf文件。
C、安裝完成之后會(huì)在/usr/local/nagios目錄下產(chǎn)生6個(gè)目錄,下面分別解釋一下。
bin:nagios執(zhí)行程序所在的目錄,nagios文件即為主程序。
etc:nagios配置文件目錄,當(dāng)make install-config完以后etc下面就會(huì)出現(xiàn)默認(rèn)的配置文件。
sbin:nagios CGI文件所在目錄,這里存放的是一些外部命令執(zhí)行程序。
share:nagios網(wǎng)頁(yè)文件目錄,存放一些html文件。
var:nagios日志文件、pid等文件目錄。
Libexec:系統(tǒng)默認(rèn)插件的存儲(chǔ)位置
4) 添加為系統(tǒng)服務(wù)器
5) 安裝nagios插件(監(jiān)控功能通過(guò)插件完成)
編譯并安裝:
6)安裝nrpe(為了監(jiān)控遠(yuǎn)程服務(wù)器)
7)在/etc/httpd/conf/httpd.conf文件最后添加授權(quán),我們可以到/etc/httpd/conf.d/nagios.conf文件中復(fù)制
使用:r導(dǎo)入即可
8)執(zhí)行htpasswd命令添加一個(gè)訪(fǎng)問(wèn)nagios頁(yè)面的授權(quán)用戶(hù)
用戶(hù)名和密碼都是nagiosadmin
9)啟動(dòng)nagios和httpd服務(wù)
10)在瀏覽器上訪(fǎng)問(wèn)nagios頁(yè)面
目前只能是打開(kāi)網(wǎng)頁(yè),很多的監(jiān)控選項(xiàng)不能看到,如果需要監(jiān)控遠(yuǎn)程的服務(wù)器,還需要做很多配置,下面開(kāi)始配置。
2、 配置nagios監(jiān)控系統(tǒng)涉及知識(shí)點(diǎn)
1)nagios的配置文件:
Nagios.cfg:主配置文件,定義各種配置文件的名稱(chēng)和位置
Cgi.cfg:控制CGI的配置文件
Resource.cfg:資源文件,定義各種變量,以便于其他文件調(diào)用
Objects:其他配置文件存放目錄,此目錄下主要有:
Command.cfg:命令配置文件,定義各種命令格式,以備其他文件調(diào)用
contacts.cfg:聯(lián)系人和組,發(fā)郵件等告警信息時(shí)可以調(diào)用
localhost.cfg:監(jiān)控本機(jī)的配置文件
timeperiods.cfg:定義監(jiān)控時(shí)間的配置文件,便于其他文件調(diào)用
Hostgroups.cfg:定義監(jiān)控的主機(jī)(組),需手動(dòng)創(chuàng)建。
2) 配置文件之間的關(guān)系
在nagios的配置過(guò)程中涉及的幾個(gè)定義有主機(jī)、主機(jī)組、服務(wù)、服務(wù)組、聯(lián)系人、聯(lián)系人組、監(jiān)控時(shí)間和監(jiān)控命令等。從這些定義可以看出,nagios各個(gè)配置文件之間互為關(guān)聯(lián)、彼此引用的。成功配置出一臺(tái)nagios監(jiān)控系統(tǒng),必須要弄清楚每個(gè)配置文件之間依賴(lài)與被依賴(lài)的關(guān)系,最重要的有四點(diǎn)
a)定義監(jiān)控那些主機(jī),主機(jī)組,服務(wù)和服務(wù)組
b)定義這個(gè)監(jiān)控要用什么命令實(shí)現(xiàn)
c)定義監(jiān)控的時(shí)間段
d)定義主機(jī)或服務(wù)器出現(xiàn)問(wèn)題時(shí)要通知的聯(lián)系人和聯(lián)系人祖
3) 配置nagios
為了能更清楚的說(shuō)明問(wèn)題,同時(shí)也為了維護(hù)方便,建議將nagios各個(gè)定義的對(duì)象創(chuàng)建獨(dú)立的配置文件。
a)創(chuàng)建conf目錄來(lái)定義host主機(jī)
b)創(chuàng)建hostgroups.cfg文件來(lái)定義主機(jī)組
c)用默認(rèn)的contacts.cfg文件來(lái)定義聯(lián)系人和聯(lián)系人組
d)用默認(rèn)的commands.cfg文件來(lái)定義命令
e)用默認(rèn)的timeperiods.cfg來(lái)定義監(jiān)控時(shí)間段
f)用默認(rèn)的templetes.cfg文件作為資源引用文件
3、 配置nagios
1) 修改/usr/local/nagios/etc/nagios.cgf主配置文件
2)修改/usr/local/nagios/etc/objects/commands.cfg
添加如下內(nèi)容(定義check_nrpe監(jiān)控命令)
3)修改/usr/local/nagios/etc/objects/contacts.cfg(定義監(jiān)控服務(wù)器聯(lián)系人)
4) 新建/usr/local/nagios/etc/objects/hostgroups.cfg(定義主機(jī)組)
5) 在/usr/local/nagios/etc/conf下面新建192.168.1.20.cfg文件(用于監(jiān)控192.168.1.20的主機(jī)存活,負(fù)載,進(jìn)程)(所有內(nèi)容需要手工輸入)
未完接下圖:
注意:命令解釋?zhuān)?/span>
define host{
use linux-server //定義使用的模板
host_name nagios //被監(jiān)控主機(jī)的名稱(chēng),最好別帶空格
alias nagios //別名
address 127.0.0.1 //被監(jiān)控主機(jī)的IP地址
check_command check-host-alive
normal_check_interval 3 //正常檢測(cè)間隔時(shí)間
retry_check_interval 2 //重試檢測(cè)間隔時(shí)間
//監(jiān)控的命令check-host-alive,這個(gè)命令來(lái)自commands.cfg,用來(lái)監(jiān)控主機(jī)是否存活
max_check_attempts 5 //檢查失敗后重試的次數(shù)
check_period 24x7 //檢查的時(shí)間段24x7,同樣來(lái)自timeperiods.cfg中定義
notification_interval 10 //提醒的間隔,每隔10秒提醒一次
notification_period 24x7 //提醒的周期, 24x7,同樣來(lái)自timeperiods.cfg中定義
contact_groups admins //聯(lián)系人組,上面在contactgroups.cfg中定義的admins
notification_options d,u,r //指定什么情況下提醒
6) 重啟nagios服務(wù)
7) 訪(fǎng)問(wèn)網(wǎng)頁(yè)查看狀態(tài)
(注意:關(guān)閉selinux或者開(kāi)例外)
或者:
如果你開(kāi)啟了selinux 需要配置如下二步:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
點(diǎn)擊上圖中的localhost,可以查看本機(jī)的狀態(tài)
4、 配置被控端192.168.1.20(mysql和web)
1) 安裝nagios插件
本章的實(shí)驗(yàn)步驟比較多,安裝軟件太麻煩了,接下來(lái)我就使用腳本直接安裝了,腳本內(nèi)容如下:
然后執(zhí)行腳本
2)安裝完成之后,需要打開(kāi)vim /usr/local/nagios/etc/nrpe.cfg
添加nagios服務(wù)器的地址
3)啟動(dòng)nrpe
4) 在nagios服務(wù)器上測(cè)試nrpe運(yùn)行是否正常.
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.20
以同樣的方法在http服務(wù)器安裝即可,這里不再贅述
5) 在瀏覽器上訪(fǎng)問(wèn)
5、 補(bǔ)充
也可在services.cfg文件中添加192.168.1.20.cgf文件中的參數(shù)
#vi /usr/local/nagios/etc/objects/services.cfg
內(nèi)容如下:
check_local_users!20!50 //監(jiān)測(cè)遠(yuǎn)程主機(jī)當(dāng)前的登錄用戶(hù)數(shù)量,如果大于20用戶(hù)則報(bào)warning,如果大于50則報(bào)critical
check_local_disk!20%!10%!/ //如果可用空間低于20%會(huì)報(bào)Warning,如果可用空間低于10%則報(bào)Critical:
check_local_procs!250!400!RSZDT //監(jiān)測(cè)遠(yuǎn)程主機(jī)當(dāng)前的進(jìn)程總數(shù),如果大于250進(jìn)程則報(bào)warning,如果大于400進(jìn)程則報(bào)critical,S(休眠)、R(運(yùn)行)、Z(僵死)、D (不可中斷)、T (停止)
check_load -w 5,4,3 -c 10,6,4這個(gè)命令的意義如下
當(dāng)1分鐘多于5個(gè)進(jìn)程等待,5分鐘多于4個(gè),15分鐘多于3個(gè)則為warning狀態(tài)
當(dāng)1分鐘多于10個(gè)進(jìn)程等待,5分鐘多于6個(gè),15分鐘多于4個(gè)則為critical狀態(tài)
服務(wù)組并不是必須的,這是配合nagios的監(jiān)控頁(yè)面的顯示
謝謝觀看,真心的希望能幫到您!
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: