歡迎您光臨本站 註冊首頁

再談nagios安裝與配置

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

再談nagios安裝與配置

再談nagios安裝與配置











前言:
    好吧,準備重新再寫一次nagios的詳細說明文檔。因為這個東西安裝起來簡單,配置使用確實相對複雜很多。希望我能盡量寫的夠詳細,並將可能遇到的問題都列舉出來。

【nagios簡介】
首先我們先知道這個是個什麼東西。
Nagios是一款開源的免費網路監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網路設置,印表機等。在系統或服務狀態異常時發出郵件或簡訊報警第一時間通知網站運維人員,在狀態恢復后發出正常的郵件或簡訊通知。(我承認我是從百度百科上拷貝的,不過這個解釋的已經很好了。)
nagios應用在linux操作系統中,那麼基礎的linux操作就不再多說。
Nagios的強大主要在於其插件所提供的各種監控功能以及web形式的友好交互,nagios對於linux和windows伺服器都可以很好的進行監控,這裡主要說明對linux伺服器的監控。

【準備工作】
Naigos必須運行在有C語言編輯器的Linux平台上,並且需要一個web伺服器(通常來說apache即可)來提供友好的交互界面,否則你監控到的內容只是一堆日誌毫無樂趣可言。下面我將按照最小化安裝的裸機來進行安裝。
我使用的centos5.6版本,用ubuntu的注意版本及配置文件習慣即可
監控主機A地址:192.168.0.10
被監控主機B地址:192.168.0.20
首先下載3個文件:
nagios-3.3.1.tar.gz                        nagios主程序
nagios-plugins-1.4.15.tar.gz       nagios插件
nrpe-2.12.tar.gz                             監控linux主機所需插件
#yum install –y httpd php gcc* gd* glibc*     安裝nagios所需的庫,這裡為了方便後面操作apache 和php都是yum安裝的,如果編譯安裝的朋友注意下路徑即可。
#groupadd nagios                         新建一個nagios組
#useradd nagios –g nagios                    新建一個nagios用戶並將其加入到nagios組中

【安裝nagios】# tar zxvf nagios-3.3.1.tar.gz
# cd nagios
# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios   最好還是制定目錄
# make all
# make install
# make install-commandmode
# make install-config
# make install-init
# make install-webconf這裡nagios的編譯不同於其他的軟體,需要好幾步才能完成,我們來解釋一下make這幾步的意思
make install  安裝主要的程序、CGI、HTML文件等等。
make install-commandmode 賦予外部命令訪問nagios配置文件的許可權
make install-config 將nagios的配置文件的例子複製到nagios的安裝目錄下
make install-init 將nagios做成一個運行腳本,放入init.d中,使nagios可以隨系統的開機而啟動
make install-webconf配置apache的web介面,如果運行出錯,是因為你的apache是自己編譯安裝的
不是yum安裝的,webconf生成的文件會放在/etc/httpd/conf.d/下,因為找不到這個目錄,所以出錯
編譯安裝完成後:
# ls /usr/local/nagios
bin  etc  include  libexec  share
查看是否有上面的文件,如果有到此nagios就算是安裝完了。
那麼我們來看看這上面幾個目錄下的文件都有什麼意義。
bin          nagios執行程序所在目錄,這個目錄只有一個文件nagios
etc          nagios配置文件位置,初始安裝完成後,只有幾個*.cfg-sample文件
sbin        nagios  Cgi文件所在目錄,也就是執行外部命令所需文件所在的目錄
share     nagios網頁文件所在的目錄
var          nagios日誌文件、spid等文件所在的目錄

nagios的主程序安裝完畢后,為了以防萬一我們來檢查一下/usr/local/nagios的目錄許可權
如果不是nagios的屬主那麼要將屬主進行修改,否則nagios沒有許可權來運行。
我們在進行下一步插件的安裝

【安裝nagios插件】
插件對於nagios來說是非常重要的,插件的版本對於nagios主程序之間的關聯並不大
各個版本基本都可以使用。
# tar zxvf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins
# ./configure --prefix=/usr/local/nagios   nagios-plugins是安裝到nagios的主目錄下的
# make
# make install
安裝完成後/usr/local/nagios生成目錄libexec,這就是nagios所需要的插件

