URL:https://support.nagios.com/kb/article/nagios-core-installing-nagios-core-from-source-96.html#RHEL
1.下載nagios-4.4.2.tar.gz
2.yum install gcc glibc glibc-common wget unzip httpd php gd gd-devel perl postfix
No package gd-devel available.
下載gd-devel
https://centos.pkgs.org/6/centos-x86_64/gd-devel-2.0.35-11.el6.x86_64.rpm.html
[root@ChrisTest downloads]# rpm -ivh gd-devel-2.0.35-11.el6.x86_64.rpm
error: Failed dependencies:
fontconfig-devel is needed by gd-devel-2.0.35-11.el6.x86_64
[root@ChrisTest downloads]# yum install fontconfig-devel freetype-devel libX11-devel libXpm-devel libgd.so.2 libjpeg-devel libpng-devel pkgconfig zlib-devel
依賴包都安裝完畢後,再次安裝gd-devel
[root@ChrisTest downloads]# rpm -ivh gd-devel-2.0.35-11.el6.x86_64.rpm
package gd-devel-2.0.35-11.el6.x86_64 is already installed
此時可以繼續安裝nagios-core了。
3.解壓,安裝
[root@ChrisTest downloads]# tar zxvf nagios-4.4.2.tar.gz
[root@ChrisTest downloads]# cd nagios-4.4.2
[root@ChrisTest nagios-4.4.2]# ./configure
[root@ChrisTest nagios-4.4.2]# make all
4.Create User And Group
[root@ChrisTest nagios-4.4.2]# make install-groups-users
groupadd -r nagios
useradd -g nagios nagios
5.Install Binaries
[root@ChrisTest nagios-4.4.2]# make install
6.Install Service / Daemon
[root@ChrisTest nagios-4.4.2]# make install-daemoninit
httpd自啓動由於已經設置完畢,這裏就不重複設定了。
7.Install Command Mode
[root@ChrisTest nagios-4.4.2]# make install-commandmode
8.Install Configuration Files
[root@ChrisTest nagios-4.4.2]# make install-config
9.Install Apache Config Files
[root@ChrisTest nagios-4.4.2]# make install-webconf
10.Configure Firewall
防火牆80端口已經放行。所以這裏就不配置了。
否則配置以下命令(RHEL6)
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
service iptables save
ip6tables -I INPUT -p tcp --destination-port 80 -j ACCEPT
service ip6tables save
11.Create nagiosadmin User Account
[root@ChrisTest nagios-4.4.2]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
12.啓動服務
[root@ChrisTest nagios-4.4.2]# /etc/init.d/nagios start
Starting nagios: Running configuration check... done.
13.此時遇到一個問題,由於我設定了兩個VirtualHost,貌似現在無法使用http://IP/nagios或是http://IP:8080/nagios進行訪問。
首先確認/etc/httpd/conf/httpd.conf裏,
LoadModule cgi_module modules/mod_cgi.so被開啓。
然後發現是沒有重啓Httpd服務導致的。重啓後就能正常訪問nagios頁面了。
需要注意的是,彈出的需要輸入用戶名和密碼的框,是輸入剛纔設定的nagiosadmin和他的密碼。
不要輸入成自己設定的http基礎認證了。
而且經過測試,不論是80端口還是8080端口,只要開放了的端口都可以被用作nagios的訪問端口
URL:http://blog.51cto.com/jianye/1364716
14.接下來安裝Nagios Plugin
下載 nagios-plugins-2.2.1.tar.gz(錯誤!)這裏注意要下載的是nagios-plugins-release-2.2.1。否則後面的./tools/setup不存在。
[root@ChrisTest downloads]# tar zxvf nagios-plugins-release-2.2.1.tar.gz
[root@ChrisTest nagios-plugins-2.2.1]# yum install gcc glibc glibc-common make gettext automake wget openssl-devel net-snmp net-snmp-utils epel-release
全都已經安裝。
無網絡環境下,千萬不要按照官方文檔安裝epel-release-latest-6.noarch.rpm。否則自建的光盤repo會爆炸。
[root@ChrisTest nagios-plugins-2.2.1]# yum install -y perl-Net-SNMP
No package perl-Net-SNMP available.
URL:https://centos.pkgs.org/6/repoforge-i386/perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch.rpm.html
perl(Net::SNMP) = perl-Net-SNMP
這安裝perl-Net-SNMP遇到了問題。在沒有網絡的情況下,好像沒法簡單的用perl來安裝Net-SNMP。
下載perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch.rpm
[root@ChrisTest downloads]# rpm -ivh perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch.rpm
error: Failed dependencies:
perl(Crypt::DES) is needed by perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch
perl(Digest::HMAC) is needed by perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch
perl(Digest::SHA1) is needed by perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch
perl(Socket6) >= 0.19 is needed by perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch
下載並安裝依賴包
[root@ChrisTest downloads]# rpm -ivh perl-Crypt-DES-2.05-3.2.el6.rf.x86_64.rpm
[root@ChrisTest downloads]# rpm -ivh perl-Digest-SHA1-2.12-2.el6.x86_64.rpm
[root@ChrisTest downloads]# rpm -ivh perl-Digest-HMAC-1.01-22.el6.noarch.rpm
[root@ChrisTest downloads]# rpm -ivh perl-Socket6-0.23-4.el6.x86_64.rpm
再安裝perl-Net-SNMP
[root@ChrisTest downloads]# rpm -ivh perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch.rpm
warning: perl-Net-SNMP-5.2.0-1.2.el6.rf.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
Preparing... ########################################### [100%]
1:perl-Net-SNMP ########################################### [100%]
成功了。
15.繼續安裝Nagios-Plugin
[root@ChrisTest downloads]# cd nagios-plugins-release-2.2.1
[root@ChrisTest nagios-plugins-release-2.2.1]# ./tools/setup
[root@ChrisTest nagios-plugins-release-2.2.1]# ./configure
[root@ChrisTest nagios-plugins-release-2.2.1]# make
[root@ChrisTest nagios-plugins-release-2.2.1]# make install
經驗證,現在nagios裏的localhost已經up了。
16.添加開機自啓動
[root@ChrisTest nagios-plugins-release-2.2.1]# chkconfig --add nagios
[root@ChrisTest nagios-plugins-release-2.2.1]# chkconfig --level 2345 nagios on
檢測監控配置是否有錯誤。
[root@ChrisTest nagios-plugins-release-2.2.1]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
17.命令行測試nagios插件的可用性
[root@ChrisTest ~]# /usr/local/nagios/libexec/check_ping -H 10.116.6.193 -w 3000.0,80% -c 5000.0,100% -p 5
PING OK - Packet loss = 0%, RTA = 31.18 ms|rta=31.181999ms;3000.000000;5000.000000;0.000000 pl=0%;80;100;0
18.修改contact信息
[root@ChrisTest etc]# vi objects/contacts.cfg
email [email protected] ;
19.複製一個windows模板出來
[root@ChrisTest objects]# cp windows.cfg windows.cfg.bak
[root@ChrisTest objects]# vi windows.cfg
修改定義Host。
define host {
use windows-server ; Inherit default values from a template
host_name CyberArk ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 10.116.6.193 ; IP address of the host(這裏修改IP)
}
另外記得把下面默認定義的所有針對Windows的Service模板裏的host_name全部註釋掉,並且都增加一行"hostgroup_name windows-servers ;"
否則配置文件會出錯。
並添加如下Ping的服務,這個在windows裏沒有,但其實也可以不定義。因爲默認在網頁的Host裏就是對PING的驗證了。
##################Added by Chris###################
Define a service to "ping" the local machine
define service {
use generic-service ; Name of service template to use
host_name winserver
hostgroup_name windows-servers ; The name of the hostgroup
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
##################Added by Chris###################
但是重啓nagios後還是沒有,這是因爲除了localhost外,默認其他模板不生效.
需要到nagios.cfg裏去取掉#註釋。
[root@ChrisTest objects]# vi ../nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
注意在重啓服務前,記得用這個命令先驗證一下配置文件。
[root@ChrisTest objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
[root@ChrisTest objects]# /etc/init.d/nagios restart
20.發現包括C盤空間監控的一系列服務拒絕連接。
connect to address 10.116.6.193 and port 12489: 拒絕連接
原因是,這些命令是採用NRPE,NSClient等第三方agent區實現監控的。
我想用SNMP實現,所以需要在Nagios服務器上新增監控用的插件。
URL:http://nagios.manubulon.com/snmp_windows.html
點開download鏈接,是一段perl腳本。
直接到本地Libexec文件夾,設定755屬性保存。發現執行./check_snmp_windows.pl -h沒反應。
URL:https://blog.csdn.net/winsonyuan/article/details/54863667
[root@ChrisTest libexec]# yum install perl*
再次執行pl腳本還是不執行,我發現一個問題,腳本內容由於直接從網上複製下來的,好像格式之間沒有換行。也許是這個原因?
於是我右鍵保存目標target,下載下來是一個htm文件,用word打開,發現裏面的格式是正確的,修改後綴名爲pl後,最後用rz複製到linux系統上。
我下載的是這個:
URL: http://nagios.manubulon.com/snmp_windows.html
[root@ChrisTest libexec]# chmod 755 check_snmp_win.pl
果然就可以執行了!
[root@ChrisTest libexec]# ./check_snmp_win.pl -H 10.116.6.193 -C public -n HTTP -N 2
1 services active (matching "HTTP") : CRITICAL
[root@ChrisTest libexec]# ./check_snmp_win.pl -H 10.116.6.193 -C public -n dns
1 services active (matching "dns") : OK
Linux系統不行,因爲這個pl本身就是針對windows的。
並且需要注意,在頁面上已經說明了,這個pl只能用於snmpv1,v3,不支持v2。所以在操作前,先驗證v1的可用性。
[root@ChrisTest libexec]# snmpwalk -v2c -c public 10.116.6.193
這個頁面可以參考配置define command,service,
URL:http://nagios.manubulon.com/index_commands.html#windows
[root@ChrisTest libexec]# vi ../etc/objects/commands.cfg
加入以下這段。
define command {
command_name check_win
command_line $USER1$/check_snmp_win.pl -H $HOSTADDRESS$ -C $USER7$ -n $ARG1$
comment community service(s) name
}
[root@ChrisTest objects]# vi windows.cfg
加入以下這段。
define service {
use generic-service
hostgroup_name windows-servers ; The name of the hostgroup
service_description HTTP service
check_command check_win!http
}
注意,按照URL中的文檔添加會出錯,我們還是要參考當前環境進行設置。
[root@ChrisTest objects]# /etc/init.d/nagios restart
然而此時Status Information顯示Put snmp login info!
檢查commands.cfg 發現裏面有個$USER7$,不僅在前面漏了-C, 這個是用來定義Community的。目前還沒在resource.cfg裏定義。
command_line $USER1$/check_snmp_win.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$
[root@ChrisTest etc]# vi resource.cfg
Sets $USER7$ to be the SNMP community name
$USER7$=public
}
然後重啓服務,一切恢復正常。
21.接下來配置check_snmp_storage.pl,用來監控windows的磁盤空間
同樣的方法,複製到libexec目錄,賦予755權限.
然後,網頁文檔裏沒有描述如何監控windows磁盤.但是在script -h裏有。
Browse storage list : <script> -C <community> -H <host> -m <anything> -w 1 -c 2 -v
the -m option allows regexp in perl format :
Test drive C,F,G,H,I on Windows : -m ^[CFGHI]:
看到這段文字。
[root@ChrisTest libexec]# ./check_snmp_storage.pl -C public -H 10.116.6.193 -m ^[CD]: -w 1 -c 2 -v
這條命令可以成功執行。
根據這條語句,可以想象出定義的command爲:
[root@ChrisTest objects]# vi commands.cfg
define command {
command_name check_snmp_stor
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ -m $ARG2$ -w $ARG3$ -c $ARG4$
}
[root@ChrisTest objects]# vi windows.cfg
define service {
use generic-service
hostgroup_name windows-servers ; The name of the hostgroup
service_description C:\ Disk Space
check_command check_snmp_stor!public!C:!70!90
}
22.接着監控進程
下載check_snmp_process.pl。修改權限755複製到libexec目錄下。
check_snmp_process.pl
[root@ChrisTest libexec]# ./check_snmp_process.pl -C SMBC -H 10.116.6.193 -n CAPSM.exe -v
1 process matching CAPSM.exe (> 0)
[root@ChrisTest objects]# vi commands.cfg
define command{
command_name check_snmp_process_v1
command_line $USER1$/check_snmp_process.pl -C $ARG1$ -H $HOSTADDRESS$ -n $ARG2$ -w $ARG3$ -c $ARG4$
}
ARG1 : community
ARG2 : regexp of process name
ARG3 : warning level(s)
ARG4 : critical level(s)
[root@ChrisTest objects]# vi windows.cfg
define service {
use generic-service
hostgroup_name windows-servers ; The name of the hostgroup
service_description AppProvider.exe
check_command check_snmp_process_v1!public!"AppProvider.exe"!0!0
}
重啓服務後查看效果。
經過驗證,如果warning和critical都設置爲0,則會報critical而不是warning.
check_command check_snmp_process_v1!public!"PsExec.exe"!0!0
23.郵件發送設置
[root@ChrisTest objects]# yum install sendmail
[root@ChrisTest objects]# /etc/init.d/sendmail start
[root@ChrisTest objects]# echo "test" | mail [email protected]
停了防火牆和selinux後還是收不到。
查看日誌,發現原來是因爲那是個外部郵箱。而我的server是局域網的。
這當然收不到了。