Nagios是一個流行的電腦系統和網絡監控程序,它檢測主機和服務,當異常發生和解除時能提醒用戶。它是基於GPLv2開發的開源軟件,可免費得到及使用。php
nagios的功能是監控服務和主機,可是其自身並不包括這些功能,全部的監控、檢測功能都是經過各類插件來完成的。啓動nagios後,它會週期性的自動調用插件去檢測服務器狀態,同時nagios會維持一個隊列,全部插件返回的狀態信息都進入隊列,nagios每次都從隊首讀取信息,進行處理後,再把狀態結果經過web顯示出來。這就是被動模式,常常用於監控主機的系統資源,好比系統負載、磁盤使用率、內存使用率、網絡狀態、系統進程數等等。另外一種是主動模式,主要是nagios服務器主動去獲取數據,經常使用於探測URL的監控和服務的狀態監控。相比於主動模式中服務器主動去被監控機上輪詢獲取監控數據的方式,這樣作的一個很大優點就是將除去數據處理的其餘工做都放在了被監控機上面(包括數據的傳輸),就避免了被監控機數量大時一次輪詢時間過長而致使監控反應延遲,這也是被動模式能承擔更大監控量的關鍵。nagios提供了許多插件,利用這些插件能夠方便的監控不少服務狀態。安裝完成後,在nagios主目錄下的/libxec裏放有nagios自帶的可使用的全部插件。html
本次項目主要介紹如何部署nagios,如何對nagios進行配置,使其可以對指定的主機進行監控操做linux
本次項目只對被監控端作簡單測試,因此被監控端不需安裝nagios插件。 角色 |
IP地址 | 所用軟件 |
---|---|---|
監控端 | 172.16.10.34 | nagios-4.4.二、nagios-plugins-2.2.1 |
被監控端 | 172.16.10.20 | |
被監控端 | 172.16.10.23 |
由於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
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
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
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
配置nagois 通常在目錄/usr/local/nagios/etc/下shell
主要用於監控主機資源以及服務,在nagios配置中稱爲對象,爲了避免必重複定義一些監控對象,Nagios引入了一個模板配置文件,將一些共性的屬性定義成模板,以便於屢次引用。contact_groups 聯繫組屬性改爲 np 將在後面的contacts.cfg文件中定義apache
vim /usr/local/nagios/etc/object/templates.cfg contact_groups np //文中有五處都需修改
resource.cfg是nagios的變量定義文件 通常無需更改vim
此文件默認是存在的,無需修改便可使用,固然若是有新的命令須要加入時,在此文件進行添加便可centos
此文件默認不存在,須要手動建立,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」就是上面定義的主機。 }
用來監控本機 通常無需更改
此文件默認也不存在,須要手動建立,主要用於定義監控的服務和主機資源
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是一個定義聯繫人和聯繫人組的配置文件,注意書寫格式。
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腳本,因爲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文件中進行引用
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
systemctl restart httpd。service systemctl restart nagios.service
該網站設置了登錄驗證,因此在訪問網站是輸入以前設置的用戶名和密碼便可登錄網站。
http://172.16.10.34/nagios/
此文件默認不存在,須要手動建立,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