檢查工作:
再次檢查nagios主目錄的屬主,一定要是nagios,不能是root
如果屬主不正確
#chown -R nagios.nagios /usr/local/nagios
nagios的用戶不需要登錄shell 所以如果為了安全
vi /etc/passwd
nagios:x:500:500::/home/nagios:/bin/bash
修改為:
nagios:x:500:500::/home/nagios:/bin/nologin
那麼nagios用戶則不能夠登錄shell

【配置apache】
  yum 裝的apache本身不需要太多的配置,在nagios的編譯過程中的make install-webconf就是在/etc/httpd/conf.d/下生成nagios.conf的配置文件。會自動幫你配置apache的nagios部分。
#vi  /etc/httpd/conf/httpd.conf
修改apache的運行用戶為nagios
user nagios
group nagios

在末尾加上apache的nagios部分ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"


#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user


Alias /nagios "/usr/local/nagios/share"


#  SSLRequireSSL
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"上面文本的作用是對nagios的目錄進行用戶驗證,只有合法的授權用戶才可以訪問nagios的頁面文件
生成用戶驗證文件
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
命令交互執行需要輸入2次密碼,然後會再/usr/local/nagios/etc/htpasswd.users中寫入一行欄位是
剛才生成的用戶名和密碼
如需添加更多用戶執行命令中去掉-c即可,否則會覆蓋所有已經生成的行

配置完成後執行/usr/sbin/httpd -t 來驗證apache 的配置文件壓法
這裡的httpd路徑根據自己具體的路徑來執行
#service httpd restart

在瀏覽器中輸入nagios的訪問地址: http://local/nagios
在登錄框中輸入你剛才設置的nagios用戶和密碼
到此我們的nagios伺服器就已經搭建好了,但是現在還沒有檢測任何的主機也沒有任何的信息,我們現在要做的就是來看一看nagios伺服器到底需要怎麼用。

【配置nagios】
好了 這裡是我們的最重的重點了,我們來詳細的分析一下nagios的配置文件。
首先來看一下nagios的etc目錄下的配置文件有哪些-rw-rw-r-- 1 nagios nagios 11408 12-07 12:57 cgi.cfg
-rw-r--r-- 1 nagios nagios    26 11-01 17:36 htpasswd.users
-rw-rw-r-- 1 nagios nagios 43775 12-07 12:19 nagios.cfg
drwxrwxr-x 2 nagios nagios  4096 12-07 14:44 objects
-rw-rw---- 1 nagios nagios  1340 11-01 17:35 resource.cfgPS: 如果是nagios2.6版本以前,etc下的文件名都是cgi.cfg-sample類型, 改名為cgi.cfg即可,2.6以後版本都不需要修改配置文件名
由於我的nagios是最新的版本這裡會有一個objects的目錄,那麼來看一下目錄下有哪些文件
commands.cfg  定義了各項功能命令及說明
localhost.cfg    監控的主機配置文件
printer.cfg      監控列印配置文件
templates.cfg   這裡會給你提供一些配置文件的模板供參考
windows.cfg    監控windows主機的配置文件
contacts.cfg    定義聯繫人的文件
switch.cfg      這個基本不用,是一個假定您使用的示例配置文件得到安裝Nagios的快速入門指南。
timeperiods.cfg  監視時段配置文件
這裡的object不同於老版本將一些對具體監控的配置放置在了統一的object目錄下,以方便管理。

# /usr/local/nagios/bin/nagios -v /usr/local/nagos/etc/nagios.cfg 來驗證程序能否正常運行
# vi /usr/local/nagios/etc/localhost.cfg
把下面的幾行註釋去掉
cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg  //聯繫組配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg       //聯繫人配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg     //主機組配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg          //主機配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/services.cfg       //服務配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg    //監視時段配置文件路徑
將check_external_command=0修改為1 作用是允許執行web界面下重啟nagios,停止主機/服務檢查鞥操作
cgi.cfg文件 控制相關的cgi腳本
#vi /usr/local/nagios/etc/cgi.cfg
確保use_authentication=1
其中的各項authorized_for_都是定義登錄的用戶許可權
全部設置為nagiosadmin即可,也可設置你自己htpasswd生成設置的用戶名

