CentOS7搭建nagios監控+配置+mutt+msmtp郵件報警

上篇說了Linux6.7系統安裝nagios監控,這篇說一下linux7系統如何安裝。
linux7系統個別命令不同,但大體的流程是相同的。在這裏還是測試環境:
監控主機:CentOS7系統,IP:192.168.1.191
被監控主機:windows server 2008系統並安裝了tomcat,IP:192.168.1.170(tomcat使用的是8080端口)
使用的安裝包還是之前的幾個:
nagios4.0.8,msmtp,和pnp4nagios-0.6.25版本
https://pan.baidu.com/s/1oqairzkmInIFXdEvEBOa4A%20#list/path=%2F
一、nagios運行環境
因爲是測試環境,首先將selinux和防火牆都關掉了:
linux7裏,防火牆叫做firewall

systemctl stop firewalld
systemctl disable firewalld
selinux關閉的話,修改配置文件:
vim /etc/selinux/config
將SELINUX=enforcing改成:
SELINUX=disabled

修改之後需要重啓電腦以使剛剛的設置生效:
reboot
重啓之後首先開始配置nagios的運行環境:

yum install gcc http php glibc glibc-common gd gd-devel -y

創建一個用戶(我這裏使用的是nagios這個用戶,如果創建別的用戶名,記得之後的地方要相應修改):
useradd nagios -s /sbin/nalogin
-s是禁止這個用戶登錄shell
二、nagios安裝
因爲我之前的安裝包在另一臺linux6.7虛擬機裏,我就直接scp到這臺CentOS裏了:
scp [email protected]:/opt/Nagios.zip /opt
scp [email protected]:/opt/pnp4nagios-0.6.25.tar.gz /opt
scp [email protected]:/opt/msmtp-1.4.32.tar /opt
會彈出提示讓你輸入yes/no,這裏直接輸入yes然後輸入192.168.1.184那臺linux主機的密碼:123456
解壓安裝包:
cd /opt
unzip Nagios.zip
如果沒有unzip這個工具,請直接yum:
yum install unzip -y
cd Nagios/nagios-4.0.8
./configure –prefix=/usr/local/nagios
編譯以及初始化:(其實你在make install執行之後,可以在最後幾行看到後面make install-init等等的提示)
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
這裏寫圖片描述
創建登錄nagios登錄時的驗證信息(用戶名及密碼):
htpasswd -cm /usr/local/nagios/etc/htpasswd.users nagios
我這裏設置的密碼是123456
htpappwd命令的參數:
-c 創建passwdfile.如果passwdfile 已經存在,那麼它會重新寫入並刪去原有內容.
-n 不更新passwordfile,直接顯示密碼
-m 使用MD5加密(默認)
-d 使用CRYPT加密(默認)
-p 使用普通文本格式的密碼
-s 使用SHA加密
-b 命令行中一併輸入用戶名和密碼而不是根據提示輸入密碼,可以看見明文,不需要交互
-D 刪除指定的用戶
修改httpd配置文件:
vim /etc/httpd/conf/httpd.conf
將用戶和組修改:
User apache
Group apache
改爲:
User nagios
Group apache
因爲nagios默認是給了nagiosadmin這個用戶最大的權限,我們創建的既然不是nagiosadmin這個用戶名,那麼肯定要進行修改,所以修改cgi配置文件:
vim /usr/local/nagios/etc/cgi.cfg
將nagiosadmin替換成nagios
%s/nagiosadmin/nagios/g
這樣的話,nagios用戶就擁有最大的權限了,如果你創建的不是nagios這個用戶名,請相應的進行修改成你創建的用戶名。
重啓nagios
/etc/init.d/nagios restart
nagios官網上提供了一種可以檢測你的配置文件是否正確的方法:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
最後幾行中:
Total Errors:0
錯誤爲0,說明配置文件是沒有問題的。
這裏寫圖片描述
此時我嘗試在瀏覽器輸入192.168.1.191/nagios,輸入驗證信息:
magios
123456
登錄成功
host顯示是灰色而且狀態status顯示是PENDING,不用太擔心,這個是等待同步連接中,稍後刷新一下網頁或者等待一會就會同步完成自動刷新。
這裏寫圖片描述
如果此時你發現主機是DOWN的狀態,也不要着急,因爲你的插件包還沒有安裝,有些命令還無法被執行。插件包在剛剛的Nagios.zip中。
三、nagios插件的安裝
進入解壓之後的文件裏:
cd /opt/Nagios/nagios_software
tar fx nagios-plugins-2.0.3.tar
cd nagios-plugins-2.0.3
指定安裝之後的所有者和所屬組:
./configure –with-nagios-user=nagios –with-nagios-group=nagios
編譯:
make && make install
此時返回到nagios界面,等待一會就看到Localhost的狀態變成了綠色的up
四、nagios圖形pnp4nagios的安裝與配置
此時nagios的主配置已經基本完成,可以正常工作。但是nagios裏沒有圖形信息,如果想要使用這個功能,需要藉助另一個工具:
pnp4nagios-0.6.25.tar.gz
cd /opt
tar fx pnp4nagios-0.6.25.tar.gz
./configure –with-nagios-user=nagios –with-nagios-group=nagios
這裏可能會報錯:
configure: error: is a directory! PNP needs the Path to the rrdtool binary!
如果是這個錯誤的話,是因爲缺少了pnp4nagios的環境包,我們使用yum安裝一下:
yum install rrdtool librrds-perl -y
再次執行:
./configure –with-nagios-user=nagios –with-nagios-group=nagios
make all
make install
make install-webconf
make install-config
make install-init
cd ./sample-config/
make install-webconf
後面這兩條命令執行之後,是自動更改了兩個文件的權限。
install 選項:
-C, –compare 比較每組源文件和目標文件,在一些情況下不修改目標文件
-d, –directory 將所有參數視爲目錄名稱;爲指定的目錄創建所有組件
-m, –mode=模式 自行設置權限模式(像chmod),而不是rwxr-xr-x
然後配置pnp4nagios文件:
cd /usr/local/pnp4nagios/etc/
把一些以sample(樣品)結尾的文件中的-sample都去掉,可以用mv命令或者想要留個備份的話就用cp -p命令,例如:
mv misccommands.cfg-sample misccommands.cfg
cp -p nagios.cfg-sample nagios.cfg(-p是不改變文件屬性,權限等)
一共3個帶有-sample字樣的文件,misccommands.cfg-sample、rra.cfg-sample、nagios.cfg-sample
全都將後綴去掉之後進入另一個目錄
cd /usr/local/pnp4nagios/etc/check_commands
將這個目錄中的-sample結尾的文件也同樣去掉-sample
check_all_local_disks.cfg-sample——check_all_local_disks.cfg
check_nrpe.cfg-sample———-check_nrpe.cfg
check_nwstat.cfg-sample——-check_nwstat.cfg
啓動服務:
/etc/init.d/npcd start
設置開機啓動:
chkconfig npcd on
之後需要配置mulk模式,這裏在pnp4nagios官網上有配置的詳解,

