nagios監控系統

來源:互聯網
上載者:User

標籤:rip   fine   說明   格式   html   group   localhost   linux   日誌   

Nagios監控系統
Nagios是一款開源的免費網路監視工具,可以監控Windows、Linux和Unix的主機狀態,交換器路由器等網路裝置,在系統或服務狀態異常時發出郵件或簡訊警示,第一時間通知網站營運人員。流量監控不是他的強項,流量監控建議使用cacti,可以繪製非常直觀的圖形。
.

nagios主要可以監控以下方面:

  • 主機是否宕機(通過ping命令,如果ping不通會認為主機屬於宕機狀態,但不影響所監控的其他服務)
  • 伺服器資源(cpu使用率、硬碟剩餘空間等)
  • 網路服務(smtp\pop3\http\)
  • 監控網路裝置(路由器、交換器等)
    .

nagios工作原理
Nagios本身不包括監控主機和服務的功能。所有的監控、監測功能都是通過各種外掛程式來完成的。安裝完nagios之後,在nagios主目錄下的/libexex裡面放有nagios內建的外掛程式,如:check_disk是檢查磁碟空間的外掛程式,check_load是檢查cpu負載的外掛程式,每一個外掛程式可以通過運行./check_xxx -h命令來檢查其使用方法和功能。
.

nagios的四種監控狀態
Nagios可以識別四種狀態返回資訊。0(OK)表示狀態正常(綠色顯示)

  • (WARNING)表示出現警告(黃色),
  • (CRITICAL)表示出現非常嚴重錯誤(紅色),
  • (UNKNOWN)表示未知錯誤(深黃色),nagios根據外掛程式返回來的值來判斷監控對象的狀態,並通過web顯示出來,以供管理員即時發現故障。
    .

nagios通過nrpe外掛程式來遠端管理服務的工作過程

  • Nagios執行安裝在它裡面的check_nrpe外掛程式,並告訴check_nrpe去檢測哪些服務。
  • 通過ssl,check_nrpe串連遠端機器上的NRPE daemon。
  • NRPE運行本地的各種外掛程式去檢測本機伺服器和狀態(check_disk,...etc)。
  • NRPE把檢測的結果傳給主機端的check_nrpe,check_nrpe再把結果送到nagios狀態隊列中。
  • Nagios依次讀取隊列中的資訊,再把結果顯示出來。

實驗環境:

搭建nagios監控系統
.

建立nagios使用者和使用者組[[email protected] /]#   mount /dev/cdrom /media/[[email protected] /]#   useradd -s /sbin/nologin nagios[[email protected] /]#   mkdir /usr/local/nagios[[email protected] /]#   chown -R nagios:nagios /usr/local/nagios/

.

編譯安裝nagios(需要提前配置yum)安裝支援包:[[email protected] /]#   yum -y install httpd php mysql-devel openssl openssl-devel[[email protected] /]#   umount /dev/cdrom /media/[[email protected] /]#   mount /dev/cdrom /media/[[email protected] /]#   cd /media/

.

配置:[[email protected] /]#   tar zxf nagios-4.0.1.tar.gz -C /usr/src/[[email protected] /]#   cd /usr/src/nagios-4.0.1/[[email protected] /]#   ./configure --prefix=/usr/local/nagios/

.

編譯和安裝:[[email protected] /]# make install              //安裝主程式,CGI和HTML檔案 [[email protected] /]# make install-init         //在/etc/rc.d/init.d安裝啟動指令碼 [[email protected] /]# make install-commandmode  //配置目錄許可權 [[email protected] /]# make install-config       //安裝樣本設定檔 [[email protected] /]# make install-webconf      //安裝nagios的web介面,會在/etc/httpd/conf.d目錄中建立nagios.conf檔案。

.
安裝完成之後會在/usr/local/nagios目錄下產生6個目錄
.
bin:nagios執行程式所在的目錄,nagios檔案即為主程式。
etc:nagios設定檔目錄,當make install-config完以後etc下面就會出現預設的設定檔。
sbin:nagios CGI檔案所在目錄,這裡存放的是一些外部命令執行程式。
share:nagios網頁檔案目錄,存放一些html檔案。
var:nagios記錄檔、pid等檔案目錄。
Libexec:系統預設外掛程式的儲存位置
.

添加為系統伺服器[[email protected] /]#   chkconfig --add nagios[[email protected] /]#   chkconfig --level 35 nagios on

.

安裝nagios外掛程式(監控功能通過外掛程式完成)[[email protected] /]#   cd /media/[[email protected] /]#   tar zxf nagios-plugins-1.5.tar.gz -C /usr/src/[[email protected] /]#   cd /usr/src/nagios-plugins-1.5/[[email protected] /]#   ./configure --prefix=/usr/local/nagios/

.

編譯並安裝:[[email protected] /]#   make && make install

.

