Nagios的功能是監控服務和主機,但其自身並不包括這部分功能,全部的監控、檢測功能都是經過各類插件來完成。啓動Nagios後,它會週期性的調用插件去檢測服務器狀態,同時Nagios會維持一個隊列,全部插件返回來的狀態信息都進入隊列,Nagios每次都從隊首讀取信息,進行處理後,再把狀態經過web展示出來。php
這就是所謂的被動模式,常常用於監控主機的系統資源,好比系統負載、磁盤使用率、內存使用率、網絡狀態、系統進程數等等。html
另外一種是主動模式,主要是nagios服務器主動去獲取數據,經常使用於探測URL的監控和服務狀態監控。mysql
相比於主動模式中服務器去被監控主機上輪詢獲取監控數據的方式,這樣的最大優點是避免除了數據處理工做之外的其餘工做都放在了被監控主機上(包括數據傳輸),避免了被監控主機量大時,一次輪詢時間過長而致使監控反應延遲,這也是被動模式可以承擔更大監控量的關鍵。linux
Nagios提供了許多插件,利用這些插件能夠方便的監控不少服務狀態,安裝完成後,在nagios目錄下的/libexec裏放nagios自帶的可使用的全部插件,如check_disk是檢查磁盤空間的插件,check_load是檢查CPU負載的插件。每個插件均可經過運行./check_xxx -h命令來查看其使用方法和功能。ios
主機 | 操做系統 | IP地址 | 主要軟件 |
---|---|---|---|
Nagios | centos7.3 x86_64 | 192.168.144.112 | Nagios4.0.一、nagios-plugins-1.五、LAMP環境 |
被監控主機 | centos7.3 x86_64 | 192.168.144.111 |
yum install -y \ httpd \ mariadb-server mariadb \ php \ php-mysql \ php-gd \ libjpeg* \ php-ldap \ php-odbc \ php-pear \ php-xml \ php-xmlrpc \ php-mhash
vim /etc/httpd/conf/httpd.confweb
ServerName www.yun.com ... AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps ... DirectoryIndex index.html index.php
systemctl stop firewalld.service
setenforce 0
systemctl start httpd
systemctl start mariadb.servicesql
yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-develapache
useradd -s /sbin/nologin nagiosvim
mkdir /usr/local/nagioswindows
chown -R nagios.nagios /usr/local/nagios
ll -d /usr/local/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
tar xvzf nagios-plugins-1.5.tar.gz -C /opt
cd /opt/nagios-plugins-1.5
./configure --prefix=/usr/local/nagios 安裝插件模塊,注意放入nagios安裝目錄中
make && make install
vim /etc/httpd/conf/httpd.conf
找到: User apache Group apache 修改成 User nagios Group nagios ... 爲了安全起見,通常狀況下要讓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
cat /usr/local/nagios/etc/htpasswd
jack:$apr1$DR0SjMa5$trumMzpqj./BA15Iswx2g0
systemctl restart httpd.service
1.templates.cfi nagios 主要用於監控主機資源以及服務,在nagios配置中稱爲對象, 爲了避免必重複定義一些監控對象,Nagios引入了一個模板配置文件, 將一些共性的屬性定義成模板,以便於屢次引用。 contact_groups 聯繫組屬性改爲 ts 將在後面的contacts.cfg文件中定義 2.resource.cfg文件 resource.cfg是nagios的變量定義文件 通常無需更改 $USER1$=/usr/local/nagios/libexec 3.commands.cfg文件 此文件默認是存在的,無需修改便可使用,固然若是有新的命令須要加入時,在此文件進行添加便可 4. hosts.cfg文件,若是建立位置不在object下,須要注意屬主屬組權限,而且主配置文件中告知爲絕對路徑 此文件默認不存在,須要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性信息(不能有任何空格) define host{ use linux-server#引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。 host_name Nagios-Linux#主機名 alias Nagios-Linux#主機別名 address 192.168.144.111#被監控的主機地址,這個地址能夠是ip,也能夠是域名。 } #定義一個主機組 define hostgroup{ hostgroup_name bsmart-servers#主機組名稱,能夠隨意指定。 alias bsmart servers#主機組別名 members Nagios-Linux#主機組成員,其中「Nagios-Linux」就是上面定義的主機。 } 5.localhost.cfg文件 用來監控本機 通常無需更改 6.windows.cfg 用來監控windows 這裏無需使用 7.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#指定檢查的命令。 } 8.contacts.cfg文件 contacts.cfg是一個定義聯繫人和聯繫人組的配置文件(不能有空格) define contact{ contact_name jack#聯繫人的名稱,這個地方不要有空格 use generic-contact#引用generic-contact的屬性信息,其中「generic-contact」在templates.cfg文件中進行定義 alias Nagios Admin email 13951868284@139.com } define contactgroup{ contactgroup_name ts#聯繫人組的名稱,一樣不能空格 alias Technical Support#聯繫人組描述 members jack#聯繫人組成員,其中「jack」就是上面定義的聯繫人,若是有多個聯繫人則以逗號相隔 } 9.cgi.cfg文件 此文件用來控制相關cgi腳本 因爲nagios的web監控界面驗證用戶爲jack,因此只需在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 10. 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對外部命令檢測的時間間隔
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 驗證配置文件