Nagios監控系統

Nagios工做原理

Nagios的功能起監控服務和主機。可是其自身井不包括這部分功能。 全部的監控、檢測功能都是經過各類插件來完成的。啓動Nagios後,它會週期性地自動調用捶件去檢測服務器狀態,同時Nagios會維持一個隊列, 全部插件返回來的狀態信息都進入隊列,Nagios每次都從隊首讀取信息,進行處理後,再把狀態結果經過Web顯示出來。這就是所謂的被動模式,常常用於監控主機的系統資源,好比系統負載、磁盤使用率、內存使用率、網絡狀態、系統進程數等等。另外一種是主動模式,主要是Nagios服務器主動去獲取數據,經常使用於探測URL的監控和服務的狀態監控。相比於主動模式中服務器主動去被監控機上輪詢獲取監控數據的方式,這樣作的一個很大優點就是將除去數據處理的其餘工做都放在了被監控機上面(包括數據的傳輸),就避免了被監控機數量大時,一次輪詢時間過長而致使監控反應延遲,這也是被動模式能承擔更大監控量的關鍵。Nagios提供了許多插件,利用這些插件能夠方便地監控不少服務狀態。安裝完成後,在Nagios主日錄下的/libexec裏放有Nagios自帶的可使用的全部插件,如check_disk是檢查磁盤空間的插件,check_load是檢查CPU負載的插件,等等。每個插件均可以經過運行./check_xxx -h命令來查看其使用方法和功能。php

Nagios四種監控狀態

Nagios能夠識別四種狀態返回信息:0(OK)表示狀態正常/綠色。1(WARNING)表示出現警告/×××,2(CRITCAL)表示出現很是嚴重的錯誤/紅色,3(UNKNOWN)表示未知錯誤/深×××。Nagios根據插件返回的值,來判斷監控對象的狀態,並經過Web顯示出來,以供管理員及時發現故障。html

Nagios 經過nrpe插件來遠程管理服務

  • Nagios執行安裝在它裏面的check_nrpe 插件,並告訴check_nrpe去檢測哪些服務。
  • 經過SSL,check_nrpe鏈接遠端機器上的NRPE daemon。
  • NRPE運行本地的各類插件去檢測本地的服務和狀態(check_disk,..etc)。
  • NRPE把檢測的結果傳給主機端的check_nrpe, check_nrpe 再把結果送到Nagios狀態隊列中。
  • Nagios依次讀取隊列中的信息,再把結果顯示出來。

案例環境

監控主機:192.168.10.128
被控主機:192.168.10.142

案例實施

搭建Nagios監控系統

一、關閉防火牆和SElinux
systemctl stop firewalld.service
setenforce 0
二、安裝相關軟件包
yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
三、建立nagios用戶和用戶組
useradd -s /sbin/nologin nagios
四、建立工做目錄,設置屬主屬組
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
ll -d /usr/local/nagios/      //查看權限
五、編譯安裝Nagios
tar -zxvf nagios-4.0.1.tar.gz -C /opt
cd /opt/nagios-4.0.1
./configure --prefix=/usr/local/nagios       //指定安裝目錄
make all
make install
make install-init
make install-commandmode
make install-config

chkconfig --add /etc/rc.d/init.d/nagios
chkconfig --level 35 nagios on
chkconfig --list nagios

cd /usr/local/nagios        //檢查是否存在etc、bin、sbin、share、var 這五個目錄
六、安裝Nagios插件

Nagios提供的各類監控功能基本上都是經過插件來完成的mysql

tar xvzf nagios-plugins-1.5.tar.gz -C /opt
cd /opt/nagios-plugins-1.5
./configure --prefix=/usr/local/nagios       //指定安裝目錄
make && make install
七、安裝LAMP

建議手工編譯安裝LAMP,這裏我爲節省時間用yum安裝linux

yum install -y httpd* mysql* php
八、修改httpd配置文件
vim /etc/httpd/conf/httpd.conf 

找到:
User apache 
Group apache 
修改成 
User nagios 
Group nagios 

而後找到 
<IfModule dir_module> 
  DirectoryIndex index.html 
</IfModule> 
修改成 
<IfModule dir_module> 
  DirectoryIndex index.html index.php 
</IfModule> 

接着增長以下內容: 
AddType application/x-httpd-php .php 

爲了安全起見,通常狀況下要讓nagios的web監控頁面必須通過受權才能訪問,這須要增長驗證配置,即在httpd.conf 文件最後添加以下信息:

#setting for nagios 
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" 
<Directory "/usr/local/nagios/sbin"> 
     AuthType Basic 
     Options ExecCGI 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
     AuthName "Nagios Access" 
     AuthUserFile /usr/local/nagios/etc/htpasswd              
     Require valid-user 
</Directory> 
Alias /nagios "/usr/local/nagios/share" 
<Directory "/usr/local/nagios/share"> 
     AuthType Basic 
     Options None 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
     AuthName "nagios Access" 
     AuthUserFile /usr/local/nagios/etc/htpasswd 
     Require valid-user 
</Directory>
九、建立訪問認證文件
htpasswd -c /usr/local/nagios/etc/htpasswd jack
#用戶名:jack          密碼:123123     (自行定義)
cat /usr/local/nagios/etc/htpasswd   //查看文件信息,密碼爲加密信息
十、啓動httpd服務
systemctl start httpd.service

配置Nagios監控系統

Nagios安裝完畢後,默認的配置文件在/usr/local/nagios/etc/目錄下ios

配置文件介紹及修改

cd /usr/local/nagios/etc/

Nagios監控系統
Nagios監控系統

1.objects/templates.cfg
主要用於監控主機資源以及服務,在nagios配置中稱爲對象,爲了避免必重複定義一些監控對象,Nagios引入了一個模板配置文件,
將一些共性的屬性定義成模板,以便於屢次引用。

vim objects/templates.cfg

contact_groups  聯繫組屬性改爲 ts,ts將在後面的contacts.cfg文件中定義
2.resource.cfg文件
resource.cfg是nagios的變量定義文件 通常無需更改
$USER1$=/usr/local/nagios/libexec
3.objects/commands.cfg文件
此文件默認是存在的,無需修改便可使用,固然若是有新的命令須要加入時,在此文件進行添加便可
4. objects/hosts.cfg文件
此文件默認不存在,須要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性信息(不能有任何空格)

vim objects/hosts.cfg

define host{   
        use                     linux-server       #引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。
        host_name               Nagios-Linux     #主機名
        alias                   Nagios-Linux     #主機別名
        address                 192.168.10.142     #被監控的主機地址,這個地址能夠是ip,也能夠是域名。
        }   

#定義一個主機組   
define hostgroup{      
        hostgroup_name          bsmart-servers     #主機組名稱,能夠隨意指定。
        alias                   bsmart servers     #主機組別名
        members                 Nagios-Linux    #主機組成員,其中「Nagios-Linux」就是上面定義的主機。     
        }

Nagios監控系統

5.objects/localhost.cfg文件

用來監控本機 通常無需更改web

6.objects/windows.cfg文件

用來監控windows 這裏無需使用sql

7.objects/services.cfg文件

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

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

Nagios監控系統

8.objects/contacts.cfg文件

contacts.cfg是一個定義聯繫人和聯繫人組的配置文件(不能有空格)vim

define contact{
        contact_name                    jack     #聯繫人的名稱,這個地方不要有空格
        use                             generic-contact     #引用generic-contact的屬性信息,其中「generic-contact」在templates.cfg文件中進行定義
        alias                           Nagios Admin
        email                           1483445936@qq.com
        }
define contactgroup{
        contactgroup_name       ts     #聯繫人組的名稱,一樣不能空格
        alias                   Technical Support     #聯繫人組描述
        members                 jack    #聯繫人組成員,其中「jack」就是上面定義的聯繫人,若是有多個聯繫人則以逗號相隔
        }

Nagios監控系統

9.cgi.cfg文件

此文件用來控制相關cgi腳本,因爲nagios的web監控界面驗證用戶爲jack,因此只需在cgi.cfg文件中添加此用戶的執行權限,在最後加入windows

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監控系統

10. nagios.cfg文件

Nagios主配置文件,將對象配置文件在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對外部命令檢測的時間間隔

Nagios監控系統

11.檢查配置文件
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg         //驗證配置文件

Nagios監控系統

登陸Nagios

systemctl restart httpd.service

瀏覽器輸入
http://192.168.10.128/nagios/

使用開始設置好的jack用戶及123123密碼進行登陸
Nagios監控系統
登陸進來的頁面
Nagios監控系統
查看被監控的主機,本機及Nagios-Linux
Nagios監控系統
查看被監控主機上的服務
Nagios監控系統
查看被監控主機的具體狀態信息
Nagios監控系統

相關文章
相關標籤/搜索