運維監控工具之 Nagios (一)

Nagios的簡要安裝流程php

1、安裝環境html

# uname -a
Linux localhost 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/issue
CentOS release 6.3 (Final)

2、安裝
一、安裝前的準備工做
mysql

(1)解決安裝Nagios的依賴關係:
Nagios基本組件的運行依賴於httpd、gcc和gd。能夠經過如下命令來檢查nagios所依賴的rpm包是否已經徹底安裝
# yum -y install httpd gcc glibc glibc-common gd gd-devel openssl-devel net-snmp net-snmp-devel net-snmp-utils snmp* bc xinetd make wget (php php-mysql)
說明:以上軟件包您也能夠經過編譯源代碼的方式安裝,只是後面許多要用到的相關文件的路徑等須要按照您的源代碼安裝時的配置
逐一修改。此外,您還得按需啓動必要的服務,如httpd等。

(2)添加nagios運行所須要的用戶和組:
# groupadd  nagcmd
# useradd -G nagcmd nagios    \\nagios要以nagcmd爲附加組
# passwd nagios
把apache加入到nagcmd組,以便於在經過web Interface操做nagios時可以具備足夠的權限:
# usermod -a -G nagcmd apache
# usermod -a -G nagios apache

二、編譯安裝nagioslinux

# tar zxf nagios-3.3.1.tar.gz -C /var/www/html/                     \\指定apache的DocumentRoot路徑
# cd nagios-3.3.1
# ./configure --with-command-group=nagcmd --enable-event-broker     \\(爲NDOUtils作準備,若不添加,往後使用需從新編譯nagios) 
# make all  
# make install                                \\安裝nagios
# make install-init                           \\安裝nagios腳本,可以使用service nagios start的腳本
# make install-config                         \\安裝生成配置文件
# make install-commandmode                    \\安裝一些命令模式,生成一些工具
# make install-exfoliation                    \\4.0.X版本使用
# make install-webconf                        \\安裝web接口成/etc/httpd/conf.d/nagios.conf的配置文件
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagios     \\建立一個登陸nagios web程序的用戶,這個用戶賬號在之後經過web登陸nagios認證時所用
 
#cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/        \\4.0.X版本使用
#chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers \\4.0.X版本使用
配置結束之後須要從新啓動httpd
# service httpd restart

三、編譯、安裝nagios-pluginsios

nagios的全部監控工做都是經過插件完成的,所以,在啓動nagios以前還須要爲其安裝官方提供的插件。
http://www.nagios.org/download/plugins
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
# tar zxf nagios-plugins-1.4.15.tar.gz 
# cd nagios-plugins-1.4.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install

 

注意:如下插件是非必須安裝的能夠根據所需自行安裝web

編譯安裝nagios中文插件
下載地址:http://sourceforge.net/projects/nagios-cn/files/sourcecode/
# tar jxvf nagios-cn-3.2.3.tar.bz2
# cd nagios-cn-3.2.3
# ./configure --prefix=/usr/local/nagios/
# make all
# make install

nagios性能分析圖表:pnp
RRDtool是一個圖表生成工具
解決依賴
#yum install -y cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel
安裝rrdtool-1.4.9
#tar zxvf rrdtool-1.4.9.tar.gz
#./configure --prefix=/usr/local/rrdtool
#make && make install
安裝pnp
#tar -zxvf pnp-0.4.13.tar.gz
#./configure --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata  --with-nagios-user=nagios --with-nagios-group-nagios
#make all
#make install
#make install-config
#make install-init
設置pnp
建立默認配置文件:
cd  /usr/local/nagios/etc/pnp/
cp process_perfdata.cfg-sample process_perfdata.cfg 
cp npcd.cfg-sample npcd.cfg
cp rra.cfg-sample rra.cfg 
chown -R nagios:nagios *
修改 process_perfdata.cfg文件:
vi /usr/local/nagios/etc/pnp/process_perfdata.cfg
LOG_FILE = /usr/local/nagios/var/perfdata.log 
# Loglevel 0=silent 1=normal 2=debug 
LOG_LEVEL = 2 \\這裏將日誌級別改成2,即爲debug模式
修改nagios配置文件
①增長小太陽標示
修改templates.cfg,增長一個定義PNP的hosts和services
define host {
        name       hosts-pnp
        register   0
        action_url /nagios/pnp/index.php?host=$HOSTNAME$
        process_perf_data               1
}
define service {
        name       services-pnp
        register   0
        action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
        process_perf_data              
}
②修改nagios.cfg
找到以下幾項,去掉註釋,修改後信息以下:
process_performance_data=1 
host_perfdata_command=process-host-perfdata 
service_perfdata_command=process-service-perfdata
③修改commands.cfg
# 'process-host-perfdata' command definition
define command{
        command_name    process-host-perfdata
        command_line /usr/local/nagios/libexec/process_perfdata.pl
}
# 'process-service-perfdata' command definition
define command{
        command_name    process-service-perfdata
        command_line /usr/local/nagios/libexec/process_perfdata.pl
}
④修改hosts.cfg文件和services.cfg文件
define host{
        use                     linux-server,hosts-pnp
        host_name               web
        alias                   ixdba-web
        address                 192.168.12.251
        }
