開源監控利器nagios實戰(二)

開源監控利器 nagios 實戰
做者 : 田逸 ([email]sery@163.com[/email]) from: [url]http://net.it168.com/a2009/0309/267/000000267878.shtml[/url]
 
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配置文件的驗證方法來建立用戶:
5、啓動apache服務,而後在別的機器的瀏覽器地址欄輸入 [url]http://59.26.240.63/nagios[/url] ,再輸入第「 4 產生的用戶名及設定的密碼,便可經過web方式察看監控系統當前的狀態(瀏覽器自動刷新屏幕),以下圖所示:
監控 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
相關文章
相關標籤/搜索