安裝nrpe(為了監控遠程伺服器)[[email protected] /]#   cd /media/[[email protected] /]#   tar zxf nrpe-2.15.tar.gz -C /usr/src/[[email protected] /]#   cd /usr/src/nrpe-2.15/[[email protected] /]#   ./configure && make all && make install-plugin

.
在/etc/httpd/conf/httpd.conf檔案最後添加授權,我們可以到/etc/httpd/conf.d/nagios.conf檔案中複製,不用手打。

[[email protected] /]#   vim /etc/httpd/conf/httpd.conf 使用:r匯入即可r /etc/httpd/conf.d/nagios.conf匯入即可,不用修改,儲存退出。

.

執行htpasswd命令添加一個訪問nagios頁面的授權使用者[[email protected] /]#   /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin使用者名稱和密碼都是nagiosadmin

.

啟動nagios和httpd[[email protected] /]#   service nagios start[[email protected] /]#  service httpd start


...............

.
配置nagios監控系統檔案

  1. nagios的設定檔:
  2. Nagios.cfg:主設定檔,定義各種設定檔的名稱和位置
  3. Cgi.cfg:控制CGI的設定檔
    Resource.cfg:資源檔,定義各種變數,以便於其他檔案調用
  4. Objects:其他設定檔存放目錄,此目錄下主要有:
    .
    Command.cfg:命令設定檔,定義各種命令格式,以備其他檔案調用
    contacts.cfg:連絡人和組,發郵件等警示資訊時可以調用
    localhost.cfg:監控原生設定檔
    timeperiods.cfg:定義監控時間的設定檔,便於其他檔案調用
    Hostgroups.cfg:定義監控的主機(組),需手動建立。~~
    .

設定檔之間的關係

在nagios的配置過程中涉及的幾個定義有主機、主機群組、服務、服務組、連絡人、連絡人群組、監控時間和監控命令等。從這些定義可以看出,nagios各個設定檔之間互為關聯、彼此引用的。成功配置出一台nagios監控系統,每個設定檔之間依賴與被依賴的關係,最重要的有四點:

  • 定義監控那些主機,主機群組,服務和服務組
  • 定義這個監控要用什麼命令實現
  • 定義監控的時間段
  • 定義主機或伺服器出現問題時要通知的連絡人和連絡人祖
    .

配置nagios

為了能更清楚的說明問題,同時也為了維護方便,建議將nagios各個定義的對象建立獨立的設定檔。

  • 建立conf目錄來定義host主機
  • 建立hostgroups.cfg檔案來定義主機群組
  • 用預設的contacts.cfg檔案來定義連絡人和連絡人群組
  • 用預設的commands.cfg檔案來定義命令
  • 用預設的timeperiods.cfg來定義監控時間段
  • 用預設的templetes.cfg檔案作為資源引用檔案
    .

配置nagios,修改設定檔

[[email protected] /]#  vim /usr/local/nagios/etc/nagios.cfg在cfg_file下面添加兩行cfg_file=/usr/local/nagios/etc/object/hostgroups.cfgcfg_dir=/usr/local/nagios/etc/conf [[email protected] /]#   mkdir /usr/local/nagios/etc/conf

.

[[email protected] /]#   vim /usr/local/nagios/etc/objects/commands.cfg 在最下方添加define command{    command_name    check_nrpe    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$        }

.

[[email protected] /]#    vim /usr/local/nagios/etc/objects/contacts.cfg 添加到contactgroup_name    admins的下面define contact{    contact_name        ydw    alias           ydw    service_notification_period 24x7    host_notification_period    24x7    service_notification_options    w,u,c,r    host_notification_options   d,u,r    service_notification_commands notify-service-by-email    host_notification_commands notify-host-by-email    email root    }

.

建立/usr/local/nagios/etc/objects/hostgroups.cfg(定義主機群組)[[email protected] /]#   vim /usr/local/nagios/etc/objects/hostgroups.cfgdefine hosrgroup{    hostgroup_name webmysql    alias webmysql    members 192.168.1.20    }

.
在/usr/local/nagios/etc/conf下面建立192.168.1.20.cfg檔案(用於監控192.168.1.20的主機存活,負載,進程)

[[email protected] /]#   cd /usr/local/nagios/etc/conf/[[email protected] /]#   vim 192.168.1.20.cfgdefine host{host_name 192.168.1.20alias 192.168.1.20address 192.168.1.20check_command check-host-alivemax_check_attempts 5check_period 24x7contact_groups ydwnotification_period 24x7notification_options d,u,r}define service{host_name 192.168.1.20service_description check-host-alivecheck_command check-host-alivemax_check_attempts 3normal_check_interval 2retry_check_interval 2check_period 24x7notification_interval 10notification_period 24x7notification_options w,u,c,rcontact_groups ydw}define service{host_name 192.168.1.20service_description check-procecheck_command check_nrpe!check_total_procsmax_check_attempts 3normal_check_interval 2retry_check_interval 2check_period 24x7notification_interval 10notification_period 24x7notification_options w,u,c,rcontact_groups ydw}define service{host_name 192.168.1.20service_description check-loadcheck_command check_nrpe!check_loadmax_check_attempts 3normal_check_interval 2retry_check_interval 2check_period 24x7notification_interval 10notification_period 24x7