define host{
        use                     linux-server,hosts-pnp
        host_name               mysql
        alias                   ixdba-mysql
        address                 192.168.12.237
        }
define service{
        use                             local-service,services-pnp
        host_name                       mysql
        service_description             SSH
        check_command                   check_ssh
        }
define service{
        use                             local-service,services-pnp
        host_name                       web
        service_description             http
        check_command                   check_http
        }

測試PNP功能
全部配置完成以後,從新檢查nagios配置文件是否正確,而後重啓nagios
/etc/init.d/nagios restart
若是配置正確,此時就會生成響應主機的pnp文件
# ls /usr/local/nagios/share/perfdata/web
http.rrd  http.xml  PING.rrd  PING.xml  SSHD.rrd  SSHD.xml
最後打開網頁:
打開網頁http://IP/nagios,選擇主機選項,而後點擊小太陽就能夠看到圖表,或者訪問http://ip/nagios/pnp也可


四、配置並啓動Nagiossql

(1)把nagios添加爲系統服務並將之加入到自動啓動服務隊列:
# chkconfig --add nagios
# chkconfig nagios on

(2)檢查其主配置文件的語法是否正確:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

(3)若是上面的語法檢查沒有問題,接下來就能夠正式啓動nagios服務了:
# service nagios start

(4)配置selinux
若是您的系統開啓了selinux服務,則默認爲拒絕nagios web cgi程序的運行。您能夠經過下面的命令來檢查您的系統是否開啓了selinux:
#getenforce
若是上面命令的結果顯示開啓了selinux服務,您能夠經過下面的命令暫時性的將其關閉:
#setenforce 0
若是您想在之後徹底關閉selinux,能夠經過編輯/etc/sysconfig/selinux文件,將其中的selinux後面的值「force」修改成「disable」便可。
固然,您也能夠經過如下方式將nagios的CGI程序運行於SELinux/targeted模式而不用關閉selinux:
# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
# chcon -R -t httpd_sys_content_t /usr/local/nagios/share

(5)經過web界面查看nagios:
http://your_nagios_IP/nagios
登陸時須要輸入前面設定的web認證賬號和密碼。
注意:爲了nagios系統的安全,建議您使用信息摘要強認證模式(如MD5),強制使用web的TSL/SSL安全通信模式,而且經過訪問控制列
表設定能訪問nagios的web界面的客戶端地址。

3、Nagios的配置apache

下面是nagios的一些主要目錄樹形結構windows

/usr/local/nagios/etc/
├── cgi.cfg
├── hostgroups                     \\主機羣組   (自定義)
│   └── test_group.cfg            \\創建不一樣的組,便於管理
├── hosts                          \\監控的全部主機目錄  (自定義)
│   └──test_hosts                 \\基於主機的不一樣創建不一樣的組
│  ├── 10.10.10.21.cfg            \\每一個被監控端有單獨的 .cfg文件,便於後期維護
│  ├── 10.10.10.22.cfg
│  └── 10.10.10.23.cfg
├── services                       \\根據主機組的分類,分別創建不能的service(自定義)
│   └── test_services.cfg
│
├── htpasswd.users                 \\用於登陸web 的用戶信息
├── nagios.cfg                     \\nagios的主配置文件
├── nrpe.cfg                       的主配置文件
└── objects
     ├── commands.cfg              \\命令
     ├── contacts.cfg              \\聯繫人 
     ├── localhost.cfg 
     ├── printer.cfg
     ├── switch.cfg
     ├── templates.cfg             \\監控模板
     ├── timeperiods.cfg           \\時間
     └── windows.cfg               \\window主機監控模板
 
部分自定義模板的內容
#cat ../etc/hostgroups/test_group.cfg         \\主機羣組的內容
define hostgroup{
        hostgroup_name  wzt_group         \\組名
        alias           wzt group         \\別名
    }

#cat ../etc/hosts/test_hosts/10.10.10.21.cfg   \\每被監控端配置內容
define host {
        use             test_host         \\引用 ../etc/objects/templates.cfg 裏面自定義的 wzt_host 的配置信息
        host_name       10.10.10.21_test \\被監控名字,自定義
        hostgroups      test_group        \\屬於哪一個羣組
        address         10.10.10.21      \\被監控端 ip
        }

