監控三劍客之Nagios

Nagios是一個流行的電腦系統和網絡監控程序,它檢測主機和服務,當異常發生和解除時能提醒用戶。它是基於GPLv2開發的開源軟件,可免費得到及使用。php

nagios工做原理

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

nagios主要功能

  • 網絡服務監控(SMTP、POP三、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
  • 主機資源監控(CPU load、disk usage、system logs),也包括Windows主機(使用NSClient++ plugin)
  • 指定本身編寫的Plugin經過網絡收集數據來監控任何狀況(溫度、警告……)
  • 經過配置Nagios遠程執行插件遠程執行腳本
  • 遠程監控支持SSH或SSL加通道方式進行監控
  • 簡單的plugin設計容許用戶很容易的開發本身須要的檢查服務,支持不少開發語言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
  • 包含不少圖形化數據Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
  • 可並行服務檢查
  • 可以定義網絡主機的層次, 容許逐級檢查, 就是從父主機開始向下檢查
  • 當服務或主機出現問題時發出通告,可經過email, pager, sms 或任意用戶自定義的plugin進行通知
  • 可以自定義事件處理機制從新激活出問題的服務或主機
  • 自動日誌循環
  • 支持冗餘監控
  • Web界面能夠查看當前網絡狀態,通知,問題歷史,日誌文件等

本次項目主要介紹如何部署nagios,如何對nagios進行配置,使其可以對指定的主機進行監控操做linux

項目環境準備

關閉防火牆及selinux

系統版本:centos 7.4

虛擬機分配

本次項目只對被監控端作簡單測試,因此被監控端不需安裝nagios插件。
角色
IP地址 所用軟件
監控端 172.16.10.34 nagios-4.4.二、nagios-plugins-2.2.1
被監控端 172.16.10.20
被監控端 172.16.10.23

部署nagios監控系統

由於nagios監控系統的網頁須要動態網頁支持,因此須要安裝httpd和php軟件,或者直接在lamp環境下安裝,因此實驗前要準備好虛擬機環境,對於lamp架構的搭建,在這裏就很少贅述。ios

安裝環境包

yum install -y \
-- gcc \
-- glibc \
-- glibc-common \
-- gd \
-- gd-devel \
-- xinetd \
-- openssl-devel

建立管理用戶

useradd -s /sbin/nologin nagios

建立安裝目錄,指定屬主屬組

mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios

編譯安裝nagios

tar -zxvf nagios-4.4.2.tar.gz -C /opt

cd /opt/nagios-4.4.2
./configure --prefix=/usr/local/nagios
make all
make install
make install-init
make install-commandmode
make install-config

驗證安裝結果

ls /usr/local/nagios

監控三劍客之Nagios

安裝nagios-plugins

tar xvzf nagios-plugins-2.2.1.tar.gz -C /opt

cd /opt/nagios-plugins-2.2.1
./configure --prefix=/usr/local/nagios
make && make install

配置nagios監控系統

修改httpd.conf

vim /etc/httpd/conf/httpd.conf 
User nagios 
Group nagios  //修改原用戶名apache爲nagios

<IfModule dir_module> 
  DirectoryIndex index.html index.php    //增長index.php
</IfModule>
AddType application/x-httpd-php .php   //插入該句

增長安全驗證配置

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

vim /etc/httpd/conf/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 chen

配置nagios

配置nagois 通常在目錄/usr/local/nagios/etc/下shell

templates.cfg

主要用於監控主機資源以及服務,在nagios配置中稱爲對象,爲了避免必重複定義一些監控對象,Nagios引入了一個模板配置文件,將一些共性的屬性定義成模板,以便於屢次引用。contact_groups 聯繫組屬性改爲 np 將在後面的contacts.cfg文件中定義apache

vim /usr/local/nagios/etc/object/templates.cfg
contact_groups                  np   //文中有五處都需修改

resource.cfg文件

resource.cfg是nagios的變量定義文件 通常無需更改vim

commands.cfg文件

此文件默認是存在的,無需修改便可使用,固然若是有新的命令須要加入時,在此文件進行添加便可centos

hosts.cfg文件

此文件默認不存在,須要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性信息,注意書寫格式,不要有多餘的空格安全

vim /usr/local/nagios/etc/objects/hosts.cfg
define host{   
        use                     linux-server            //引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。
        host_name               Nagios-Linux     //主機名,自定義
        alias                   Nagios-Linux     //主機別名
        address                 172.16.10.20     //被監控的主機地址,這個地址能夠是ip,也能夠是域名。
        }   
define hostgroup{                                 //定義一個主機組
        hostgroup_name          bsmart-servers    //主機組名稱,能夠隨意指定。
        alias                   bsmart servers    //主機組別名
        members                 Nagios-Linux      //主機組成員,其中「Nagios-Linux」就是上面定義的主機。     
        }

localhost.cfg

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

services.cfg

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

vim /usr/local/nagios/etc/objects/services.cfg
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   //指定檢查的命令。
        }

contacts.cfg

contacts.cfg是一個定義聯繫人和聯繫人組的配置文件,注意書寫格式。

vim /usr/local/nagios/etc/objects/contacts.cfg
define contact{
        contact_name                    chen            //聯繫人的名稱,這個地方不要有空格
        use                             generic-contact //引用generic-contact的屬性信息,其中「generic-contact」在templates.cfg文件中進行定義
        alias                           Nagios Admin
        email                           46****06@qq.com //填入真實可用郵箱,也可不寫
        }
define contactgroup{
        contactgroup_name       np                      //聯繫人組的名稱,一樣不能空格
        alias                   Technical Support       //聯繫人組描述,言簡意賅,能懂什麼意思就行
        members                 chen                    //聯繫人組成員,其中「chen」就是上面定義的聯繫人,若是有多個聯繫人則以逗號相隔
        }

cgi.cfg

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

default_user_name=chen
authorized_for_system_information=nagiosadmin,chen  
authorized_for_configuration_information=nagiosadmin,chen  
authorized_for_system_commands=chen
authorized_for_all_services=nagiosadmin,chen  
authorized_for_all_hosts=nagiosadmin,chen
authorized_for_all_service_commands=nagiosadmin,chen  
authorized_for_all_host_commands=nagiosadmin,chen             //配置文件末尾插入

nagios.cfg

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

vim /usr/local/nagios/etc/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對外部命令檢測的時間間隔,插入便可。

驗證配置文件準確性

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

監控三劍客之Nagios

重啓服務

systemctl restart httpd。service
systemctl restart nagios.service

訪問nagios網站

該網站設置了登錄驗證,因此在訪問網站是輸入以前設置的用戶名和密碼便可登錄網站。

http://172.16.10.34/nagios/

監控三劍客之Nagios
監控三劍客之Nagios

增長主機數

修改hosts.cfg文件

此文件默認不存在,須要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性信息,注意書寫格式,不要有多餘的空格

vim /usr/local/nagios/etc/objects/hosts.cfg
define host{   
        use                     linux-server            //引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。
        host_name               Nagios-Linux     //主機名,自定義
        alias                   Nagios-Linux     //主機別名
        address                 172.16.10.20     //被監控的主機地址,這個地址能夠是ip,也能夠是域名。
        }  
define host{
        use                     linux-server
        host_name               Nagios-Linu
        alias                   Nagios-Linu
        address                 172.16.10.23
        }

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

重啓服務

systemctl restart httpd。service
systemctl restart nagios.service

監控三劍客之Nagios

相關文章
相關標籤/搜索