CentOS 7 安裝NAGIOS 4


安裝的環境是用CentOS 7 的最小安裝
另外還有其它相關的 Nagios 文章 :
Nagios的相關知識
Nagios的各個物件參數


整個安裝流程分成

  • 安裝Nagios主程式
  • 安裝Nagios Plugin
  • 安裝NRPE,分成遠端和Nagios主機
  • 安裝NSClient++
  • 安裝Nconf,這步驟不一定要做



軟體的功能大致如下 :
1.      Nagios主程式 包含網頁介面和各種插件的排程功能
2.      Nagios Plugin – Nagios內建的插件,一定要安裝
3.      NRPE – 操控遠端電腦執行事先定義好的插件,並把資料回傳
4.      NSClinet++ - 通常用在Windows身上,可以監控Windows的資源
5.      Nconf – 用網頁介面就可以設定各種不同的物件,省去用VI修改文件的過程


一般自行編譯完的Nagios程式會放在 /usr/local/nagios/



安裝Nagios主程式

大略步驟如下 :
l   安裝前的前置作業-新增User、安裝套件
l   下載並解壓縮Nagios原始檔
l   製作出設定檔並編譯原始檔
l   製作各個需要的元件
l   啟動Nagios服務並設定開機啟動
l   建立預設的Nagios WEB登入帳號



安裝前的前置作業
安裝套件
yum install wget httpd php glibc glibc-common gd gd-devel make net-snmp unzip openssl-devel gcc

wget 指令模式的WEB瀏覽器,主要用來下載檔案
httpd就是WEB伺服器
php PHP程式語言
glibc C語言的函示庫
net-snmp SNMP伺服器和相關工具,可以使用SNMP來抓取其它伺服器的資料
openssl-devel是為了安裝NRPE所需要使用的套件
unzip 用來解開ZIP壓縮檔
gccC語言的編譯軟體



新增User
預設Nagios程式和附屬軟體會使用nagios作為使用者帳號和群組
但是官方的教學網站上特別把執行指令的群組額外設定成nagcmd,沿用官方的方法會在某些地方出問題
例如執行外部檔案的時候會使用到nagcmd群組,但是預設的Nagios全部的檔案都是nagios群組,而執行外部檔案是用apache這個使用者去執行,就會造成權限不足
其中一個例子是WEB介面的主機註解功能


底下是官方的方法
useradd nagios -p nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache



建議用這個,不要額外建立nagcmd群組,如果考量到安全性可以用官方的方法
useradd nagios -p nagios
usermod -a -G nagios apache



下載NAGIOS主程式
NAGIOS主要是用C語言寫成

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.4.tar.gz
tar zxvf nagios-4.2.4.tar.gz
cd nagios-4.2.4



製作出設定檔並編譯原始檔

使用./configure -h,會顯示全部可用的設定方式
這邊照官方的方式,額外將執行腳本的群組設成nagcmd (預設是nagios)
設定檔編好後,會顯示相關設定,如果無誤就可以開始安裝


底下是官方的方法
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf



建議用這個指令,如有安全性的考量,可用官方的方法
./configure
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf



其它設定
設定註解的權限 (非必要,只有照官方的操作才要設定)
chown :nagcmd -R /usr/local/nagios/var/rw