https://docs.pnp4nagios.org/pnp-0.6/config#bulk_mode%EF%BC%9A

這裏僅作爲一個對官網的引用:
在這裏,我們僅需要參考這個官網網頁中的Bulk Mode這個模塊的內容:
修改nagios.cfg這個配置文件:
vim /usr/local/nagios/etc/nagios.cfg
將process_performance_data=0修改爲:
process_performance_data=1
之後將這段話添加進去:
#

service performance data

#
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::TIMET \tHOSTNAME::HOSTNAME \tSERVICEDESC::SERVICEDESC \tSERVICEPERFDATA::SERVICEPERFDATA \tSERVICECHECKCOMMAND::SERVICECHECKCOMMAND \tHOSTSTATE::HOSTSTATE \tHOSTSTATETYPE::HOSTSTATETYPE \tSERVICESTATE::SERVICESTATE \tSERVICESTATETYPE::SERVICESTATETYPE
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file

#

host performance data starting with Nagios 3.0

host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::TIMET \tHOSTNAME::HOSTNAME \tHOSTPERFDATA::HOSTPERFDATA \tHOSTCHECKCOMMAND::HOSTCHECKCOMMAND \tHOSTSTATE::HOSTSTATE \tHOSTSTATETYPE::HOSTSTATETYPE
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file

