1. 程式人生 > >Linux監控系統之Nagios

Linux監控系統之Nagios

系統管理 common smtp 是否 config xinetd 狀態信息 ima 進程

Linux監控系統之Nagios

Nagios工作原理

Nagios的功能是監控服務和主機,但是其自身並不包括這部分功能,所有的監控、檢測功能都是聽過各種插件去完成的。在啟動Nagios後,它會周期性地去自動調用插件去檢測服務器狀態,同時Nagios會維持一個隊列,所有插件返回的狀態信息都進入隊列,Nagios每次都會將從隊首讀取信息,進行處理後,再將狀態結果通過web顯示出來。

Nagios模式

被動模式:就如同上圖所顯示的那樣,客戶端起nrpe進程,服務端通過check_nrpe插件向客戶端發送命令,客戶端根據服務端的指示來調用相應的插件,插件可以獲取到本機的相關信息,並把獲取到的結果發送給服務端。因為需要調用客戶端的插件去等帶客戶端返回的信息,所以叫做被動模式

主動模式:主動模式不需要調用客戶端的插件,而是通過自己的插件主動去探測客戶端的相關信息。
那麽,因為主動模式和被動模式的區別這兩種模式所擅長監控的服務也是不同的。

Nagios功能

  • 監控網絡服務(SMTP、POP3、HTTP、NNTP、PING等);
  • 監控主機資源(處理器負荷、磁盤利用率等);
  • 簡單地插件設計使得用戶可以方便地擴展自己服務的檢測方法;
  • 並行服務檢查機制;
  • 具備定義網絡分層結構的能力,用"parent"主機定義來表達網絡主機間的關系,這種關系可被用來發現和明晰主機宕機或不可達狀態;
  • 當服務或主機問題產生與解決時將告警發送給聯系人(通過EMail、短信、用戶定義方式);
  • 可以定義一些處理程序,使之能夠在服務或者主機發生故障時起到預防作用;
  • 自動的日誌滾動功能;
  • 可以支持並實現對主機的冗余監控;
  • 可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等;
  • 可以通過手機查看系統監控信息;
  • 可指定自定義的事件處理控制器

試驗環境

角色 IP地址
監控主機 192.168.58.146
被監控主機 192.168.58.149

實驗實施

首先我們需要搭建LAMP服務,這個前面已經介紹過,這裏就不多加贅述

安裝Nagios所需要的依賴包

[root@localhost ~]# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel

添加用於管理Nagios的進程用戶

[root@localhost ~]# useradd -s /sbin/nologin nagios

創建用於安裝Nagios的目錄

[root@localhost ~]# mkdir /usr/local/nagios

改變Nagios安裝目錄的屬主和屬組

[root@localhost ~]# chown -R nagios.nagios /usr/local/nagios

下面進行編譯安裝Nagios

[root@localhost ~]# tar xf nagios-4.0.1.tar.gz -C /opt/
#將安裝包解壓到/opt目錄下面
[root@localhost ~]# cd /opt/nagios-4.0.1/
#切換至解壓路徑下
[root@localhost nagios-4.0.1]# ./configure --prefix=/usr/local/nagios
#配置Nagios安裝路徑
[root@localhost nagios-4.0.1]# make all
由於nagios分很多單獨的文件,所以使用make all來編譯所有的的單獨的文件
[root@localhost nagios-4.0.1]# make install
#這是編譯安裝主程序包括CGI和HTML文件
[root@localhost nagios-4.0.1]# make install-init
#編譯安裝一些初始化腳本
[root@localhost nagios-4.0.1]# make install-commandmode
#這是為外部命令文件所在的目錄安裝和配置權限
[root@localhost nagios-4.0.1]# make install-config
#這是安裝一些配置的模板文件,主要在/usr/local/nagios/etc目錄下面
[root@localhost nagios-4.0.1]# chkconfig --add /etc/rc.d/init.d/nagios
#將nagios添加到chkconfig系統管理中
[root@localhost nagios-4.0.1]# chkconfig --level 35 nagios on
#設置nagios在35級別開啟自啟動

技術分享圖片
這時候我們可以去/usr/local/nagios/目錄下查看是否生成相關文件目錄

[root@localhost nagios-4.0.1]# ls /usr/local/nagios/
bin  etc  libexec  sbin  share  var

安裝nagios-plugins服務

[root@localhost ~]# tar xf nagios-plugins-1.5.tar.gz -C /opt/
[root@localhost ~]# cd /opt/nagios-plugins-1.5
[root@localhost nagios-plugins-1.5]#  ./configure --prefix=/usr/local/nagios
#將它安裝到nagios目錄下
[root@localhost nagios-plugins-1.5]# make && make install
#編譯安裝

修改apache服務的配置文件

[root@localhost ~]# vim /etc/httpd.conf  

技術分享圖片
技術分享圖片
技術分享圖片
創建httpd賬戶驗證文件