新版Nagios把3D MAP (statuswrl CGI)的連結移掉,如果想要看到可以修改side.php
設定完後還要安裝可以觀看VRML的軟體,如 Cortona3D
(http://www.cortona3d.com/cortona3d-viewer-download)

vi /usr/local/nagios/share/side.php

大約在42行差入一行底下的指令

<li><a href="<?php echo $cfg["cgi_base_url"];?>/statuswrl.cgi" target="<?php echo $link_target;?>">3D Map</a></li>






安裝Nagios Plugin

Nagios PluginNagios內建的插件,如果沒有安裝就要自己寫script去抓取和監控伺服器,步驟與安裝Nagios主程式類似



安裝步驟 :
l   安裝前的前置作業-安裝套件
l   下載並解壓縮Nagios Plugin原始檔
l   製作出設定檔並編譯原始檔
l   設定系統時間



安裝前的前置作業-安裝套件
不安裝底下的套件也可以正常製作完成設定檔,但是會有部分Nagios Plugin檔案不會安裝,因為沒有相關的函式可以使用,因此要先安裝相關的函式
儘管裝完底下的套件仍有部分的檔案會安裝失敗,但因不常使用就沒有追究
如需了解還差那些套件,可以看相同資料夾下的REQUIREMENTS文件或觀看./configure所產出的紀錄

有一個套件需要先安裝epel延伸套件才能安裝
第一行是安裝epel延伸套件
第二行是安裝Perl語言的snmp函數,這個套件要有epel才能安裝
第三行是安裝剩下的其他套件

yum install epel-release
yum install perl-Net-SNMP

yum install openssl-devel radiusclient-ng-devel libdbi libdbi-devel samba-devel libsmbclient-devel samba-client net-snmp-devel net-snmp-utils gnutls-devel openldap-devel postgresql-devel




下載並解壓縮Nagios Plugin原始檔
cd ~
wget https://nagios-plugins.org/download/nagios-plugins-2.1.4.tar.gz
tar zxvf nagios-plugins-2.1.4.tar.gz
cd nagios-plugins-2.1.4.tar.gz




製作出設定檔並編譯原始檔

下完./configure指令後會看到設定檔部分的結果
接著再執行makemake install就可以完成安裝
安裝完的執行檔會出現在

/usr/local/nagios/libexec/


./configure
make
make install





啟動Nagios服務並設定開機啟動
systemctl start nagios
systemctl enable nagios




開啟防火牆
在防火牆上允許http (TCP 80 Port) 進入,如果未來要設定https可以使用第二行指令
firewall-cmd --add-service=http
firewall-cmd --add-service=https
firewall-cmd --reload




建立預設的Nagios WEB登入帳號
預設的Nagios WEB的最高管理者帳號是nagiosadmin

htpasswd -c /usr/local/Nagios/etc/htpasswd.users nagiosadmin

而後要新增使用者要用底下的指令
-c參數是建立新檔案,如果再使用-c參數會把原本的檔案覆蓋

htpasswd /usr/local/nagios/etc/htpasswd.users 使用者帳號


如果不想用nagiosadmin這個帳號當作管理者帳號,可以進到,/usr/local/nagios/etc/cgi.cfg,修改這個帳號名稱

vi /usr/local/nagios/etc/cgi.cfg

大概是 118 行的地方,有看到nagiosadmin的都要修改,如果要讓多個帳號同時擁有權限,可以用逗號分隔,如 jack,bill。
從118行往下一共有7個不同的權限,最好是都改成一樣



到此已可以登入Nagios WEB畫面
http://NagiosIP/nagios







設定系統時間
timedatectl指令設定與時間相關的設定
網路校時的部分CentOS 56 使用的是經典的NTP
CentOS 7 改成了新的chrony,同步的速度更快
可以用預設的NTP伺服器校正時間,也可以自己新增NTP Server在設定檔內
如圖中 server watch.stdtime.gov.tw ,就是台灣的NTP server
Iburst是加快同步的速度,可加也可不加

yum install chrony

vi /etc/chrony.conf



設定時區並啟動NTP校時功能
timedatectl set-timezone "Asia/Taipei"

timedatectl set-ntp yes



如果要手動設定時間可以用底下的指令
timedatectl set-time "2015-04-15 22:37:22"
PS : 如果ntp 設定為yes,會不能手動設定時間,需先設為no


如果要直接執行網路時間校正可以安裝ntpdate套件
yum install ntpdate

ntpdate -s watch.stdtime.gov.tw





錯誤排除

因為在啟動NAGIOS過程中發生錯誤
錯誤訊息顯示有一個資料夾找不到,因此手動建立一個資料夾
/usr/local/nagios/var/spool/checkresults

cd /usr/local/nagios/var
mkdir spool
cd spool
mkdir checkresults
cd ../..
chown nagios:nagios -R spool


另外可以用,systemctl status nagios -l,來檢視完整的啟動Log,觀察可能的錯誤原因





LocalhostHTTP warning問題

剛進去Nagios網頁時會發現LocalhostHTTP出現warning

那是因為WEB的根目錄沒有任何網頁可以開啟 (/var/www/html)
不處理也沒關係,如要解決這個問題,要在WEB根目錄下新增一個index.html的網頁




cd /var/www/html
vi index.html


在檔案內輸入底下的文字後存檔


<html>
It`s work!!
</html>







安裝NRPE

NRPE (Nagios Remote Plugin Executor),可以在遠端電腦執行自己寫的的script,並將結果回傳


運作方式分成兩種
一種是發出訊號請遠端電腦在本機執行,並回傳值
另一種是請遠端電腦使用如check_tcp的插件去問另一台電腦


模式一 在遠端電腦的本機執行
專門檢查被監控電腦的資源,如CPUDISK
1.          Nagios執行check_nrpe程式,執行時帶入參數
2.          Check_nrpe會以SSL連線的方式與其它遠端 (被監控) 主機溝通
3.          遠端主機在本機執行送來的指令,例如執行check_load指令

4.          遠端主機執行完畢後回傳相關數值給Nagios






模式二 請遠端電腦發送檢查訊息詢問其它主機
被監控電腦當作跳板,把被監控電腦當作監控主機,去詢問其它伺服器的狀況
1.          Nagios執行check_nrpe程式,執行時帶入參數
2.          Check_nrpe會以SSL連線的方式與其它遠端 (被監控) 主機溝通
3.          遠端主機執行類似check_tcp去詢問指定的伺服器

4.          遠端主機執行完畢後回傳相關數值給Nagios






安裝NRPE分成兩大部分
l   裝在Nagios主機上
l   裝在遠端主機上,一般是被監控的主機






裝在遠端主機上
與安裝在Nagios上差不多,主要是make和文件的設定不同
l   安裝前的前置作業-安裝套件、設定services文件、安裝Nagios Plugin
l   下載並解壓縮NRPE原始檔
l   製作出設定檔並編譯原始檔
l   啟動NRPExinetd服務
l   檢查服務是否正常



安裝前的前置作業-安裝套件
openssl-devel是為了SSL通訊所需
另需要再安裝gccxinetdnagios plugin所需的相關套件


yum install openssl-devel gcc xinetd




設定services文件
需要再services檔案裡面加上一行nrpe 5666/tcp

vi /etc/services





安裝Nagios Plugin
遠端主機要安裝Plugin的原因是為了要馬上擁有可以使用的script,不然要自己撰寫
yum install epel-release
yum install perl-Net-SNMP
yum install openssl-devel radiusclient-ng-devel libdbi libdbi-devel samba-devel libsmbclient-devel net-snmp-devel gnutls-devel openldap-devel postgresql-devel
PS : 前四行不一定要安裝,如果沒有要監控相關服務可以不裝這些套件
cd ~
wget https://nagios-plugins.org/download/nagios-plugins-2.1.4.tar.gz
tar zxvf nagios-plugins-2.1.4.tar.gz
cd nagios-plugins-2.1.4.tar.gz
./configure
make
make install




安裝前的前置作業-新增要執行相關指令的使用者
NRPE在遠端電腦上,如要執行指令需要一個特定的使用者和群組
預設會是,使用者 : nagios,群組 : nagios
這邊的指令可以不用下,在最後面會有make可以使用

useradd nagios -p nagios




下載並解壓縮NRPE原始檔
cd ~
wget https://github.com/NagiosEnterprises/nrpe/archive/3.0.1.tar.gz
tar zxvf 3.0.1.tar.gz
cd nrpe-3.0.1




製作出設定檔並編譯原始檔
這邊的動作與前面的安裝雷同
make的部分,因為是監控主機,某些功能不用安裝,那是要安裝在遠端主機上的,例如check_nrpe不用安裝
在執行完./configure指令會有相關的設定參數



可以輸入make顯示後面可以加的參數

./configure
make all
make install
make install-config
make install-inetd
make install-init

make install-groups-users



啟動NRPExinetd服務

systemctl restart xinetd
systemctl enable nrpe
systemctl start nrpe



檢查服務是否已啟動


ss -at | egrep "nrpe|5666" netstat -at | egrep "nrpe|5666"



如果沒有如圖片的訊息,可能的原因是 : (第三行:::nrpe是監聽IPv6)
l   /etc/services,沒有增加nrpe 5666/tcp
l   檔案/etx/inetd.d/nrpe內的【only_from】參數不是127.0.0.1

l   xinetd尚未安裝或尚未啟動



檢查服務是否正常


/usr/local/nagios/libexec/check_nrpe -H localhost



如果出現類似底下的錯誤訊息,先關閉IPv6再試試看
CHECK_NRPE: Error - Could not connect to ::3668:6c6e:7556:0: Connection reset by peer

接著可以試試內建的插件

/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_users



開啟防火牆

firewall-cmd --add-port=5666/tcp --permanent
firewall-cmd --reload


使用底下指令檢查防火牆是否開啟成功

firewall-cmd –list-all






修改nrpe.cfg,允許其它IP來詢問


為了要讓其它主機 (Nagios主機) 可以來詢問NRPE服務,需要設定/usr/local/nagios/etc/nrpe.cfg
找到allowed_hosts,增加Nagios主機的IP


vi /usr/local/nagios/etc/nrpe.cfg






/usr/local/nagios/etc/nrpe.cfg也包含可以使用的指令

圖中下方顯示的是使用參數的方式把路徑或Warning等值帶入


可以使用的插件在/usr/local/nagios/libexec/資料夾內,可以用底下的指令列出可用的指令
ls /usr/local/nagios/libexec/





裝在Nagios主機上
安裝步驟與上面差不多
l   下載並解壓縮NRPE原始檔
l   製作出設定檔並編譯原始檔
l   啟動NRPExinetd服務
l   檢查服務是否正常




下載並解壓縮NRPE原始檔
cd ~
wget https://github.com/NagiosEnterprises/nrpe/archive/3.0.1.tar.gz
tar zxvf 3.0.1.tar.gz
cd nrpe-3.0.1




製作出設定檔並編譯原始檔
這邊的動作與前面的安裝雷同
make的部分,因為是監控主機,某些功能不用安裝,那是要安裝在遠端主機上的
在執行完./configure指令會有相關的設定參數

設定完畢的訊息




可以輸入make顯示make後面可以加的參數



./configire
make check_nrpe
make install-plugin





檢查NRPE運作是否正常

回到Nagios主機上,執行下列的指令
IP的部分請自行替換

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.1 -c check_users

PS : 192.168.1.1換成被監控的電腦



如果沒有出現如圖片的文字,請檢察 :
l   確認Nagios主機與遠端電腦間的防火牆設備是否有正確設定
l   確認遠端電腦的NRPE有正常起動
l   遠端電腦的防火牆是否有正確設定



現在可以寫一些COMMAND物件來追蹤遠端電腦的狀態

define command {
    command_name    check_remote_load
    command_line      $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_load
}






安裝WindowsNSClient++

要看Windows的資源最簡單的方式就是安裝NSClient++軟體
一旦Windows安裝NSClient++以後,就可以用簡單的指令觀看DISKCPIMEMORYService和某一個執行中的程序


步驟 :
l   下載NSClient++
l   安裝NSClient++
l   設定NSClient++服務
l   驗證安裝是否正常



下載NSClient++

底下的連結為最新版的NSCLient++,檔案約20MB,如果想要小一點的可以下載舊版的NSClient++

Windows 64 位元,Windows XP之後,0.5.0.62版,23MB
https://github.com/mickem/nscp/releases/download/0.5.0.62/NSCP-0.5.0.62-Win32.msi

舊版,Windows 64位元,Windows XP之後,0.3.9版,6.3MB
https://assets.nagios.com/downloads/nagiosxi/agents/NSClient++/NSClient++-Stable-64.msi


安裝NSClient++


除了圖中的步驟需要注意外,其餘的步驟一直按下一步即可
圖中的範例是用舊版的0.3.9




設定NSClient++服務

按下Windwos+R
輸入,services.msc






找到NSCLient++的服務,點兩下打開視窗
選到Log On,打勾Allow service to interact with desktop






剛剛安裝的設定可以在nsc.ini檔案修改






修改Nagios內建的check_nt command
回到Nagios主機上,執行下面的指令
找到check_nt,在中間加上,-s 密碼


vi /usr/local/nagios/etc/objects/commands.cfg




驗證安裝是否正常

回到Nagios主機上,執行下面的指令

/usr/local/nagios/libexec/check_nt -H 192.168.1.1 -s 123456 -p 12489 -v USEDDISKSPACE -l c -w 50 -c 70

PS : 192.168.1.1請輸入WindowsIP

PS : -s 後面加上的是密碼,-p 後面用的是TCP Port號,預設是12489





如果沒有出現如圖片的文字,請檢察 :
l   確認Nagios主機與遠端電腦間的防火牆設備是否有正確設定
l   確認遠端電腦的NRPE有正常起動
l   遠端電腦的防火牆是否有正確設定







安裝Nconf

Nconf提供以WEB介面的方式設定Nagios的每個物件,可以讓使用者不用直接到底層修改文件檔
注意 : nconf的作者在文中說到,他沒有特別著重安全上的考量,因此這個網頁最好是在安全的環境內使用

步驟
l   安裝前的前置作業-安裝套件
l   設定Nconf的資料庫設定
l   設定PHP.ini
l   解壓縮Nconf檔案並設定權限
l   登入Nconf WEB,進行初始設定
l   移除INSTALLUPDATE文件、資料夾



安裝前的前置作業-安裝套件

yum install mariadb-server perl-DBI perl-DBD-MySQL php-mysql
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation



設定Nconf的資料庫設定

其中有三個位置可以自行設定,範例中的數值是預設值
PS : 大小寫有分
NConf – DataBase的名稱
nconf – Nconf程式登入資料庫的帳號
link2db – 登入資料庫的密碼

mysql -u root -p -e " CREATE DATABASE NConf;"
mysql -u root -p -e " GRANT ALL PRIVILEGES ON NConf.* TO 'nconf'@'localhost' IDENTIFIED BY 'link2db;"
mysql -u root -p -e "FLUSH PRIVILEGES; "
mysql -u root -p NConf < /usr/local/nagios/share/nconf/INSTALL/create_database.sql



設定PHP.ini

vi /etc/php.ini

設定底下三個參數
底下兩個設定在PHP 5.4PHP.ini找不到,直接複製貼上

short_open_tag = On
register_globals = Off
magic_quotes_gpc = Off



解壓縮Nconf檔案並設定權限

tar zxvf nconf-1.3.0-0.tgz
mv nconf /usr/local/nagios/share/
cd /usr/local/nagios/share
chown apache:apache -R nconf
chcon -t usr_t -R nconf
chcon -t httpd_sys_rw_content_t /usr/local/nagios/share/nconf/config


登入Nconf WEB,進行初始設定

IP – 把這個部分改成NagiosIP位置
http://IP/nagios/nconf/INSTALL.php



移除INSTALLUPDATE文件、資料夾


cd /usr/local/nagios/share/nconf
rm -fR INSTALL INSTALL.php UPDATE UPDATE.php


這一步操作結束後就可以進到Nconf的操作畫面
http://IP/nagios/nconf








https://github.com/NagiosEnterprises/nrpe/blob/master/docs/NRPE.pdf

留言

  1. Mar 20 15:27:29 centos7 nagios[3748]: Starting nagios: done.
    Mar 20 15:27:30 centos7 nagios[3772]: Successfully launched command file worker with pid 3782
    Mar 20 15:29:21 centos7 nagios[3772]: SERVICE ALERT: localhost;HTTP;CRITICAL;SOFT;1;connect to address 127.0.0.1 and port 80: Connection refused
    Mar 20 15:30:21 centos7 nagios[3772]: SERVICE ALERT: localhost;HTTP;CRITICAL;SOFT;2;connect to address 127.0.0.1 and port 80: Connection refused
    問題請教> 完成安裝 nagios 與plugin 後,查詢啟動狀態;有Connection refused?這是什麼意思呢?

    回覆刪除
  2. 請問我照步驟輸入完指令後,打開瀏覽器,還是無法顯示網頁,請問是哪裡有問題嗎?

    回覆刪除

發佈留言

此網誌的熱門文章

WPA_supplicant的設定方式

DOS指令 -- SET和變數

Nginx server 和 location 優先順序