#cat ../etc/services/test_servoce.cfg                 \\被監控的服務列表
define service{ 
        use                     test_service      \\引用 ../etc/objects/templates.cfg 裏面自定義的 wzt_service 的配置信息
        hostgroup_name          test_group        \\屬於哪一個羣組,監控這個羣組內全部的主機
        service_description     Host Alive        \\監控的名字,用於在web 上顯示
        check_command           check-host-alive  \\使用nrpe收集此信息使用的命令
        }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     Current Load    \\當前負載狀態
        check_command           check_nrpe!check_load
        }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     Disk             \\磁盤信息
        check_command           check_nrpe!check_disk
        }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     Total Processes  \\進程總數
        check_command           check_nrpe!check_total_procs
        }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     Current Users    \\當前登陸用戶
        check_command           check_nrpe!check_users
        }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     Zombie Procs     \\僵死進程總數
        check_command           check_nrpe!check_zombie_procs
        }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     HTTP             \\http
        check_command           check_nrpe!check_http
       }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     Memory            \\內存信息
        check_command           check_nrpe!check_mem
        }
define service{
        use                     test_service
        hostgroup_name          test_group
        service_description     Cpu                \\cpu使用狀況
        check_command           check_nrpe!check_cpu
        }

4、客戶端安裝:
基於NRPE監控遠程Linux主機安全

一、NRPE簡介
Nagios監控遠程主機的方法有多種,其方式包括SNMP、NRPE、SSH和NCSA等。這裏介紹其經過NRPE監控遠程Linux主機的方式。
NRPE(Nagios Remote Plugin Executor)是用於在遠端服務器上運行檢測命令的守護進程,它用於讓Nagios監控端基於安裝的方式觸發遠端主機
上的檢測命令,並將檢測結果輸出至監控端。而其執行的開銷遠低於基於SSH的檢測方式,並且檢測過程並不須要遠程主機上的系統賬號等信息,
其安全性也高於SSH的檢測方式。
二、監控端配置安裝NRPE
# tar -zxvf nrpe-2.12.tar.gz
# cd nrpe-2.12.tar.gz
# ./configure --with-nrpe-user=nagios \
     --with-nrpe-group=nagios \
     --with-nagios-user=nagios \
     --with-nagios-group=nagios \
     --enable-command-args \
     --enable-ssl
# make all
# make install-plugin     //只須要安裝 check_nrpe 插件

三、被監控端安裝配置

1)先添加nagios用戶
# groupadd nagios 
# useradd -g nagios -M -s /sbin/nologin nagios
安裝依賴關係:
# yum -y install openssl-devel net-snmp net-snmp-devel net-snmp-utils snmp* bc xinetd

2)NRPE依賴於nagios-plugins,所以,須要先安裝之
# tar zxf nagios-plugins-1.4.15.tar.gz 
# cd nagios-plugins-1.4.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make all
# make instal

3)安裝NRPE
# tar -zxvf nrpe-2.12.tar.gz
# cd nrpe-2.12.tar.gz
# ./configure --with-nrpe-user=nagios \
     --with-nrpe-group=nagios \
     --with-nagios-user=nagios \
     --with-nagios-group=nagios \
     --enable-command-args \
     --enable-ssl
# make all
# make install-plugin          //安裝check_nrpe 這個插件
# make install-daemon          //安裝deamon
# make install-daemon-config   //安裝配置文件
# make install-xinetd          //nrpe的守護進程
#echo "nrpe            5666/tcp                # nrpe" >> /etc/services \\添加nrpe服務
修改守護進程的配置文件 「/etc/xinetd.d/nrpe」  ,主要在 only_from 後面添加監控端ip
sed -i '/only_from/s/$/ 10.10.10.20/' /etc/xinetd.d/nrpe \\添加監控端 ip

 5)客戶端啓動NRPE

# service xinetd restart                              \\啓動 nrpe 的守護進程 
# netstat -tnlp | grep 5666                           \\測試是否監聽
#/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1    \\測試nrpe是否安裝成功,若出現版本號,則成功安裝

6)配置容許遠程主機監控的對象

在被監控端,能夠經過NRPE監控的服務或資源須要經過nrpe.conf文件使用命令進行定義,定義命令的語法格式爲:command[<command_name>]=<command_to_execute>。好比:
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 160 -c 200
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
command[check_http]=/usr/local/nagios/libexec/check_http -I 127.0.0.1
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 15% -c 10%
command[check_mem]=/usr/local/nagios/libexec/check_mem.sh -w 85 -c 95            \\監控內存,系統默認沒有此命令,須要自行添加 check_mem.sh 的腳本
command[check_cpu]=/usr/local/nagios/libexec/check_cpu.sh -w 85 -c 95            \\監控cpu,系統默認沒有此命令,須要自行添加 check_cpu.sh 的腳本

5、基於NSClinet++監控Windows主機

NSClient下載地址:http://www.nsclient.org/nscp/downloads
一、基於check_nt
Windows端要啓用的模塊:
[modules]
CheckSystem.dll
CheckDisk.dll
FileLogger.dll
NSClientListener.dll
[settings]
allowed_hosts =
修改配置後要重啓服務:
nsclient++ /stop
nsclient++ /start
相關文章
相關標籤/搜索