.
.

命令解釋:define host{         use         linux-server            //定義使用的模板       host_name   nagios             //被監控主機的名稱,最好別帶空格         alias         nagios               //別名               address      127.0.0.1          //被監控主機的IP地址               check_command    check-host-alive  normal_check_interval? ?3??         //正常活動訊號間隔時間時間retry_check_interval? ? 2??            //重試活動訊號間隔時間時間        //監控的命令check-host-alive,這個命令來自commands.cfg,用來監控主機是否存活         max_check_attempts    5     //檢查失敗後重試的次數         check_period        24x7       //檢查的時間段24x7,同樣來自timeperiods.cfg中定義 notification_interval  10            //提醒的間隔,每隔10秒提醒一次 notification_period   24x7       //提醒的周期, 24x7,同樣來自timeperiods.cfg中定義contact_groups   admins       //連絡人群組,上面在contactgroups.cfg中定義的adminsnotification_options       d,u,r     //指定什麼情況下提醒         }  .

進入/usr/local/nagios/etc/objects/contacts.cfg在最後添加

[[email protected] /]#   vim /usr/local/nagios/etc/objects/commands.cfg define contacatgroup{    contactgroup_name   ydw    alias                           ydw    members                     ydw    }

.

重啟nagios服務[[email protected] /]#   service nagios restart

.
開防火牆例外

chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

配置被控端192.168.1.20(mysql和web)
直接用指令碼安裝

[[email protected] /]#  mount /dev/cdrom /media/[[email protected] /]#  cd /media/[[email protected] /]#  chmod +x nagiosclient.sh 

.
將指令碼和軟體複製到/usr/src

[[email protected] /]#  cp nagios-plugins-1.5.tar.gz /usr/src/[[email protected] /]#  cp nrpe-2.15.tar.gz /usr/src/[[email protected] /]#  cp nagiosclient.sh /usr/src/

.
換6.5光碟片

[[email protected] /]#   umount /dev/cdrom /media/[[email protected] /]#  mount /dev/cdrom /media/[[email protected] /]#  cd /usr/src/.
執行指令碼:[[email protected] /]#  sh nagiosclient.sh 

.
安裝完成之後,需要開啟vim /usr/local/nagios/etc/nrpe.cfg
添加nagios伺服器的地址

[[email protected] /]#  vim /usr/local/nagios/etc/nrpe.cfg allowed_hosts=127.0.0.1,192.168.1.10.
啟動nrpe,[[email protected] /]#  /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

.
如在服務端測試不行可以重啟主機後重試
[[email protected] /]# reboot
.

(伺服器測試)

[[email protected] /]#   /usr/local/nagios/libexec/check_nrpe -H 192.168.1.20NRPE v2.15


..........

.
補充:也可在services.cfg檔案中添加192.168.1.20.cgf檔案中的參數

#vi  /usr/local/nagios/etc/objects/services.cfg內容如下:1define service{    use         local-service    host_name       nagios    service_description ping    check_command       check-host-alive    }2define service{    use         local-service    host_name       nagios    service_groups      系統狀況檢查    service_description 登陸使用者數    check_command       check-host-users!20!50    }3define service{    use         local-service    host_name       nagios    service_groups      系統狀況檢查    service_description 根分區    check_command       check-local_disk!20%!10%!/    }4define service{    use         local-service    host_name       nagios    service_groups      系統狀況檢查    service_description 進程總數    check_command       check-local_procs!250!400!RSZDT    }5define service{    use         local-service    host_name       nagios    service_groups      系統狀況檢查    service_description 系統負載    check_command       check-host-load!5.0,4.0,3.0!10.0,6.0,4.0    }6define service{    use         local-service    host_name       nagios    service_groups      系統狀況檢查    service_description 交換空間利用率    check_command       check-local_swap!20!10    }7define service{    servicegroup_name   系統狀況檢查    alias           系統概況    }
check_local_users!20!50       //監測遠程主機當前的登入使用者數量,如果大於20使用者則報warning,如果大於50則報critical.check_local_disk!20%!10%!/        //如果可用空間低於20%會報Warning,如果可用空間低於10%則報Critical:.check_local_procs!250!400!RSZDT   //監測遠程主機當前的進程總數,如果大於250進程則報warning,如果大於400進程則報critical,S(休眠)、R(運行)、Z(僵死)、D?(不可中斷)、T?(停止).check_load -w 5,4,3 -c 10,6,4這個命令的意義如下* 當1分鐘多於5個進程等待,5分鐘多於4個,15分鐘多於3個則為warning狀態* 當1分鐘多於10個進程等待,5分鐘多於6個,15分鐘多於4個則為critical狀態服務組並不是必須的,這是配合nagios的監控頁面的顯示

nagios監控系統

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.