[root@localhost ~]# htpasswd -c /usr/local/nagios/etc/htpasswd jack
[root@localhost ~]# cat /usr/local/nagios/etc/htpasswd 
jack:$apr1$cTieBr/D$vWomztP4eURmUTxxv1WFv0
#可以看到我們添加的賬戶以及密碼

修改nagios配置文件,配置文件一般在/usr/local/nagios/etc/objects下面

  • templates.cfi文件

主要用於監控主機資源以及服務,在nagios配置中稱為對象,為了不必重復定義一些監控對象,Nagios引入了一個模板配置文件,將一些共性的屬性定義成模板,以便於多次引用。

[root@localhost etc]# cd /usr/local/nagios/etc/objects/
[root@localhost objects]# ls
commands.cfg  hosts.cfg      printer.cfg   switch.cfg     timeperiods.cfg
contacts.cfg  localhost.cfg  services.cfg  templates.cfg  windows.cfg
[root@localhost ~]# sed -i ‘contact_groups/s/admins/ts/g‘ /usr/local/nagios/etc/objects/templates.cfg 

技術分享圖片

  • resource.cfg文件

resource.cfg是nagios的變量定義文件一般無需更改

  • commands.cfg文件

此文件默認是存在的,無需修改即可使用,當然如果有新的命令需要加入時,在此文件進行添加即可。

  • hosts.cfg文件

此文件默認不存在,需要手動創建,hosts.cfg主要用來指定被監控的主機地址以及相關屬性信息。

[root@localhost objects]# vim hosts.cfg 

define host{   
        use                     linux-server#引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。
        host_name               Nagios-Linux#主機名
        alias                   Nagios-Linux#主機別名
        address                 192.168.58.149#被監控的主機地址,這個地址可以是ip,也可以是域名。
        }   
#定義一個主機組   
define hostgroup{      
        hostgroup_name          bsmart-servers#主機組名稱,可以隨意指定。
        alias                   bsmart servers#主機組別名
        members                 Nagios-Linux#主機組成員,其中“Nagios-Linux”就是上面定義的主機。     
        }
  • localhost.cfg文件

用來監控本機 一般無需更改

  • windows.cfg文件

用來監控windows 這裏無需使用

  • services.cfg文件

此文件默認也不存在,需要手動創建主要用於定義監控的服務和主機資源。

[root@localhost objects]# vim services.cfg

define service{  
        use                     local-service#引用local-service服務的屬性值,local-service在templates.cfg文件中進行了定義。
        host_name               Nagios-Linux#指定要監控哪個主機上的服務,“Nagios-Linux”在hosts.cfg文件中進行了定義。
        service_description     check-host-alive#對監控服務內容的描述,以供維護人員參考。
        check_command           check-host-alive#指定檢查的命令。
        } 
  • contact.cfg文件

contacts.cfg是一個定義聯系人和聯系人組的配置文件。

[root@localhost objects]# vim contacts.cfg 

define contact{
        contact_name                    jack#聯系人的名稱,這個地方不要有空格
        use                             generic-contact#引用generic-contact的屬性信息,其中“generic-contact”在templates.cfg文件中進行定義
        alias                           Nagios Admin
        email                           [email protected]
        }
define contactgroup{
        contactgroup_name       ts#聯系人組的名稱,同樣不能空格
        alias                   Technical Support#聯系人組描述
        members                 jack#聯系人組成員,其中“jack”就是上面定義的聯系人,如果有多個聯系人則以逗號相隔
        }
  • cgi.cfg文件

此文件用來控制相關cgi腳本
由於nagios的web監控界面驗證用戶為jack,所以只需在cgi.cfg文件中添加此用戶的執行權限。

[root@localhost objects]# cd ../
[root@localhost etc]# ls
cgi.cfg  htpasswd  nagios.cfg  objects  resource.cfg
[root@localhost etc]# vim cgi.cfg 

在最後加入

default_user_name=jack
authorized_for_system_information=nagiosadmin,jack  
authorized_for_configuration_information=nagiosadmin,jack  
authorized_for_system_commands=jack
authorized_for_all_services=nagiosadmin,jack  
authorized_for_all_hosts=nagiosadmin,jack
authorized_for_all_service_commands=nagiosadmin,jack  
authorized_for_all_host_commands=nagiosadmin,jack
  • nagios.cfg文件

將對象配置文件在Nagios.cfg文件中進行引用

cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg

command_check_interval=10s  #該變量用於設置nagios對外部命令檢測的時間間隔

都配置完了我們可以通過相關命令進行檢測。

[root@promote objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果出現下面回應,說明配置成功。
技術分享圖片
最後開啟nagios服務

[root@localhost ~]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

重啟mysql和httpd服務,進行網頁測試訪問http://192.168.58.146/nagios

技術分享圖片
技術分享圖片
技術分享圖片

Linux監控系統之Nagios