然後修改commands.cfg這個配置文件:
vim /usr/local/nagios/etc/objects/commands.cfg
添加這兩個命令的定義:
define command{

  command_name    process-service-perfdata-file

  command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata

}

define command{

  command_name    process-host-perfdata-file

  command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata

}
在nagios模板文件中添加圖形化模板:
vim /usr/local/nagios/etc/objects/templates.cfg
define host {

name host-pnp

action_url /pnp4nagios/index.php/graph?host=HOSTNAME &srv=HOST

register 0

}

define service {

name service-pnp

action_url /pnp4nagios/index.php/graph?host=HOSTNAME &srv=SERVICEDESC

register 0

}
此時修改完成了,如果要調用這個模板的話,需要在localhost.cfg文件中定義修改
因爲之後會比較多的修改這個文件,所以,我這裏將localhost.cfg文件備份之後去掉空行和註釋行,看的比較直觀一些:
備份:
cd /usr/local/nagios/etc/objects/
cp -p localhost.cfg localhost.cfg.bak
去空行和註釋:
sed -i ‘/^#.*|^$/d’ localhost.cfg
修改localhost.cfg,在想要圖形顯示的那個模塊上添加調用相應的模塊就可以了。例如:
vim /usr/local/nagios/etc/objects/localhost.cfg
define host{
use linux-server,host-pnp

    host_name               localhost
    alias                   localhost
    address                 127.0.0.1
    }

