開源監控利器
nagios
實戰
(5)、定義服務配置文件 services.cfg
define service {
host_name nagios-server
service_description check-host-alive
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check-host-alive
}
define service {
host_name nagios-server
service_description check_tcp 80
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!80
}
define service{
host_name nagios-server
service_description check-disk
check_command check_nrpe!check_df
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups sagroup
}
define service{
host_name nagios-server
service_description check-load
check_command check_nrpe!check_load
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups sagroup
}
define service{
host_name nagios-server
service_description total_procs
check_command check_nrpe!check_total_procs
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups sagroup
}
說明:
●
主機名 host_name,必須是主機配置文件hosts.cfg中定義的主機。
●
檢查用的命令 check_command,在命令配置文件中定義或在nrpe配置文件中有定義。
●
最大重試次數 max_check_attempts 通常設置爲3-4次比較好,這樣不會由於網絡閃斷片刻而發生誤報。
●
檢查間隔和重試檢查間隔的單位是分鐘。
●
通知間隔指探測到故障之後,每隔多少時間發送一次報警信息。 它的單位是分鐘。
●
通知選項跟服務定義配置文件相同。
●
聯繫組contact_groups由配置文件contactgroup.cfg定義。
●
檢查主機資源須要安裝和配置nrpe,這個過程在後面完成。
5、部署nrpe
(一)安裝nrpe
tar zxvf nrpe-
2.8.1
.tar.gz
cd nrpe-
2.8.1
./configure –prefix=/usr/local/nrpe
make
make install
注:若是在其餘被監控機安裝
nrpe
,須要添加系統用戶
nagios.
(二)複製文件
安裝完nrpe後,在安裝目錄/usr/local/nrpe/libexec只有一個文件check_nrpe,而在nagios插件目錄,卻缺乏這個文件,所以須要把這個文件複製到nagios插件目錄;一樣,由於nrpe須要調用的諸如check_disk等插件在本身的目錄沒有,但是這些文件確是nagios插件所存在的,因此也須要從nagios目錄複製一份過來。咱們把複製過程列舉出來:
cp /usr/local/nrpe/libexec/check_nrpe /usr/local/nagios/libexec
cp /usr/local/nagios/libexec/check_disk /usr/local/nrpe/libexec
cp /usr/local/nagios/libexec/check_load /usr/local/nrpe/libexec
cp /usr/local/nagios/libexec/check_ping /usr/local/nrpe/libexec
cp /usr/local/nagios/libexec/check_procs /usr/local/nrpe/libexec
(三)配置nrpe
安裝完nrpe之後,在安裝目錄並無可用的配置文件,但咱們只需把解壓目錄的樣例文件複製到安裝目錄,而後修改這個文件.
一、
mkdir /usr/local/nrpe/etc
二、
cp sample-config/nrpe.cfg /usr/local/nrpe/etc
三、
修改配置文件/usr/local/nrpe/etc/nrpe.cfg.改過的地方用粗體顯示:
pid_file=/var/run/nrpe.pid
server_port=5666
#
以單獨的守護進程運行
server_address=59.26.240.63
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=127.0.0.1,59.26.240.63
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
# The following examples use hardcoded command arguments...
command[check_users]=/usr/local/nrpe/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nrpe/libexec/check_load -w 15,10,5 -c 30,25,20
#command[check_hda1]=/usr/local/nrpe/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command[check_df]=/usr/local/nrpe/libexec/check_disk -w 20 -c 10
command[check_zombie_procs]=/usr/local/nrpe/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nrpe/libexec/check_procs -w 150 -c 200
command[check_ips]=/usr/local/nrpe/libexec/ip_conn.sh 8000 10000
說明:
●
allowed_hosts=127.0.0.1,59.26.240.63 必須容許nagios監控服務器能夠訪問。
●
command[check_df]=/usr/local/nrpe/libexec/check_disk -w 20 -c 10 檢查整個服務器的磁盤利用率;若是是freebsd系統,由於其/dev分區爲100%,須要排除這個分區,所以其命令行應該爲 「command[check_df]=/usr/local/nrpe/libexec/check_disk -x /dev -w 20 -c
10
」
。
●
command[check_ips]=/usr/local/nrpe/libexec/ip_conn.sh 8000 10000 ip鏈接數,ip_conn.sh腳本須要本身寫,下面給出腳本的內容:
我在nrpe配置文件nrpe.cfg把腳本所需的兩個參數寫上了,所以這個腳本就不需判 斷兩個參數輸入值的狀況。只要當前ip鏈接數大於8000,系統就發warning報警,超過10000,則發「critical」報警信息。把這個腳本放在目錄/usr/local/nrpe/libexec下,並給於執行權限。
(四)、啓動nrpe服務並檢驗其配置
1、以獨立守護進程啓動nrpe服務 /usr/local/nrpe/bin/nrpe –c /usr/local/nrpe/etc/nrpe.cfg –d
2、經過察看系統日誌,正常啓動能夠看到以下輸出:
6、啓動nagios
1、檢查配置: nagios的驗證很是準確,凡是不能正確啓動nagios,皆能夠從錯誤輸出找到答案.
2、啓動nagios
3、檢驗監控效果。如今咱們監控了本機的web服務,但因爲apache服務尚未被啓動起來,因此等待片刻後,正常狀況下會收到郵件和手機短信報警信息;等後面咱們把apache服務起來後,應該可以收到服務已經恢復的報警短信和郵件。
4、建立web驗證用戶。咱們根據前面apache配置文件的驗證方法來建立用戶:
監控
mysql
服務器
監控
mysql
須要在
nagios
和
mysql
服務器這兩個部分作處理
:mysql
服務器安裝
nrpe
、建立
mysql
監控用戶
;
配置
nagios
及用
htpasswd
建立瀏覽器驗證賬號。下面分步描述。
1、
在
mysql
服務器安裝
nrpe.
這個操做與
nagios
服務器安裝
nrpe
基本相同,惟一不一樣的是
nrpe.cfg
文件
server_address,
把它改爲
mysql
服務器的
ip
地址便可。檢查無誤後啓動
nrpe
服務
.
2、建立
mysql
訪問用戶
nagios
。這個帳號僅僅是
nagios
監控程序用來訪問
mysql
數據庫所用,與其它賬號毫無關係。爲了安全起見,
nagios
這個帳號的權限應該特別低,僅僅有數據庫的
select
權限便可。再進一步,咱們建立一個空的數據庫
nagdb
,而後讓
nagios
帳號訪問這個空庫,就能夠經過
check_mysql
插件測試和監控
mysql
數據庫。
1
、建立空的數據庫(需
mysql root
權限):
mysql > create database nagdb;
2
、建立
mysql
帳號
nagios: mysql > GRANT select . nagdb.* TO ‘nagdb@’%’;
3
、用插件檢查配置:
[root@mysql /usr/local/nrpe/libexec]# ./check_mysql -H 192.168.0.102 -u nagios -d nagdb
Uptime: 189145 Threads: 2 Questions: 3501834 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 57 Queries per second avg: 18.514
4
、從
nagios
服務器上再檢查一次:
[root@nagios /usr/local/nagios/libexec]# ./check_mysql -H 192.168.0.102 -u nagios -d nagdb
Uptime: 189664 Threads: 2 Questions: 3501836 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 57 Queries per second avg: 18.463
一切正常之後,
mysql
服務器這邊的配置和測試就算完成了。
3、
nagios
服務器上的操做
.
即在
nagios
配置文件後面追加內容。
(一)、主機配置文件追加
mysql
主機定義,聯繫組
contactgroups
的值爲
sagroup,dbgroup,
具體步驟參照前面的操做。
(二)、聯繫人配置文件(
contacts.cfg
)追加數據庫管理員定義
(dba1)
,具體步驟參照前面的操做。
(三)、聯繫組配置文件
(contactgroups.cfg)
追加數據庫管理員組定義
(dbgroup)
,其成員爲聯繫人配置文件(
contacts.cfg
)定義的數據庫管理員
(dba1)
。
(四)、服務配置文件
(services.cfg)
追加
mysql
服務監控,除了
mysql
服務監控而外,其餘幾個對象都於前面的相似,只不過聯繫組多了一個
dbgroup
。這裏列出
mysql
服務這個定義:
define service {
host_name nagios-server
service_de.ion check_mysql
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup,dbgroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_mysql
}
(五)、命令配置文件
(command.cfg)
追加檢查
mysql
的定義,其追加內容爲:
define command {
command_name check_mysql
command_line $USER1$/check_mysql –H $HOSTADDRESS$ -u nagios –d nagdb
}
(六)、檢查並啓動
nagios
cd /usr/local/nagios
bin/nagios –v etc/nagios.cfg
bin/nagios –d etc/nagios.cfg
(七)增長
apache
驗證賬號
/usr/local/apache/bin/htpasswd /usr/local/nagios/etc/htpasswd db1
輸入兩次密碼後,從別的計算機的瀏覽器地址欄輸入
[url]http://59.26.240.63/nagios[/url] ,
再輸入用戶名
db1
及剛纔設定的密碼,進入頁面後,點擊左上方的連接「
Service Detail
」
,
就能夠看到
mysql
服務器當前的運行狀態(
db1
用戶只能看到
mysql
服務器狀態,而管理員
sery
帳號則能夠看全部被監控對象的狀態)。
監控其餘服務器
操做步驟跟監控mysql差很少,再也不贅敘。
服務器監控的一些策略
前段時間有人問我怎麼用nagios監控linux內存使用狀況,以及怎麼設置報警閾值?linux運行時,是最大可能的利用內存,監控這個對象沒有現實意義,明顯屬於無效的監控策略.另有一人說:」晚上沒完沒了的收到監控系統的發送的報警短信,受不了…」。不言而喻,這也是一個很差的監控策略,實際上監控已經失去了它的意義。因此要讓監控平臺更有效的發揮做用,好的策略是必須的。那麼怎麼才能算是好的策略,這裏我結合個人實際狀況,談談個人一些見解,但願對你們有所幫助。
策略一:監控對象選擇
在一個規模較大的網絡中,監控的對象可能包括服務器、防火牆、交換機、路由器等等設備,以及運行在各對象上的服務。可是,咱們不必把全部的對象都放到這個監控系統中來。好比把某些測試系統放到監控中,就會產生如上那位老兄整個晚上收到報警短信的麻煩。所以,選擇正確的監控對象是實施有效監控的前提,我的建議,只有那些重要級別高的,不能隨便中止服務的對象――如在線交易系統――纔是值得監控的對象。固然,服務器的使用者總但願你把它監控上,哪怕它不是那麼重要。
策略二:故障報警方式選擇
老闆很是但願咱們不知疲倦的坐在計算機旁,可是他只是一廂情願而已。對監控系統而言,必定要有合適的故障告警機制。目前經常使用的告警機制包括:郵件、短信、msn、web頁面顯示等幾種手段,這幾種手段中,短信報警最佳。由於在夜間睡夢中,咱們沒辦法隨時收郵件,可是短信去能喚醒咱們,通知咱們發生故障了,並且在老闆和用戶發現這個故障之前。對於沒有通道的機構來講,租用sp提供的服務是比較穩妥的方式,其餘如用移動飛信等方式都不怎麼考譜,不適合關鍵性業務運營。另外我使用了一個小技巧,讓監控平臺天天下午給我發一條短信,無論有沒有故障都發,這樣以便讓我知道短信接口是否正常。
策略三:故障報警時效和間隔的選擇
因爲網絡通訊等不可控因素,所以可能存在故障誤報的狀況。若是把報警發送設置成一次探測不成功就發送報警信息就不是個好策略。經驗代表:探測3-4次都失敗再發送信息,並不耽誤咱們去處理故障。假如探測一次失敗就報警,便可以很快把手機短信空間塞滿,又會讓你睡很差覺。
故障報警開始發送之後,通常會沒完沒了的發送,直到故障排除恢復正常,纔會發一條相似「*** is ok!」的短信。報警發送間隔設置,也是須要費一番心思,設短了,不停的消耗你的短信費用,設長了,恐怕不足以喚醒沉睡的人;若是沒有人去處理故障,也沒有人去中止這個通知,報警信息就會一直髮送下去。
那怎麼樣是一個合適的範圍呢?個人作法是:探測4次失敗開始報警,報警間隔10分鐘,總共發送8次,而後中止發送,假如第3次沒有人去處理,我會電話通知,沒回應則取消該對象的監控,並記錄該次事件。
策略四:監控平臺地點的選擇
對於一個規模比較大的網絡,爲了解決南北互聯問題而採起多個地點創建數據中心的辦法。這時須要對不一樣地理位置的服務器進行監控,也會遇到訪問慢的問題。解決這個問題有幾種方式:1、選擇一個到各個位置訪問都順暢的數據機房;2、採起分步是監控平臺,各處本身收集監控信息,而後到一處彙總;3、各數據中心單獨建監控平臺。各人能夠根據本身的實際狀況自行選擇。
策略五:流量控制和安全
有很多商業解決方案採起snmp和客戶端軟件來監控各個對象,這會引發額外的流量和帶來安全問題。所以儘可能不要使用snmp這樣比較佔資源的協議(具稱snmp v3彷佛有所改進)。開源解決方案Nagios在這方面作得比較完美,值得推薦一下。它能夠以插件方式先收集到各監控對象的信息,而後再傳送到監控服務器上,大大節省網絡帶寬。
2009/3/3