Nagios的功能是監控服務和主機,可是其自身並不包括這部分功能,全部的監控、檢測功能都是聽過各類插件去完成的。在啓動Nagios後,它會週期性地去自動調用插件去檢測服務器狀態,同時Nagios會維持一個隊列,全部插件返回的狀態信息都進入隊列,Nagios每次都會將從隊首讀取信息,進行處理後,再將狀態結果經過web顯示出來。mysql
被動模式:就如同上圖所顯示的那樣,客戶端起nrpe進程,服務端經過check_nrpe插件向客戶端發送命令,客戶端根據服務端的指示來調用相應的插件,插件能夠獲取到本機的相關信息,並把獲取到的結果發送給服務端。由於須要調用客戶端的插件去等帶客戶端返回的信息,因此叫作被動模式linux
主動模式:主動模式不須要調用客戶端的插件,而是經過本身的插件主動去探測客戶端的相關信息。
那麼,由於主動模式和被動模式的區別這兩種模式所擅長監控的服務也是不一樣的。ios
角色 | IP地址 |
---|---|
監控主機 | 192.168.58.146 |
被監控主機 | 192.168.58.149 |
首先咱們須要搭建LAMP服務,這個前面已經介紹過,這裏就很少加贅述web
安裝Nagios所須要的依賴包sql
[root@localhost ~]# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
添加用於管理Nagios的進程用戶apache
[root@localhost ~]# useradd -s /sbin/nologin nagios
建立用於安裝Nagios的目錄vim
[root@localhost ~]# mkdir /usr/local/nagios
改變Nagios安裝目錄的屬主和屬組windows
[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下面
主要用於監控主機資源以及服務,在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是nagios的變量定義文件通常無需更改
此文件默認是存在的,無需修改便可使用,固然若是有新的命令須要加入時,在此文件進行添加便可。
此文件默認不存在,須要手動建立,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」就是上面定義的主機。 }
用來監控本機 通常無需更改
用來監控windows 這裏無需使用
此文件默認也不存在,須要手動建立主要用於定義監控的服務和主機資源。
[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#指定檢查的命令。 }
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 admin@123.com } define contactgroup{ contactgroup_name ts#聯繫人組的名稱,一樣不能空格 alias Technical Support#聯繫人組描述 members jack#聯繫人組成員,其中「jack」就是上面定義的聯繫人,若是有多個聯繫人則以逗號相隔 }
此文件用來控制相關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文件中進行引用
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