define service{
use local-service,service-pnp
host_name localhost
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
這裏要注意的一點是,如果你定義的是主機模塊,那麼用的是host-pnp,如果是服務模塊,用的service-pnp,相互對應,不要弄錯。想要哪個模塊有圖形化的效果,就在哪個模塊相應的調用host-pnp或者service-pnp即可。

重啓apache服務和nagios服務
systemctl restart httpd.service
systemctl restart nagios
然後回到192.168.1.191/nagios登錄界面,刷新一下,在新出現的主機上發現了一個網格狀的小圖標:
這裏寫圖片描述
點開這個圖標,會顯示
這裏寫圖片描述
這裏如果的你這個界面顯示全是綠色的是表示正常,我這裏有一個紅色的,顯示php-gd庫沒有調用,排查之後發現是權限不足,所以這裏修改了一下session的權限:
chown nagios:nagios /var/lib/php/session
之後重啓apache,
systemctl restart httpd
刷新界面,再次點擊網格狀小圖標,全都是綠色,表示正常。
然後刪除這個檢查界面:
rm -rf /usr/local/pnp4nagios/share/install.php
再次點擊這個網格小圖標顯示:
這裏寫圖片描述
到此pnp安裝完成
五、監控指定的端口
修改配置文件監控別的端口(這裏以8080端口爲例),我要檢測另一臺機器上的tomcat正常運行,IP:192.168.1.170:8080
因爲nagios的命令裏沒有監控8080的模板,所以需要自己定義一下。
vim //usr/local/nagios/etc/objects/commands.cfg在最後添加下面的內容:
define command{
command_name check_port8080
command_line USER1 /check_tcp -H HOSTADDRESS -p 8080 ARG2
}
修改localhost.cfg文件添加監控主機和監控服務:
vim /usr/local/nagios/etc/objects/localhost.cfg,添加內容:

define host{
        host_name               text_1.170          ##要監控的主機名,可以隨便取,不過最好是方便自己管理的
        alias                   win2008-tomcat      ##取別名,隨便取
        address                 192.168.1.170       ##監控主機的IP地址
        check_command           check-host-alive    ##調用的命令是檢查主機是否存活,在commands.cfg裏有定義這個命令
        check_period            24x7                ##時間是7x24小時監控
        check_interval          1                   ##間隔時間(分)根據自己需求寫,我寫1是比較快的檢查出效果,實際環境比較耗費資源
        max_check_attempts      1                   ##最大嘗試次數
        contact_groups          admins              ##所屬組
        notification_period     24x7                ##通知時間
        notification_options    d,u,r               ##監控哪些狀態
        notification_interval   60                  ##通知間隔
}
define service{
        host_name               text_1.170          ##監控哪臺機器上的服務,這個一定要對應好上面的主機名
        service_description     8080port            ##服務的描述
        check_command           check_port8080         ##調用的哪個命令
        check_period            24x7                ##
        check_interval          1
        retry_check_interval    1
        max_check_attempts      1
        contact_groups          admins
        notification_period     24x7
        notification_options    w,c,u,r
        notification_interval   60
}

上面的文件中監控狀態有:
0 綠色 正常 r
1 黃色 一般警告 w
2 紅色 嚴重警告 c
3 橘紅 未知情況 u
複製以上命令時請去掉##註釋後面的說明,否則會報錯。
重啓nagios
systemctl restart nagios
返回nagios界面裏看到已經出現了新增的監控主機和監控的服務,如果是灰色的,不要着急,等一會刷新界面就好了。
監控別的服務或者端口也可以使用這種方式在這裏定義,但是如果監控主機的資源,最好還是跟nrpe結合,比較方便。

六、msmtp郵件報警
我使用的還是msmtp+mutt來實現的。
cd /opt
bzip2 -d msmtp-1.4.32.tar.bz2
如果沒有bzip2解壓工具,請yum:
yum install bzip2 -y
然後
tar fx msmtp-1.4.32.tar
cd msmtp-1.4.32
./configure –prefix=/usr/local//msmtp(這裏還是指定了目錄,大家可以自行設置安裝路徑,或直接./configure)
編譯安裝:
make && make install
安裝mutt功能:
yum install mutt -y
會在/etc下自動生成一個Muttrc的文件,編輯這個文件,添加3行到文件末尾:
vim /etc/Muttrc
set from=”郵箱地址”
set realname=”nagios”
set sendmail=”/usr/local/bin/msmtp”
以阿里雲郵箱爲例:
set from=”*@aliyun.com”
set realname=”nagios”
set sendmail=”/usr/local/bin/msmtp”(這個路徑是我安裝msmtp之後的路徑,如果是安裝在別的路徑下,這個寫成msmtp二進制文件所在的路徑)
在msmtp的安裝路徑 創建一個目錄etc
mkdir /usr/local/msmtp/etc
在這個目錄裏創建一個文件:
vim /usr/local/msmtp/etc/msmtprc並插入一下內容:
account default
host smtp.aliyun.com
port 25
from ***@aliyun.com
tls off
auth login
user ***@aliyun.com
password **
logfile /tmp/msmtp.log
其中的兩個郵箱是相同的,密碼是你的郵箱登錄密碼。
保存之後,如果覺得這個密碼是明文的,不安全,可以更改一下權限:
chmod 600 /usr/local/msmtp/etc/msmtprc
然後把這個文件更改所有者和所屬組:
chown nagios:nagios /usr/local/msmtp/etc/msmtprc
測試郵件發送:
echo “This is a test mail” | mutt -s ‘Test’ *@aliyun.com
如果郵箱有收到,那麼就可以修改nagios的部分文件了。
vim /usr/local/nagios/etc/objects/contacts.cfg
將第34行的email後面的nagios@localhost修改成你的郵箱(多個郵箱用英文逗號隔開):

define contact{
         contact_name                    nagiosadmin          
        use                             generic-contact        
         alias                           Nagios Admin           

         email                           ********@aliyun.com      
        }

查看一下mutt命令所在的路徑:
which mutt
顯示是在:
/usr/bin/mutt
修改commands.cfg文件:
vim /usr/local/nagios/etc/objects/commands.cfg
將第29行和第35行的/bin/mail替換成//usr/bin/mutt
重啓nagios
systemctl restart nagios
關閉開啓幾次192.168.1.170中的tomcat進行測試
如果監控界面跳出一個his service is flapping between states的字樣通知,這是nagios的抖動檢測對某一個服務經常開啓關閉的提示,如果不想看到這個提示,可以修改nagios.cfg文件:
vim /usr/local/nagios/etc/nagios.cfg
將enable_flap_detection=1修改爲
enable_flap_detection=0
即可。
以上就是本次的安裝教程,其實跟linux6安裝的區別不大,理解之後再去做,就簡單很多。希望一起共同進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章