【安裝nrpe】# tar zxvf nrpe-2.12.tar.gz
# cd nrpe
# .configure
# make all
# make install-plugincommands.cfg定義外部構建nrpe# vi /usr/local/nagios/etc/objects/commands.cfg
#check nrpe

define command{

        command_name check_nrpe

        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

        }設置要監控的Linux主機
vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
設置localhost.cfg內容
vi /usr/loca/nagios/etc/objects/locaohost.cfg
address 修改為被監控的IP

其他設置:chkconfig --add nagios  配置開機啟動
chkconfig nagios on
/usr/loacal/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg  檢查nagios配置文件
vi /etc/selinux/config 關閉SELINUX
SELINUX=disabled
service iotables stop
serivce nagios start【配置被監控端】
一、安裝nagios-plugin# useradd nagios
# tar zxvf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround
# make
# make install
chown -R nagios.nagios /usr/local/nagios二、安裝被監控端nrpe# tar zxvf nrpe-2.12.tar.gz
# cd nrpe
# .configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config配置nrpe
vi  /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=192.168.0.1,127.0.0.1啟動nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
也可講其寫入到/etc/rc.d/rc.local中開機運行

驗證nrpe# netstat -anpl |grep 5666
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      11750/nrpe   
# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.12然後服務端測試
/usr/local/nagios/libexec/check_nrpe -H 被監控機IP
NRPE v2.12
配置監控對象(重要)# vi /usr/local/nagios/etc/nrpe.cfg
command=/usr/local/nagios/libexec/check_users -w 5 -c 10
command=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command=/usr/local/nagios/libexec/check_swap -w 20% -c 10%這一步是關鍵,如果nagios伺服器想要監控客戶機swap分區,但客戶機nrpe.cfg文件
沒有swap監控對像,這時監控伺服器就是報錯(NRPE command 『check_swap』no defined).
平時自己寫腳本,也是主要配這個地方
至此就可以監控linux客戶機的disk,swap,users,memory了

那麼到了這裡還不夠,如果我們需要郵件報警或者簡訊報警的功能那麼就要進行更加負責的操作

【郵件報警】
我們首先看一下郵件報警的功能事怎麼定義的:vi /usr/local/nagios/etc/objects/commands.cfg
#'notify-host-by-email' command definition
define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotific
ation Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddre
ss: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bi
n/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **"
$CONTACTEMAIL$
        }

# 'notify-service-by-email' command definition
define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotific
ation Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$
\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME
$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIO
NTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONT
ACTEMAIL$
        }這裡定義了host和server兩個模塊的email發送方式,
