目錄

1. Nagios 和 NagiosQL簡介

2. Nagios+NagiosQL搭建環境說明

3. Nagios、Nagios-plugins和NagiosQL的安裝

4. 配置NagiosQL的前端頁面

5. 根據需求實現監控


1. Nagios 和 NagiosQL簡介

0x01 Nagios介紹

Nagios是一款開源的免費網路監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網路裝置,印表機等。在系統或服務狀態異常時發出郵件或簡訊報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或簡訊通知。

0x02 Nagios主要功能:

  • 網路服務監控(SMTP、POP3、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介面可以檢視當前網路狀態,通知,問題歷史,日誌檔案等。

0x03 NagiosQL介紹

NagiosQL是專為nagios設計的web圖形化管理應用,主要作用就是操作資料庫和配置檔案,其中包括將配置檔案的資訊寫到資料庫中,在資料庫中修改Nagios的監控配置資訊,並將資料庫中存放的配置更新到檔案中。使用者可以通過NagiosQL提供的Web頁面直觀的修改配置。實現架構很簡單,功能很實用。

0x04 NagiosQL 主要功能

  • 具有基本的nagios的配置管理能力,匯入,匯出配置檔案的功能
  • 具有nagios配置檔案檢查、排錯的能力
  • Nagiosql可對檔案結構進行定製,可延續之前的配置結構,按IP生成配置
  • Nagiosql將每一次配置的變更做一次配置備份,以時間戳為字尾儲存,理論上可以回滾到任意一個歷史配置

2. Nagios+NagiosQL搭建環境說明

0x01 作業系統

  1. root@nagios:~# cat /etc/issue
  2. Ubuntu 16.04.4 LTS \n \l

0x02 核心版本

  1. root@nagios:~# uname -a
  2. Linux nagios-cacti.115rc.com 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

0x03 備註

  1. 1、此安裝方法只針對Ubuntu 16.04Ubuntu 14.04版本,若是CentOS請參考Nagios的官方文件。
  2. 2、由於nagios官網預設使用的是 Apache Web Server,此文件使用的是Nginx Web Server

3. Nagios、Nagios-plugins和NagiosQL的安裝

0x01 Nagios的原始碼安裝

  • 安裝前的準備(依賴包)
  1. sudo apt-get install unzip
  2. sudo apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext
  • 同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,獲取最新的軟體包。;
  1. sudo apt-get update
  • 安裝build-essential包(編譯程式必須的軟體包):可以從source中獲取nagiosnagios-pluguns
  1. sudo apt-get install build-essential
  • 安裝nginx web server,並確認nginx服務時啟動狀態;
  1. sudo apt-get install nginx -y
  2. sudo service nginx status
  • 安裝libgd2-xpm-dev, php5-fpm, spawn-fcgi and fcgiwrap
  1. sudo apt-get install libgd2-xpm-dev -y
  2. sudo apt-get install php5-fpm -y
  3. sudo apt-get install spawn-fcgi fcgiwrap -y
  • 建立nagios使用者組;
  1. sudo useradd nagios
  2. sudo groupadd nagios
  3. sudo usermod -G nagios nagios
  4. sudo usermod -a -G nagios www-data
  • 下載nagios原始碼包、並編譯原始碼;
  1. cd /opt
  2. sudo wget -O nagioscore.tar.gz https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.3.2.tar.gz
  3. sudo tar zxf nagioscore.tar.gz
  4. cd nagioscore-nagios-4.3.2/
  5. sudo ./configure --prefix=/usr/local/nagios --with-command-group=nagios
  • 如果編譯正確後(可在命令列輸入:echo $?,若返回值為0,則編譯成功),再安裝;
  1. sudo make all
  2. sudo make install
  3. sudo make install-init
  4. sudo make install-config
  5. sudo make install-commandmode

install-init 將會安裝合適的初始化指令碼;install-config將會安裝樣本配置檔案;install-commandmode設定擴充套件命令目錄的許可權。

  • 建立nagiosadmin使用者賬號;
  1. sudo vim /usr/local/bin/htpasswd.pl

將以下內容複製到htpasswd.pl檔案中;

  1. #!/usr/bin/perl
  2. use strict;
  3. if ( @ARGV != 2 ){
  4. print "usage: /usr/local/bin/htpasswd.pl <user> <password>\n";
  5. }
  6. else {
  7. print $ARGV[0].":".crypt($ARGV[1],$ARGV[1])."\n";
  8. }
  • 授予指令碼可執行許可權
  1. sudo chmod +x /usr/local/bin/htpasswd.pl
  • 執行指令碼htpasswd.pl
  1. sudo /usr/local/bin/htpasswd.pl nagiosadmin nagiosadmin | sudo tee -a /usr/local/nagios/etc/htpasswd.users
  • 根據需求,修改Nagios的訪問埠為8080
  1. sudo vim /etc/nginx/sites-enabled/nagios.conf

nagios.conf的配置檔案中加入如下內容:

  1. server {
  2. listen 8080;
  3. server_name 118.186.36.123 127.0.0.1;
  4. auth_basic "Nagios Access";
  5. auth_basic_user_file /usr/local/nagios/etc/htpasswd.users;
  6. root /usr/local/nagios/share;
  7. location / {
  8. index index.html index.htm index.php;
  9. }
  10. location /nagios {
  11. alias /usr/local/nagios/share/;
  12. index index.html index.htm index.php;
  13. }
  14. location /nagiosql {
  15. alias /usr/local/nagios/share/nagiosql/;
  16. index index.html index.htm index.php;
  17. }
  18. location /cgi-bin {
  19. alias /usr/local/nagios/sbin;
  20. }
  21. location ~ .*\.(php|php5)?$ {
  22. fastcgi_pass 127.0.0.1:9000;
  23. fastcgi_index index.php;
  24. include fastcgi_params;
  25. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  26. }
  27. location ~ \.cgi$ {
  28. root /usr/local/nagios/sbin/;
  29. rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
  30. fastcgi_param AUTH_USER $remote_user;
  31. fastcgi_param REMOTE_USER $remote_user;
  32. include /etc/nginx/fastcgi_params;
  33. fastcgi_pass unix:/var/run/fcgiwrap.socket;
  34. }
  35. }
  • 修改php的fastcgi_pass監聽;
  1. vim /etc/php5/fpm/pool.d/www.conf
  2. #listen = /var/run/php5-fpm.sock
  3. listen = 127.0.0.1:9000
  • 啟動Nginx Web Servernagios服務
  1. sudo service nginx start
  2. sudo service nagios start
  • 測試Nagios是否啟動成功(在瀏覽器中輸入如下URL,測試nagios是否正常啟動);

http://IPaddress/nagios(IPaddress中填入本機的IP地址)

然後在登入Nagios的前端頁面

0x02 Nagios-plugins的安裝

  • Downloading The Source(下載nagiosQL原始碼);
  1. cd /opt
  2. sudo wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz
  3. sudo tar zxf nagios-plugins.tar.gz
  • Compile + Install(編譯安裝);
  1. cd /opt/nagios-plugins-release-2.2.1/
  2. sudo ./tools/setup
  3. sudo ./configure
  4. sudo make
  5. sudo make install
  • Service / Daemon Commands(服務、及守護程序的相關命令);
  1. sudo service nagios start
  2. sudo service nagios stop
  3. sudo service nagios restart
  4. sudo service nagios status
  • 外掛安裝完成後,可以進入nagios的前端頁面,檢視nagios對nagios本機的監控情況;

如上圖所示,可以看到當前主機的負載、登入主機的使用者數、HTTP請求狀態、主機是否存活、以及根分割槽的容量使用情況、SSH狀態、Swap分割槽的容量使用情況、以及當前系統內啟動的程序總數。

0x03 NagiosQL下載、安裝、及配置

  • nagiosQL下載地址;
  1. https://sourceforge.net/projects/nagiosql/
  1. Windows上下載好nagiosQL原始碼包,則需要將下載好的tar包,上傳到伺服器(CentOSUbuntu)上,此時可用lrzsz工具。
  • 解壓nagiosQL原始碼包;
  1. cd /opt
  2. sudo tar zxf nagiosql_33.tar.gz
  3. sudo mv nagiosql33 nagiosql
  • nagiosQL移至nagios的目錄下/usr/local/nagios/share/
  1. sudo mv /opt/nagiosql /usr/local/nagios/share/
  • 建立nagiosQL匯出nagios配置檔案的目錄並修改許可權;
  1. sudo mkdir -p /etc/nagiosql/{hosts,services,backup/{,hosts,services},import}
  2. sudo chown -R www-data:nagios /etc/nagiosql/
  3. sudo chmod -R 755 /etc/nagiosql
  4. sudo chmod 777 /usr/local/nagios/share/nagiosql/config
  • nagios相關檔案許可權的設定;
  1. sudo chown nagios:www-data /usr/local/nagios/etc
  2. sudo chown nagios:www-data /usr/local/nagios/etc/{nagios.cfg,cgi.cfg}
  3. sudo chown nagios:www-data /usr/local/nagios/etc/*
  4. sudo chmod 755 /usr/local/nagios/etc/{nagios.cfg,cgi.cfg}
  5. sudo chmod 775 /usr/local/nagios/etc
  • 設定nagios二進位制檔案的許可權,以便其能夠通過Web程式執行;
  1. sudo chown nagios:www-data /usr/local/nagios/bin/nagios
  2. sudo chmod 750 /usr/local/nagios/bin/nagios
  3. sudo chown -R www-data:nagios /usr/local/nagios/var/spool/
  4. sudo chown nagios:www-data /usr/local/nagios/var/rw/nagios.cmd
  5. sudo chmod 660 /usr/local/nagios/var/rw/nagios.cmd

0x04 下載 MySQL資料庫 (由於NagiosQL預設使用MySQL資料庫),在安裝過程中需要設定MySQL的root使用者的密碼

可參考MySQL官方文件:

https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

  1. sudo apt-get install mysql-server

0x05 安裝PHP的 ssh2 外掛

  1. sudo apt-get install libssh2-1-dev
  2. sudo apt-get install libssh2-php

如果沒有安裝,則會在後面步驟的前端頁面配置過程中,顯示ssh2沒有安裝,如下圖所示:

0x06 安裝 php 連線 MySQL 的外掛

  1. sudo apt-get install -y php5-mysql
  • 修改php的配置檔案中php.ini的時區;
  1. sudo vim /etc/php5/fpm/php.ini
  2. # 在php.ini配置檔案中找到date.timezone=,將其修改為如下所示即可:
  3. date.timezone = Asia/Shanghai

4. 配置NagiosQL的前端頁面

  • 在瀏覽器中輸入URL,訪問nagiosQL前端頁面,(由於是完成雨林木風12臺伺服器的硬體監控後,再編寫的文件;所以一些圖片均是後期補充,存在IP地址可能與不對應的情況,若在實際操作過程中,輸入伺服器的IP地址即可);

  • 檢查安裝前的需求:

  • 配置MySQL資料庫和nagiosQL前端登入賬號:

  • 刪除nagiosQL安裝目錄:

  1. sudo chmod 000 /usr/local/nagios/share/nagiosql/install
  • 進入NagiosQL的登入介面;

注意:此時 NagiosQL 的訪問的埠為 8080,由於在前面配置 Nagios 的訪問埠時,已直接將NagiosQL的也一起配置了。

  • 將nagiosQL的配置檔案填入到nagios的主配置檔案(/usr/local/nagios/etc/nagios.conf)中(先註釋掉原配置檔案中的cfg_dir開頭的行):
  1. cfg_file=/usr/local/nagios/share/nagiosql/commands.cfg
  2. cfg_file=/usr/local/nagios/share/nagiosql/contactgroups.cfg
  3. cfg_file=/usr/local/nagios/share/nagiosql/contacts.cfg
  4. cfg_file=/usr/local/nagios/share/nagiosql/contacttemplates.cfg
  5. cfg_file=/usr/local/nagios/share/nagiosql/hostdependencies.cfg
  6. cfg_file=/usr/local/nagios/share/nagiosql/hostescalations.cfg
  7. cfg_file=/usr/local/nagios/share/nagiosql/hostextinfo.cfg
  8. cfg_file=/usr/local/nagios/share/nagiosql/hostgroups.cfg
  9. cfg_file=/usr/local/nagios/share/nagiosql/hosttemplates.cfg
  10. cfg_file=/usr/local/nagios/share/nagiosql/servicedependencies.cfg
  11. cfg_file=/usr/local/nagios/share/nagiosql/serviceescalations.cfg
  12. cfg_file=/usr/local/nagios/share/nagiosql/serviceextinfo.cfg
  13. cfg_file=/usr/local/nagios/share/nagiosql/servicegroups.cfg
  14. cfg_file=/usr/local/nagios/share/nagiosql/servicetemplates.cfg
  15. cfg_file=/usr/local/nagios/share/nagiosql/timeperiods.cfg
  16. cfg_dir=/usr/local/nagios/share/nagiosql/etc/hosts/
  17. cfg_dir=/usr/local/nagios/share/nagiosql/etc/services/

  • 設定配置檔案路徑;

  • 根據實際配置,修改相關路徑:

一定要按照安裝時配置檔案所在的目錄填寫,否則匯入配置檔案失敗

  • 修改完後點擊Save(儲存):

  • 將配置檔案匯入資料庫中:

  • 寫入 Naiogs 配置檔案,重啟 Nagios:

注意:每次新增完主機或新增完服務,均需先執行第1、2、3、4步,即先檢查配置檔案、再重啟nagios,否則新增項不會生效。