可以看到nagios默認的是使用linux系統自帶的/bin/mail 來發送郵件的,
這裡nagios已經幫我們配置好了,不出意外的話不需要進行太多修改。但是如果你需要用sendmail的話,可以自己修改命令。下面來看看聯繫人的配置文件
vim /usr/local/nagios/etc/objects/contacts.cfg定義一個發送郵件的地址和選項define contact{
     contact_name            nagiosadmin        //定義聯繫人的名字
     use                        generic-contact        //這個名字是默認的,沒有進行修改                                                                                                                                       做修改
     alias                    Nagios Admin        //別名
     service_notification_period          24x7        //服務出現狀況通知的時間段,這個時間段是objects中的timeperiod.cfg中定義的
     host_notification_period         24x7        //主機出現狀況通知的時間段,這個時間段同樣是timeperiod.cfg中定義的
      service_notification_options      w,u,c,r  //當伺服器出現w(warning),u(unkown),c(critical),或者r(恢復)這幾種情況下通知聯繫人
      host_notification_options         d,u,r         //與service差不多,d的意思是down
      service_notification_commands   notify-service-by-email         // 定義服務出現問題,使用命令notify-service-by-email通知
      host_notification_commands      notify-host-by-email     //主機出現問題使用notify-host-by-email 通知
      email                          xxx@xx.com    //通知人的郵件地址

}這裡順便也講contact組也定義了 如下:define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin
}下面來看監控主機的配置文件,我這裡的配置文件為localhost.cfg
你可以選擇起任何的名字,只需要在nagios.cfg中重新定義即可。vi /usr/local/nagios/etc/objects/localhost.cfg 定義主機如下:define host{
    host_name    linux-20      //為被監控的主機起個名字
    alias        linux20       //起個別名
    address        192.168.0.20   //IP地址
    contact_groups    admins       //聯繫人的組,在contacts.cfg中定義
    check_command    check-host-alive  //檢查主機狀態的命令,commands.cfg中定義
    check_period    24x7    //檢查的時間段24*7,來自timeperiod.cfg中定義的
    max_check_attempts    3  //檢查失敗后的重試次數
    notification_interval        10  //提醒的間隔,單位是分鐘
    notification_period        24x7  //提醒周期,來自timeperiod.cfg中定義
    notification_options        d,u,r   //報警的選項
}主機檢查命令行一般選擇檢查主機存活check-host-alive
最大嘗試次數最好不要設置為「1」,一般來說3-4次比較合理,否則你的郵箱估計會爆掉
順便將host組也定義下define hostgroup{
        hostgroup_name  linux-servers
        alias           Linux Servers
        members         linux-20  //可以在此添加linux主機,以逗號分離
}下面來編輯service 的配置還是在localhost.cfg下,以Ping和apache服務為例子define service {
host_name         linux-20                      #被監控的主機,hosts.cfg中定義的
service_description     PING                      #定義的是監控這個主機是不是存活,描述是PING
check_period                24x7                        #監控的時間段,是timeperiods.cfg中定義的
notification_interval           10                 #重複發送提醒信息的最短間隔時間。默認間隔時間是
                                                  "60"分鐘。如果這個值設置為 "0" ,將不會發送重複提醒
normal_check_interval           3                 #檢查間隔3分鐘
max_check_attempts              3                 #最大重試次數,重新檢查3次 3次都失敗就報警
retry_check_interval            2                 #重試檢查間隔時間2分鐘
check_command         check_ping!100.0,20%!500.0,60%  #使用ping來做健康檢查
contact_groups                admins               #聯繫人組,是contactgroups.cfg中定義的
                      }

define service {
host_name         linux-20
max_check_attempts              5
check_period                    24x7
notification_interval           10
normal_check_interval           1
retry_check_interval            1
service_description     HTTP
check_command         check_http
notification_period        24x7
notification_options        w,u,c,r
contact_groups             admins
                       }主機名 host_name,必須是主機配置文件hosts.cfg中定義的主機。
檢查用的命令check_command,在命令配置文件中定義或在nrpe配置文件中有定義。
最大重試次數max_check_attempts 一般設置為3-4次比較好,這樣不會因為網路閃斷片刻而發生誤報。
檢查間隔和重試檢查間隔的單位是分鐘。
通知間隔指探測到故障以後,每隔多少時間發送一次報警信息。 它的單位是分鐘。
通知選項跟服務定義配置文件相同。
聯繫組contact_groups由配置文件contactgroup.cfg定義。

最後我們檢查下配置文件是否正確
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios restart  
通過破壞測試,看看你能不能收到郵件吧。
PS:關於收不到郵件有很多可能
1.本地mail命令沒有許可權給nagios用或者mail本身就無法使用
2.本地防火牆阻止
3.commands.cfg中的mail功能定義錯誤
4.你定義的收件郵箱阻止了nagios的郵件
想查看你的郵件到底有沒有發送出去,還是要看/var/log/maillog的日誌吧
一般來說配置的過程中會出現很多問題 多用
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
驗證,多查看各個日誌是能找到關鍵性的錯誤點的,祝大家好運。
《解決方案》

學習鳥  謝謝分享
《解決方案》

很好...
《解決方案》

學習了,謝謝:))
《解決方案》

學習了,
useradd nagios –g nagios 這樣寫命令不對,只能useradd -g nagios nagios
《解決方案》

感謝分享感謝分享感謝分享感謝分享

[火星人 ] 再談nagios安裝與配置已經有950次圍觀

http://coctec.com/docs/service/show-post-556.html